Events.com AppX Deployment API

Deploy and manage AppX apps in EKS

OpenAPI Specification

eventscom-appx-deployment-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Saasxl-api doc AppX Deployment API
  version: '1.0'
  description: Deploy and manage AppX apps in EKS
servers:
- url: https://datagol-be.events.com
  description: Generated server url
tags:
- name: AppX Deployment
  description: Deploy and manage AppX apps in EKS
paths:
  /api/v1/appx/apps/{appId}:
    get:
      tags:
      - AppX Deployment
      summary: Get an AppX app by ID
      operationId: getApp
      parameters:
      - name: appId
        in: path
        required: true
        schema:
          type: string
      responses:
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                oneOf:
                - type: object
                - $ref: '#/components/schemas/SaasxlResponseDTOObject'
        '503':
          description: Service Unavailable
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SaasxlResponseDTOObject'
        '403':
          description: Forbidden
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SaasxlResponseDTOObject'
        '501':
          description: Not Implemented
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SaasxlResponseDTOObject'
        '500':
          description: Internal Server Error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SaasxlResponseDTOObject'
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SaasxlResponseDTOAppXDTO'
      security:
      - s_jwt: []
    put:
      tags:
      - AppX Deployment
      summary: Update AppX app metadata
      operationId: updateApp
      parameters:
      - name: appId
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AppXDTO'
        required: true
      responses:
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                oneOf:
                - type: object
                - $ref: '#/components/schemas/SaasxlResponseDTOObject'
        '503':
          description: Service Unavailable
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SaasxlResponseDTOObject'
        '403':
          description: Forbidden
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SaasxlResponseDTOObject'
        '501':
          description: Not Implemented
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SaasxlResponseDTOObject'
        '500':
          description: Internal Server Error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SaasxlResponseDTOObject'
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SaasxlResponseDTOAppXDTO'
      security:
      - s_jwt: []
  /api/v1/appx/{appId}/custom-domain:
    post:
      tags:
      - AppX Deployment
      summary: Attach a custom domain to an AppX app
      description: Starts the custom domain verification flow. Returns the DNS records the user must add in their provider (A record for apex, CNAME for www). Poll the status endpoint with the Refresh button to advance through PENDING_DNS → CERT_PROVISIONING → ACTIVE.
      operationId: addCustomDomain
      parameters:
      - name: appId
        in: path
        description: The appId of the deployed AppX app
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CustomDomainRequest'
        required: true
      responses:
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                oneOf:
                - type: object
                - $ref: '#/components/schemas/SaasxlResponseDTOObject'
        '503':
          description: Service Unavailable
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SaasxlResponseDTOObject'
        '403':
          description: Forbidden
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SaasxlResponseDTOObject'
        '501':
          description: Not Implemented
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SaasxlResponseDTOObject'
        '500':
          description: Internal Server Error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SaasxlResponseDTOObject'
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SaasxlResponseDTOCustomDomainStatusResponse'
      security:
      - s_jwt: []
    delete:
      tags:
      - AppX Deployment
      summary: Remove custom domain from an AppX app
      description: Removes the custom domain host rules from the Ingress and cleans up the TLS secret. After this call a new custom domain can be attached.
      operationId: removeCustomDomain
      parameters:
      - name: appId
        in: path
        description: The appId of the deployed AppX app
        required: true
        schema:
          type: string
      responses:
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                oneOf:
                - type: object
                - $ref: '#/components/schemas/SaasxlResponseDTOObject'
        '503':
          description: Service Unavailable
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SaasxlResponseDTOObject'
        '403':
          description: Forbidden
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SaasxlResponseDTOObject'
        '501':
          description: Not Implemented
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SaasxlResponseDTOObject'
        '500':
          description: Internal Server Error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SaasxlResponseDTOObject'
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SaasxlResponseDTOVoid'
      security:
      - s_jwt: []
  /api/v1/appx/deploy:
    post:
      tags:
      - AppX Deployment
      summary: Deploy an AppX app
      description: Accepts a Docker image, appId, name and optional preview image, starts a durable Temporal workflow that creates a pod in the appx-apps namespace, persists app metadata to the database, and returns the app record. Poll GET noCo/api/v1/requestLog/status/{requestId} to track progress.
      operationId: deploy
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AppXDTO'
        required: true
      responses:
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                oneOf:
                - type: object
                - $ref: '#/components/schemas/SaasxlResponseDTOObject'
        '503':
          description: Service Unavailable
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SaasxlResponseDTOObject'
        '403':
          description: Forbidden
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SaasxlResponseDTOObject'
        '501':
          description: Not Implemented
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SaasxlResponseDTOObject'
        '500':
          description: Internal Server Error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SaasxlResponseDTOObject'
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SaasxlResponseDTOAppXDTO'
      security:
      - s_jwt: []
  /api/v1/appx/{appId}/custom-domain/status:
    get:
      tags:
      - AppX Deployment
      summary: Poll custom domain status
      description: Returns current status (PENDING_DNS / CERT_PROVISIONING / ACTIVE / FAILED) and which DNS records have been verified. Call this from the Refresh button.
      operationId: getCustomDomainStatus
      parameters:
      - name: appId
        in: path
        description: The appId of the deployed AppX app
        required: true
        schema:
          type: string
      responses:
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                oneOf:
                - type: object
                - $ref: '#/components/schemas/SaasxlResponseDTOObject'
        '503':
          description: Service Unavailable
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SaasxlResponseDTOObject'
        '403':
          description: Forbidden
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SaasxlResponseDTOObject'
        '501':
          description: Not Implemented
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SaasxlResponseDTOObject'
        '500':
          description: Internal Server Error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SaasxlResponseDTOObject'
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SaasxlResponseDTOCustomDomainStatusResponse'
      security:
      - s_jwt: []
  /api/v1/appx/apps:
    get:
      tags:
      - AppX Deployment
      summary: List all AppX apps for the current tenant
      operationId: listApps
      responses:
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                oneOf:
                - type: object
                - $ref: '#/components/schemas/SaasxlResponseDTOObject'
        '503':
          description: Service Unavailable
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SaasxlResponseDTOObject'
        '403':
          description: Forbidden
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SaasxlResponseDTOObject'
        '501':
          description: Not Implemented
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SaasxlResponseDTOObject'
        '500':
          description: Internal Server Error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SaasxlResponseDTOObject'
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SaasxlResponseDTOListAppXDTO'
      security:
      - s_jwt: []
  /api/v1/appx/{appId}:
    delete:
      tags:
      - AppX Deployment
      summary: Delete an AppX app
      description: Deletes the Kubernetes pod and soft-deletes the DB record for the given appId.
      operationId: deleteApp
      parameters:
      - name: appId
        in: path
        description: The appId used when the app was deployed
        required: true
        schema:
          type: string
      responses:
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                oneOf:
                - type: object
                - $ref: '#/components/schemas/SaasxlResponseDTOObject'
        '503':
          description: Service Unavailable
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SaasxlResponseDTOObject'
        '403':
          description: Forbidden
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SaasxlResponseDTOObject'
        '501':
          description: Not Implemented
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SaasxlResponseDTOObject'
        '500':
          description: Internal Server Error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SaasxlResponseDTOObject'
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SaasxlResponseDTOVoid'
      security:
      - s_jwt: []
