OpenMetadata Apps API

Apps marketplace holds to application available for Open-metadata

OpenAPI Specification

openmetadata-apps-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: OpenMetadata APIs Agent Executions Apps API
  description: Common types and API definition for OpenMetadata
  contact:
    name: OpenMetadata
    url: https://open-metadata.org
    email: openmetadata-dev@googlegroups.com
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0
  version: '1.13'
servers:
- url: /api
  description: Current Host
- url: http://localhost:8585/api
  description: Endpoint URL
security:
- BearerAuth: []
tags:
- name: Apps
  description: Apps marketplace holds to application available for Open-metadata
paths:
  /v1/apps/marketplace:
    get:
      tags:
      - Apps
      summary: List application
      description: Get a list of applications. Use `fields` parameter to get only necessary fields. Use cursor-based pagination to limit the number entries in the list using `limit` and `before` or `after` query params.
      operationId: listApplications
      parameters:
      - name: fields
        in: query
        description: Fields requested in the returned resource
        schema:
          type: string
          example: owners,tags
      - name: limit
        in: query
        description: Limit the number of installed applications returned. (1 to 1000000, default = 10)
        schema:
          maximum: 1000000
          minimum: 0
          type: integer
          format: int32
          default: 10
      - name: before
        in: query
        description: Returns list of tests before this cursor
        schema:
          type: string
      - name: after
        in: query
        description: Returns list of tests after this cursor
        schema:
          type: string
      - name: include
        in: query
        description: Include all, deleted, or non-deleted entities.
        schema:
          type: string
          default: non-deleted
          enum:
          - all
          - deleted
          - non-deleted
      responses:
        '200':
          description: List of KPIs
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppMarketPlaceDefinitionList'
    put:
      tags:
      - Apps
      summary: Create Or Update App
      description: Create or Update App, it it does not exist or update an existing KPI.
      operationId: createOrUpdateApp
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateAppMarketPlaceDefinitionReq'
      responses:
        '200':
          description: 'The updated Application Objective '
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/App'
    post:
      tags:
      - Apps
      summary: Create a Application
      description: Create a application
      operationId: createApplication
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateAppMarketPlaceDefinitionReq'
      responses:
        '200':
          description: The Application
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppMarketPlaceDefinition'
        '400':
          description: Bad request
  /v1/apps/marketplace/name/{name}:
    get:
      tags:
      - Apps
      summary: Get a App by name
      description: Get a App by `name`.
      operationId: getAppByName
      parameters:
      - name: name
        in: path
        description: Name of the App
        required: true
        schema:
          type: string
      - name: fields
        in: query
        description: Fields requested in the returned resource
        schema:
          type: string
          example: owners,tags
      - name: include
        in: query
        description: Include all, deleted, or non-deleted entities.
        schema:
          type: string
          default: non-deleted
          enum:
          - all
          - deleted
          - non-deleted
      responses:
        '200':
          description: The App
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppMarketPlaceDefinition'
        '404':
          description: App for instance {name} is not found
    delete:
      tags:
      - Apps
      summary: Delete a App by name
      description: Delete a App by `name`.
      operationId: deleteAppByName
      parameters:
      - name: hardDelete
        in: query
        description: Hard delete the entity. (Default = `false`)
        schema:
          type: boolean
          default: false
      - name: name
        in: path
        description: Name of the App
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
        '404':
          description: App for instance {name} is not found
  /v1/apps/marketplace/{id}:
    get:
      tags:
      - Apps
      summary: Get a app by Id
      description: Get a app by `Id`.
      operationId: get
      parameters:
      - name: id
        in: path
        description: Id of the App
        required: true
        schema:
          type: string
          format: uuid
      - name: fields
        in: query
        description: Fields requested in the returned resource
        schema:
          type: string
          example: owners,tags
      - name: include
        in: query
        description: Include all, deleted, or non-deleted entities.
        schema:
          type: string
          default: non-deleted
          enum:
          - all
          - deleted
          - non-deleted
      responses:
        '200':
          description: The App
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppMarketPlaceDefinition'
        '404':
          description: App for instance {id} is not found
    delete:
      tags:
      - Apps
      summary: Delete a App by Id
      description: Delete a App by `Id`.
      operationId: deleteApp
      parameters:
      - name: hardDelete
        in: query
        description: Hard delete the entity. (Default = `false`)
        schema:
          type: boolean
          default: false
      - name: id
        in: path
        description: Id of the App
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: OK
        '404':
          description: App for instance {id} is not found
    patch:
      tags:
      - Apps
      summary: Updates a App
      description: Update an existing App using JsonPatch.
      externalDocs:
        description: JsonPatch RFC
        url: https://tools.ietf.org/html/rfc6902
      operationId: patchApplication_1
      parameters:
      - name: id
        in: path
        description: Id of the App
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        description: JsonPatch with array of operations
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/JsonPatch'
            example: '[{op:remove, path:/a},{op:add, path: /b, value: val}]'
      responses:
        default:
          description: default response
          content:
            application/json: {}
  /v1/apps/marketplace/async/{id}:
    delete:
      tags:
      - Apps
      summary: Asynchronously delete a App by Id
      description: Asynchronously delete a App by `Id`.
      operationId: deleteAppAsync
      parameters:
      - name: hardDelete
        in: query
        description: Hard delete the entity. (Default = `false`)
        schema:
          type: boolean
          default: false
      - name: id
        in: path
        description: Id of the App
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: OK
        '404':
          description: App for instance {id} is not found
  /v1/apps/marketplace/{id}/versions/{version}:
    get:
      tags:
      - Apps
      summary: Get a version of the App
      description: Get a version of the App by given `id`
      operationId: getSpecificAppVersion
      parameters:
      - name: id
        in: path
        description: Id of the App
        required: true
        schema:
          type: string
          format: uuid
      - name: version
        in: path
        description: KPI version number in the form `major`.`minor`
        required: true
        schema:
          type: string
          example: 0.1 or 1.1
      responses:
        '200':
          description: App
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/App'
        '404':
          description: App for instance {id} and version {version} is not found
  /v1/apps/marketplace/history:
    get:
      tags:
      - Apps
      summary: List all entity versions within a time range
      description: 'Get a paginated list of all entity versions within a given time range specified by `startTs` and `endTs` in milliseconds since epoch. '
      operationId: listAllEntityVersionsByTimestamp_7
      parameters:
      - name: startTs
        in: query
        description: Start timestamp in milliseconds since epoch
        required: true
        schema:
          type: integer
          format: int64
      - name: endTs
        in: query
        description: End timestamp in milliseconds since epoch
        required: true
        schema:
          type: integer
          format: int64
      - name: limit
        in: query
        description: Limit the number of entity returned (1 to 1000000, default = 10)
        schema:
          maximum: 500
          minimum: 1
          type: integer
          format: int32
          default: 10
      - name: before
        in: query
        description: Returns list of entity versions before this cursor
        schema:
          type: string
      - name: after
        in: query
        description: Returns list of entity versions after this cursor
        schema:
          type: string
      responses:
        '200':
          description: List of all versions
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResultList'
  /v1/apps/marketplace/{id}/versions:
    get:
      tags:
      - Apps
      summary: List Installed Application versions
      description: Get a list of all the versions of a application identified by `id`
      operationId: listAllInstalledApplications
      parameters:
      - name: id
        in: path
        description: Id of the app
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: List of installed application versions
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntityHistory'
  /v1/apps/marketplace/name/{fqn}:
    patch:
      tags:
      - Apps
      summary: Updates an App by name.
      description: Update an existing App using JsonPatch.
      externalDocs:
        description: JsonPatch RFC
        url: https://tools.ietf.org/html/rfc6902
      operationId: patchApplication
      parameters:
      - name: fqn
        in: path
        description: Name of the App
        required: true
        schema:
          type: string
      requestBody:
        description: JsonPatch with array of operations
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/JsonPatch'
            example: '[{op:remove, path:/a},{op:add, path: /b, value: val}]'
      responses:
        default:
          description: default response
          content:
            application/json: {}
  /v1/apps/marketplace/restore:
    put:
      tags:
      - Apps
      summary: Restore a soft deleted KPI
      description: Restore a soft deleted App.
      operationId: restore_6
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RestoreEntity'
      responses:
        '200':
          description: 'Successfully restored the App. '
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppMarketPlaceDefinition'
  /v1/apps/configure/{name}:
    post:
      tags:
      - Apps
      summary: Configure an Application
      description: Schedule a application to be run on demand.
      operationId: configureApplication
      parameters:
      - name: name
        in: path
        description: Name of the App
        required: true
        schema:
          type: string
      responses:
        '200':
          description: The Application
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response'
        '404':
          description: Application for instance {id} is not found
  /v1/apps:
    get:
      tags:
      - Apps
      summary: List installed application
      description: Get a list of applications. Use `fields` parameter to get only necessary fields. Use cursor-based pagination to limit the number entries in the list using `limit` and `before` or `after` query params.
      operationId: listInstalledApplications
      parameters:
      - name: fields
        in: query
        description: Fields requested in the returned resource
        schema:
          type: string
          example: owners
      - name: limit
        in: query
        description: Limit the number of installed applications returned. (1 to 1000000, default = 10)
        schema:
          maximum: 1000000
          minimum: 0
          type: integer
          format: int32
          default: 10
      - name: before
        in: query
        description: Returns list of tests before this cursor
        schema:
          type: string
      - name: after
        in: query
        description: Returns list of tests after this cursor
        schema:
          type: string
      - name: agentType
        in: query
        description: Filter by agent type(s). Can be a single value or comma-separated values
        schema:
          type: string
      - name: include
        in: query
        description: Include all, deleted, or non-deleted entities.
        schema:
          type: string
          default: non-deleted
          enum:
          - all
          - deleted
          - non-deleted
      responses:
        '200':
          description: List of Installed Applications
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppList'
    put:
      tags:
      - Apps
      summary: Create Or Update App
      description: Create or Update App, it it does not exist or update an existing KPI.
      operationId: createOrUpdateApp_1
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateApp'
      responses:
        '200':
          description: 'The updated Application Objective '
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/App'
    post:
      tags:
      - Apps
      summary: Create a Application
      description: Create a application
      operationId: createApplication_1
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateApp'
      responses:
        '200':
          description: The Application
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/App'
        '400':
          description: Bad request
  /v1/apps/name/{name}:
    get:
      tags:
      - Apps
      summary: Get a App by name
      description: Get a App by `name`.
      operationId: getAppByName_1
      parameters:
      - name: name
        in: path
        description: Name of the App
        required: true
        schema:
          type: string
      - name: fields
        in: query
        description: Fields requested in the returned resource
        schema:
          type: string
          example: owners
      - name: include
        in: query
        description: Include all, deleted, or non-deleted entities.
        schema:
          type: string
          default: non-deleted
          enum:
          - all
          - deleted
          - non-deleted
      responses:
        '200':
          description: The App
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/App'
        '404':
          description: App for instance {name} is not found
    delete:
      tags:
      - Apps
      summary: Delete a App by name
      description: Delete a App by `name`.
      operationId: uninstallAppByName
      parameters:
      - name: hardDelete
        in: query
        description: Hard delete the entity. (Default = `false`)
        schema:
          type: boolean
          default: false
      - name: name
        in: path
        description: Name of the App
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
        '400':
          description: System entity {name} of type SystemApp can not be deleted.
        '404':
          description: App for instance {name} is not found
  /v1/apps/{id}:
    get:
      tags:
      - Apps
      summary: Get a app by Id
      description: Get a app by `Id`.
      operationId: get_1
      parameters:
      - name: id
        in: path
        description: Id of the App
        required: true
        schema:
          type: string
          format: uuid
      - name: fields
        in: query
        description: Fields requested in the returned resource
        schema:
          type: string
          example: owners
      - name: include
        in: query
        description: Include all, deleted, or non-deleted entities.
        schema:
          type: string
          default: non-deleted
          enum:
          - all
          - deleted
          - non-deleted
      responses:
        '200':
          description: The App
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/App'
        '404':
          description: App for instance {id} is not found
    delete:
      tags:
      - Apps
      summary: Delete a App by Id
      description: Delete a App by `Id`.
      operationId: uninstallAppByName_1
      parameters:
      - name: hardDelete
        in: query
        description: Hard delete the entity. (Default = `false`)
        schema:
          type: boolean
          default: false
      - name: id
        in: path
        description: Id of the App
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: OK
        '400':
          description: System entity {name} of type SystemApp can not be deleted.
        '404':
          description: App for instance {id} is not found
    patch:
      tags:
      - Apps
      summary: Updates a App
      description: Update an existing App using JsonPatch.
      externalDocs:
        description: JsonPatch RFC
        url: https://tools.ietf.org/html/rfc6902
      operationId: patchApplication_3
      parameters:
      - name: id
        in: path
        description: Id of the App
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        description: JsonPatch with array of operations
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/JsonPatch'
            example: '[{op:remove, path:/a},{op:add, path: /b, value: val}]'
      responses:
        default:
          description: default response
          content:
            application/json: {}
  /v1/apps/async/{id}:
    delete:
      tags:
      - Apps
      summary: Asynchronously delete a App by Id
      description: Asynchronously delete a App by `Id`.
      operationId: uninstallAppByNameAsync
      parameters:
      - name: hardDelete
        in: query
        description: Hard delete the entity. (Default = `false`)
        schema:
          type: boolean
          default: false
      - name: id
        in: path
        description: Id of the App
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: OK
        '400':
          description: System entity {name} of type SystemApp can not be deleted.
        '404':
          description: App for instance {id} is not found
  /v1/apps/deploy/{name}:
    post:
      tags:
      - Apps
      summary: Deploy App to Quartz or Ingestion
      description: Deploy App to Quartz or Ingestion.
      operationId: deployApplicationToQuartzOrIngestion
      parameters:
      - name: name
        in: path
        description: Name of the App
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Application trigger status code
          content:
            application/json: {}
        '404':
          description: Application for instance {id} is not found
  /v1/apps/name/{name}/logs:
    get:
      tags:
      - Apps
      summary: Retrieve all logs from last ingestion pipeline run for the application
      description: Get all logs from last ingestion pipeline run by `Id`.
      operationId: getLastLogs
      parameters:
      - name: name
        in: path
        description: Name of the App
        required: true
        schema:
          type: string
      - name: after
        in: query
        description: Returns log chunk after this cursor
        schema:
          type: string
          default: ''
      - name: runId
        in: query
        description: Pipeline run ID to fetch logs for a specific run. If not provided, returns logs for the latest run.
        schema:
          type: string
      - name: limit
        in: query
        description: Maximum number of lines to return (only applies to streamable logs)
        schema:
          type: integer
          format: int64
          default: 1000
      responses:
        '200':
          description: JSON object with the task instance name of the ingestion on each key and log in the value
          content:
            application/json: {}
        '404':
          description: Logs for instance {id} is not found
  /v1/apps/{id}/versions/{version}:
    get:
      tags:
      - Apps
      summary: Get a version of the App
      description: Get a version of the App by given `id`
      operationId: getSpecificAppVersion_1
      parameters:
      - name: id
        in: path
        description: Id of the App
        required: true
        schema:
          type: string
          format: uuid
      - name: version
        in: path
        description: App version number in the form `major`.`minor`
        required: true
        schema:
          type: string
          example: 0.1 or 1.1
      responses:
        '200':
          description: App
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/App'
        '404':
          description: App for instance {id} and version {version} is not found
  /v1/apps/installed:
    get:
      tags:
      - Apps
      summary: List Entity Reference for installed application
      description: 'Get a list of applications '
      operationId: listInstalledAppsInformation
      responses:
        '200':
          description: List of Installed Applications Entity Reference
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppRefList'
  /v1/apps/name/{name}/extension:
    get:
      tags:
      - Apps
      summary: List App Extension data
      description: Get a list of applications Extension data. Use cursor-based pagination to limit the number entries in the list using `offset` query params.
      operationId: listAppExtension
      parameters:
      - name: name
        in: path
        description: Name of the App
        required: true
        schema:
          type: string
      - name: limit
        in: query
        description: Limit records. (1 to 1000000, default = 10)
        schema:
          maximum: 1000000
          minimum: 0
          type: integer
          format: int32
          default: 10
      - name: offset
        in: query
        description: Offset records. (0 to 1000000, default = 0)
        schema:
          maximum: 1000000
          minimum: 0
          type: integer
          format: int32
          default: 0
      - name: startTs
        in: query
        description: Filter pipeline status after the given start timestamp
        schema:
          type: number
      - name: extensionType
        in: query
        description: Get the extension type
        schema:
          type: string
      - name: byName
        in: query
        description: List extensions by name instead of id
        schema:
          type: boolean
          default: false
      responses:
        '200':
          description: List of Installed Applications Runs
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppExtension'
  /v1/apps/name/{name}/status:
    get:
      tags:
      - Apps
      summary: List App Run Records
      description: Get a list of applications Run Record. Use cursor-based pagination to limit the number entries in the list using `offset` query params.
      operationId: listAppRunRecords
      parameters:
      - name: name
        in: path
        description: Name of the App
        required: true
        schema:
          type: string
      - name: limit
        in: query
        description: Limit records. (1 to 1000000, default = 10)
        schema:
          maximum: 1000
          minimum: 0
          type: integer
          format: int32
          default: 10
      - name: offset
        in: query
        description: Offset records. (0 to 1000000, default = 0)
        schema:
          maximum: 1000
          minimum: 0
          type: integer
          format: int32
          default: 0
      - name: startTs
        in: query
        description: Filter pipeline status after the given start timestamp
        schema:
          type: number
      - name: endTs
        in: query
        description: Filter pipeline status before the given end timestamp
        schema:
          type: number
      responses:
        '200':
          description: List of Installed Applications Runs
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppRunList'
  /v1/apps/history:
    get:
      tags:
      - Apps
      summary: List all entity versions within a time range
      description: 'Get a paginated list of all entity versions within a given time range specified by `startTs` and `endTs` in milliseconds since epoch. '
      operationId: listAllEntityVersionsByTimestamp_8
      parameters:
      - name: startTs
        in: query
        description: Start timestamp in milliseconds since epoch
        required: true
        schema:
          type: integer
          format: int64
      - name: endTs
        in: query
        description: End timestamp in milliseconds since epoch
        required: true
        schema:
          type: integer
          format: int64
      - name: limit
        in: query
        description: Limit the number of entity returned (1 to 1000000, default = 10)
        schema:
          maximum: 500
          minimum: 1
          type: integer
          format: int32
          default: 10
      - name: before
        in: query
        description: Returns list of entity versions before this cursor
        schema:
          type: string
      - name: after
        in: query
        description: Returns list of entity versions after this cursor
        schema:
          type: string
      responses:
        '200':
          description: List of all versions
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResultList'
  /v1/apps/name/{name}/runs/latest:
    get:
      tags:
      - Apps
      summary: Get Latest App Run Record
      description: Get a latest applications Run Record.
      operationId: latestAppRunRecord
      parameters:
      - name: name
        in: path
        description: Name of the App
        required: true
        schema:
          type: string
      - name: after
        in: query
        description: Returns log chunk after this cursor
        schema:
          type: string
          default: ''
      responses:
        '200':
          description: List of Installed Applications Runs
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppRunRecord'
  /v1/apps/name/{name}/live-indexing-queue:
    get:
      tags:
      - Apps
      summary: List Search Index Retry Queue
      description: Get the current live indexing retry queue entries for the SearchIndexingApplication.
      operationId: listSearchIndexRetryQueue
      parameters:
      - name: name
        in: path
        description: Name of the App
        required: true
        schema:
          type: string
      - name: limit
        in: query
        description: Limit records. (1 to 1000, default = 10)
        schema:
          maximum: 1000
          minimum: 0
          type: integer
          format: int32
          default: 10
      - name: offset
        in: query
        description: Offset records. (0 to 1000000, default = 0)
        schema:
          minimum: 0
          type: integer
          format: int32
          default: 0
      responses:
        '200':
          description: List of retry queue records
          content:
            application/json: {}
  /v1/apps/{id}/versions:
    get:
      tags:
      - Apps
      summary: List Installed Application versions
      description: Get a list of all the versions of a application identified by `id`
      operationId: listAllInstalledApplications_1
      parameters:
      - name: id
        in: path
        description: Id of the app
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: List of installed application versions
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntityHistory'
  /v1/apps/name/{fqn}:
    patch:
      tags:
      - Apps
      summary: Updates a App by name.
      description: Update an existing App using JsonPatch.
      externalDocs:
        description: JsonPatch RFC
        url: https://tools.ietf.org/html/rfc6902
      operationId: patchApplication_2
      parameters:
      - name: fqn
        in: path
        description: Name of the App
        required: true
        schema:
          type: string
      requestBody:
        description: JsonPatch with array of operations
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/JsonPatch'
            example: '[{op:remove, path:/a},{op:add, path: /b, value: val}]'
      responses:
        default:
          description: default response
          content:
            application/json: {}
  /v1/apps/restore:
    put:
      tags:
      - Apps
      summary: Restore a soft deleted KPI
      description: Restore a soft deleted App.
      operationId: restore_7
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RestoreEntity'
      responses:
        '200':
          description: 'Successfully restored the App. '
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/App'
  /v1/apps/schedule/{name}:
    post:
      tags:
      - Apps
      summary: Schedule an Application
      description: Schedule a application to be run on demand.
      operationId: scheduleApplication
      parameters:
      - name: name
        in: path
        description: Name of the App
        required: t

# --- truncated at 32 KB (72 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/openmetadata/refs/heads/main/openapi/openmetadata-apps-api-openapi.yml