Fermyon apps API

The apps API from Fermyon — 6 operation(s) for apps.

OpenAPI Specification

fermyon-apps-api-openapi.yml Raw ↑
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