Examplary
Start for free
Developer docs

Publish app

POSThttps://api.examplary.ai/apps

Publishes an app, or replaces its definition. Use the CLI (exp app upload) to build and upload an app.

Query parameters

forcestring

Add a new version even when the app is unchanged

Allowed values:truefalse

Request body

idstring· pattern: ^([a-z][a-z0-9-]*)(\.[a-z][a-z0-9-]*)+$required

Unique identifier for the app (e.g. 'my-org.my-app')

namestring | objectrequired

Display name of the app

descriptionstring | objectrequired

Short description of what the app does

iconstring· pattern: ^(https?:\/\/|\.)([a-zA-Z0-9._~:/?#@!$&'()*+,;=%-]+)$

URL of a square icon

versionstring· pattern: ^\d+\.\d+\.\d+$

Version of the app, e.g. '1.2.0'

websitestring· uri

Where to read more about the app

readmestring | object

Long markdown description

previewImagestring | object

Preview image

scopestring

Default scope of the app's settings: the workspace's or each user's

Allowed values:userorg

settingsarray object[]

Settings filled in when installing the app

hooksarray object[]

Server-side functions by ID, exported by the `server` bundle

componentsarray object[]

Front-end components by ID

capabilitiesarray object[]
assetsarray object[]

Assets by ID

questionTypesarray object[]

Question types the app provides, with their files uploaded

stylesheetstring· uri

URL of the CSS the components use, like Tailwind classes

serverstring· uri

URL of the app's server bundle, which exports the hooks

serverSha256string· pattern: ^[0-9a-f]{64}$

SHA-256 of the server bundle, checked before it runs

contentSha256string· pattern: ^[0-9a-f]{64}$

SHA-256 of everything the app consists of, to recognise an upload that changes nothing

publicboolean

Whether every workspace can find and install the app

preinstalledboolean

Whether the app is installed in every workspace. Only Examplary staff can publish preinstalled apps.

hiddenboolean

Whether the app is left out of the account pages, e.g. for a preinstalled app without settings. Only Examplary staff can publish hidden apps.

deprecatedboolean

Whether the app is deprecated: existing installations keep working, but it can no longer be installed

requiredPlansarray string[]

The plans a workspace needs to be on to install the app or change its settings. Any plan when left out.

Responses

200 — The updated app, or unchanged: true when it's identical to the latest version (unless force is set).

201 — The published app.

400 — Invalid definition, or an ID taken elsewhere.

403 — Only staff can publish preinstalled or hidden apps.

429 — Rate limit exceeded

Requirements

Rate limit

50 requests per minute per user.

User roles

This endpoint requires the admin or owner role to be present.

OAuth scopes

This endpoint requires the apps:write scope to be present.