---
title: "Create Integration"
url: "https://us-prod.jeffyongtaotang.com/apis/konnect-service-catalog-1/versions/cdbef9b7-686c-4189-bbc8-55c727a972e8/operations/create-catalog-integration"
---

> Full API specification: https://us-prod.jeffyongtaotang.com/apis/konnect-service-catalog-1/versions/cdbef9b7-686c-4189-bbc8-55c727a972e8.md

# Create Integration

`POST` `/integrations`

Operation ID: `create-catalog-integration`

Creates a catalog integration.

## Request body (required)

Content types: `application/json`

## Responses

- `201` - A response containing a single integration object.
- `400` - Bad Request
- `401` - Unauthorized
- `403` - Forbidden

## OpenAPI definition

```yaml
openapi: 3.0.3
info:
  title: Konnect Service Catalog
  version: 1.3.0
servers:
  - url: https://us.api.konghq.com/v1
    description: United-States Production region
  - url: https://eu.api.konghq.com/v1
    description: Europe Production region
  - url: https://au.api.konghq.com/v1
    description: Australia Production region
  - url: https://me.api.konghq.com/v1
    description: Middle-East Production region
  - url: https://in.api.konghq.com/v1
    description: India Production region
  - url: https://sg.api.konghq.com/v1
    description: Singapore Production region
paths:
  /integrations:
    post:
      x-unstable: true
      x-internal: true
      summary: Create Integration
      description: Creates a catalog integration.
      operationId: create-catalog-integration
      requestBody:
        $ref: "#/components/requestBodies/CreateCatalogIntegrationRequest"
      responses:
        "201":
          $ref: "#/components/responses/CatalogIntegrationResponse"
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
      tags:
        - Catalog Integrations
security:
  - konnectAccessToken: []
  - personalAccessToken: []
  - systemAccountAccessToken: []
components:
  requestBodies:
    CreateCatalogIntegrationRequest:
      required: true
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/CreateCatalogIntegration"
          examples:
            Integration:
              $ref: "#/components/examples/CreatePrivateCatalogIntegrationPayload"
  responses:
    CatalogIntegrationResponse:
      description: A response containing a single integration object.
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/CatalogIntegration"
          examples:
            Integration:
              $ref: "#/components/examples/CatalogIntegrationResponse"
    BadRequest:
      description: Bad Request
      content:
        application/problem+json:
          schema:
            $ref: "#/components/schemas/BadRequestError"
    Unauthorized:
      description: Unauthorized
      content:
        application/problem+json:
          schema:
            $ref: "#/components/schemas/UnauthorizedError"
          examples:
            UnauthorizedExample:
              $ref: "#/components/examples/UnauthorizedExample"
    Forbidden:
      description: Forbidden
      content:
        application/problem+json:
          schema:
            $ref: "#/components/schemas/ForbiddenError"
          examples:
            UnauthorizedExample:
              $ref: "#/components/examples/ForbiddenExample"
  schemas:
    CreateCatalogIntegration:
      oneOf:
        - $ref: "#/components/schemas/CreatePrivateCatalogIntegration"
    CatalogIntegration:
      type: object
      required:
        - built_in
        - name
        - display_name
        - version
        - authorization
        - config_schema
        - resource_types
        - discovery
        - api_spec_provider
        - events
        - visibility
      x-property-annotations:
        incident_provider:
          - x-internal
          - x-unstable
        on_call_provider:
          - x-internal
          - x-unstable
        pull_request_provider:
          - x-internal
          - x-unstable
        workflow_provider:
          - x-internal
          - x-unstable
      properties:
        name:
          type: string
          description: The machine name of the integration that uniquely identifies it
            within the catalog.
          example: gateway-manager
          readOnly: true
        display_name:
          type: string
          description: The display name of the integration.
          example: Gateway Manager
        description:
          type: string
          description: The description of the integration.
        built_in:
          type: boolean
          description: |
            Denotes whether the integration is built-in to the catalog.
            Built-in integrations are always connected and available by default.
          example: true
          readOnly: true
        version:
          type: string
          description: The integration version.
          example: v1
          readOnly: true
        visibility:
          type: string
          description: The visibility of the integration.
          enum:
            - public
            - private
          example: public
        authorization:
          $ref: "#/components/schemas/CatalogIntegrationAuthorization"
        config_schema:
          $ref: "#/components/schemas/CatalogIntegrationConfigSchema"
        resource_types:
          $ref: "#/components/schemas/CatalogIntegrationResourceTypes"
        discovery:
          $ref: "#/components/schemas/CatalogIntegrationDiscovery"
        api_spec_provider:
          $ref: "#/components/schemas/CatalogIntegrationApiSpecProvider"
        events:
          $ref: "#/components/schemas/CatalogIntegrationEvents"
        incident_provider:
          $ref: "#/components/schemas/CatalogIntegrationIncidentProvider"
        on_call_provider:
          $ref: "#/components/schemas/CatalogIntegrationOnCallProvider"
        pull_request_provider:
          $ref: "#/components/schemas/CatalogIntegrationPullRequestProvider"
        workflow_provider:
          $ref: "#/components/schemas/CatalogIntegrationWorkflowProvider"
    BadRequestError:
      allOf:
        - $ref: "#/components/schemas/BaseError"
        - type: object
          required:
            - invalid_parameters
          properties:
            invalid_parameters:
              $ref: "#/components/schemas/InvalidParameters"
    UnauthorizedError:
      allOf:
        - $ref: "#/components/schemas/BaseError"
        - type: object
          properties:
            status:
              example: 401
            title:
              example: Unauthorized
            type:
              example: https://httpstatuses.com/401
            instance:
              example: kong:trace:1234567890
            detail:
              example: Invalid credentials
    ForbiddenError:
      allOf:
        - $ref: "#/components/schemas/BaseError"
        - type: object
          properties:
            status:
              example: 403
            title:
              example: Forbidden
            type:
              example: https://httpstatuses.com/403
            instance:
              example: kong:trace:1234567890
            detail:
              example: Forbidden
    CreatePrivateCatalogIntegration:
      type: object
      additionalProperties: false
      required:
        - visibility
        - resource_types
        - description
        - display_name
      properties:
        visibility:
          type: string
          enum:
            - private
        resource_types:
          $ref: "#/components/schemas/CatalogIntegrationResourceTypes"
        description:
          type: string
          description: Description of the integration.
          maxLength: 2048
        display_name:
          type: string
          description: The display name of the integration.
          minLength: 1
          maxLength: 120
          example: My Integration
    CatalogIntegrationAuthorization:
      x-convert-oneOf: true
      anyOf:
        - type: object
          nullable: true
        - $ref: "#/components/schemas/OAuth"
        - $ref: "#/components/schemas/MultiKeyAuth"
        - $ref: "#/components/schemas/GitHubAppInstallationAuth"
      title: CatalogIntegrationAuthorization
      description: Defines the authorization strategy for an integration.
    CatalogIntegrationConfigSchema:
      description: Defines the configuration schema for the integration.
      additionalProperties:
        x-convert-oneOf: true
        anyOf:
          - type: object
            nullable: true
          - $ref: "#/components/schemas/StringConfigFieldSchema"
          - $ref: "#/components/schemas/EnumConfigFieldSchema"
          - $ref: "#/components/schemas/BooleanConfigFieldSchema"
      example:
        base_url:
          type: string
          display_name: Base URL
          description: The customer-specific API URL
          required: true
    CatalogIntegrationResourceTypes:
      type: object
      description: >
        Defines the resource types that the integration manages within the
        catalog.


        This schema is a key-value object where:
          - Keys are globally unique, machine-readable identifiers for each resource type.
          - Values are objects describing metadata about the resource type.

        This declaration enables the platform to understand the structure,
        identity, and behavior of resources discovered by the integration.

        By registering resource types, integrations communicate the kinds of
        entities they will ingest and maintain,

        allowing the catalog to enforce consistency, validation, and visibility
        across all integrations.
      additionalProperties:
        type: object
        title: ResourceType
        x-property-annotations:
          resource_id_template:
            - x-internal
            - x-unstable
          integration_data_schema:
            - x-internal
            - x-unstable
        required:
          - resource_id_template
          - schema
          - integration_data_schema
        properties:
          display_name:
            type: string
            description: The user-friendly resource type name.
          resource_id_template:
            type: string
            description: >
              Custom template used to generate a string that uniquely identifies
              a resource.

              The template must include at least one key defined in the resource
              type schema definition, enclosed in double curly braces (e.g.,
              `{{field_name}}`).

              This template must not reference keys not required to identify the
              external resource.
          schema:
            $ref: "#/components/schemas/SimpleSchema"
          integration_data_schema:
            $ref: "#/components/schemas/CatalogIntegrationResourceTypeIntegrationDataSchema"
      example:
        gateway_svc:
          display_name: Gateway Service
          schema:
            type: simple
            definition:
              control_plane_id: string
              gatway_service_id: string
          resource_id_template: "{{control_plane_id}}:{{gateway_service_id}}"
          integration_data_schema: null
        analytics_dashboard:
          display_name: Dashboard
          schema:
            type: simple
            definition:
              dashboard_id: string
          resource_id_template: "{{dashboard_id}}"
          integration_data_schema: null
    CatalogIntegrationDiscovery:
      type: object
      description: >
        Defines how the integration participates in Discovery.

        Discovery enables integrations to automatically ingest and update
        resources in the catalog.
      nullable: true
      required:
        - resource_integration_data_examples
      properties:
        resource_integration_data_examples:
          description: >
            A map of example resource `integration_data` payloads by resource
            type.

              - Keys are the machine-readable, globally unique names of resource types registered by this integration.
              - Values are example `integration_data` payloads.
          type: object
          additionalProperties:
            type: object
            additionalProperties: true
            description: An example `integration_data` payload for the given resource type.
          example:
            gateway_service:
              control_plane:
                id: 00000000-0000-0000-0000-000000000000
                name: dev-ext
                labels:
                  env: development
              gateway_service:
                id: 11111111-1111-1111-1111-111111111111
                name: gateway-service
                host: konghq.com
                path: /example
                type: service
                port: 443
                protocol: https
                enabled: true
    CatalogIntegrationApiSpecProvider:
      description: >
        Defines how an integration behaves as a source provider of Catalog
        Service API specs.

        API specs are entities that can be attached to Catalog Services.

        When an integration implements this capability, it can act as a source
        type for API spec contents.

        In this role, the integration becomes the source of truth for the spec.

        When a spec is attached to a Catalog Service using this source type, the
        platform relies on the external system to provide and update the spec
        data.

        A null value indicates the given integration does not act as a source
        provider of API specs.
      type: object
      nullable: true
      required:
        - name
        - display_name
        - description
        - config_schema
        - resource_type
      properties:
        name:
          type: string
          example: konnect_api
          description: >
            The globally unique name of the API spec provider that identifies it
            within the catalog.

            Corresponds to the API spec provider `type` when creating API specs.
        display_name:
          type: string
          example: Konnect API
          description: A user-friendly name for the API spec provider.
        description:
          type: string
          description: An brief description of the API spec provider.
        config_schema:
          type: object
          required:
            - type
            - definition
          properties:
            type:
              type: string
              enum:
                - simple
            definition:
              type: object
              additionalProperties:
                type: string
                enum:
                  - string
                  - number
                  - boolean
          description: Defines the shape of the API spec provider config.
          example:
            type: simple
            definition:
              api_id: string
        resource_type:
          type: string
          nullable: true
          description: >
            When non-null, denotes that the API spec provider is bound to the
            given Resource type.

            This means that API specs are auto-created when a Resource of the
            given type is mapped to a service.

            Furthermore, it couples the lifecycle of the API Spec with the given
            Resource mapping.

            When the given Resource is removed, the API spec will be deleted.
    CatalogIntegrationEvents:
      description: >
        Defines the event types across all resource types belonging to the
        integration that will be ingested into the catalog.

          - Keys are the machine-readable, globally unique names of resource types registered by this integration.
          - Values are a map of event type definitions.
      type: object
      nullable: true
      additionalProperties:
        $ref: "#/components/schemas/IntegrationResourceEvents"
      example:
        gateway_svc:
          plugin_added:
            display_name: Plugin Added
            description: Event triggered when a new plugin is added to a gateway service.
            events_feed:
              enabled: true
    CatalogIntegrationIncidentProvider:
      description: >
        Defines how an integration behaves as a source provider of Catalog
        Service Incidents.

        Incidents are entities that can be attached to Catalog Services via an
        integration's Resource mapping.

        When an integration implements this capability, it can act as a source
        type for Incident data.

        In this role, the integration becomes the source of truth for the
        incident data.

        When an incident is attached to a Catalog Service using this source
        type, the platform relies on the external system to provide and update
        the incident data.

        A null value indicates the given integration does not act as a source
        provider of incidents.
      type: object
      nullable: true
      x-internal: true
      x-unstable: true
    CatalogIntegrationOnCallProvider:
      description: >
        Defines how an integration behaves as a source provider of Catalog
        Service On-Call schedules.

        On-Call schedules are entities that can be attached to Catalog Services
        via an integration's Resource mapping.

        When an integration implements this capability, it can act as a source
        type for On-Call data.

        In this role, the integration becomes the source of truth for the
        on-call schedule data.

        When an on-call schedule is attached to a Catalog Service using this
        source type, the platform relies on the external system to provide and
        update the on-call schedule data.

        A null value indicates the given integration does not act as a source
        provider of on-call schedules.
      type: object
      nullable: true
      x-internal: true
      x-unstable: true
    CatalogIntegrationPullRequestProvider:
      description: >
        Defines how an integration behaves as a source provider of Catalog
        Service Pull Requests.

        Pull Requests are entities that can be attached to Catalog Services via
        an integration's Resource mapping.

        When an integration implements this capability, it can act as a source
        type for Pull Request data.

        In this role, the integration becomes the source of truth for the pull
        request data.

        When a pull request is attached to a Catalog Service using this source
        type, the platform relies on the external system to provide and update
        the pull request data.

        A null value indicates the given integration does not act as a source
        provider of pull requests.
      type: object
      nullable: true
      x-internal: true
      x-unstable: true
    CatalogIntegrationWorkflowProvider:
      description: >
        Defines how an integration behaves as a source provider of Catalog
        Service Workflows.

        Workflows are entities that can be attached to Catalog Services via an
        integration's Resource mapping.

        When an integration implements this capability, it can act as a source
        type for Workflow data.

        In this role, the integration becomes the source of truth for the
        workflow data.

        When a workflow is attached to a Catalog Service using this source type,
        the platform relies on the external system to provide and update the
        workflow data.

        A null value indicates the given integration does not act as a source
        provider of workflows.
      type: object
      nullable: true
      x-internal: true
      x-unstable: true
    BaseError:
      type: object
      title: Error
      description: standard error
      required:
        - status
        - title
        - instance
        - detail
      properties:
        status:
          type: integer
          description: >
            The HTTP status code of the error. Useful when passing the response

            body to child properties in a frontend UI. Must be returned as an
            integer.
          readOnly: true
        title:
          type: string
          description: |
            A short, human-readable summary of the problem. It should not
            change between occurences of a problem, except for localization.
            Should be provided as "Sentence case" for direct use in the UI.
          readOnly: true
        type:
          type: string
          description: The error type.
          readOnly: true
        instance:
          type: string
          description: |
            Used to return the correlation ID back to the user, in the format
            kong:trace:<correlation_id>. This helps us find the relevant logs
            when a customer reports an issue.
          readOnly: true
        detail:
          type: string
          description: >
            A human readable explanation specific to this occurence of the
            problem.

            This field may contain request/entity data to help the user
            understand

            what went wrong. Enclose variable values in square brackets. Should
            be

            provided as "Sentence case" for direct use in the UI.
          readOnly: true
    InvalidParameters:
      type: array
      nullable: false
      uniqueItems: true
      minItems: 1
      description: invalid parameters
      items:
        oneOf:
          - $ref: "#/components/schemas/InvalidParameterStandard"
          - $ref: "#/components/schemas/InvalidParameterMinimumLength"
          - $ref: "#/components/schemas/InvalidParameterMaximumLength"
          - $ref: "#/components/schemas/InvalidParameterChoiceItem"
          - $ref: "#/components/schemas/InvalidParameterDependentItem"
    OAuth:
      type: object
      description: >
        Defines the OAuth 2.0 authorization strategy used by an integration.

        This schema provides all necessary information for the platform to
        initiate

        and manage OAuth-based authorization flows on behalf of customers.
      required:
        - type
        - config
      properties:
        type:
          type: string
          enum:
            - oauth
          x-terraform-transform-const: true
        overridable_config:
          description: >
            A list of field names from the `config` object (e.g., `client_id`,
            `authorization_endpoint`, etc)

            that can be overridden on a per-customer basis. When a field is
            listed here, the catalog allows

            customer-defined values to take precedence over the default
            configuration provided by the integration.

            This supports flexible deployment models, including both SaaS-based
            and self-hosted OAuth authorization flows.
          type: array
          items:
            type: string
            enum:
              - client_id
              - client_secret
              - authorization_endpoint
              - token_endpoint
        config:
          type: object
          required:
            - grant_type
            - client_id
            - authorization_endpoint
            - token_endpoint
            - scope
            - rolling_refresh_exp_seconds
          properties:
            grant_type:
              type: string
              enum:
                - authorization_code
              description: >
                The OAuth 2.0 grant type used for authorization (e.g.,
                `authorization_code`).

                Determines the flow the integration uses to request access
                tokens.
            client_id:
              type: string
              example: d745213a-b7e8-4998-abe3-41f164001970
              description: The OAuth client identifier registered with the integration
                provider.
            authorization_endpoint:
              type: object
              required:
                - url
              properties:
                url:
                  type: string
                  format: uri
                  example: https://identity.service.com/oauth/authorize
                  description: The URL where users are redirected to authorize access.
            token_endpoint:
              type: object
              required:
                - url
              properties:
                url:
                  type: string
                  format: uri
                  example: https://identity.service.com/oauth/token
                  description: The URL used to retrieve access tokens.
            scope:
              type: array
              items:
                type: string
              example:
                - read
                - write
              description: |
                A list of permission scopes requested by the integration.
                Defines what level of access the token will grant.
            scope_delimiter:
              type: string
              default: " "
              description: >
                A string used to separate multiple scopes in the `scope`
                parameter.
            rolling_refresh_exp_seconds:
              type: number
              nullable: true
              description: >
                Number of seconds before the refresh token grant can no longer
                be used to mint

                a new access token. Once expired clients must re-authenticate to
                restart the

                window interval.
              example: 15780000
    MultiKeyAuth:
      type: object
      description: >
        Defines an authentication strategy based on one or more API keys passed
        via HTTP headers.

        This strategy supports integrations that require custom headers for
        credential-based access,

        allowing flexibility across providers with different authentication
        header requirements.
      required:
        - type
        - config
      properties:
        type:
          type: string
          enum:
            - multi_key_auth
          x-terraform-transform-const: true
        config:
          type: object
          required:
            - headers
          properties:
            headers:
              type: array
              minItems: 1
              description: >
                A list of header definitions used to transmit API credentials to
                the integration's external API.

                Each header represents a unique key required by the provider.
              items:
                type: object
                title: KeyAuthHeader
                required:
                  - name
                  - display_name
                  - description
                properties:
                  name:
                    description: The exact name of the HTTP request header where the credential
                      should be inserted.
                    type: string
                    example: X-API-Key
                  display_name:
                    description: An optional user-friendly label for the key, used in UI forms to
                      guide users.
                    type: string
                    example: API Key
                    nullable: true
                  description:
                    description: An optional brief explanation of the purpose or usage of the key.
                    type: string
                    nullable: true
    GitHubAppInstallationAuth:
      type: object
      description: >
        Defines the GitHub App authorization strategy used by the GitHub
        integration.

        This strategy enables secure access to GitHub APIs using app
        installation tokens.

        It supports both API-based interactions and real-time event delivery via
        GitHub webhooks.

        Unlike standard OAuth flows, this strategy leverages GitHub's custom app
        installation flow

        and token lifecycle, making it ideal for deep, organization-level GitHub
        integration.
      required:
        - type
        - config
      properties:
        type:
          type: string
          enum:
            - github_app_installation
          x-terraform-transform-const: true
        config:
          type: object
          required:
            - app_install_url
            - app_manage_url
            - authorize_app_installation_endpoint
            - pending_app_installs_endpoint
          properties:
            app_install_url:
              type: object
              additionalProperties: false
              required:
                - url
              properties:
                url:
                  type: string
                  format: uri
                  example: https://global.api.konghq.com/service-catalog-integrations/github/app/install
                  description: >
                    The URL where customers are directed to install the GitHub
                    App into their

                    GitHub organization.
            app_manage_url:
              type: object
              additionalProperties: false
              required:
                - url
              properties:
                url:
                  type: string
                  format: uri
                  example: https://global.api.konghq.com/service-catalog-integrations/github/app/manage
                  description: The GitHub App management page URL where users can view, configure,
                    or uninstall the app after installation.
            authorize_app_installation_endpoint:
              type: object
              additionalProperties: false
              required:
                - url
              properties:
                url:
                  type: string
                  format: uri
                  example: https://global.api.konghq.com/service-catalog-integrations/github/app/authorize-installation
                  description: >
                    The endpoint used to link a completed GitHub App
                    installation with a customer account in the catalog.

                    This step finalizes the integration by exchanging metadata
                    from the GitHub installation event.
            pending_app_installs_endpoint:
              type: object
              additionalProperties: false
              required:
                - url
              properties:
                url:
                  type: string
                  format: uri
                  example: https://global.api.konghq.com/service-catalog-integrations/github/app/pending-installs
                  description: >
                    The endpoint used to return a list of in-progress or
                    unlinked GitHub App installations awaiting user
                    confirmation.
    StringConfigFieldSchema:
      type: object
      properties:
        display_name:
          type: string
          description: user-friendly name of the configuration field.
        description:
          type: string
          description: Optional brief description of the configuration field.
        required:
          type: boolean
          description: Denotes whether the config field is a required value.
          default: false
        mutable_condition:
          $ref: "#/components/schemas/MutableCondition"
        type:
          type: string
          description: The field type of the config value.
          enum:
            - string
        default:
          type: string
          description: The default value for the config field.
      title: StringConfigFieldSchema
      description: Defines a string value integration config field.
      required:
        - type
    EnumConfigFieldSchema:
      type: object
      properties:
        display_name:
          type: string
          description: user-friendly name of the configuration field.
        description:
          type: string
          description: Optional brief description of the configuration field.
        required:
          type: boolean
          description: Denotes whether the config field is a required value.
          default: false
        mutable_condition:
          $ref: "#/components/schemas/MutableCondition"
        type:
          type: string
          description: The field type of config value.
          enum:
            - enum
        choices:
          type: array
          description: List of enumerated choices that can be selected as the config field
            value.
          items:
            type: object
            required:
              - value
              - display_name
            properties:
              value:
                type: string
                description: The value represented by this option.
              display_name:
                type: string
                description: user-friendly name of the option.
              description:
                type: string
                description: Optional brief description of the option.
        default:
          type: string
          description: |
            The default value for the config field.
            Must reference the value of an option listed in `choices`.
      title: EnumConfigFieldSchema
      description: Defines an enum value integration config field.
      required:
        - type
        - choices
    BooleanConfigFieldSchema:
      type: object
      properties:
        display_name:
          type: string
          description: user-friendly name of the configuration field.
        description:
          type: string
          description: Optional brief description of the configuration field.
        required:
          type: boolean
          description: Denotes whether the config field is a required value.
          default: false
        mutable_condition:
          $ref: "#/components/schemas/MutableCondition"
        type:
          type: string
          description: The field type of the config value.
          enum:
            - boolean
        default:
          type: boolean
          description: The default value for the config field.
      title: BooleanConfigFieldSchema
      description: Defines a boolean value integration config field.
      required:
        - type
    SimpleSchema:
      type: object
      required:
        - type
        - definition
      properties:
        type:
          type: string
          enum:
            - simple
        definition:
          type: object
          additionalProperties:
            type: string
            enum:
              - string
              - number
              - boolean
    CatalogIntegrationResourceTypeIntegrationDataSchema:
      x-convert-oneOf: true
      anyOf:
        - title: EmptySchema
          type: object
          nullable: true
        - type: object
          required:
            - type
            - definition
          properties:
            type:
              type: string
              enum:
                - simple
            definition:
              type: object
              additionalProperties:
                type: string
                enum:
                  - string
                  - number
                  - boolean
          title: CatalogIntegrationResourceTypeIntegrationDataSimpleSchema
          description: >
            Defines the schema to validate incoming integration_data values for
            a resource type, on resource

            ingestion, using simple schema.

            Set to `null` when the given resource type does not validate
            incoming integration_data.
        - type: object
          required:
            - type
            - definition
          properties:
            type:
              type: string
              enum:
                - json_schema
            definition:
              type: object
              additionalProperties: true
          title: CatalogIntegrationResourceTypeIntegrationDataJSONSchema
          description: >
            Defines the schema to validate incoming integration_data values for
            a resource type, on resource

            ingestion, using JSON schema.

            Set to `null` when the given resource type does not validate
            incoming integration_data.
    IntegrationResourceEvents:
      description: >
        Defines the event types for a given resource type belonging to the
        integration that will be ingested in the catalog.

          - Keys are the machine-readable, globally unique names of resource types registered by this integration.
          - Values are the event type definition.
      type: object
      additionalProperties:
        $ref: "#/components/schemas/IntegrationResourceEvent"
    InvalidParameterStandard:
      type: object
      additionalProperties: false
      properties:
        field:
          type: string
          example: name
          readOnly: true
        rule:
          $ref: "#/components/schemas/InvalidRules"
        source:
          type: string
          example: body
        reason:
          type: string
          example: is a required field
          readOnly: true
      required:
        - field
        - reason
    InvalidParameterMinimumLength:
      type: object
      additionalProperties: false
      properties:
        field:
          type: string
          example: name
          readOnly: true
        rule:
          description: invalid parameters rules
          type: string
          readOnly: true
          nullable: false
          enum:
            - min_length
            - min_digits
            - min_lowercase
            - min_uppercase
            - min_symbols
            - min_items
            - min
        minimum:
          type: integer
          example: 8
        source:
          type: string
          example: body
        reason:
          type: string
          example: must have at least 8 characters
          readOnly: true
      required:
        - field
        - reason
        - rule
        - minimum
    InvalidParameterMaximumLength:
      type: object
      additionalProperties: false
      properties:
        field:
          type: string
          example: name
          readOnly: true
        rule:
          description: invalid parameters rules
          type: string
          readOnly: true
          nullable: false
          enum:
            - max_length
            - max_items
            - max
        maximum:
          type: integer
          example: 8
        source:
          type: string
          example: body
        reason:
          type: string
          example: must not have more than 8 characters
          readOnly: true
      required:
        - field
        - reason
        - rule
        - maximum
    InvalidParameterChoiceItem:
      type: object
      additionalProperties: false
      properties:
        field:
          type: string
          example: name
          readOnly: true
        rule:
          description: invalid parameters rules
          type: string
          readOnly: true
          nullable: false
          enum:
            - enum
        reason:
          type: string
          example: is a required field
          readOnly: true
        choices:
          type: array
          uniqueItems: true
          readOnly: true
          nullable: false
          minItems: 1
          items: {}
        source:
          type: string
          example: body
      required:
        - field
        - reason
        - rule
        - choices
    InvalidParameterDependentItem:
      type: object
      additionalProperties: false
      properties:
        field:
          type: string
          example: name
          readOnly: true
        rule:
          description: invalid parameters rules
          type: string
          readOnly: true
          nullable: true
          enum:
            - dependent_fields
        reason:
          type: string
          example: is a required field
          readOnly: true
        dependents:
          type: array
          uniqueItems: true
          nullable: true
          items: {}
          readOnly: true
        source:
          type: string
          example: body
      required:
        - field
        - rule
        - reason
        - dependents
    MutableCondition:
      description: >
        Defines the condition under which this configuration field is allowed to
        be modified.

        When specified, the platform will restrict updates to this field unless
        the integration

        meets the given condition.


        For example, setting `mutable_condition: unauthorized` means the field
        can only be

        changed while the integration is in an unauthorized state.
      type: string
      enum:
        - unauthorized
    IntegrationResourceEvent:
      description: Defines a registered event type for a given resource.
      type: object
      required:
        - display_name
        - description
        - events_feed
      properties:
        display_name:
          type: string
          description: User-friendly display name for the event type.
        description:
          type: string
          description: Optional, brief description of the integration event type.
          nullable: true
        events_feed:
          type: object
          required:
            - enabled
          properties:
            enabled:
              type: boolean
              description: Whether this event type is returned by default in the Events API.
    InvalidRules:
      description: invalid parameters rules
      type: string
      readOnly: true
      nullable: true
      enum:
        - required
        - is_array
        - is_base64
        - is_boolean
        - is_date_time
        - is_integer
        - is_null
        - is_number
        - is_object
        - is_string
        - is_uuid
        - is_fqdn
        - is_arn
        - unknown_property
        - missing_reference
        - is_label
        - matches_regex
        - invalid
        - is_supported_network_availability_zone_list
        - is_supported_network_cidr_block
        - is_supported_provider_region
        - type
  examples:
    CreatePrivateCatalogIntegrationPayload:
      value:
        visibility: private
        description: description of integration
        display_name: Catalog Integration
        resource_types:
          service:
            display_name: Service
            scope: service
            schema:
              type: simple
              definition:
                id: string
            integration_data_schema:
              type: json_schema
              definition:
                type: object
                properties:
                  id:
                    type: string
                    example: "456"
            resource_id_template: "{{id}}"
    CatalogIntegrationResponse:
      value:
        name: catalog-integration
        display_name: Catalog Integration
        description: Example of catalog integration.
        built_in: false
        version: v1
        authorization: null
        config_schema: {}
        visibility: public
        resource_types:
          service:
            display_name: Service
            schema:
              type: simple
              definition:
                id: string
            integration_data_schema:
              type: json_schema
              definition:
                type: object
                properties:
                  id:
                    type: string
                    example: "456"
            resource_id_template: "{{id}}"
        discovery:
          resource_integration_data_examples:
            service:
              id: 456
        api_spec_provider: null
        events: null
    UnauthorizedExample:
      value:
        status: 401
        title: Unauthorized
        instance: kong:trace:8347343766220159418
        detail: Unauthorized
    ForbiddenExample:
      value:
        status: 403
        title: Forbidden
        instance: kong:trace:2723154947768991354
        detail: You do not have permission to perform this action
  securitySchemes:
    konnectAccessToken:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >
        The Konnect access token is meant to be used by the Konnect dashboard
        and the decK CLI authenticate with.
    personalAccessToken:
      type: http
      scheme: bearer
      bearerFormat: Token
      description: >
        The personal access token is meant to be used as an alternative to
        basic-auth when accessing Konnect via APIs.

        You can generate a Personal Access Token (PAT) from the [personal access
        token page](https://cloud.konghq.com/global/account/tokens/) in the
        Konnect dashboard.

        The PAT token must be passed in the header of a request, for example:

        `curl -X GET 'https://global.api.konghq.com/v2/users/' --header
        'Authorization: Bearer kpat_xgfT...'`
    systemAccountAccessToken:
      type: http
      scheme: bearer
      bearerFormat: Token
      description: >
        The system account access token is meant for automations and
        integrations that are not directly associated with a human identity.

        You can generate a system account Access Token by creating a system
        account and then obtaining a system account access token for that
        account.

        The access token must be passed in the header of a request, for example:

        `curl -X GET 'https://global.api.konghq.com/v2/users/' --header
        'Authorization: Bearer spat_i2Ej...'`
```
