Apps

Update a specific app visible to the current tenant actor (v2)

Auth: Tenant Actor

Partially updates an app by id. Supports User JWT and B2B Server JWT. appDescription is accepted as a compatibility alias for the legacy stored appTagline field.

patch/v2/apps/{appId}

Request

  • Base URL: https://api.chat.ethora.com
  • URL: https://api.chat.ethora.com/v2/apps/{appId}
  • Auth: one of:
    • HTTP bearer
    • HTTP bearer

Path parameters

appIdstring required

Target App ID. Must be an app the calling actor owns or has been delegated access to.

Request body

displayNamestring

Human-readable app name shown in the admin panel, sign-up screens, and chat headers. 3-100 chars.

domainNamestring

Subdomain used for the hosted app at <domainName>.<rootDomain>. Alphanumeric only (no dashes); must be unique across the platform.

appTaglinestring

Short marketing line shown beneath the display name on the sign-up screen. Free-form.

appDescriptionstring

Alias of appTagline accepted on update endpoints for clarity. If both are sent, they end up in the same field.

logoImagestring

Main app logo. POST/PUT accept either a file upload (multipart) or a URL (JSON). 1:1 ratio recommended, displayed at 120x120 px in the admin panel.

sublogoImagestring

Optional secondary logo / favicon. Same input shapes as logoImage.

primaryColorstring

Brand colour as a 6-digit hex string (e.g. #0052CD). Used as the accent throughout the chat UI.

bundleIdstring

iOS/Android bundle identifier in reverse-DNS form (e.g. com.acme.chat). Required for native push notifications.

coinSymbolstring

Short ticker for the app's coin (e.g. ETO). Used in token balances and transaction summaries.

coinNamestring

Display name for the app's coin (e.g. Ethora Coin).

defaultProfileIsPublicboolean

Default value of profileIsPublic for newly-created users in this app. If true, anyone in the app can view a new user's profile by default; if false, only the user themself + admins.

defaultAssetsArePublicboolean

Default value of assetsArePublic for newly-created users in this app. If true, a new user's owned tokens / assets are visible on their public profile by default; if false, hidden.

allowUsersToBecomeTenantsboolean

If true, end-users of this app can become tenants themselves (create their own apps, take their account independent of this app). Used for the base app where any signup can spin up their own apps. Default false for child apps.

defaultAccessProfileOpenboolean

Deprecated - kept as a backward-compatible alias for defaultProfileIsPublic. New integrations should use defaultProfileIsPublic.

defaultAccessAssetsOpenboolean

Deprecated - kept as a backward-compatible alias for defaultAssetsArePublic. New integrations should use defaultAssetsArePublic.

usersCanFreeboolean

Deprecated - kept as a backward-compatible alias for allowUsersToBecomeTenants. New integrations should use allowUsersToBecomeTenants.

isAllowedNewAppCreateboolean

If true, end-users of this app see an "Create your own app" affordance after login. Typically only the base app has this on.

platformPushEnabledboolean

Platform-key pushes (the base app's FCM/APNs keys serve every app of the install) are on by default; false creates the app with them switched off, the same switch as PUT /v1/push/platform/{appId}. If the push service cannot be reached, the app is still created and the switch can be set afterwards.

afterLoginPage'profile' | 'chats' | 'admin'

Page the user lands on after login. One of chats, profile.

allowUsersToCreateRoomsboolean

If true, end-users can create their own chat rooms. If false, only admins can create rooms via the API.

e2eeEnabledboolean

If true, this app's users can open end-to-end encrypted (OMEMO 2) 1:1 chats: POST /v1/chats/private accepts e2ee: true, and GET /apps/get-config reports the flag so the client shows the affordance. If false (the default), that request answers 403 E2EE_DISABLED and only plaintext rooms can be created. The install-wide features.e2ee deploy flag is the outer gate - a chat is encryptable only when both are on. Turning this off stops NEW encrypted rooms being created; rooms already encrypted stay so.

userRegistrationDisabledboolean

If true, self-service registration is closed for this app: POST /v1/users, POST /v1|v2/users/sign-up-with-email and POST /v1/users/sign-up-resend-email answer 403 REGISTRATION_DISABLED. Owner/B2B provisioning (/users/create-with-app-id/{id}, /users/batch, /v2/apps/{appId}/users/batch) and all login, refresh and password-reset flows are unaffected. Negative on purpose: apps that predate the field have no such key and stay registration-allowed with no migration.

requireMfaForAdminsboolean

When true, users who hold an admin ACL on this app (or are platform super admins) and have not enrolled in MFA get mfaEnrolmentRequired: true in the login response, and the admin panel steers them to Account > Security. Login is not blocked; end users and API clients are unaffected.

Example request

{
  "broadcastSender": {
    "name": "Acme Health",
    "photoUrl": "https://cdn.example.com/logo.png"
  }
}

Response

ok

Changes

No recorded changes to this operation across all 1 revision of this API.