openapi: 3.0.0
info:
  title: Event Portal - API Management
  description: |
    There is an increasing need to provide Event APIs to complement existing synchronous APIs - REST, GraphQL - to give apps more real-time access to data without the need for polling.

    Typically API providers like to integrate Event APIs into existing Developer Portals so that developers can explore and gain access to Event APIs similarly to how they get access to other APIs.

    The APIM/DevPortal API provides access to Solace Event Portal for integration with API Management platforms, API Marketplaces or Developer Portals. It provides a simplified interaction and object model aligned with Management APIs provided by API Management platforms.

    Event APIs are documented using the Async API 2.x standard - a format that is increasingly supported by API-M vendors and open source developer portals such as backstage.io

    ### Changelog 2.0.0-ea.32
    * Added PUT verb to `/appRegistrations/{registrationId}/accessRequests/{accessRequestId}` to upgrade access requests to the latest version of their associated Event API Product.
      * The endpoint allows specifying an optional plan ID to use in the latest product version. 
      * If no plan ID is provided, the system automatically matches plans by name from the previous version.
      * Runtime configuration is automatically synchronized upon successful upgrade.

    ### Changelog 2.0.0-ea.31
    * Experimental: Added "apiStyle" query parameter to resources that return asyncapi specifications. The parameter is optional and currently supported styles are "default" and "sap-ecosystem". 
      Marked as deprecated to indicate that this is an experimental feature and the parameter may be removed or changed in future releases.

    ### Changelog 2.0.0-ea.30
    * Restrict number of credentials to one set due to Event Portal restrictions of one client username per application.
    ** Modified behavior of `/appRegistrations/{registrationId}/credentials` resaources limiting the number of managed credentials to one set. 
    ** API definition remains unchanged.
 
    ### Changelog 2.0.0-ea.29
    * Fixed inconsistent maxLength of registrationId

    ### Changelog 2.0.0-ea.28
    * Fixed some regular expressions that led to code gen errors using Swagger codegen for Java

    ### Changelog 2.0.0-ea.27
    * Usage of "Early Access" qualifier in descriptions to comply with Solace Cloud API standards
    * Changed title of API spec to desired heading in the official docs site

    ### Changelog 2.0.0-ea.26
    * Added resources from previously private management APIs. 
      * `/gateways` supports setting SEMPv2 secret for Gateway Brokers
      * GET `/gateways/{messagingServiceId}/status` returns connection status to a Gateway Broker
      * POST `/gateways/authentication` allows to set SEMPv2 authentication mechanism to Basic Auth (default) or API Key
      * GET `/appRegistrations/{registrationId}/configState` returns the configuration that was created to represent the applicaiton registration on Gateway brokers and if it was aplied successfully

    ### Changelog 2.0.0-ea.25
    * Improve readability as moving to EA in Solace Cloud 
    * Added API description section

    ### Changelog 2.0.0-ea.24
    * Allow shorter `protocolVersion` in `MessagingServiceConnection` to mirror EP Runtime Manager schema.

    ### Changelog 2.0.0-ea.23
    * Added `filters` property to `EventApiProductRegistrationCreate` request schema for `/appRegistrations/{registrationId}/accessRequests`

    ### Changelog 2.0.0-ea.22
    * Fixed HTTP response status code of POST requests, all returned status codes are now `201 - Created``

    ### Changelog 2.0.0-ea.21
    * The responses of the `accessRequests` sub resource of `appRegistrations` was changed to return `EventApiProductRegistrationDetail`. 
      This schema extends the data previously returned to include effective topic permissions associated with the access request and also the message service connections across 
      all gateway messaging services that are accessible.

    ### Changelog 2.0.0-ea.20
    * Restricted length of `registrationId` to a maximum of 32 characters to meet restrictions of ACL profile names on PSB+ Brokers.

    ### Changelog 2.0.0-ea.19
    * **Includes breaking changes**
    * Breaking change to the `EventApiProductRegistration` schema(s) - the `resourceInformation` property is replaced by two new properties - `eventApiProductResourceInformation` and `eventApiResourceInformation`.
    `eventApiProductResourceInformation` is present and populated if the plan associated with the `EventApiProductRegistration` has `queueType` combined.
    If the `queueType` is `single` the `eventApiResourceInformation` contains an array of reource information per associated EventApi.
    * `GuaranteedMessagingInformation` schema now specifices required properties. Also amended `eventApiId` property description.
    * Removed the `Candidates` tag and resources tagged as candidates. 

    ### Changelog 2.0.0-ea.18
    * Added filters to `EventApiProductRegistration` and a sub resource `/appRegistrations/{registrationId}/accessRequests/{accessRequestId}/filters` to manage filters 
    * Updated description of `where` parameter.

    ### Changelog 2.0.0-ea.17
    * Modified `APIParameterFilterValue` reg ex pattern to only allow valid expressions for a single Solace topic level - excluding NULL, `/`, `>`, `!` characters as well as allowing use of the `*` wildcard only at the end of the value. 

    ### Changelog 2.0.0-ea.16
    * **Includes breaking changes**
    * **Removed** filters from `EventApiProduct` schema (**breaking change**). Clients should use the `apiParameters` property to discover which parameters are available for filtering.
      The `apiParameters` are populated with existing filters defined in Event Portal and the schema was amended to specify the type of the parameter (enum or unbounded) in addition to the data type of the parameter.
      As a consequence the following changes (**breaking changes**) were made in the `APIParameter` schema: `type` is renamed to `dataType`, `parameterType` was added.
      The `values` area of the `APIParameter` schema contains the allowed values for an `enum` parameter with restrictions applied as set up in the filters of the Event API Product in Event Portal. The values array contains the filter as set up in Event Portal - either containing a single entry or multiple entries if the filter value defined in Event Portal is a comma separated list.
    * **Renamed filter related schemas** (**breaking change**) used by resources related to `Registrations`. `TopicFilter` renamed to `APIParameterFilter`, `filterValues` renamed to `values` for consistency with `APIParameter` schema.
    * Updated description of the RSQL `where` parameter to reflect simplified queries on arrays of key/value pairs (attributes, customAttributes)

    ### Changelog 2.0.0-ea.15
    * Removed `filters` from App Registration POST/create.
    * Changed `APIParameter` schema to align with topic filters naming - changed `enum` to `values`
    * Cleaned up enums that contained duplicate values

    ### Changelog 2.0.0-ea.14
    * Added `filters` to App Registration and a sub resource to manage inidividual filters.
    * Cosmetic changes in descriptions

    ### Changelog 2.0.0-ea.13
    * Made `eventApiProductVersion` in the `EventApiProductRegistration` required to indicate this value will always be included in responses from the API
    * Made `name` attribute on `EventApiVersion` mandatory, `displayName` is now optional.
    * Added `apiParameters` to the `EventAPIProduct` schema listing all channel parameters and when applicable enumerations associated with the parameter.

    ### Changelog 2.0.0-ea.12
    * Changed name of RSQL query parameter to from `query` to `where`
    * Increased maxLength of `CommonId` and `CommonExternalId` to accommodate uuids and other longer identifiers
    * Removed `registrationId` from `EventApiProductRegistrationCreate` as it's already contained in the resource URL
    * Aligned the `MessagingServiceProtocol` with Async APi protocols
    * Fixed the credentials resources schemas to indicate in responses which properties will be present/required (secret is required, consumerSecret is also required ) 
    * Renamed `WebHook` to `Webhook` in schema names and operaiton ids and `webHook` to `webhook` in urls.

    ### Changelog 2.0.0-ea.11
    * Removed `nullable: true` in schemas - most references were optional so clients needed to check both for presence and null value. API Implementations shouyld not emit null values for optional properties
    * Aligned the `MessageProtocol` enumeration with Async API protocols
    * Fixed `AttributeValue` restrictions (max lenght 10K characters) and the schema description

    ### Changelog 2.0.0-ea.10
    * Removed all schema composition elements such as allOf/anyOf where possible. Usage of these constructs - especially combined with `additionalProperties: false` - led to problems wiht code generation (Go) and request/response validation (with ajv)
    * Apart from the `WebHook` schemas `authentication` property the resulting schemas are equivalent to the previous version.

    ### Changelog 2.0.0-ea.9
    * Added lifecycle state to `EventApiProductSummary`
    * Added `gatewayMessagingService` to `AppRegistrationView`. This property contains a list of all gateways available to an `ApplicationRegistration` and all the publish/subscribe permissions granted on each service

    ### Changelog 2.0.0-ea.8
    * Introduced a `MessagingProtocol` enumeration referenced by both `EventAPIProduct` and `MessagingService`
    * Made arrays mandatory such as `attributes` and `customAttributes`, the API returns empty arrays as default if no elements are present.
    * Added explanation on how to use custom `=regex=` operator in RSQL/FIQL queries, the previously used operator (`=~`) is not compliant.

    ### Changelog 2.0.0-ea.7
    * Renamed `MessageServiceResponse` and `MessagingServciesResponse` to `GatewayResponse` and `GatewaysResponse` respectively
    * Fixed `MessagingService` schema to replace `messagingServiceType` with `brokerType` for consistency with `EventApiProduct` schema.
    * For the `query` parameter - set allowReserved: true to accommodate clients that do not URL encode reserved characters (* etc)
    * Renamed parameter `gatewayMessagingServiceId`  to `messagingServiceId` in resource `GET gateways/{messagingServiceId}` for consistency with `EventAPIProduct` schema

    ### Changelog 2.0.0-ea.6
    * Aligned operatonId and schmea names with `/eventApiProducts/{eventApiProductId}/history` resource eliminating use of `Version` in schemas and using `History` where appropriate
    * Added missing 422 response to `/eventApiProducts/{eventApiProductId}/attributes`
    * Fixed response type of `/appRegistrations/{registrationId}/webhooks` and `/appRegistrations/{registrationId}/webhooks/{webhookId}`
    * Removed required attributes of `SolaceClassOfServicePolicy` schema to support `Direct` mode policies
    * Made several schema properties `nullable` in-line with EP 2.0 API's schemas
    * Added documentation to `Pagination` schema

    ### Changelog 2.0.0-ea.5
    * Removed customAttributes from /appRegistration and /appRegistration/{registrationId} resources' payloads
    * Removed customAttributes and attributes from /appRegistration/{registrationId}/accessRequests and /appRegistration/{registrationId}/accessRequestsresources/{accessRequestId}' payloads
    * Added eventApis resource to accessRequests  /appRegistration/{registrationId}/accessRequestsresources/{accessRequestId}/eventApis' 
    * Added client information element (queue informaiton for presistent messaging) to reponse of access requests
    * Webhook schema changes: added `appendTopic` property, changed the `nevironments` property to `gatewayMessagingServiceIds`
    * Added descriptions and summaries to all resources
    * Removed `versioned attributes`  as there are currently no use cases known
  version: 2.0.0-ea.32
servers:
  - url: https://apim-production-api.solace.cloud/api/v2/apim
  - url: /api/v2/apim
security:
  - OpenId: []
  - BearerAuth: []
tags:
  - name: Event API Products
    description: "Read Event APIs and Event API Products"
  - name: Registrations
    description: "Manage Developer Portal application registrations and  access requests to Event API Products"
  - name: Gateways
    description: "Read information about Gateway Event Brokers, configure secrets for connecting to Gateway Event Brokers"

paths:
  /eventApiProducts:
    get:
      summary: (Early Access) Returns a list of published Event API Products
      description: |
        Returns a list of published Event API Products.
        Initially published Event API Products are in state `RELEASED`, they may subsequently progress through `DEPRECATED`, `RETIRED` to `DELETED`.

        This resource allows filtering of results by query using RSQL.

        All fields of the `EventApiProduct` schema are queryable.
      operationId: listEventApiProducts
      tags:
        - Event API Products
      parameters:
        - $ref: "#/components/parameters/where"
        - $ref: "#/components/parameters/pageSize"
        - $ref: "#/components/parameters/pageNumber"
        - $ref: "#/components/parameters/sortFieldName"
        - $ref: "#/components/parameters/sortDirection"
      responses:
        "200":
          description: list of event api products
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/EventApiProductsResponse"
        "default":
          description: list of event api products
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/EventApiProductsResponse"
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "406":
          $ref: "#/components/responses/NotAcceptable"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
        "504":
          $ref: "#/components/responses/GatewayTimeout"

  /eventApiProducts/{eventApiProductId}:
    parameters:
      - $ref: "#/components/parameters/eventApiProductId"
    get:
      summary: (Early Access) Returns the requested Event API Product
      description: Returns the requested, published Event API Product
      operationId: getEventAPIProduct
      tags:
        - Event API Products
      responses:
        "200":
          description: the Event API Product
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/EventApiProductResponse"
        "default":
          description: the Event API Product
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/EventApiProductResponse"
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "406":
          $ref: "#/components/responses/NotAcceptable"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
        "504":
          $ref: "#/components/responses/GatewayTimeout"

  /eventApiProducts/{eventApiProductId}/history:
    parameters:
      - $ref: "#/components/parameters/eventApiProductId"
    get:
      summary: (Early Access) Returns a list of versions of an Event API Product.
      description: |
        Returns a list of previously and currently published versions of an Event API Product.

        Version can be in state `RELEASED`, `DEPRECATED`, `RETIRED` or `DELETED`.
      operationId: getEventAPIProductHistory
      tags:
        - Event API Products
      parameters:
        - $ref: "#/components/parameters/pageSize"
        - $ref: "#/components/parameters/pageNumber"
        - $ref: "#/components/parameters/sortFieldName"
        - $ref: "#/components/parameters/sortDirection"
      responses:
        "200":
          description: the Event API Product revisions
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/EventApiProductHistoryResponse"
        "default":
          description: the Event API Product revisions
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/EventApiProductHistoryResponse"
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "406":
          $ref: "#/components/responses/NotAcceptable"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
        "504":
          $ref: "#/components/responses/GatewayTimeout"

  /eventApiProducts/{eventApiProductId}/history/{version}:
    parameters:
      - $ref: "#/components/parameters/version"
      - $ref: "#/components/parameters/eventApiProductId"
    get:
      summary: (Early Access) Returns the version of an Event API Product
      description: Returns the version of an Event API Product matching the version number supplied in the version parameter
      operationId: getEventAPIProductRevision
      tags:
        - Event API Products
      responses:
        "200":
          description: the Event API Product revisions
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/EventApiProductResponse"
        "default":
          description: the Event API Product revisions
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/EventApiProductResponse"
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "406":
          $ref: "#/components/responses/NotAcceptable"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
        "504":
          $ref: "#/components/responses/GatewayTimeout"

  /eventApiProducts/{eventApiProductId}/attributes:
    parameters:
      - $ref: "#/components/parameters/eventApiProductId"
    get:
      summary: (Early Access) Returns attributes of the Event API Product
      description: Returns attributes of theEvent API Product. Attributes are preserved when the Event API Product is updated to a newer revision and can be used for integrations to store any information required to manage status or state.
      operationId: getEventAPIProductAttributes
      tags:
        - Event API Products
      parameters:
        - $ref: "#/components/parameters/pageSize"
        - $ref: "#/components/parameters/pageNumber"
        - $ref: "#/components/parameters/sortFieldName"
        - $ref: "#/components/parameters/sortDirection"
      responses:
        "200":
          description: the Event API Product Attributes
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/AttributesResponse"
        "default":
          description: the Event API Product Attributes
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/AttributesResponse"
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "406":
          $ref: "#/components/responses/NotAcceptable"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
        "504":
          $ref: "#/components/responses/GatewayTimeout"
    post:
      summary: (Early Access) Adds an attribute to the Event API Product
      description: Adds an attribute to the Event API Product. Attributes are preserved when the Event API Product is updated to a newer revision and can be used for integrations to store any information required to manage status or state.
      operationId: createEventApiProductAttribute
      tags:
        - Event API Products
      requestBody:
        description: "New Event API Product Attribute"
        content:
          "application/json":
            schema:
              "$ref": "#/components/schemas/Attribute"
      responses:
        "201":
          description: Created Event API Product Attribute
          content:
            "application/json":
              schema:
                $ref: "#/components/schemas/AttributeResponse"
        "default":
          description: Created Event API Product Attribute
          content:
            "application/json":
              schema:
                $ref: "#/components/schemas/AttributeResponse"
        "422":
          description: "Duplicate attribute"
          content:
            "application/json":
              schema:
                "$ref": "#/components/schemas/ErrorResponse"
        "400":
          description: "Bad request. "
          content:
            "application/json":
              schema:
                "$ref": "#/components/schemas/ErrorResponse"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "406":
          $ref: "#/components/responses/NotAcceptable"
        "412":
          $ref: "#/components/responses/PreconditionFailed"
        "415":
          $ref: "#/components/responses/UnsupportedMediaType"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
        "504":
          $ref: "#/components/responses/GatewayTimeout"
  /eventApiProducts/{eventApiProductId}/attributes/{attributeName}:
    parameters:
      - $ref: "#/components/parameters/attributeName"
      - $ref: "#/components/parameters/eventApiProductId"
    get:
      summary: (Early Access) Returns the requested attribute of the Event API Product
      description: Returns the requested attribute of the Event API Product. Attributes are preserved when the Event API Product is updated to a newer revision and can be used for integrations to store any information required to manage status or state.
      operationId: getEventAPIProductAttribute
      tags:
        - Event API Products
      responses:
        "200":
          description: the Event API Product Attribute
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/AttributeResponse"
        "default":
          description: the Event API Product Attribute
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/AttributeResponse"
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "406":
          $ref: "#/components/responses/NotAcceptable"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
        "504":
          $ref: "#/components/responses/GatewayTimeout"
    patch:
      summary: (Early Access) Updates the specified attribute's value
      description: Updates the specified attribute's value. Attributes are preserved when the Event API Product is updated to a newer revision and can be used for integrations to store any information required to manage status or state.
      operationId: updateEventApiProductAttribute
      tags:
        - Event API Products
      requestBody:
        description: "Patch for Event API Product Attribute"
        content:
          "application/json":
            schema:
              $ref: "#/components/schemas/AttributeUpdateRequest"
      responses:
        "200":
          description: Updated Event API Product Attribute
          content:
            "application/json":
              schema:
                $ref: "#/components/schemas/AttributeResponse"
        "default":
          description: Updated Event API Product Attribute
          content:
            "application/json":
              schema:
                $ref: "#/components/schemas/AttributeResponse"
        "400":
          description: "Bad request. "
          content:
            "application/json":
              schema:
                "$ref": "#/components/schemas/ErrorResponse"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "406":
          $ref: "#/components/responses/NotAcceptable"
        "412":
          $ref: "#/components/responses/PreconditionFailed"
        "415":
          $ref: "#/components/responses/UnsupportedMediaType"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
        "504":
          $ref: "#/components/responses/GatewayTimeout"
    delete:
      summary: (Early Access) Deletes the specified attribute from the Event API Product
      description: Deletes the specified attribute from the Event API Product. Attributes are preserved when the Event API Product is updated to a newer revision and can be used for integrations to store any information required to manage status or state.
      operationId: deleteEventApiProductAttribute
      tags:
        - Event API Products
      responses:
        "204":
          description: No content
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "406":
          $ref: "#/components/responses/NotAcceptable"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
        "504":
          $ref: "#/components/responses/GatewayTimeout"

  /eventApiProducts/{eventApiProductId}/plans:
    parameters:
      - $ref: "#/components/parameters/eventApiProductId"
    get:
      summary: (Early Access) Returns a list of plans of the Event API Product
      description: Returns a list of plans of the Event API Product
      operationId: getEventAPIProductPlans
      tags:
        - Event API Products
      parameters:
        - $ref: "#/components/parameters/pageSize"
        - $ref: "#/components/parameters/pageNumber"
        - $ref: "#/components/parameters/sortFieldName"
        - $ref: "#/components/parameters/sortDirection"
      responses:
        "200":
          description: the Event API Product Plans
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/PlansResponse"
        "default":
          description: the Event API Product Plans
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/PlansResponse"
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "406":
          $ref: "#/components/responses/NotAcceptable"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
        "504":
          $ref: "#/components/responses/GatewayTimeout"
  /eventApiProducts/{eventApiProductId}/plans/{planId}:
    parameters:
      - $ref: "#/components/parameters/planId"
      - $ref: "#/components/parameters/eventApiProductId"
    get:
      summary: (Early Access) Returns the requested plan of the Event API Product
      description: Returns the requested plan of the Event API Product
      operationId: getEventAPIProductPlan
      tags:
        - Event API Products
      responses:
        "200":
          description: the Event API Product Plan
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/PlanResponse"
        "default":
          description: the Event API Product Plan
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/PlanResponse"
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "406":
          $ref: "#/components/responses/NotAcceptable"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
        "504":
          $ref: "#/components/responses/GatewayTimeout"

  /eventApiProducts/{eventApiProductId}/plans/{planId}/eventApis:
    parameters:
      - $ref: "#/components/parameters/planId"
      - $ref: "#/components/parameters/eventApiProductId"
    get:
      summary: (Early Access) Returns a list of the APIs associated with the Event API Product and Plan
      description: Returns a list of the APIs associated with the Event API Product and Plan
      operationId: getEventAPIProductPlanApis
      tags:
        - Event API Products
      responses:
        "200":
          description: list of the Event API Product Plan APIs
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/EventApisResponse"
        "default":
          description: list of the Event API Product Plan APIs
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/EventApisResponse"
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "406":
          $ref: "#/components/responses/NotAcceptable"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
        "504":
          $ref: "#/components/responses/GatewayTimeout"
  /eventApiProducts/{eventApiProductId}/plans/{planId}/eventApis/{eventApiId}:
    parameters:
      - $ref: "#/components/parameters/eventApiId"
      - $ref: "#/components/parameters/eventApiProductId"
      - $ref: "#/components/parameters/planId"
      - $ref: "#/components/parameters/apiFormat"
      - $ref: "#/components/parameters/apiStyle"
      - $ref: "#/components/parameters/asyncApiVersion"
    get:
      summary: (Early Access) Returns the Async APi specification associated with the Event API Product and Plan
      description: Returns the Async APi specification associated with the Event API Product and Plan. The generated API document includes protocol specific bindings conforming to the policy specified in the Event API Product's plan.
      operationId: getEventAPIProductPlanApi
      tags:
        - Event API Products
      responses:
        "200":
          description: Async API Definition of the Plan's API, if ZIP format is requested the contents are in JSON format.
          content:
            application/json:
              schema:
                type: object
            text/plain:
              schema:
                "$ref": "#/components/schemas/String2MB"
            application/zip:
              schema:
                type: string
                format: binary
        "default":
          description: Async API Definition of the Plan's API
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/String2MB"
            text/plain:
              schema:
                "$ref": "#/components/schemas/String2MB"
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "406":
          $ref: "#/components/responses/NotAcceptable"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
        "504":
          $ref: "#/components/responses/GatewayTimeout"

  /appRegistrations:
    get:
      summary: (Early Access) Returns a list of Application Registrations
      description: |
        Returns a list of Application Registrations.

        This resource allows filtering of results by query using RSQL.

        All fields of the `AppRegistrationView` schema are queryable.
      operationId: listAppRegistrations
      tags:
        - Registrations
      parameters:
        - $ref: "#/components/parameters/where"
        - $ref: "#/components/parameters/pageSize"
        - $ref: "#/components/parameters/pageNumber"
        - $ref: "#/components/parameters/sortFieldName"
        - $ref: "#/components/parameters/sortDirection"
      responses:
        "200":
          description: list of app registrations
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/ApplicationRegistrationsResponse"
        "default":
          description: list of app registrations
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/ApplicationRegistrationsResponse"
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "406":
          $ref: "#/components/responses/NotAcceptable"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
        "504":
          $ref: "#/components/responses/GatewayTimeout"
    post:
      summary: (Early Access) Creates a new App Registration
      description: Creates a new App Registration - the `registrationId` must be the unique identifier of the application in the external system.
      operationId: createAppRegistration
      tags:
        - Registrations
      requestBody:
        description: "New app registration"
        content:
          "application/json":
            schema:
              "$ref": "#/components/schemas/ApplicationRegistration"
      responses:
        "201":
          description: Created app registration
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ApplicationRegistrationResponse"
        "default":
          description: Created app registration
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ApplicationRegistrationResponse"
        "400":
          description: "Bad request. Likely an invalid auth token provided."
          content:
            "application/json":
              schema:
                "$ref": "#/components/schemas/ErrorResponse"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "406":
          $ref: "#/components/responses/NotAcceptable"
        "409":
          $ref: "#/components/responses/Conflict"
        "415":
          $ref: "#/components/responses/UnsupportedMediaType"
        "422":
          description: "Duplicate organization"
          content:
            "application/json":
              schema:
                "$ref": "#/components/schemas/ErrorResponse"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
        "504":
          $ref: "#/components/responses/GatewayTimeout"
  /appRegistrations/{registrationId}:
    parameters:
      - $ref: "#/components/parameters/registrationId"
    get:
      summary: (Early Access) Returns the requested App Registration
      description: Returns the requested App Registration
      operationId: getAppRegistration
      tags:
        - Registrations
      responses:
        "200":
          description: the app registration
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/ApplicationRegistrationResponse"
        "default":
          description: the app registration
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/ApplicationRegistrationResponse"
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "406":
          $ref: "#/components/responses/NotAcceptable"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
        "504":
          $ref: "#/components/responses/GatewayTimeout"
    patch:
      summary: (Early Access) Updates the specified App Registration
      description: Updates the specified App Registration and returns the updated document
      operationId: updateAppRegistration
      tags:
        - Registrations
      requestBody:
        description: "Patch to App Registration"
        content:
          "application/json":
            schema:
              "$ref": "#/components/schemas/ApplicationRegistrationUpdate"
      responses:
        "200":
          description: Updated App Registration
          content:
            "application/json":
              schema:
                $ref: "#/components/schemas/ApplicationRegistrationResponse"
        "default":
          description: Updated App Registration
          content:
            "application/json":
              schema:
                $ref: "#/components/schemas/ApplicationRegistrationResponse"
        "400":
          description: "Bad request. "
          content:
            "application/json":
              schema:
                "$ref": "#/components/schemas/ErrorResponse"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "406":
          $ref: "#/components/responses/NotAcceptable"
        "412":
          $ref: "#/components/responses/PreconditionFailed"
        "415":
          $ref: "#/components/responses/UnsupportedMediaType"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
        "504":
          $ref: "#/components/responses/GatewayTimeout"
    delete:
      summary: (Early Access) Deletes the specified App Registration
      description: Deletes the specified App Registration
      operationId: deleteAppRegistration
      tags:
        - Registrations
      responses:
        "204":
          description: No content
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "406":
          $ref: "#/components/responses/NotAcceptable"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
        "504":
          $ref: "#/components/responses/GatewayTimeout"

  /appRegistrations/{registrationId}/eventApis:
    parameters:
      - $ref: "#/components/parameters/registrationId"
    get:
      summary: (Early Access) Returns a list of all Event APIs associated with the App Registration
      description: Returns a list of all Event APIs associated with the App Registration
      operationId: getAppRegistrationApis
      tags:
        - Registrations
      parameters:
        - $ref: "#/components/parameters/pageSize"
        - $ref: "#/components/parameters/pageNumber"
        - $ref: "#/components/parameters/sortFieldName"
        - $ref: "#/components/parameters/sortDirection"
      responses:
        "200":
          description: list of apis the app has access to
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/EventApisResponse"
        "default":
          description: list of apis the app has access to
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/EventApisResponse"
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "406":
          $ref: "#/components/responses/NotAcceptable"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
        "504":
          $ref: "#/components/responses/GatewayTimeout"
  /appRegistrations/{registrationId}/eventApis/{eventApiId}:
    parameters:
      - $ref: "#/components/parameters/eventApiId"
      - $ref: "#/components/parameters/registrationId"
      - $ref: "#/components/parameters/apiFormat"
      - $ref: "#/components/parameters/apiStyle"
      - $ref: "#/components/parameters/asyncApiVersion"
    get:
      summary: (Early Access) Returns the Async API specification associated with the App Registration.
      description: |
        Returns the Async API specification associated with the App Registration. 
        The generated API document includes protocol specific bindings conforming to the policy specified in the Event API Product plan that the API is included in.
      operationId: getAppRegistrationApi
      tags:
        - Registrations
      responses:
        "200":
          description: the async api specification tailored to the current app
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/String2MB"
            text/plain:
              schema:
                "$ref": "#/components/schemas/String2MB"
        "default":
          description: the async api specification tailored to the current app
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/String2MB"
            text/plain:
              schema:
                "$ref": "#/components/schemas/String2MB"
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "406":
          $ref: "#/components/responses/NotAcceptable"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
        "504":
          $ref: "#/components/responses/GatewayTimeout"

  /appRegistrations/{registrationId}/attributes:
    parameters:
      - $ref: "#/components/parameters/registrationId"
    get:
      summary: (Early Access) Returns attributes of the App Registration
      description: |
        Returns attributes of the App Registration. 
        Attributes can be used for integrations to store any information required to manage status or state.
      operationId: getAppRegistrationAttributes
      parameters:
        - $ref: "#/components/parameters/pageSize"
        - $ref: "#/components/parameters/pageNumber"
        - $ref: "#/components/parameters/sortFieldName"
        - $ref: "#/components/parameters/sortDirection"
      tags:
        - Registrations
      responses:
        "200":
          description: the AppRegistration Attributes
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/AttributesResponse"
        "default":
          description: the AppRegistration Attributes
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/AttributesResponse"
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "406":
          $ref: "#/components/responses/NotAcceptable"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
        "504":
          $ref: "#/components/responses/GatewayTimeout"
    post:
      summary: (Early Access) Adds an attribute to the App Registration
      description: Adds an attribute to the App Registration. Attributes can be used for integrations to store any information required to manage status or state.
      operationId: createAppRegistrationAttribute
      tags:
        - Registrations
      requestBody:
        description: "New App Registration Attribute"
        content:
          "application/json":
            schema:
              "$ref": "#/components/schemas/Attribute"
      responses:
        "201":
          description: Created AppRegistration
          content:
            "application/json":
              schema:
                $ref: "#/components/schemas/AttributeResponse"
        "default":
          description: Created AppRegistration
          content:
            "application/json":
              schema:
                $ref: "#/components/schemas/AttributeResponse"
        "400":
          description: "Bad request. "
          content:
            "application/json":
              schema:
                "$ref": "#/components/schemas/ErrorResponse"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "406":
          $ref: "#/components/responses/NotAcceptable"
        "412":
          $ref: "#/components/responses/PreconditionFailed"
        "415":
          $ref: "#/components/responses/UnsupportedMediaType"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
        "504":
          $ref: "#/components/responses/GatewayTimeout"
  /appRegistrations/{registrationId}/attributes/{attributeName}:
    parameters:
      - $ref: "#/components/parameters/registrationId"
      - $ref: "#/components/parameters/attributeName"
    get:
      summary: (Early Access) Returns the requested attribute of the App Registration
      description: Returns the requested attribute of the App Registration
      operationId: getAppRegistrationAttribute
      tags:
        - Registrations
      responses:
        "200":
          description: the App Registration Attribute
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/AttributeResponse"
        "default":
          description: the App Registration Attribute
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/AttributeResponse"
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "406":
          $ref: "#/components/responses/NotAcceptable"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
        "504":
          $ref: "#/components/responses/GatewayTimeout"
    patch:
      summary: (Early Access) Updates the specified attribute's value
      description: Updates the specified attribute's value.
      operationId: updateAppRegistrationAttribute
      tags:
        - Registrations
      requestBody:
        description: "Patch to App Registration Attribute"
        content:
          "application/json":
            schema:
              $ref: "#/components/schemas/AttributeUpdateRequest"
      responses:
        "200":
          description: Updated App Registration Attribute
          content:
            "application/json":
              schema:
                $ref: "#/components/schemas/AttributeResponse"
        "default":
          description: Updated App Registration Attribute
          content:
            "application/json":
              schema:
                $ref: "#/components/schemas/AttributeResponse"
        "400":
          description: "Bad request. "
          content:
            "application/json":
              schema:
                "$ref": "#/components/schemas/ErrorResponse"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "406":
          $ref: "#/components/responses/NotAcceptable"
        "412":
          $ref: "#/components/responses/PreconditionFailed"
        "415":
          $ref: "#/components/responses/UnsupportedMediaType"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
        "504":
          $ref: "#/components/responses/GatewayTimeout"
    delete:
      summary: (Early Access) Deletes the specified attribute from the App Registration
      description: Deletes the specified attribute from the App Registration
      operationId: deleteAppRegistrationAttribute
      tags:
        - Registrations
      responses:
        "204":
          description: No content
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "406":
          $ref: "#/components/responses/NotAcceptable"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
        "504":
          $ref: "#/components/responses/GatewayTimeout"

  /appRegistrations/{registrationId}/filters:
    parameters:
      - $ref: "#/components/parameters/registrationId"
    get:
      summary: (Early Access) Returns filters of the App Registration
      description: |
        Returns filters of the App Registration.
      operationId: getAppRegistrationFilters
      parameters:
        - $ref: "#/components/parameters/pageSize"
        - $ref: "#/components/parameters/pageNumber"
        - $ref: "#/components/parameters/sortFieldName"
        - $ref: "#/components/parameters/sortDirection"
      tags:
        - Registrations
      responses:
        "200":
          description: the AppRegistration Filters
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/FiltersResponse"
        "default":
          description: the AppRegistration Attributes
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/FiltersResponse"
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "406":
          $ref: "#/components/responses/NotAcceptable"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
        "504":
          $ref: "#/components/responses/GatewayTimeout"
    post:
      summary: (Early Access) Adds a topic filter to the App Registration
      description: Adds a topic filter to the App Registration.
      operationId: createAppRegistrationFilter
      tags:
        - Registrations
      requestBody:
        description: "New App Registration Filter"
        content:
          "application/json":
            schema:
              "$ref": "#/components/schemas/APIParameterFilter"
      responses:
        "201":
          description: Created AppRegistration Filter
          content:
            "application/json":
              schema:
                $ref: "#/components/schemas/FilterResponse"
        "default":
          description: Created AppRegistration Filter
          content:
            "application/json":
              schema:
                $ref: "#/components/schemas/FilterResponse"
        "400":
          description: "Bad request. "
          content:
            "application/json":
              schema:
                "$ref": "#/components/schemas/ErrorResponse"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "406":
          $ref: "#/components/responses/NotAcceptable"
        "412":
          $ref: "#/components/responses/PreconditionFailed"
        "415":
          $ref: "#/components/responses/UnsupportedMediaType"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
        "504":
          $ref: "#/components/responses/GatewayTimeout"
  /appRegistrations/{registrationId}/filters/{filterName}:
    parameters:
      - $ref: "#/components/parameters/registrationId"
      - $ref: "#/components/parameters/filterName"
    get:
      summary: (Early Access) Returns the requested filter of the App Registration
      description: Returns the requested filter of the App Registration
      operationId: getAppRegistrationFilter
      tags:
        - Registrations
      responses:
        "200":
          description: the App Registration Filter
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/FilterResponse"
        "default":
          description: the App Registration Attribute
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/FilterResponse"
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "406":
          $ref: "#/components/responses/NotAcceptable"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
        "504":
          $ref: "#/components/responses/GatewayTimeout"
    patch:
      summary: (Early Access) Updates the specified filter's value
      description: Updates the specified filter's value.
      operationId: updateAppRegistrationFilter
      tags:
        - Registrations
      requestBody:
        description: "Patch to App Registration Filter"
        content:
          "application/json":
            schema:
              $ref: "#/components/schemas/FilterUpdateRequest"
      responses:
        "200":
          description: Updated App Registration Filter
          content:
            "application/json":
              schema:
                $ref: "#/components/schemas/FilterResponse"
        "default":
          description: Updated App Registration Filter
          content:
            "application/json":
              schema:
                $ref: "#/components/schemas/FilterResponse"
        "400":
          description: "Bad request. "
          content:
            "application/json":
              schema:
                "$ref": "#/components/schemas/ErrorResponse"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "406":
          $ref: "#/components/responses/NotAcceptable"
        "412":
          $ref: "#/components/responses/PreconditionFailed"
        "415":
          $ref: "#/components/responses/UnsupportedMediaType"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
        "504":
          $ref: "#/components/responses/GatewayTimeout"
    delete:
      summary: (Early Access) Deletes the specified filter from the App Registration
      description: Deletes the specified filter from the App Registration
      operationId: deleteAppRegistrationFilter
      tags:
        - Registrations
      responses:
        "204":
          description: No content
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "406":
          $ref: "#/components/responses/NotAcceptable"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
        "504":
          $ref: "#/components/responses/GatewayTimeout"

  /appRegistrations/{registrationId}/credentials:
    parameters:
      - $ref: "#/components/parameters/registrationId"
    get:
      summary: (Early Access) Returns a list of all Credentials issued for the App Registration
      description: Returns a list of all Credentials issued for the App Registration, currently limited to exactly one entry
      operationId: getAppRegistrationCredentials
      tags:
        - Registrations
      parameters:
        - $ref: "#/components/parameters/pageSize"
        - $ref: "#/components/parameters/pageNumber"
        - $ref: "#/components/parameters/sortFieldName"
        - $ref: "#/components/parameters/sortDirection"
      responses:
        "200":
          description: the AppRegistration Credentials
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/CredentialsArrayResponse"
        "default":
          description: the AppRegistration Credentials
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/CredentialsArrayResponse"
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "406":
          $ref: "#/components/responses/NotAcceptable"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
        "504":
          $ref: "#/components/responses/GatewayTimeout"
    post:
      summary: (Early Access) Requests new credentials for the App Registration
      description: |
        Requests new credentials for the App Registration. The requested credentials replace the previous data.

        If the request does not include a `clientSecret` it is generated automatically and included in the response.
        If the request does not include a `name` the name is set to the `consumerKey` provided in the request.
      operationId: createAppRegistrationCredentials
      tags:
        - Registrations
      requestBody:
        description: "New App Registration Attribute"
        content:
          "application/json":
            schema:
              "$ref": "#/components/schemas/CredentialsRequest"
      responses:
        "201":
          description: Created AppRegistration Credentials
          content:
            "application/json":
              schema:
                $ref: "#/components/schemas/CredentialsResponse"
        "default":
          description: Created AppRegistration Credentials
          content:
            "application/json":
              schema:
                $ref: "#/components/schemas/CredentialsResponse"
        "400":
          description: "Bad request. "
          content:
            "application/json":
              schema:
                "$ref": "#/components/schemas/ErrorResponse"
        "422":
          description: "Duplicate credentials"
          content:
            "application/json":
              schema:
                "$ref": "#/components/schemas/ErrorResponse"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "406":
          $ref: "#/components/responses/NotAcceptable"
        "412":
          $ref: "#/components/responses/PreconditionFailed"
        "415":
          $ref: "#/components/responses/UnsupportedMediaType"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
        "504":
          $ref: "#/components/responses/GatewayTimeout"
  /appRegistrations/{registrationId}/credentials/{consumerKey}:
    parameters:
      - $ref: "#/components/parameters/consumerKey"
      - $ref: "#/components/parameters/registrationId"
    get:
      summary: (Early Access) Returns the Credentials with the specified Consumer Key
      description: Returns the Credentials with the specified Consumer Key
      operationId: getAppRegistrationCredential
      tags:
        - Registrations
      responses:
        "200":
          description: App Registration Credentials
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/CredentialsResponse"
        "default":
          description: App Registration Credentials
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/CredentialsResponse"
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "406":
          $ref: "#/components/responses/NotAcceptable"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
        "504":
          $ref: "#/components/responses/GatewayTimeout"
    patch:
      summary: (Early Access) Updates the credentials with the specified Consumer Key
      description: Updates the credentials with the specified Consumer Key
      operationId: updateAppRegistrationCredentials
      tags:
        - Registrations
      requestBody:
        description: "Patch to AppRegistration Credentials"
        content:
          "application/json":
            schema:
              "$ref": "#/components/schemas/CredentialsRequest"
      responses:
        "200":
          description: Updated AppRegistration Credentials
          content:
            "application/json":
              schema:
                $ref: "#/components/schemas/CredentialsResponse"
        "default":
          description: Updated AppRegistration Credentials
          content:
            "application/json":
              schema:
                $ref: "#/components/schemas/CredentialsResponse"
        "400":
          description: "Bad request. "
          content:
            "application/json":
              schema:
                "$ref": "#/components/schemas/ErrorResponse"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "406":
          $ref: "#/components/responses/NotAcceptable"
        "412":
          $ref: "#/components/responses/PreconditionFailed"
        "415":
          $ref: "#/components/responses/UnsupportedMediaType"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
        "504":
          $ref: "#/components/responses/GatewayTimeout"
    delete:
      summary: (Early Access) Deletes the credentials with the specified Consumer Key from the App Registration
      description: Deletes the credentials with the specified Consumer Key from the App Registration
      operationId: deleteAppRegistrationCredentials
      tags:
        - Registrations
      responses:
        "204":
          description: No content
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "406":
          $ref: "#/components/responses/NotAcceptable"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
        "504":
          $ref: "#/components/responses/GatewayTimeout"

  /appRegistrations/{registrationId}/accessRequests:
    parameters:
      - $ref: "#/components/parameters/registrationId"
    get:
      summary: (Early Access) Returns a list of Access Requests associated with the App Registration
      operationId: getAppRegistrationAccessRequests
      description: |
        Returns a list of Access Requests associated with the App Registration
        This resource allows filtering of results by query using RSQL. 

        All fields of the `EventApiProductRegistration` schema are queryable.
      tags:
        - Registrations
      parameters:
        - $ref: "#/components/parameters/where"
        - $ref: "#/components/parameters/pageSize"
        - $ref: "#/components/parameters/pageNumber"
        - $ref: "#/components/parameters/sortFieldName"
        - $ref: "#/components/parameters/sortDirection"
      responses:
        "200":
          description: the AppRegistration Access Requests
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/EventApiProductRegistrationsResponse"
        "default":
          description: the AppRegistration Access Requests
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/EventApiProductRegistrationsResponse"
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "406":
          $ref: "#/components/responses/NotAcceptable"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
        "504":
          $ref: "#/components/responses/GatewayTimeout"
    post:
      summary: (Early Access) Creates a new Access Request.
      description: Creates a new Access Request. The initial state of the request is returned in the response. If the  Event API Product requires "manual" approval the request is in "pending" state, if it is "auto" the request is in "approved" state.
      operationId: createAppRegistrationAccessRequest
      tags:
        - Registrations
      requestBody:
        description: "New App Registration Access Request"
        content:
          "application/json":
            schema:
              "$ref": "#/components/schemas/EventApiProductRegistrationCreate"
      responses:
        "201":
          description: Created AccessRequest
          content:
            "application/json":
              schema:
                $ref: "#/components/schemas/EventApiProductRegistrationResponse"
        "default":
          description: Created AccessRequest
          content:
            "application/json":
              schema:
                $ref: "#/components/schemas/EventApiProductRegistrationResponse"
        "400":
          description: "Bad request. "
          content:
            "application/json":
              schema:
                "$ref": "#/components/schemas/ErrorResponse"
        "422":
          description: "Duplicate entity. "
          content:
            "application/json":
              schema:
                "$ref": "#/components/schemas/ErrorResponse"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "406":
          $ref: "#/components/responses/NotAcceptable"
        "412":
          $ref: "#/components/responses/PreconditionFailed"
        "415":
          $ref: "#/components/responses/UnsupportedMediaType"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
        "504":
          $ref: "#/components/responses/GatewayTimeout"
  /appRegistrations/{registrationId}/accessRequests/{accessRequestId}:
    parameters:
      - $ref: "#/components/parameters/accessRequestId"
      - $ref: "#/components/parameters/registrationId"
    get:
      summary: (Early Access) Returns the requested Access Request associated with the specified App Registration
      description: Returns the requested Access Request associated with the specified App Registration
      operationId: getAppRegistrationAccessRequest
      tags:
        - Registrations
      responses:
        "200":
          description: the App Registration AccessRequest
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/EventApiProductRegistrationResponse"
        "default":
          description: the App Registration AccessRequest
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/EventApiProductRegistrationResponse"
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "406":
          $ref: "#/components/responses/NotAcceptable"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
        "504":
          $ref: "#/components/responses/GatewayTimeout"
    patch:
      summary: (Early Access) Updates the Access Request associated with the Application Registration
      description: Updates the Access Request associated with the Application Registration
      operationId: updateAppRegistrationAccessRequest
      tags:
        - Registrations
      requestBody:
        description: "Patch to AppRegistration AccessRequests"
        content:
          "application/json":
            schema:
              "$ref": "#/components/schemas/EventApiProductRegistrationUpdate"
      responses:
        "200":
          description: Updated AppRegistration AccessRequests
          content:
            "application/json":
              schema:
                $ref: "#/components/schemas/EventApiProductRegistrationResponse"
        "default":
          description: Updated AppRegistration AccessRequests
          content:
            "application/json":
              schema:
                $ref: "#/components/schemas/EventApiProductRegistrationResponse"
        "400":
          description: "Bad request. "
          content:
            "application/json":
              schema:
                "$ref": "#/components/schemas/ErrorResponse"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "406":
          $ref: "#/components/responses/NotAcceptable"
        "412":
          $ref: "#/components/responses/PreconditionFailed"
        "415":
          $ref: "#/components/responses/UnsupportedMediaType"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
        "504":
          $ref: "#/components/responses/GatewayTimeout"
    put:
      summary: (Early Access) Upgrades the Access Request to use the latest version of its associated Event API Product
      description: |
        Upgrades the Access Request to use the latest version of its associated Event API Product. 
        This operation will update the access request to reference the most recent version of the product.
        
        Plan selection:
        - If a `planId` is provided in the request body, the access request will be updated to use that specific plan in the latest product version.
        - If no `planId` is provided, the operation will search for a plan with the same name as the currently used plan in the latest product version.
        - If no matching plan can be found, the operation will return an error.
        
        Once the access request is successfully updated, the runtime configuration will be synchronized with the changes.
      operationId: upgradeAppRegistrationAccessRequestToLatestProductVersion
      tags:
        - Registrations
      requestBody:
        description: "Optional plan ID for the upgrade. If not provided, a plan with the same name will be used if available."
        content:
          "application/json":
            schema:
              "$ref": "#/components/schemas/AccessRequestUpgradeRequest"
      responses:
        "200":
          description: Updated AppRegistration AccessRequest with latest product version
          content:
            "application/json":
              schema:
                $ref: "#/components/schemas/EventApiProductRegistrationResponse"
        "default":
          description: Updated AppRegistration AccessRequest with latest product version
          content:
            "application/json":
              schema:
                $ref: "#/components/schemas/EventApiProductRegistrationResponse"
        "400":
          description: "Bad request. "
          content:
            "application/json":
              schema:
                "$ref": "#/components/schemas/ErrorResponse"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          description: "Not found - Access request does not exist"
          content:
            "application/json":
              schema:
                "$ref": "#/components/schemas/ErrorResponse"
        "406":
          $ref: "#/components/responses/NotAcceptable"
        "415":
          $ref: "#/components/responses/UnsupportedMediaType"
        "422":
          description: "Unprocessable entity - Plan not found or other validation error"
          content:
            "application/json":
              schema:
                "$ref": "#/components/schemas/ErrorResponse"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
        "504":
          $ref: "#/components/responses/GatewayTimeout"
    delete:
      summary: (Early Access) Deletes the specified Access Request form the App Registration
      description: Deletes the specified Access Request form the App Registration
      operationId: deleteAppRegistrationAccessRequest
      tags:
        - Registrations
      responses:
        "204":
          description: No content
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "406":
          $ref: "#/components/responses/NotAcceptable"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
        "504":
          $ref: "#/components/responses/GatewayTimeout"

  /appRegistrations/{registrationId}/accessRequests/{accessRequestId}/eventApis:
    parameters:
      - $ref: "#/components/parameters/registrationId"
      - $ref: "#/components/parameters/accessRequestId"
    get:
      summary: (Early Access) Returns a list of all Event APIs associated with the Access Request
      description: Returns a list of all Event APIs associated with the Access Request
      operationId: getAppRegistrationAccessRequestApis
      tags:
        - Registrations
      parameters:
        - $ref: "#/components/parameters/pageSize"
        - $ref: "#/components/parameters/pageNumber"
        - $ref: "#/components/parameters/sortFieldName"
        - $ref: "#/components/parameters/sortDirection"
      responses:
        "200":
          description: list of apis the app has access to
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/EventApisResponse"
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "406":
          $ref: "#/components/responses/NotAcceptable"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
        "504":
          $ref: "#/components/responses/GatewayTimeout"
  /appRegistrations/{registrationId}/accessRequests/{accessRequestId}/eventApis/{eventApiId}:
    parameters:
      - $ref: "#/components/parameters/accessRequestId"
      - $ref: "#/components/parameters/eventApiId"
      - $ref: "#/components/parameters/registrationId"
      - $ref: "#/components/parameters/apiFormat"
      - $ref: "#/components/parameters/apiStyle"
      - $ref: "#/components/parameters/asyncApiVersion"
    get:
      summary: (Early Access) Returns the Async API specification associated with the Access Request.
      description: |
        Returns the Async API specification associated with the App Registration. 
        The generated API document includes protocol specific bindings conforming to the policy specified in the Event API Product plan that the API is included in.
      operationId: getAppRegistrationAccessRequestApi
      tags:
        - Registrations
      responses:
        "200":
          description: the async api specification tailored to the current app
          content:
            application/json:
              schema:
                type: object
            text/plain:
              schema:
                "$ref": "#/components/schemas/String2MB"
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "406":
          $ref: "#/components/responses/NotAcceptable"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
        "504":
          $ref: "#/components/responses/GatewayTimeout"

  /appRegistrations/{registrationId}/accessRequests/{accessRequestId}/filters:
    parameters:
      - $ref: "#/components/parameters/accessRequestId"
      - $ref: "#/components/parameters/registrationId"
    get:
      summary: (Early Access) Returns filters of the App Registration
      description: |
        Returns filters of the App Registration.
      operationId: getEventApiProductAccessRequestFilters
      parameters:
        - $ref: "#/components/parameters/pageSize"
        - $ref: "#/components/parameters/pageNumber"
        - $ref: "#/components/parameters/sortFieldName"
        - $ref: "#/components/parameters/sortDirection"
      tags:
        - Registrations
      responses:
        "200":
          description: the AppRegistration Filters
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/FiltersResponse"
        "default":
          description: the AppRegistration Attributes
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/FiltersResponse"
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "406":
          $ref: "#/components/responses/NotAcceptable"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
        "504":
          $ref: "#/components/responses/GatewayTimeout"
    post:
      summary: (Early Access) Adds a topic filter to the App Registration
      description: Adds a topic filter to the App Registration.
      operationId: createEventApiProductAccessRequestFilter
      tags:
        - Registrations
      requestBody:
        description: "New App Registration Filter"
        content:
          "application/json":
            schema:
              "$ref": "#/components/schemas/APIParameterFilter"
      responses:
        "201":
          description: Created AppRegistration Filter
          content:
            "application/json":
              schema:
                $ref: "#/components/schemas/FilterResponse"
        "default":
          description: Created AppRegistration Filter
          content:
            "application/json":
              schema:
                $ref: "#/components/schemas/FilterResponse"
        "400":
          description: "Bad request. "
          content:
            "application/json":
              schema:
                "$ref": "#/components/schemas/ErrorResponse"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "406":
          $ref: "#/components/responses/NotAcceptable"
        "412":
          $ref: "#/components/responses/PreconditionFailed"
        "415":
          $ref: "#/components/responses/UnsupportedMediaType"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
        "504":
          $ref: "#/components/responses/GatewayTimeout"
  /appRegistrations/{registrationId}/accessRequests/{accessRequestId}/filters/{filterName}:
    parameters:
      - $ref: "#/components/parameters/registrationId"
      - $ref: "#/components/parameters/accessRequestId"
      - $ref: "#/components/parameters/filterName"
    get:
      summary: (Early Access) Returns the requested filter of the App Registration
      description: Returns the requested filter of the App Registration
      operationId: getEventApiProductAccessRequestFilter
      tags:
        - Registrations
      responses:
        "200":
          description: the App Registration Filter
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/FilterResponse"
        "default":
          description: the App Registration Attribute
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/FilterResponse"
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "406":
          $ref: "#/components/responses/NotAcceptable"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
        "504":
          $ref: "#/components/responses/GatewayTimeout"
    patch:
      summary: (Early Access) Updates the specified filter's value
      description: Updates the specified filter's value.
      operationId: updateEventApiProductAccessRequestFilter
      tags:
        - Registrations
      requestBody:
        description: "Patch to App Registration Filter"
        content:
          "application/json":
            schema:
              $ref: "#/components/schemas/FilterUpdateRequest"
      responses:
        "200":
          description: Updated App Registration Filter
          content:
            "application/json":
              schema:
                $ref: "#/components/schemas/FilterResponse"
        "default":
          description: Updated App Registration Filter
          content:
            "application/json":
              schema:
                $ref: "#/components/schemas/FilterResponse"
        "400":
          description: "Bad request. "
          content:
            "application/json":
              schema:
                "$ref": "#/components/schemas/ErrorResponse"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "406":
          $ref: "#/components/responses/NotAcceptable"
        "412":
          $ref: "#/components/responses/PreconditionFailed"
        "415":
          $ref: "#/components/responses/UnsupportedMediaType"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
        "504":
          $ref: "#/components/responses/GatewayTimeout"
    delete:
      summary: (Early Access) Deletes the specified filter from the App Registration
      description: Deletes the specified filter from the App Registration
      operationId: deleteEventApiProductAccessRequestFilter
      tags:
        - Registrations
      responses:
        "204":
          description: No content
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "406":
          $ref: "#/components/responses/NotAcceptable"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
        "504":
          $ref: "#/components/responses/GatewayTimeout"

  /appRegistrations/{registrationId}/webhooks:
    parameters:
      - $ref: "#/components/parameters/registrationId"
    get:
      operationId: listAppRegistrationWebhooks
      summary: (Early Access) Returns a list of webhook registrations (Coming Soon)
      description: Coming Soon - Returns a list of webhook registrations
      parameters:
        - $ref: "#/components/parameters/pageSize"
        - $ref: "#/components/parameters/pageNumber"
        - $ref: "#/components/parameters/sortFieldName"
        - $ref: "#/components/parameters/sortDirection"
      tags:
        - Registrations
      responses:
        "200":
          description: list of webhooks
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebhookIdList"
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "406":
          $ref: "#/components/responses/NotAcceptable"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
        "504":
          $ref: "#/components/responses/GatewayTimeout"
    post:
      operationId: createAppRegistrationWebhook
      summary: (Early Access) Creates a new webhook registration on the App Registration (Coming Soon)
      description: Coming Soon - Creates a new webhook registration on the App Registration
      tags:
        - Registrations
      requestBody:
        description: "new webhook"
        content:
          "application/json":
            schema:
              "$ref": "#/components/schemas/Webhook"
      responses:
        "201":
          description: new webhook
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebhookResponse"
        "default":
          description: new webhook
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebhookResponse"
        "400":
          description: "Bad request, contains information about failed back end calls when the app is  provisioned"
          content:
            "application/json":
              schema:
                "$ref": "#/components/schemas/ErrorResponse"
        "412":
          $ref: "#/components/responses/PreconditionFailed"
        "422":
          description: "Duplicate app or invalid object reference e.g. invalid API product name"
          content:
            "application/json":
              schema:
                "$ref": "#/components/schemas/ErrorResponse"
        "500":
          description: "Internal Server error, contains information about failed back end calls when the  app is provisioned"
          content:
            "application/json":
              schema:
                "$ref": "#/components/schemas/ErrorResponse"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "406":
          $ref: "#/components/responses/NotAcceptable"
        "415":
          $ref: "#/components/responses/UnsupportedMediaType"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
        "504":
          $ref: "#/components/responses/GatewayTimeout"

  /appRegistrations/{registrationId}/webhooks/{webhookId}:
    parameters:
      - $ref: "#/components/parameters/registrationId"
      - $ref: "#/components/parameters/webhookId"
    get:
      operationId: getAppRegistrationWebhook
      summary: (Early Access) Returns the specified webhook registration from the App Registration (Coming Soon)
      description: Coming Soon - Returns the specified webhook registration from the App Registration
      tags:
        - Registrations
      responses:
        "200":
          description: the webhook
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebhookResponse"
        "default":
          description: the webhook
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebhookResponse"
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "406":
          $ref: "#/components/responses/NotAcceptable"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
        "504":
          $ref: "#/components/responses/GatewayTimeout"
    patch:
      operationId: updateAppRegistrationWebhook
      summary: (Early Access) Updates the specified webhook registration on the App Registration (Coming Soon)
      description: Coming Soon - Updates the specified webhook registration on the App Registration
      tags:
        - Registrations
      requestBody:
        description: ""
        content:
          "application/json":
            schema:
              "$ref": "#/components/schemas/Webhook"
      responses:
        "200":
          description: webhook
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Webhook"
        "default":
          description: webhook
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Webhook"
        "400":
          description: "Bad request, contains information about failed back end calls when the app is  provisioned"
          content:
            "application/json":
              schema:
                "$ref": "#/components/schemas/ErrorResponse"
        "412":
          $ref: "#/components/responses/PreconditionFailed"
        "422":
          description: "Duplicate app or invalid object reference e.g. invalid API product name"
          content:
            "application/json":
              schema:
                "$ref": "#/components/schemas/ErrorResponse"
        "500":
          description: "Internal Server error, contains information about failed back end calls when the  app is provisioned"
          content:
            "application/json":
              schema:
                "$ref": "#/components/schemas/ErrorResponse"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "406":
          $ref: "#/components/responses/NotAcceptable"
        "415":
          $ref: "#/components/responses/UnsupportedMediaType"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
        "504":
          $ref: "#/components/responses/GatewayTimeout"
    delete:
      operationId: deleteAppRegistrationWebhook
      summary: (Early Access) Deletes the specified webhook registration from the App Registration (Coming Soon)
      description: Coming Soon - Deletes the specified webhook registration from the App Registration
      tags:
        - Registrations
      responses:
        "204":
          description: No content
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "406":
          $ref: "#/components/responses/NotAcceptable"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
        "504":
          $ref: "#/components/responses/GatewayTimeout"

  /appRegistrations/{registrationId}/configState:
    parameters:
      - $ref: "#/components/parameters/registrationId"
    get:
      summary: (Early Access) Returns the config state of an application registration
      description: Returns the config state of an application registration
      operationId: getApplicationRegistrationConfigState
      tags:
        - Registrations
      responses:
        "200":
          description: the config state of an application registration
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/ConfigState"
        "default":
          description: the config state of an application registration
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/ConfigState"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "406":
          $ref: "#/components/responses/NotAcceptable"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
        "504":
          $ref: "#/components/responses/GatewayTimeout"

  /gateways:
    get:
      summary: (Early Access) Returns a list of all available Gateway Event Brokers
      description: |
        Returns a list of Gateway Event Brokers
        This resource allows filtering of results by query using RSQL.

        All fields of the `MessagingService` schema are queryable.
      operationId: listGateways
      tags:
        - Gateways
      parameters:
        - $ref: "#/components/parameters/where"
        - $ref: "#/components/parameters/pageSize"
        - $ref: "#/components/parameters/pageNumber"
        - $ref: "#/components/parameters/sortFieldName"
        - $ref: "#/components/parameters/sortDirection"
      responses:
        "200":
          description: list of gateways
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/GatewaysResponse"
        "default":
          description: list of gateways
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/GatewaysResponse"
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "406":
          $ref: "#/components/responses/NotAcceptable"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
        "504":
          $ref: "#/components/responses/GatewayTimeout"
  /gateways/authentication:
    post:
      summary: (Early Access) Set the authentication mode for the Event Broker Gateways
      description: Set the authentication mode for the Event Broker Gateways when configuring aplication registration access on a Broker. Can be eiehter basic authentication or API key based authentication
      operationId: updateGatewaysAuthentication
      tags:
        - Gateways
      requestBody:
        description: "Authentication method information to use for the Gateway Brokers"
        content:
          "application/json":
            schema:
              "$ref": "#/components/schemas/GatewaysAuthentication"
      responses:
        "201":
          description: Created app registration
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GatewaysAuthentication"
        "default":
          description: Created app registration
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GatewaysAuthentication"
        "400":
          description: "Bad request. Likely an invalid auth token provided."
          content:
            "application/json":
              schema:
                "$ref": "#/components/schemas/ErrorResponse"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "406":
          $ref: "#/components/responses/NotAcceptable"
        "409":
          $ref: "#/components/responses/Conflict"
        "415":
          $ref: "#/components/responses/UnsupportedMediaType"
        "422":
          description: "Duplicate organization"
          content:
            "application/json":
              schema:
                "$ref": "#/components/schemas/ErrorResponse"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
        "504":
          $ref: "#/components/responses/GatewayTimeout"

  /gateways/{messagingServiceId}:
    parameters:
      - $ref: "#/components/parameters/messagingServiceId"
    get:
      summary: (Early Access) Returns the specified Gateway Broker Service
      description: Returns the specified Gateway Messaging Service
      operationId: getGateway
      tags:
        - Gateways
      responses:
        "200":
          description: a Broker Service gateway
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/GatewayResponse"
        "default":
          description: a Broker Service service gateway
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/GatewayResponse"
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "406":
          $ref: "#/components/responses/NotAcceptable"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
        "504":
          $ref: "#/components/responses/GatewayTimeout"
    patch:
      summary: (Early Access) Sets or updates the SEMPv2 secret used to connect to the Gateway Broker
      description: Returns the SEMPv2 connection status of the  Gateway Broker Service
      operationId: setGatewaySecret
      tags:
        - Gateways
      requestBody:
        description: "New SEMPv2 connection secret"
        content:
          "application/json":
            schema:
              "$ref": "#/components/schemas/GatewaySecret"
      responses:
        "200":
          description: the SEMPv2 connection status of the  Gateway Broker Service
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/GatewayStatus"
        "default":
          description: the SEMPv2 connection status of the  Gateway Broker Service
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/GatewayStatus"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "406":
          $ref: "#/components/responses/NotAcceptable"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
        "504":
          $ref: "#/components/responses/GatewayTimeout"
  /gateways/{messagingServiceId}/status:
    parameters:
      - $ref: "#/components/parameters/messagingServiceId"
    get:
      summary: (Early Access) Returns the status of the  Gateway Broker Service
      description: Returns the SEMPv2 connection status of the  Gateway Broker Service
      operationId: getGatewayConnectionStatus
      tags:
        - Gateways
      responses:
        "200":
          description: the SEMPv2 connection status of the  Gateway Broker Service
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/GatewayStatus"
        "default":
          description: the SEMPv2 connection status of the  Gateway Broker Service
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/GatewayStatus"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "406":
          $ref: "#/components/responses/NotAcceptable"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
        "504":
          $ref: "#/components/responses/GatewayTimeout"

components:
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
    OpenId:
      type: openIdConnect
      openIdConnectUrl: /auth/.well-known/openid-configuration
  parameters:
    eventApiProductId:
      name: eventApiProductId
      description: the id of an Event API Product
      in: path
      required: true
      schema:
        type: string
        pattern: "^[a-zA-Z0-9_-]*$"
        minLength: 4
        maxLength: 188
    planId:
      name: planId
      description: the id of a plan within the Event API Product
      in: path
      required: true
      schema:
        type: string
        pattern: "^[a-zA-Z0-9_-]*$"
        minLength: 4
        maxLength: 188
    registrationId:
      name: registrationId
      description: the id of an Application Registration
      in: path
      required: true
      schema:
        "$ref": "#/components/schemas/CommonExternalId"
    messagingServiceId:
      name: messagingServiceId
      description: the id of a Gateway Messaging Service
      in: path
      required: true
      schema:
        type: string
        pattern: "^[a-zA-Z0-9_-]*$"
        minLength: 4
        maxLength: 188
    version:
      name: version
      description: the version of the Event API Product
      in: path
      required: true
      schema:
        $ref: "#/components/schemas/SemVer"
    attributeName:
      name: attributeName
      description: the name of an attribute
      in: path
      required: true
      schema:
        type: string
        pattern: "^[a-zA-Z0-9_-]*$"
        minLength: 4
        maxLength: 188
    filterName:
      name: filterName
      description: the name of a filter
      in: path
      required: true
      schema:
        type: string
        pattern: "^[a-zA-Z0-9_-]*$"
        minLength: 4
        maxLength: 188
    consumerKey:
      name: consumerKey
      description: the consumerKey issued for the credentials object
      in: path
      required: true
      schema:
        type: string
        pattern: "^[a-zA-Z0-9_-]*$"
        minLength: 4
        maxLength: 188
    eventApiId:
      name: eventApiId
      description: the id of an Event API
      in: path
      required: true
      schema:
        type: string
        pattern: "^[a-zA-Z0-9_-]*$"
        minLength: 4
        maxLength: 188
    accessRequestId:
      name: accessRequestId
      description: the id of an access request for an Event API Product
      in: path
      required: true
      schema:
        type: string
        pattern: "^[a-zA-Z0-9_-]*$"
        minLength: 4
        maxLength: 188
    webhookId:
      name: webhookId
      description: the id of a webhook
      in: path
      required: true
      schema:
        type: string
        pattern: "^[a-zA-Z0-9_-]*$"
        minLength: 4
        maxLength: 188
    where:
      name: where
      description: |
        Query string for filtering entity. Expressed in FIQL/RSQL language. 
        This resource allows filtering of results by query using RSQL.
        Examples: 
        * ?where=brokerType==solace;state==RELEASED
        * ?where=(attributes.name==color;attributes.value==red)
        Notation:
        * Sub elements can be queried with dot notation, for example `plan.name==Gold*` matches all plans where the name starts with Gold. This also applies to querying nested arrays.
        * Queries on attributes where the name and the value must match specific criteria can be expressed by grouping the name and value search criteria.
          for example `(attributes.name==color;attributes.value==Bl*)` matches all objects where the value of attribute `color` starts with `Bl` such as `Black` or `Blue`. Queries on a combiation of attributes are also possible `(attributes.name==color;attributes.value==Bl*);(attributes.name==flavour;attributes.value==*Berry)` only matches documents where `color` starts with `Bl` and the `flavour` attribute ends in `berry`.

        See [https://github.com/jirutka/rsql-parser](https://github.com/jirutka/rsql-parser) for details of the supported query operators and syntax
      in: query
      allowReserved: true
      schema:
        type: string
        minLength: 5
        maxLength: 1024
    pageSize:
      name: pageSize
      in: query
      description: "The number of items to get per page. Min: 1 Max: 100"
      required: false
      schema:
        type: integer
        format: int32
        minimum: 1
        maximum: 100
    pageNumber:
      name: pageNumber
      in: query
      description: "The page number to get. Min: 1"
      required: false
      schema:
        type: integer
        format: int32
        minimum: 1
        maximum: 16384
    sortDirection:
      name: sortDirection
      in: query
      description: sort direction to be applied to the sort field name
      required: false
      schema:
        type: string
        enum:
          - asc
          - desc
    sortFieldName:
      name: sortFieldName
      in: query
      description: name of a field to sort on, the sort direction parameter determines the order (asc/desc) of the sort
      required: false
      schema:
        type: string
        pattern: "^[a-zA-Z0-9_-]*$"
        minLength: 2
        maxLength: 512
    apiStyle:
      name: apiStyle
      in: query
      deprecated: true
      description: The style of Async API such as adhering to "AsyncAPI for the SAP Ecosystem"
      schema:
        type: string
        enum:
          - default
          - "sap-ecosystem"
    apiFormat:
      name: apiFormat
      in: query
      description: The format the client requires the Async API to be returned in
      schema:
        type: string
        enum:
          - application/json
          - application/x-yaml
          - application/zip
    asyncApiVersion:
      name: asyncApiVersion
      in: query
      description: version the Async API Specification version the requested specification should adhere to
      schema:
        type: string
        enum:
          - 2.2.0
          - 2.5.0

  responses:
    PreconditionFailed:
      description: PreConditon Failed, likely a mismatch between current etag and if-match header
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ErrorResponse"
    BadRequest:
      description: Bad Request.
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ErrorResponse"
    Unauthorized:
      description: Unauthorized.
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ErrorResponse"
    Forbidden:
      description: Forbidden.
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ErrorResponse"
    NotFound:
      description: Not Found.
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ErrorResponse"
    NotAcceptable:
      description: Not Acceptable.
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ErrorResponse"
    UnsupportedMediaType:
      description: Unsupported Media Type.
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ErrorResponse"
    TooManyRequests:
      description: Too many requests.
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ErrorResponse"
    InternalServerError:
      description: Internal Server Error.
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ErrorResponse"
    ServiceUnavailable:
      description: Service Unavailable.
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ErrorResponse"
    GatewayTimeout:
      description: Gateway Timeout.
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ErrorResponse"
    Conflict:
      description: Conflict
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ErrorResponse"
  schemas:
    Plan:
      type: object
      required:
        - id
        - name
        - solaceClassOfServicePolicy
      additionalProperties: false
      properties:
        id:
          "$ref": "#/components/schemas/CommonId"
        name:
          "$ref": "#/components/schemas/CommonName"
        solaceClassOfServicePolicy:
          "$ref": "#/components/schemas/SolaceClassOfServicePolicy"
    SolaceClassOfServicePolicy:
      type: object
      additionalProperties: false
      description: Solace class of service policy
      properties:
        id:
          "$ref": "#/components/schemas/CommonId"
        messageDeliveryMode:
          type: string
          description:
            The type of message delivery mode in the current event API
            product version
          enum:
            - direct
            - guaranteed
          default: direct
        accessType:
          type: string
          enum:
            - exclusive
            - non-exclusive
        maximumTimeToLive:
          type: integer
          description: Duration in seconds of how long a message can live in a queue
          format: int32
          example: 1500
          minimum: -1
          maximum: 95000000
        queueType:
          type: string
          description:
            The type of queue to be used in the current event API product
            version
          enum:
            - single
            - combined
          default: combined
        maxMsgSpoolUsage:
          type: integer
          description: Total number of MBs available for the queue to use
          format: int32
          example: 5
          minimum: 0
          maximum: 800000
    SolaceMessagingService:
      type: object
      description: Solace Messaging Services
      additionalProperties: false
      required:
        - id
        - messagingServiceId
        - messagingServiceName
        - supportedProtocols
        - environmentName
        - eventMeshName
      properties:
        id:
          "$ref": "#/components/schemas/CommonId"
        messagingServiceId:
          "$ref": "#/components/schemas/CommonId"
        messagingServiceName:
          "$ref": "#/components/schemas/CommonNameReadOnly"
        supportedProtocols:
          type: array
          minItems: 1
          maxItems: 32
          description: Values for allowed supported protocols
          items:
            "$ref": "#/components/schemas/MessagingServiceProtocol"
        environmentName:
          "$ref": "#/components/schemas/CommonNameReadOnly"
        eventMeshName:
          "$ref": "#/components/schemas/CommonNameReadOnly"
        solaceCloudMessagingServiceId:
          "$ref": "#/components/schemas/CommonId"
    APIParameterFilter:
      type: object
      required:
        - name
        - values
      additionalProperties: false
      description: List of variable that contains address node name and filters
      properties:
        name:
          "$ref": "#/components/schemas/CommonName"
        values:
          "$ref": "#/components/schemas/APIParameterFilterValues"
    APIParameterFilterValues:
      type: array
      minLength: 1
      maxLength: 128
      description: filter values
      items:
        $ref: "#/components/schemas/APIParameterFilterValue"
    APIParameterFilterValue:
      type: string
      minLength: 1
      maxLength: 128
      pattern: ^[^>\/\x00*!]*[*]?$
      example:
        - A
        - T
        - N
      description: an individual filter value
    BrokerType:
      type: string
      description: The type of the broker used for the event API product
      enum:
        - kafka
        - solace
      default: solace

    EventApiProductSummary:
      type: object
      required:
        - version
      additionalProperties: false
      properties:
        version:
          $ref: "#/components/schemas/SemVer"
        summary:
          type: string
          minLength: 0
          maxLength: 1024
          example: Summary string value of event API product
        displayName:
          "$ref": "#/components/schemas/CommonName"
        state:
          "$ref": "#/components/schemas/EventApiProductState"
    EventApiProduct:
      type: object
      required:
        - id
        - name
        - applicationDomainId
        - applicationDomainName
        - brokerType
        - createdTime
        - updatedTime
        - createdBy
        - changedBy
        - version
        - state
        - plans
        - solaceMessagingServices
        - approvalType
        - attributes
        - customAttributes
        - apis
        - apiParameters
      additionalProperties: false
      properties:
        id:
          "$ref": "#/components/schemas/CommonId"
        name:
          "$ref": "#/components/schemas/CommonName"
        applicationDomainId:
          "$ref": "#/components/schemas/CommonId"
        applicationDomainName:
          "$ref": "#/components/schemas/CommonName"
        brokerType:
          "$ref": "#/components/schemas/BrokerType"
        customAttributes:
          type: array
          description: Custom attributes defined in Event Portal
          minItems: 0
          maxItems: 256
          items:
            "$ref": "#/components/schemas/Attribute"
        attributes:
          type: array
          description: Attributes managed by integrations and external clients.
          minItems: 0
          maxItems: 256
          items:
            "$ref": "#/components/schemas/Attribute"
        createdTime:
          "$ref": "#/components/schemas/CommonTimestampIntegerReadOnly"
        updatedTime:
          "$ref": "#/components/schemas/CommonTimestampIntegerReadOnly"
        createdBy:
          type: string
          minLength: 4
          maxLength: 64
          readOnly: true
          example: "12345678"
        changedBy:
          type: string
          minLength: 4
          maxLength: 64
          readOnly: true
          example: "12345678"
        description:
          maxLength: 10000
          type: string
          example: Event API product created by Solace PubSub+ Cloud documentation
        version:
          $ref: "#/components/schemas/SemVer"
        summary:
          type: string
          minLength: 0
          maxLength: 1024
          example: Summary string value of event API product
        displayName:
          "$ref": "#/components/schemas/CommonName"
        state:
          "$ref": "#/components/schemas/EventApiProductState"
        plans:
          type: array
          minItems: 1
          maxItems: 128
          items:
            "$ref": "#/components/schemas/Plan"
        apis:
          type: array
          minItems: 0
          maxItems: 999
          items:
            "$ref": "#/components/schemas/EventApiVersion"

        solaceMessagingServices:
          type: array
          minItems: 1
          maxItems: 128
          description: Solace Messaging Services
          items:
            "$ref": "#/components/schemas/SolaceMessagingService"
        apiParameters:
          type: array
          minItems: 0
          maxItems: 32768
          items:
            $ref: "#/components/schemas/APIParameter"
        approvalType:
          type: string
          description: Approval type
          enum:
            - automatic
            - manual
          default: automatic
    EventApiVersion:
      type: object
      required:
        - id
        - version
        - name
        - customAttributes
      additionalProperties: false
      properties:
        id:
          "$ref": "#/components/schemas/CommonId"
        description:
          maxLength: 10000
          minLength: 0
          type: string
          example: Event Api created by Solace PubSub+ Cloud documentation
        version:
          type: string
          minLength: 2
          maxLength: 64
          example: 1.0.0
        displayName:
          "$ref": "#/components/schemas/CommonName"
        name:
          "$ref": "#/components/schemas/CommonName"
        customAttributes:
          type: array
          minItems: 0
          maxItems: 256
          items:
            "$ref": "#/components/schemas/Attribute"
    ApplicationRegistrationView:
      type: object
      required:
        - registrationId
        - source
        - name
        - attributes
        - accessRequests
        - apis
        - credentials
        - webhooks
        - gatewayMessagingServices
        - brokerType
        - filters
      additionalProperties: false
      properties:
        registrationId:
          "$ref": "#/components/schemas/CommonExternalId"
        source:
          "$ref": "#/components/schemas/CommonExternalId"
        name:
          "$ref": "#/components/schemas/CommonName"
        applicationDomainId:
          "$ref": "#/components/schemas/CommonId"
        sourceOwner:
          "$ref": "#/components/schemas/CommonName"
        brokerType:
          $ref: "#/components/schemas/BrokerType"
        accessRequests:
          type: array
          minItems: 0
          maxItems: 999
          items:
            "$ref": "#/components/schemas/EventApiProductRegistration"
        apis:
          type: array
          minItems: 0
          maxItems: 999
          items:
            "$ref": "#/components/schemas/EventApiVersion"
        credentials:
          type: array
          minItems: 0
          maxItems: 999
          items:
            "$ref": "#/components/schemas/CredentialsView"
        webhooks:
          type: array
          minItems: 0
          maxItems: 999
          items:
            "$ref": "#/components/schemas/Webhook"
        attributes:
          type: array
          description: Attributes managed by integrations and external clients.
          minItems: 0
          maxItems: 256
          items:
            "$ref": "#/components/schemas/Attribute"
        gatewayMessagingServices:
          type: array
          description: List of available gateway messaging services and the permissions granted to the application on each.
          minItems: 0
          maxItems: 256
          items:
            "$ref": "#/components/schemas/AppRegistrationMessagingService"
        filters:
          type: array
          description: List of topic filters specific to this app registration
          minItems: 0
          maxItems: 256
          items:
            "$ref": "#/components/schemas/APIParameterFilter"
    ApplicationRegistration:
      type: object
      required:
        - registrationId
        - source
        - name
      additionalProperties: false
      properties:
        name:
          "$ref": "#/components/schemas/CommonName"
        applicationDomainId:
          "$ref": "#/components/schemas/CommonId"
        sourceOwner:
          "$ref": "#/components/schemas/CommonName"
        registrationId:
          "$ref": "#/components/schemas/CommonExternalId"
        source:
          "$ref": "#/components/schemas/CommonExternalId"
        attributes:
          type: array
          description: Attributes managed by integrations and external clients.
          minItems: 0
          maxItems: 256
          items:
            "$ref": "#/components/schemas/Attribute"

    ApplicationRegistrationUpdate:
      type: object
      additionalProperties: false
      properties:
        name:
          "$ref": "#/components/schemas/CommonName"
        applicationDomainId:
          "$ref": "#/components/schemas/CommonId"
        sourceOwner:
          "$ref": "#/components/schemas/CommonName"
    EventApiProductRegistration:
      type: object
      required:
        - accessRequestId
        - registrationId
        - eventApiProductId
        - planId
        - state
        - eventApiProductVersion
        - filters
      additionalProperties: false
      properties:
        accessRequestId:
          "$ref": "#/components/schemas/CommonExternalId"
        registrationId:
          "$ref": "#/components/schemas/CommonExternalId"
        eventApiProductId:
          "$ref": "#/components/schemas/CommonId"
        eventApiProductVersion:
          $ref: "#/components/schemas/SemVer"
        planId:
          "$ref": "#/components/schemas/CommonId"
        state:
          $ref: "#/components/schemas/AccessRequestState"
        eventApiResourceInformation:
          type: array
          minLength: 0
          maxLength: 255
          items:
            $ref: "#/components/schemas/GuaranteedMessagingInformation"
        eventApiProductResourceInformation:
          $ref: "#/components/schemas/GuaranteedMessagingInformation"
        filters:
          type: array
          description: List of topic filters specific to this app registration
          minItems: 0
          maxItems: 256
          items:
            "$ref": "#/components/schemas/APIParameterFilter"
    EventApiProductRegistrationDetail:
      type: object
      required:
        - accessRequestId
        - registrationId
        - eventApiProductId
        - planId
        - state
        - eventApiProductVersion
        - filters
        - messagingServiceConnections
        - permissions
      additionalProperties: false
      properties:
        accessRequestId:
          "$ref": "#/components/schemas/CommonExternalId"
        registrationId:
          "$ref": "#/components/schemas/CommonExternalId"
        eventApiProductId:
          "$ref": "#/components/schemas/CommonId"
        eventApiProductVersion:
          $ref: "#/components/schemas/SemVer"
        planId:
          "$ref": "#/components/schemas/CommonId"
        state:
          $ref: "#/components/schemas/AccessRequestState"
        eventApiResourceInformation:
          type: array
          minLength: 0
          maxLength: 255
          items:
            $ref: "#/components/schemas/GuaranteedMessagingInformation"
        eventApiProductResourceInformation:
          $ref: "#/components/schemas/GuaranteedMessagingInformation"
        filters:
          type: array
          description: List of topic filters specific to this app registration
          minItems: 0
          maxItems: 256
          items:
            "$ref": "#/components/schemas/APIParameterFilter"
        messagingServiceConnections:
          type: array
          description: List of messaging services connections available for this access request
          minItems: 0
          maxItems: 256
          items:
            "$ref": "#/components/schemas/MessagingServiceConnection"
        permissions:
          "$ref": "#/components/schemas/Permissions"
    EventApiProductRegistrationUpdate:
      type: object
      additionalProperties: false
      properties:
        state:
          $ref: "#/components/schemas/AccessRequestState"
    EventApiProductRegistrationCreate:
      type: object
      required:
        - accessRequestId
        - eventApiProductId
        - planId
      additionalProperties: false
      properties:
        accessRequestId:
          "$ref": "#/components/schemas/CommonExternalId"
        eventApiProductId:
          "$ref": "#/components/schemas/CommonId"
        planId:
          "$ref": "#/components/schemas/CommonId"
        filters:
          type: array
          items:
            "$ref": "#/components/schemas/APIParameterFilter"
          minLength: 0
          maxLength: 256
    AccessRequestUpgradeRequest:
      description: Request payload for upgrading an access request to the latest product version
      type: object
      additionalProperties: false
      properties:
        planId:
          description: "Optional. If provided, the access request will be updated to use this specific plan ID in the latest product version. If not provided, the system will search for a plan with the same name as the current plan."
          "$ref": "#/components/schemas/CommonId"
    EventApiProductState:
      type: string
      enum:
        - RELEASED
        - DEPRECATED
        - RETIRED
        - DELETED
    AccessRequestState:
      type: string
      enum:
        - PENDING_APPROVAL
        - REJECTED
        - REVOKED
        - APPROVED
        - ERROR
        - LIVE
    CredentialsRequest:
      description: Credentials object associated with an app
      type: object
      additionalProperties: false
      properties:
        expiresAt:
          $ref: "#/components/schemas/CommonTimestampIntegerReadOnly"
        issuedAt:
          $ref: "#/components/schemas/CommonTimestampIntegerReadOnly"
        secret:
          $ref: "#/components/schemas/Secret"
        name:
          "$ref": "#/components/schemas/CommonName"
    CredentialsView:
      description: Credentials object associated with an app
      type: object
      additionalProperties: false
      required:
        - expiresAt
        - issuedAt
        - secret
      properties:
        expiresAt:
          $ref: "#/components/schemas/CommonTimestampIntegerReadOnly"
        issuedAt:
          $ref: "#/components/schemas/CommonTimestampIntegerReadOnly"
        secret:
          $ref: "#/components/schemas/SecretView"
        name:
          "$ref": "#/components/schemas/CommonName"
    Secret:
      type: object
      required:
        - consumerKey
      additionalProperties: false
      properties:
        consumerKey:
          type: string
          pattern: "^[a-zA-Z0-9_-]*$"
          minLength: 8
          maxLength: 64
        consumerSecret:
          type: string
          pattern: "^[a-zA-Z0-9_-]*$"
          minLength: 8
          maxLength: 64
    SecretView:
      type: object
      required:
        - consumerKey
        - consumerSecret
      additionalProperties: false
      properties:
        consumerKey:
          type: string
          pattern: "^[a-zA-Z0-9_-]*$"
          minLength: 8
          maxLength: 64
        consumerSecret:
          type: string
          pattern: "^[a-zA-Z0-9_-]*$"
          minLength: 8
          maxLength: 64
    WebhookBasicAuth:
      type: object
      additionalProperties: false
      required:
        - username
        - password
      properties:
        username:
          $ref: "#/components/schemas/CommonUserName"
        password:
          type: string
          minLength: 8
          maxLength: 256
          pattern: "^[\\S]*$"
    WebhookHeaderAuth:
      type: object
      description: A HTTP header used for authentication
      additionalProperties: false
      required:
        - headerName
        - headerValue
      properties:
        headerName:
          type: string
          minLength: 1
          maxLength: 512
          pattern: "^[\\s\\S]*$"
        headerValue:
          type: string
          minLength: 1
          maxLength: 16384
          pattern: "^[\\s\\S]*$"
    WebhookAuth:
      additionalProperties: false
      type: object
      properties:
        basicAuth:
          $ref: "#/components/schemas/WebhookBasicAuth"
        headerAuth:
          $ref: "#/components/schemas/WebhookHeaderAuth"
    WebhookTLSOptions:
      type: object
      description: TLS options required to support older PS+ brokers.
      required:
        - tlsTrustedCommonNames
      additionalProperties: false
      deprecated: true
      properties:
        tlsTrustedCommonNames:
          type: array
          items:
            type: string
          minItems: 0
          maxItems: 255
          description: "The Trusted Common Names for the REST Consumer are used by encrypted transports to verify the name in the certificate presented by the remote REST consumer. They must include the common name of the remote REST consumer's server certificate."

    WebhookHeader:
      type: object
      description: An arbitrary HTTP header applied to the webhook
      additionalProperties: false
      properties:
        headerName:
          type: string
          minLength: 1
          maxLength: 50
          pattern: "^[\\s\\S]*$"
        headerValue:
          type: string
          minLength: 1
          maxLength: 1024
          pattern: "^[\\s\\S]*$"
      required:
        - headerName
        - headerValue

    Webhook:
      type: object
      required:
        - uri
        - method
      additionalProperties: false
      properties:
        uri:
          type: string
          pattern: "^https?:\\/\\/[A-Za-z\\.:0-9\\-]*.*$"
          minLength: 0
          maxLength: 200
        name:
          $ref: "#/components/schemas/CommonName"
        gatewayMessagingServiceIds:
          type: array
          description: messaging services that this webhook service is available on, if absent webhook will be used for all associated messaging services
          minItems: 0
          maxItems: 255
          items:
            $ref: "#/components/schemas/CommonName"
        method:
          type: string
          enum:
            - POST
            - PUT
          default: POST
        mode:
          type: string
          enum:
            - parallel
            - serial
          default: parallel
        authentication:
          "$ref": "#/components/schemas/WebhookAuth"
        tlsOptions:
          "$ref": "#/components/schemas/WebhookTLSOptions"
        requestHeaders:
          type: array
          items:
            $ref: "#/components/schemas/WebhookHeader"
          minItems: 0
          maxItems: 50
        appendTopicToUrl:
          type: boolean
          description: Inidicates if the message topic should be appended to the webhook url when the request is made by the messaging service.

    WebhookIdList:
      description: Name and display name attribute of a webhook
      properties:
        data:
          type: array
          minItems: 0
          maxItems: 999
          items:
            "$ref": "#/components/schemas/WebhookIds"
        meta:
          "$ref": "#/components/schemas/meta"

    WebhookIds:
      description: Name and display name attribute of a webhook
      type: object
      required:
        - uri
      properties:
        uri:
          $ref: "#/components/schemas/CommonURL"
        name:
          type: string
          minLength: 3
          maxLength: 200
          pattern: ^.*$
    MessagingServiceProtocol:
      type: string
      enum:
        - smfc
        - smf
        - smfs
        - amqp
        - amqps
        - http
        - https
        - jms
        - mqttws
        - mqtt
        - secure-mqtt
        - secure-mqttws
        - smfws
        - smfwss
    MessagingServiceCredentials:
      type: object
      required:
        - name
        - credentials
      additionalProperties: false
      properties:
        name:
          type: string
          minLength: 2
          maxLength: 128
          description: The name of the credentials object.
          example: basic auth credentials
        credentials:
          type: object
          additionalProperties:
            type: object
            description: A JSON map containing the credentials information.
            example:
              username: User1
              password: secretPass
          description: A JSON map containing the credentials information.
          example:
            username: User1
            password: secretPass
    MessagingServiceAuthentication:
      type: object
      additionalProperties: false
      required:
        - name
        - authenticationType
        - authenticationDetails
        - messagingServiceCredentials
      properties:
        name:
          "$ref": "#/components/schemas/CommonName"
        authenticationType:
          type: string
          minLength: 2
          maxLength: 32
          description: The type of the authentication object.
          example: basicAuthentication
        authenticationDetails:
          type: object
          additionalProperties:
            type: object
            description: A JSON map containing a map of extra details for the authentication.
            example:
              broker owner: Solace PE team
          description: A JSON map containing a map of extra details for the authentication.
          example:
            broker owner: Solace PE team
        messagingServiceCredentials:
          type: array
          minItems: 1
          maxItems: 128
          items:
            "$ref": "#/components/schemas/MessagingServiceCredentials"
    MessagingServiceConnection:
      type: object
      additionalProperties: false
      required:
        - name
        - url
        - protocol
        - protocolVersion
      properties:
        name:
          "$ref": "#/components/schemas/CommonName"
        url:
          type: string
          minLength: 2
          maxLength: 1024
          description: The url of the connection object.
          example: https://abcd.messaging.solace.cloud:943
        protocol:
          "$ref": "#/components/schemas/MessagingServiceProtocol"
        protocolVersion:
          type: string
          minLength: 0
          maxLength: 16
          description: The protocolVersion of the connection object.
          example: "2.0"
        bindings:
          type: object
          additionalProperties:
            oneOf:
              - type: object
                description: "A JSON map containing a map of connection-specific values. "
                example:
                  msgVpn: myVPN
              - type: string
                description: "A JSON map containing a map of connection-specific values. "
                example: myVPN
            description: "A JSON map containing a map of connection-specific values. "
          example:
            msgVpn: myVPN
        messagingServiceAuthentications:
          type: array
          minItems: 0
          maxItems: 128
          items:
            "$ref": "#/components/schemas/MessagingServiceAuthentication"

    MessagingService:
      type: object
      required:
        - id
        - brokerType
        - name
        - messagingServiceConnections
        - environmentName
        - eventMeshName
      additionalProperties: false
      properties:
        id:
          "$ref": "#/components/schemas/CommonId"
        solaceCloudMessagingServiceId:
          "$ref": "#/components/schemas/CommonId"
        brokerType:
          "$ref": "#/components/schemas/BrokerType"
        name:
          "$ref": "#/components/schemas/CommonName"
        messagingServiceConnections:
          type: array
          minItems: 0
          maxItems: 128
          items:
            "$ref": "#/components/schemas/MessagingServiceConnection"
        environmentName:
          "$ref": "#/components/schemas/CommonNameReadOnly"
        eventMeshName:
          "$ref": "#/components/schemas/CommonNameReadOnly"
    GatewayResponse:
      type: object
      required:
        - data
      additionalProperties: false
      properties:
        data:
          "$ref": "#/components/schemas/MessagingService"
        meta:
          type: object
          additionalProperties:
            type: object
    GatewaysResponse:
      type: object
      required:
        - data
        - meta
      additionalProperties: false
      properties:
        data:
          type: array
          minItems: 0
          maxItems: 999
          items:
            "$ref": "#/components/schemas/MessagingService"
        meta:
          "$ref": "#/components/schemas/meta"
    ApplicationRegistrationResponse:
      type: object
      required:
        - data
      additionalProperties: false
      properties:
        data:
          "$ref": "#/components/schemas/ApplicationRegistrationView"
        meta:
          type: object
          additionalProperties:
            type: object
    ApplicationRegistrationsResponse:
      type: object
      required:
        - data
        - meta
      additionalProperties: false
      properties:
        data:
          type: array
          minItems: 0
          maxItems: 999
          items:
            "$ref": "#/components/schemas/ApplicationRegistrationView"
        meta:
          "$ref": "#/components/schemas/meta"
    EventApiProductResponse:
      type: object
      required:
        - data
      additionalProperties: false
      properties:
        data:
          "$ref": "#/components/schemas/EventApiProduct"
        meta:
          type: object
          additionalProperties:
            type: object
    EventApiProductsResponse:
      type: object
      required:
        - data
        - meta
      additionalProperties: false
      properties:
        data:
          type: array
          minItems: 0
          maxItems: 999
          items:
            "$ref": "#/components/schemas/EventApiProduct"
        meta:
          "$ref": "#/components/schemas/meta"
    EventApiProductHistoryResponse:
      type: object
      required:
        - data
        - meta
      additionalProperties: false
      properties:
        data:
          type: array
          minItems: 0
          maxItems: 999
          items:
            "$ref": "#/components/schemas/EventApiProductSummary"
        meta:
          "$ref": "#/components/schemas/meta"

    EventApisResponse:
      type: object
      required:
        - data
        - meta
      additionalProperties: false
      properties:
        data:
          type: array
          minItems: 0
          maxItems: 999
          items:
            "$ref": "#/components/schemas/EventApiVersion"
        meta:
          "$ref": "#/components/schemas/meta"
    CredentialsResponse:
      type: object
      required:
        - data
      additionalProperties: false
      properties:
        data:
          "$ref": "#/components/schemas/CredentialsView"
        meta:
          type: object
          additionalProperties:
            type: object
    CredentialsArrayResponse:
      type: object
      required:
        - data
        - meta
      additionalProperties: false
      properties:
        data:
          type: array
          minItems: 0
          maxItems: 1
          items:
            "$ref": "#/components/schemas/CredentialsView"
        meta:
          "$ref": "#/components/schemas/meta"
    WebhookResponse:
      type: object
      required:
        - data
      additionalProperties: false
      properties:
        data:
          "$ref": "#/components/schemas/Webhook"
        meta:
          type: object
          additionalProperties:
            type: object
    EventApiProductRegistrationResponse:
      type: object
      required:
        - data
      additionalProperties: false
      properties:
        data:
          "$ref": "#/components/schemas/EventApiProductRegistrationDetail"
        meta:
          type: object
          additionalProperties:
            type: object
    EventApiProductRegistrationsResponse:
      type: object
      required:
        - data
        - meta
      additionalProperties: false
      properties:
        data:
          type: array
          minItems: 0
          maxItems: 999
          items:
            $ref: "#/components/schemas/EventApiProductRegistrationDetail"
        meta:
          "$ref": "#/components/schemas/meta"
    AttributeUpdateRequest:
      type: object
      additionalProperties: false
      properties:
        value:
          $ref: "#/components/schemas/AttributeValue"

    AttributeResponse:
      type: object
      required:
        - data
      additionalProperties: false
      properties:
        data:
          "$ref": "#/components/schemas/Attribute"
        meta:
          type: object
          additionalProperties:
            type: object
    AttributesResponse:
      type: object
      required:
        - data
        - meta
      additionalProperties: false
      properties:
        data:
          type: array
          minItems: 0
          maxItems: 999
          items:
            "$ref": "#/components/schemas/Attribute"
        meta:
          "$ref": "#/components/schemas/meta"
    FilterUpdateRequest:
      type: object
      additionalProperties: false
      properties:
        values:
          $ref: "#/components/schemas/APIParameterFilterValues"
    FilterResponse:
      type: object
      required:
        - data
      additionalProperties: false
      properties:
        data:
          "$ref": "#/components/schemas/APIParameterFilter"
        meta:
          type: object
          additionalProperties:
            type: object
    FiltersResponse:
      type: object
      required:
        - data
        - meta
      additionalProperties: false
      properties:
        data:
          type: array
          minItems: 0
          maxItems: 999
          items:
            "$ref": "#/components/schemas/APIParameterFilter"
        meta:
          "$ref": "#/components/schemas/meta"
    PlanResponse:
      type: object
      required:
        - data
      additionalProperties: false
      properties:
        data:
          "$ref": "#/components/schemas/Plan"
        meta:
          type: object
          additionalProperties:
            type: object
    PlansResponse:
      type: object
      required:
        - data
        - meta
      additionalProperties: false
      properties:
        data:
          type: array
          minItems: 0
          maxItems: 999
          items:
            "$ref": "#/components/schemas/Plan"
        meta:
          "$ref": "#/components/schemas/meta"

    meta:
      type: object
      required:
        - pagination
      additionalProperties: false
      properties:
        pagination:
          "$ref": "#/components/schemas/Pagination"
    Attribute:
      type: object
      required:
        - name
        - value
      additionalProperties: false
      properties:
        name:
          pattern: "^[a-zA-Z0-9_\\-\\.]*$"
          minLength: 4
          maxLength: 128
          type: string
          example: color
        value:
          "$ref": "#/components/schemas/AttributeValue"
    AttributeValue:
      type: string
      description: "Valid Objects are Strings with characters"
      minLength: 0
      maxLength: 10000
      pattern: "^.*$"
      example: red
    Pagination:
      type: object
      required:
        - pageNumber
        - count
        - pageSize
        - nextPage
        - totalPages
      additionalProperties: false
      properties:
        pageNumber:
          description: the current page number, starting at 1
          type: integer
          format: int32
        count:
          description: the total count of documents available
          type: integer
          format: int32
        pageSize:
          description: the size of the page
          type: integer
          format: int32
        nextPage:
          description: the number of the next page or null if no next page is available
          type: integer
          format: int32
        totalPages:
          description: the total number of pages
          type: integer
          format: int32
    ErrorResponse:
      type: object
      required:
        - message
        - errorId
      additionalProperties: false
      properties:
        message:
          type: string
          example: An error occurred
          minLength: 4
          maxLength: 256
        errorId:
          type: string
          example: 123e4567-e89b-12d3-a456-426655440000
          minLength: 2
          maxLength: 64
        meta:
          type: object
          additionalProperties:
            type: object
            example: "'object': { 'field': 'description' }"
            additionalProperties: true
          example: "'object': { 'field': 'description' }"
        validationDetails:
          type: object
          additionalProperties:
            type: array
            minItems: 0
            maxItems: 1024
            example: "'name': ['Not unique']"
            items:
              type: string
              example: "'name': ['Not unique']"
              minLength: 4
              maxLength: 32768
          example: "'name': ['Not unique']"
    GuaranteedMessagingInformation:
      type: object
      additionalProperties: false
      required:
        - name
        - accessType
        - maxTtl
        - maxMsgSpoolUsage
      properties:
        name:
          type: string
          description: "The name of the queue that is available for this access request"
          example: "AlAOLG3xxuYCVDpoXl4wKGwWAIURFGuK"
          minLength: 2
          maxLength: 250
          pattern: ".*"
        eventApiId:
          type: string
          description: The id of the eventApi the resource is provided for, only present if the Event API Product plan's policy is set to queueType single
          example: A name
          pattern: "^.*$"
          minLength: 2
          maxLength: 128
        accessType:
          type: string
          description: access mode for the queue
          example: exclusive
          default: exclusive
          enum:
            - exclusive
            - non-exclusive
        maxTtl:
          type: integer
          format: int64
          maximum: 9007199254740991
          minimum: 0
          description: retention policy for message on the queue, in seconds
          default: 86400
          example: 3600
        maxMsgSpoolUsage:
          type: integer
          format: int64
          maximum: 9007199254740991
          minimum: 0
          description: The maximum message spool usage allowed by the Queue, in megabytes (MB). A value of 0 only allows spooling of the last message received and disables quota checking
          default: 500
          example: 50

    AppRegistrationMessagingService:
      type: object
      additionalProperties: false
      required:
        - name
        - messagingServiceConnections
        - permissions
      description: information about a gateway messaging service that is available to an application
      properties:
        name:
          $ref: "#/components/schemas/CommonName"
        displayName:
          $ref: "#/components/schemas/CommonDisplayName"
        messagingServiceConnections:
          type: array
          description: the protocols and con donnection information that are available to the app for gateway messaging service connections
          minItems: 0
          maxItems: 255
          items:
            $ref: "#/components/schemas/MessagingServiceConnection"
        permissions:
          $ref: "#/components/schemas/Permissions"

    Permissions:
      description: lists all the publish and subscribe topics an app has access to. Restrictions on   topic elements are taken into account.
      type: object
      additionalProperties: false
      required:
        - subscribe
        - publish
      properties:
        subscribe:
          type: array
          minItems: 0
          maxItems: 32768
          items:
            type: object
            additionalProperties:
              $ref: "#/components/schemas/ChannelPermission"
          example:
            - order/notifications/{country_id}/{order_id}:
                permissions:
                  - order/notifications/FR/>
                  - order/notifications/DE/>
                channelId: c1
                isChannel: true
            - another/random/exception/{resource_id}:
                permissions:
                  - another/random/exception/1
                  - another/random/exception/2
                isChannel: false
        publish:
          type: array
          minItems: 0
          maxItems: 32768
          items:
            type: object
            additionalProperties:
              $ref: "#/components/schemas/ChannelPermission"
          example:
            - order/create/{country_id}/{order_id}:
                permissions:
                  - order/create/FR/>
                  - order/create/DE/>
                channelId: c2
                isChannel: true
            - order/update/{country_id}/{order_id}:
                permissions:
                  - order/update/FR/>
                  - order/update/DE/>
                channelId: orderUpdateChannel
                isChannel: true
            - another/random/exception/{resource_id}:
                permissions:
                  - another/random/exception/3
                  - another/random/exception/4
                isChannel: false
    ChannelPermission:
      description: a permission and its associated channel
      type: object
      required:
        - permissions
      additionalProperties: false
      properties:
        permissions:
          type: array
          minItems: 0
          maxItems: 32768
          items:
            $ref: "#/components/schemas/CommonTopic"
          example:
            - order/notifications/FR/>
            - order/notifications/DE/>
        channelId:
          type: string
          minLength: 1
          maxLength: 2048
          pattern: "^[\\s\\S]*$"
        isChannel:
          type: boolean
          default: true
    APIParameter:
      type: object
      additionalProperties: false
      required:
        - name
        - dataType
        - parameterType
      properties:
        name:
          type: string
          description: name of the parameter
          example: model
          minLength: 2
          maxLength: 512
          pattern: ".*"
        dataType:
          type: string
          description: data type of the parameter
          enum:
            - string
        parameterType:
          type: string
          description: type of the parameter `enum` for enumerations, `unbounded` for free form values
          enum:
            - enum
            - unbounded
        values:
          type: array
          description: any allowed values for the parameter. For the parameter type `enum` the values included are based on the filters in the Event API Product in Event Portal. For `unbounded` values may not be defined if there is no corresponding filter in the Event API Product. Otherwise the array may contain one or multiple items
          minItems: 1
          maxItems: 32768
          items:
            $ref: "#/components/schemas/APIParameterFilterValue"
    ConfigState:
      additionalProperties: true
      properties:
        applied:
          type: boolean
        errors:
          type: array
          items:
            type: object
        configuration:
          type: array
          items:
            type: object
        entityReference:
          type: object
          properties:
            entityId:
              type: string
            entityType:
              type: string
            entityVersionId:
              type: string
    GatewayStatus:
      additionalProperties: false
      properties:
        connected:
          type: boolean
        message:
          type: string
    GatewaySecret:
      additionalProperties: false
      properties:
        secret:
          type: string
          minLength: 8
          maxLength: 64
    GatewaysAuthentication:
      type: object
      required:
        - sempV2Authentication
      additionalProperties: true
      properties:
        sempV2Authentication:
          $ref: "#/components/schemas/SempV2Authentication"
    SempV2Authentication:
      description: Specifies how requests to the SEMPv2 Management API are authenticated, defaults to BasicAuth. If APIKey is specified the SEMPv2 secret configured using this API orthe password retrieved from Solace Cloud Mission Control is used as API Key.
      type: object
      required:
        - authType
      additionalProperties: false
      properties:
        authType:
          type: string
          enum:
            - BasicAuth
            - APIKey
          default: BasicAuth
          example: APIKey
        apiKeyLocation:
          type: string
          enum:
            - header
            - query
          default: query
          example: header
        apiKeyName:
          type: string
          minLength: 4
          maxLength: 512
          pattern: "^[a-zA-Z0-9_-]*$"
          description: the name of the query parameter or HTTP header for submitting the API Key
          example: X-API-KEY

    CommonTopic:
      type: string
      minLength: 2
      maxLength: 250
      pattern: "^[a-zA-Z0-9][\\S]*[^\\/]$"
      example: deliver/*/enroute/v1/45*/-75*/vehicle4*/>
    CommonDisplayName:
      description: Friendly name of an object for display in UIs, Developer Portals. Can be changed after object creation
      example: "A new IoT API / v2.0"
      type: string
      minLength: 1
      maxLength: 256
      pattern: "^[\\/\\sa-z.A-z0-9_-]*$"

    CommonTimestampIntegerReadOnly:
      type: integer
      format: int64
      readOnly: true
      example: 1620311683577
      maximum: 9007199254740991
      minimum: -1

    CommonName:
      type: string
      example: A name
      pattern: "^.*$"
      minLength: 0
      maxLength: 128
    CommonNameReadOnly:
      type: string
      example: A name
      pattern: "^.*$"
      minLength: 0
      maxLength: 128
      readOnly: true
    CommonId:
      type: string
      description: id as automatically issued by APIs , alphanumeric characters only
      example: n8kg4fjka9r
      pattern: "^[a-zA-Z0-9]*$"
      minLength: 2
      maxLength: 64
    CommonExternalId:
      type: string
      description: Id attribute as supplied by the APi Client
      example: n8kg4fjka9r
      pattern: "^[a-zA-Z0-9_\\-]*(@[ |\\S]*)?$"
      minLength: 2
      maxLength: 64
    CommonUserName:
      type: string
      minLength: 1
      maxLength: 64
      pattern: "^[.a-zA-Z0-9@_-]*$"
      example: tom
    CommonURL:
      type: string
      minLength: 8
      maxLength: 2083
      example: "https://solace.cloud/api/v0/eventPortal/apiProducts/abc123/asyncApi.json"
      pattern: "^https?:\\/\\/[A-Za-z\\.:0-9\\-]*.*$"
    SemVer:
      type: string
      description: a version number in semver (Semantic Versioning) format
      example: 1.0.1
      pattern: "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$"

    String2MB:
      type: string
      minLength: 1
      maxLength: 2000000
      pattern: "^[\\s\\S]*$"
      example: |
        asyncapi: 2.0.0
          info:
            title: Hello world application
            version: '0.1.0'
          channels:
            hello:
              publish:
                message:
                  payload:
                    type: string
