Enneo

Apps

Create app

POST /app

POST /app

Create a new app. Requires appCreator permission.

Request body

idintegerbody

Internal numeric row id of the active revision. null for previews/imports.

appIdstringbody

Stable app identifier (nano-id). Use this in routes like /app/{appId}.

revisionintegerbody

Monotonic revision counter. Incremented on every update.

namestringbody

No description.

slugstringbody

URL-safe slug derived from name.

descriptionstringbody

No description.

vendorstringbody

Author/team. Stored as plain text.

availabilitystringbody

Visibility/availability flag (see Mind/Models/App.php for the allowed values).

appearanceobjectbody

UI-level config (icon, color, layout hints).

dataobjectbody

The app body. Contains the HTML template, the executor source (Python/Node/PHP) and any static parameters. The exact shape is owned by the app author.

isActivebooleanbody

No description.

deletedAtstringbody

No description.

createdByintegerbody

Profile id of the creating user.

createdAtstringbody

No description.

Request Example

{
  "id": 1,
  "appId": "k4FqL2Hm",
  "revision": 7,
  "name": "Customer health check",
  "slug": "customer-health-check",
  "description": "string",
  "vendor": "string",
  "availability": "string",
  "appearance": null,
  "data": null,
  "isActive": true,
  "deletedAt": "2026-01-01T12:00:00Z",
  "createdBy": 1,
  "createdAt": "2026-01-01T12:00:00Z"
}

Responses

201 — Created

Response Example

{
  "success": true,
  "app": {
    "id": 1,
    "appId": "k4FqL2Hm",
    "revision": 7,
    "name": "Customer health check",
    "slug": "customer-health-check",
    "description": "string",
    "vendor": "string",
    "availability": "string",
    "appearance": null,
    "data": null,
    "isActive": true,
    "deletedAt": "2026-01-01T12:00:00Z",
    "createdBy": 1,
    "createdAt": "2026-01-01T12:00:00Z"
  }
}

400 — Missing name or invalid payload.

403 — Unauthorized — missing appCreator permission.