# TenantApp

Tenant applications

## POST /cmn/apps/{identifier}/token

>

```json
{"openapi":"3.1.0","info":{"title":"OpenAPI definition","version":"2026.14.3"},"tags":[{"name":"TenantApp","description":"Tenant applications"}],"servers":[{"url":"http://localhost:52177/api","description":"Generated server url"}],"paths":{"/cmn/apps/{identifier}/token":{"post":{"tags":["TenantApp"],"operationId":"issueInstalledAppToken","parameters":[{"name":"identifier","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/node-api-AppTokenDto"}}}}}}}},"components":{"schemas":{"node-api-AppTokenDto":{"properties":{"appIdentifier":{"type":"string","format":"uuid","description":"App-Identifikationsnummer"},"bearerToken":{"type":"string","description":"Bearer-Token fuer Companion-App Api"},"expiresIn":{"type":"integer","format":"int32","description":"Token wird ablaufen in Sekunden"},"issuedAt":{"type":"string","format":"date-time","description":"Token erstellt am"}}}}}}
```

## POST /cmn/apps/{identifier}/refresh-token

>

```json
{"openapi":"3.1.0","info":{"title":"OpenAPI definition","version":"2026.14.3"},"tags":[{"name":"TenantApp","description":"Tenant applications"}],"servers":[{"url":"http://localhost:52177/api","description":"Generated server url"}],"paths":{"/cmn/apps/{identifier}/refresh-token":{"post":{"tags":["TenantApp"],"operationId":"issueInstalledAppToken_1","parameters":[{"name":"identifier","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"text/plain":{"schema":{"type":"string"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/node-api-AppTokenDto"}}}}}}}},"components":{"schemas":{"node-api-AppTokenDto":{"properties":{"appIdentifier":{"type":"string","format":"uuid","description":"App-Identifikationsnummer"},"bearerToken":{"type":"string","description":"Bearer-Token fuer Companion-App Api"},"expiresIn":{"type":"integer","format":"int32","description":"Token wird ablaufen in Sekunden"},"issuedAt":{"type":"string","format":"date-time","description":"Token erstellt am"}}}}}}
```

## POST /cmn/apps/{identifier}/permitted-token

>

```json
{"openapi":"3.1.0","info":{"title":"OpenAPI definition","version":"2026.14.3"},"tags":[{"name":"TenantApp","description":"Tenant applications"}],"servers":[{"url":"http://localhost:52177/api","description":"Generated server url"}],"paths":{"/cmn/apps/{identifier}/permitted-token":{"post":{"tags":["TenantApp"],"operationId":"issueTokenByPermission","parameters":[{"name":"identifier","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/node-api-PermittedTokenRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/node-api-AppTokenDto"}}}}}}}},"components":{"schemas":{"node-api-PermittedTokenRequest":{"properties":{"expiresAt":{"type":"string","format":"date-time","description":"gueltig bis UTC Timestamp"},"permissions":{"type":"array","description":"Permissions","items":{"type":"string","description":"Permissions"}}}},"node-api-AppTokenDto":{"properties":{"appIdentifier":{"type":"string","format":"uuid","description":"App-Identifikationsnummer"},"bearerToken":{"type":"string","description":"Bearer-Token fuer Companion-App Api"},"expiresIn":{"type":"integer","format":"int32","description":"Token wird ablaufen in Sekunden"},"issuedAt":{"type":"string","format":"date-time","description":"Token erstellt am"}}}}}}
```

## GET /cmn/apps/installed

>