components:
  schemas:
    CustomDomainStatusResponse:
      type: object
      properties:
        requestId:
          type: string
        appId:
          type: string
        apexDomain:
          type: string
        wwwDomain:
          type: string
        status:
          type: string
        apexDnsVerified:
          type: boolean
        wwwDnsVerified:
          type: boolean
        requiredDnsRecords:
          type: array
          items:
            $ref: '#/components/schemas/DnsRecord'
        apexUrl:
          type: string
        wwwUrl:
          type: string
        message:
          type: string
    SaasxlResponseDTOVoid:
      type: object
      properties:
        success:
          type: boolean
        version:
          type: string
        date:
          type: string
          format: date-time
        error:
          $ref: '#/components/schemas/ErrorMessage'
        data:
          type: object
    SaasxlResponseDTOObject:
      type: object
      properties:
        success:
          type: boolean
        version:
          type: string
        date:
          type: string
          format: date-time
        error:
          $ref: '#/components/schemas/ErrorMessage'
        data:
          type: object
    UserDTO:
      type: object
      properties:
        id:
          type: integer
          format: int64
        firstname:
          type: string
        lastname:
          type: string
        email:
          type: string
        companyName:
          type: string
        companyId:
          type: integer
          format: int64
        status:
          type: string
        roles:
          type: array
          items:
            type: string
        permissions:
          uniqueItems: true
          type: array
          items:
            type: string
        joinDate:
          type: string
          format: date-time
        mfaEnabled:
          type: boolean
        redirectToMfaFlow:
          type: boolean
        tokenExpiryTime:
          type: integer
          format: int64
        isServiceAccount:
          type: boolean
        lastLogin:
          type: string
          format: date-time
        signInMethod:
          type: string
          enum:
          - EMAIL
          - GOOGLE
          - MICROSOFT
        isOnboardingCompleted:
          type: boolean
        role:
          type: string
        department:
          type: string
        anonymousUserId:
          type: string
        thirdPartyUser:
          type: boolean
    ErrorMessage:
      type: object
      properties:
        statusCode:
          type: integer
          format: int32
        requestId:
          type: string
        message:
          type: object
        details:
          type: object
        errorCodes:
          type: array
          items:
            type: string
    DnsRecord:
      type: object
      properties:
        type:
          type: string
        name:
          type: string
        value:
          type: string
        ttl:
          type: string
        description:
          type: string
    SaasxlResponseDTOListAppXDTO:
      type: object
      properties:
        success:
          type: boolean
        version:
          type: string
        date:
          type: string
          format: date-time
        error:
          $ref: '#/components/schemas/ErrorMessage'
        data:
          type: array
          items:
            $ref: '#/components/schemas/AppXDTO'
    AppXDTO:
      type: object
      properties:
        createdBy:
          $ref: '#/components/schemas/UserDTO'
        modifiedBy:
          $ref: '#/components/schemas/UserDTO'
        createDate:
          type: string
          format: date-time
        modiDate:
          type: string
          format: date-time
        id:
          type: string
        name:
          type: string
        previewImage:
          type: string
        appUrl:
          type: string
        dockerImageTag:
          type: string
        customDomain:
          type: string
        customDomainStatus:
          type: string
        companyId:
          type: integer
          format: int64
        requestId:
          type: string
    SaasxlResponseDTOCustomDomainStatusResponse:
      type: object
      properties:
        success:
          type: boolean
        version:
          type: string
        date:
          type: string
          format: date-time
        error:
          $ref: '#/components/schemas/ErrorMessage'
        data:
          $ref: '#/components/schemas/CustomDomainStatusResponse'
    CustomDomainRequest:
      required:
      - apexDomain
      type: object
      properties:
        apexDomain:
          pattern: ^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$
          type: string
    SaasxlResponseDTOAppXDTO:
      type: object
      properties:
        success:
          type: boolean
        version:
          type: string
        date:
          type: string
          format: date-time
        error:
          $ref: '#/components/schemas/ErrorMessage'
        data:
          $ref: '#/components/schemas/AppXDTO'
  securitySchemes:
    s_jwt:
      type: http
      description: Jwt Token
      scheme: bearer
      bearerFormat: JWT