openapi: 3.1.0 info: title: Fermyon Cloud accounts apps API version: '1.0' description: OpenAPI 3.1 specification for the Fermyon Cloud REST API, derived from the public swagger.json published in the fermyon/cloud-openapi repository on GitHub. servers: - url: https://cloud.fermyon.com description: Fermyon Cloud production API security: - Bearer: [] tags: - name: apps paths: /api/apps: get: tags: - apps parameters: - name: searchText in: query schema: type: string default: '' - name: pageIndex in: query schema: type: integer format: int32 default: 0 - name: pageSize in: query schema: type: integer format: int32 default: 50 - name: sortBy in: query schema: type: string default: Name - name: IsSortedAscending in: query schema: type: boolean default: true - name: exactMatch in: query schema: type: boolean default: false - name: Api-Version in: header description: The requested API version schema: type: string default: '1.0' responses: '200': description: Success content: text/plain: schema: $ref: '#/components/schemas/AppItemPage' application/json: schema: $ref: '#/components/schemas/AppItemPage' text/json: schema: $ref: '#/components/schemas/AppItemPage' post: tags: - apps parameters: - name: Api-Version in: header description: The requested API version schema: type: string default: '1.0' requestBody: content: application/json-patch+json: schema: $ref: '#/components/schemas/CreateAppCommand' application/json: schema: $ref: '#/components/schemas/CreateAppCommand' text/json: schema: $ref: '#/components/schemas/CreateAppCommand' application/*+json: schema: $ref: '#/components/schemas/CreateAppCommand' required: true responses: '200': description: Success content: text/plain: schema: type: string format: uuid application/json: schema: type: string format: uuid text/json: schema: type: string format: uuid /api/apps/{id}: get: tags: - apps parameters: - name: id in: path required: true schema: type: string format: uuid - name: Api-Version in: header description: The requested API version schema: type: string default: '1.0' responses: '200': description: Success content: text/plain: schema: $ref: '#/components/schemas/AppItem' application/json: schema: $ref: '#/components/schemas/AppItem' text/json: schema: $ref: '#/components/schemas/AppItem' put: tags: - apps parameters: - name: id in: path required: true schema: type: string format: uuid - name: Api-Version in: header description: The requested API version schema: type: string default: '1.0' requestBody: content: application/json-patch+json: schema: $ref: '#/components/schemas/UpdateAppCommand' application/json: schema: $ref: '#/components/schemas/UpdateAppCommand' text/json: schema: $ref: '#/components/schemas/UpdateAppCommand' application/*+json: schema: $ref: '#/components/schemas/UpdateAppCommand' required: true responses: '200': description: Success patch: tags: - apps parameters: - name: id in: path required: true schema: type: string format: uuid - name: Api-Version in: header description: The requested API version schema: type: string default: '1.0' requestBody: content: application/json-patch+json: schema: $ref: '#/components/schemas/PatchAppCommand' application/json: schema: $ref: '#/components/schemas/PatchAppCommand' text/json: schema: $ref: '#/components/schemas/PatchAppCommand' application/*+json: schema: $ref: '#/components/schemas/PatchAppCommand' required: true responses: '200': description: Success delete: tags: - apps parameters: - name: id in: path required: true schema: type: string format: uuid - name: Api-Version in: header description: The requested API version schema: type: string default: '1.0' responses: '200': description: Success /api/apps/{id}/request-count: get: tags: - apps parameters: - name: id in: path required: true schema: type: string format: uuid - name: from in: query schema: type: string format: date-time - name: to in: query schema: type: string format: date-time - name: Api-Version in: header description: The requested API version schema: type: string default: '1.0' responses: '200': description: Success content: text/plain: schema: $ref: '#/components/schemas/AppRequestCountItem' application/json: schema: $ref: '#/components/schemas/AppRequestCountItem' text/json: schema: $ref: '#/components/schemas/AppRequestCountItem' /api/apps/{id}/logs: get: tags: - apps parameters: - name: id in: path required: true schema: type: string format: uuid - name: max in: query schema: type: integer format: int32 - name: since in: query schema: type: string - name: Api-Version in: header description: The requested API version schema: type: string default: '1.0' responses: '200': description: Success content: text/plain: schema: $ref: '#/components/schemas/GetAppLogsVm' application/json: schema: $ref: '#/components/schemas/GetAppLogsVm' text/json: schema: $ref: '#/components/schemas/GetAppLogsVm' /api/apps/{id}/logs/raw: get: tags: - apps parameters: - name: id in: path required: true schema: type: string format: uuid - name: max in: query schema: type: integer format: int32 - name: since in: query schema: type: string - name: Api-Version in: header description: The requested API version schema: type: string default: '1.0' responses: '200': description: Success content: text/plain: schema: $ref: '#/components/schemas/GetAppRawLogsVm' application/json: schema: $ref: '#/components/schemas/GetAppRawLogsVm' text/json: schema: $ref: '#/components/schemas/GetAppRawLogsVm' /api/apps/{id}/events: get: tags: - apps parameters: - name: id in: path required: true schema: type: string format: uuid - name: from in: query schema: type: string format: date-time - name: to in: query schema: type: string format: date-time - name: Api-Version in: header description: The requested API version schema: type: string default: '1.0' responses: '200': description: Success content: text/plain: schema: type: array items: $ref: '#/components/schemas/AppEventItem' application/json: schema: type: array items: $ref: '#/components/schemas/AppEventItem' text/json: schema: type: array items: $ref: '#/components/schemas/AppEventItem' components: schemas: AppItemPage: required: - isLastPage - items - pageIndex - pageSize - totalItems type: object properties: items: type: array items: $ref: '#/components/schemas/AppItem' totalItems: type: integer format: int32 pageIndex: type: integer format: int32 pageSize: type: integer format: int32 isLastPage: type: boolean readOnly: true additionalProperties: false Meta: type: object properties: appId: type: string channelId: type: string deploymentId: type: string requestId: type: string triggerId: type: string componentId: type: string additionalProperties: false Entry: type: object properties: meta: $ref: '#/components/schemas/Meta' logLines: type: array items: $ref: '#/components/schemas/LogLine' additionalProperties: false GetAppLogsVm: required: - logs type: object properties: logs: type: array items: type: string additionalProperties: false ApiHealthStatus: enum: - Healthy - Unhealthy - Degraded type: string AppEventType: enum: - Unknown - Create - Update - Delete type: string AppChannelListItem: required: - created - id - name type: object properties: id: type: string format: uuid name: minLength: 1 type: string activeRevisionNumber: type: string domain: type: string created: type: string format: date-time healthStatus: $ref: '#/components/schemas/ApiHealthStatus' lastModified: type: string format: date-time additionalProperties: false AppItem: required: - channels - created - id - lastModified - name - storageId - subdomain type: object properties: id: type: string format: uuid name: minLength: 1 type: string storageId: minLength: 1 type: string description: type: string subdomain: minLength: 1 type: string healthStatus: $ref: '#/components/schemas/ApiHealthStatus' channels: type: array items: $ref: '#/components/schemas/AppChannelListItem' domain: $ref: '#/components/schemas/AppDomainItem' lastModified: type: string format: date-time lastDeployed: type: string format: date-time nullable: true created: type: string format: date-time latestRevision: type: string nullable: true additionalProperties: false AppEventItem: type: object properties: date: type: string format: date-time type: $ref: '#/components/schemas/AppEventType' name: type: string metadata: type: object additionalProperties: type: string nullable: true additionalProperties: false GetAppRawLogsVm: required: - entries type: object properties: entries: type: array items: $ref: '#/components/schemas/Entry' additionalProperties: false CreateAppCommand: required: - name - storageId type: object properties: name: minLength: 1 type: string storageId: minLength: 1 type: string createDefaultDatabase: type: boolean additionalProperties: false AppDomainItem: required: - name - validationStatus type: object properties: name: minLength: 1 type: string validationStatus: $ref: '#/components/schemas/ValidationStatus' lastModified: type: string format: date-time additionalProperties: false AppRequestCountItem: required: - averagePerSecond - end - interval - points - start - total type: object properties: start: type: integer format: int64 end: type: integer format: int64 interval: type: integer format: int32 total: type: integer format: int64 averagePerSecond: type: number format: double points: type: array items: $ref: '#/components/schemas/AppRequestPointItem' additionalProperties: false UpdateAppCommand: required: - id - name type: object properties: id: type: string format: uuid name: minLength: 1 type: string additionalProperties: false LogLine: type: object properties: time: type: string source: type: string line: type: string additionalProperties: false AppRequestPointItem: required: - timestamp - value type: object properties: timestamp: type: integer format: int64 value: type: integer format: int64 additionalProperties: false ValidationStatus: enum: - InProgress - Error - Ready - Provisioning type: string PatchAppCommand: required: - id type: object properties: id: type: string format: uuid domain: $ref: '#/components/schemas/StringField' hostname: $ref: '#/components/schemas/StringField' additionalProperties: false StringField: type: string properties: value: type: string additionalProperties: false securitySchemes: Bearer: type: apiKey description: 'JWT Authorization header using the Bearer scheme. Example: "Authorization: Bearer {token}"' name: Authorization in: header