```json
{"openapi":"3.1.0","info":{"title":"OpenAPI definition","version":"2026.14.3"},"tags":[{"name":"TenantApp","description":"Tenant applications"}],"servers":[{"url":"http://localhost:52177/api","description":"Generated server url"}],"paths":{"/cmn/apps/installed":{"get":{"tags":["TenantApp"],"operationId":"getInstalledApps","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/node-api-InstalledAppDto"}}}}}}}}},"components":{"schemas":{"node-api-InstalledAppDto":{"properties":{"installedFrom":{"type":"integer","format":"int64","description":"User Id"},"installedAt":{"type":"string","format":"date-time","description":"Installation-zeit"},"appManifest":{"$ref":"#/components/schemas/node-api-AppManifestBaseDto"},"active":{"type":"boolean","default":true,"description":"Aktiv"},"status":{"type":"string","description":"Status","enum":["ONLINE","OFFLINE_TOKEN_EXPIRED"]}}},"node-api-AppManifestBaseDto":{"description":"Manifest","properties":{"version":{"type":"string","description":"Version Identifier for this Object (for PUT)"},"info":{"$ref":"#/components/schemas/core-api-MetaInfo"},"id":{"type":"string","description":"Unique identifier of the Object"},"identifier":{"type":"string","format":"uuid","description":"Unique Identifier of this CompanionApp"},"label":{"type":"string","description":"label / short description"},"appVersion":{"type":"string","description":"the latest version of this app"},"privateApp":{"type":"boolean","default":true,"description":"is this a private app or published via the public app-store"},"description":{"type":"string","description":"long description"},"pcInstallationDeletionUrl":{"type":"string","description":"Webhook called if the customer uninstall the app from their installation"},"uiIntegrations":{"$ref":"#/components/schemas/node-unknownmodule-UiIntegrationsDto"},"requirements":{"$ref":"#/components/schemas/node-unknownmodule-RequirementsDto"},"authorizationVerbs":{"type":"array","description":"access rights this app needs","items":{"$ref":"#/components/schemas/node-unknownmodule-AuthorizationVerbDto"}},"active":{"type":"boolean","default":true,"description":"ob die App global aktiv ist"}}},"core-api-MetaInfo":{"description":"MetaInformations for this Object","properties":{"createdAt":{"type":"string","format":"date-time","description":"Created At Timestamp","readOnly":true},"createdFrom":{"type":"string","description":"TenantUser-Identifier of the creator","readOnly":true},"updatedAt":{"type":"string","format":"date-time","description":"Last Updated AT Timestamp","readOnly":true},"updatedFrom":{"type":"string","description":"TenantUser-Identifier of most recent updater","readOnly":true}}},"node-unknownmodule-UiIntegrationsDto":{"description":"configuration of ui integrations","properties":{"integrations":{"type":"array","description":"List of UI integrations","items":{"$ref":"#/components/schemas/node-unknownmodule-UiIntegrationDto"}}}},"node-unknownmodule-UiIntegrationDto":{"description":"List of UI integrations","properties":{"id":{"type":"string","description":"Integration ID"},"permissionKey":{"type":"string","description":"Permission key"},"pointOfIntegration":{"type":"string","description":"Integration point"},"msgKey":{"type":"string","description":"Message key"},"url":{"type":"string","description":"Integration URL"},"iconClass":{"type":"string","description":"Icon CSS class"},"contextAttribute":{"type":"object","additionalProperties":{"type":"object","description":"Context attributes"},"description":"Context attributes"}}},"node-unknownmodule-RequirementsDto":{"description":"requirements this app needs","properties":{"licenseKey":{"type":"string","description":"Single license key"},"licenseKeys":{"type":"array","description":"Multiple license keys","items":{"type":"string","description":"Multiple license keys"}},"permissions":{"type":"array","description":"Permissions list","items":{"$ref":"#/components/schemas/node-unknownmodule-RequirementsPermissionDto"}}}},"node-unknownmodule-RequirementsPermissionDto":{"description":"Permissions list","properties":{"resource":{"type":"string","description":"Resource name"},"verb":{"type":"string","description":"Permission verb"}}},"node-unknownmodule-AuthorizationVerbDto":{"description":"access rights this app needs","properties":{"verb":{"type":"string","description":"Authorization verb"},"description":{"type":"string","description":"Description"},"autoAppendable":{"type":"boolean","description":"Whether auto-appendable"}}}}}}
```
