openapi: 3.0.1
info:
  contact:
    email: architecture@wso2.com
    name: WSO2
    url: http://wso2.com/products/api-manager/
  description: |
    This document specifies a **RESTful API** for WSO2 **API Manager** - **Developer Portal**.
    Please see [full OpenAPI Specification](https://raw.githubusercontent.com/wso2/carbon-apimgt/v6.7.206/components/apimgt/org.wso2.carbon.apimgt.rest.api.store.v1/src/main/resources/devportal-api.yaml) of the API which is written using [OAS 3.0](http://swagger.io/) specification.

    # Authentication
    The Developer Portal REST API is protected using OAuth2 and access control is achieved through scopes. Before you start invoking
    the API, you need to obtain an access token with the required scopes. This guide will walk you through the steps
    that you will need to follow to obtain an access token.
    First you need to obtain the consumer key/secret key pair by calling the dynamic client registration (DCR) endpoint. You can add your preferred grant types
    in the payload. A Sample payload is shown below.
    ```
      {
      "callbackUrl":"www.google.lk",
      "clientName":"rest_api_devportal",
      "owner":"admin",
      "grantType":"client_credentials password refresh_token",
      "saasApp":true
      }
    ```
    Create a file (payload.json) with the above sample payload, and use the cURL shown below to invoke the DCR endpoint. Authorization header of this should contain the
    base64 encoded admin username and password.
    **Format of the request**
    ```
      curl -X POST -H "Authorization: Basic Base64(admin_username:admin_password)" -H "Content-Type: application/json"
      \ -d @payload.json https://<host>:<servlet_port>/client-registration/v0.17/register
    ```
    **Sample request**
    ```
      curl -X POST -H "Authorization: Basic YWRtaW46YWRtaW4=" -H "Content-Type: application/json"
      \ -d @payload.json https://localhost:9443/client-registration/v0.17/register
    ```
    Following is a sample response after invoking the above curl.
    ```
    {
    "clientId": "fOCi4vNJ59PpHucC2CAYfYuADdMa",
    "clientName": "rest_api_devportal",
    "callBackURL": "www.google.lk",
    "clientSecret": "a4FwHlq0iCIKVs2MPIIDnepZnYMa",
    "isSaasApplication": true,
    "appOwner": "admin",
    "jsonString": "{\"grant_types\":\"client_credentials password refresh_token\",\"redirect_uris\":\"www.google.lk\",\"client_name\":\"rest_api_devportal\"}",
    "jsonAppAttribute": "{}",
    "tokenType": null
    }
    ```
    Next you must use the above client id and secret to obtain the access token.
    We will be using the password grant type for this, you can use any grant type you desire.
    You also need to add the proper **scope** when getting the access token. All possible scopes for devportal REST API can be viewed in **OAuth2 Security** section
    of this document and scope for each resource is given in **authorization** section of resource documentation.
    Following is the format of the request if you are using the password grant type.
    ```
    curl -k -d "grant_type=password&username=<admin_username>&password=<admin_password>&scope=<scopes separated by space>"
    \ -H "Authorization: Basic base64(cliet_id:client_secret)"
    \ https://<host>:<servlet_port>/oauth2/token
    ```
    **Sample request**
    ```
    curl https://localhost:9443/oauth2/token -k \
    -H "Authorization: Basic Zk9DaTR2Tko1OVBwSHVjQzJDQVlmWXVBRGRNYTphNEZ3SGxxMGlDSUtWczJNUElJRG5lcFpuWU1h" \
    -d "grant_type=password&username=admin&password=admin&scope=apim:subscribe apim:api_key"
    ```
    Shown below is a sample response to the above request.
    ```
    {
    "access_token": "e79bda48-3406-3178-acce-f6e4dbdcbb12",
    "refresh_token": "a757795d-e69f-38b8-bd85-9aded677a97c",
    "scope": "apim:subscribe apim:api_key",
    "token_type": "Bearer",
    "expires_in": 3600
    }
    ```
    Now you have a valid access token, which you can use to invoke an API.
    Navigate through the API descriptions to find the required API, obtain an access token as described above and invoke the API with the authentication header.
    If you use a different authentication mechanism, this process may change.

    # Try out in Postman
    If you want to try-out the embedded postman collection with "Run in Postman" option, please follow the guidelines listed below.
    * All of the OAuth2 secured endpoints have been configured with an Authorization Bearer header with a parameterized access token. Before invoking any REST API resource make sure you run the `Register DCR Application` and `Generate Access Token` requests to fetch an access token with all required scopes.
    * Make sure you have an API Manager instance up and running.
    * Update the `basepath` parameter to match the hostname and port of the APIM instance.

    [![Run in Postman](https://run.pstmn.io/button.svg)](https://app.getpostman.com/run-collection/5bc0161b8aa7e701d7bf)
  license:
    name: Apache 2.0
    url: http://www.apache.org/licenses/LICENSE-2.0.html
  title: WSO2 API Manager - Developer Portal
  version: v3
servers:
- url: https://apis.wso2.com/api/am/devportal/v3
paths:
  /apis:
    get:
      description: |
        This operation provides you a list of available APIs qualifying under a given search condition.

        Each retrieved API is represented with a minimal amount of attributes. If you want to get complete details of an API, you need to use **Get details of an API** operation.

        This operation supports retrieving APIs of other tenants. The required tenant domain need to be specified as a header `X-WSO2-Tenant`. If not specified super tenant's APIs will be retrieved. If you used an Authorization header, the user's tenant associated with the access token will be used.

        **NOTE:**
        * By default, this operation retrieves Published APIs. In order to retrieve Prototyped APIs, you need to use **query** parameter and specify **status:PROTOTYPED**.
        * This operation does not require an Authorization header by default. But if it is provided, it will be validated and checked for permissions of the user, hence you may be able to see APIs which are restricted for special permissions/roles.
      parameters:
      - description: |
          Maximum size of resource array to return.
        explode: true
        in: query
        name: limit
        required: false
        schema:
          default: 25
          type: integer
        style: form
      - description: |
          Starting point within the complete list of items qualified.
        explode: true
        in: query
        name: offset
        required: false
        schema:
          default: 0
          type: integer
        style: form
      - description: |
          For cross-tenant invocations, this is used to specify the tenant domain, where the resource need to be
            retrieved from.
        explode: false
        in: header
        name: X-WSO2-Tenant
        required: false
        schema:
          type: string
        style: simple
      - description: |
          **Search condition**.

          You can search in attributes by using an **"<attribute>:"** modifier.

          Eg.
          "provider:wso2" will match an API if the provider of the API is exactly "wso2".

          Additionally you can use wildcards.

          Eg.
          "provider:wso2*" will match an API if the provider of the API starts with "wso2".

          Supported attribute modifiers are [**version, context, status,
          description, doc, provider, tag**]

          If no advanced attribute modifier has been specified, search will match the
          given query string against API Name.
        explode: true
        in: query
        name: query
        required: false
        schema:
          type: string
        style: form
      - description: |
          Validator for conditional requests; based on the ETag of the formerly retrieved
          variant of the resourec.
        explode: false
        in: header
        name: If-None-Match
        required: false
        schema:
          type: string
        style: simple
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/APIList'
          description: |
            OK.
            List of qualifying APIs is returned.
        "406":
          content:
            application/json:
              example:
                code: 406
                message: Not Acceptable
                description: The requested media type is not supported
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Acceptable. The requested media type is not supported.
      security:
      - OAuth2Security: []
      summary: |
        Retrieve/Search APIs
      tags:
      - APIs
      x-code-samples:
      - lang: Curl
        source: curl -k "https://localhost:9443/api/am/devportal/v3/apis"
      x-examples:
        $ref: docs/examples/apis/apis.yaml#/get
      x-accepts: application/json
  /apis/{apiId}:
    get:
      description: |
        Using this operation, you can retrieve complete details of a single API. You need to provide the Id of the API to retrive it.

        `X-WSO2-Tenant` header can be used to retrieve an API of a different tenant domain. If not specified super tenant will be used. If Authorization header is present in the request, the user's tenant associated with the access token will be used.

        **NOTE:**
        * This operation does not require an Authorization header by default. But if it is provided, it will be validated and checked for permissions of the user, hence you may be able to see APIs which are restricted for special permissions/roles. \n
      parameters:
      - description: |
          **API ID** consisting of the **UUID** of the API.
        explode: false
        in: path
        name: apiId
        required: true
        schema:
          type: string
        style: simple
      - description: |
          For cross-tenant invocations, this is used to specify the tenant domain, where the resource need to be
            retrieved from.
        explode: false
        in: header
        name: X-WSO2-Tenant
        required: false
        schema:
          type: string
        style: simple
      - description: |
          Validator for conditional requests; based on the ETag of the formerly retrieved
          variant of the resourec.
        explode: false
        in: header
        name: If-None-Match
        required: false
        schema:
          type: string
        style: simple
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/API'
          description: |
            OK.
            Requested API is returned
          headers:
            ETag:
              description: |
                Entity Tag of the response resource. Used by caches, or in conditional requests.
              explode: false
              schema:
                type: string
              style: simple
            Last-Modified:
              description: |
                Date and time the resource has been modified the last time.
                Used by caches, or in conditional requests.
              explode: false
              schema:
                type: string
              style: simple
        "304":
          content: {}
          description: |
            Not Modified.
            Empty body because the client has already the latest version of the requested resource.
        "404":
          content:
            application/json:
              example:
                code: 404
                message: Not Found
                description: The specified resource does not exist
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Found. The specified resource does not exist.
        "406":
          content:
            application/json:
              example:
                code: 406
                message: Not Acceptable
                description: The requested media type is not supported
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Acceptable. The requested media type is not supported.
      security:
      - OAuth2Security: []
      summary: |
        Get Details of an API
      tags:
      - APIs
      x-code-samples:
      - lang: Curl
        source: curl -k "https://localhost:9443/api/am/devportal/v3/apis/c43a325c-260b-4302-81cb-768eafaa3aed"
      x-accepts: application/json
  /apis/{apiId}/swagger:
    get:
      description: |
        You can use this operation to retrieve the swagger definition of an API.

         `X-WSO2-Tenant` header can be used to retrieve the swagger definition an API of a different tenant domain. If not specified super tenant will be used. If Authorization header is present in the request, the user's tenant associated with the access token will be used.

        **NOTE:**
        * This operation does not require an Authorization header by default. But in order to see a restricted API's swagger definition, you need to provide Authorization header.
      parameters:
      - description: |
          **API ID** consisting of the **UUID** of the API.
        explode: false
        in: path
        name: apiId
        required: true
        schema:
          type: string
        style: simple
      - description: |
          Name of the API gateway environment.
        explode: true
        in: query
        name: environmentName
        required: false
        schema:
          type: string
        style: form
      - description: |
          Validator for conditional requests; based on the ETag of the formerly retrieved
          variant of the resourec.
        explode: false
        in: header
        name: If-None-Match
        required: false
        schema:
          type: string
        style: simple
      - description: |
          For cross-tenant invocations, this is used to specify the tenant domain, where the resource need to be
            retrieved from.
        explode: false
        in: header
        name: X-WSO2-Tenant
        required: false
        schema:
          type: string
        style: simple
      responses:
        "200":
          content:
            application/json:
              schema:
                example: '{ "swagger" : "2.0", "info" : { "version" : "1.0", "title"
                  : "PhoneVerification" }, "host" : "localhost:8243", "basePath" :
                  "/phoneverify/1.0", "schemes" : [ "https", "http" ], "security"
                  : [ { "default" : [ ] } ], "paths" : { "/*" : { "post" : { "consumes"
                  : [ "text/xml", "application/soap+xml" ], "parameters" : [ { "in"
                  : "body", "name" : "SOAP Request", "description" : "SOAP request.",
                  "required" : true, "schema" : { "type" : "string" } }, { "name"
                  : "SOAPAction", "in" : "header", "description" : "SOAPAction header
                  for soap 1.1", "required" : false, "type" : "string" } ], "responses"
                  : { "200" : { "description" : "OK" } }, "security" : [ { "default"
                  : [ ] } ], "x-auth-type" : "Application & Application User", "x-throttling-tier"
                  : "Unlimited" } } }, "securityDefinitions" : { "default" : { "type"
                  : "oauth2", "authorizationUrl" : "https://localhost:8243/authorize",
                  "flow" : "implicit" } } }'
                type: string
          description: |
            OK.
            Requested swagger document of the API is returned
          headers:
            ETag:
              description: |
                Entity Tag of the response resource. Used by caches, or in conditional requests.
              explode: false
              schema:
                type: string
              style: simple
            Last-Modified:
              description: |
                Date and time the resource has been modifed the last time.
                Used by caches, or in conditional requests.
              explode: false
              schema:
                type: string
              style: simple
        "304":
          content: {}
          description: |
            Not Modified.
            Empty body because the client has already the latest version of the requested resource.
        "404":
          content:
            application/json:
              example:
                code: 404
                message: Not Found
                description: The specified resource does not exist
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Found. The specified resource does not exist.
        "406":
          content:
            application/json:
              example:
                code: 406
                message: Not Acceptable
                description: The requested media type is not supported
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Acceptable. The requested media type is not supported.
      security:
      - OAuth2Security: []
      summary: |
        Get Swagger Definition
      tags:
      - APIs
      x-code-samples:
      - lang: Curl
        source: curl -k "https://localhost:9443/api/am/devportal/v3/apis/c43a325c-260b-4302-81cb-768eafaa3aed/swagger"
      x-accepts: application/json
  /apis/{apiId}/graphql-schema:
    get:
      description: |
        You can use this operation to retrieve the swagger definition of an API.

         `X-WSO2-Tenant` header can be used to retrieve the swagger definition an API of a different tenant domain. If not specified super tenant will be used. If Authorization header is present in the request, the user's tenant associated with the access token will be used.

        **NOTE:**
        * This operation does not require an Authorization header by default. But in order to see a restricted API's swagger definition, you need to provide Authorization header.
      parameters:
      - description: |
          **API ID** consisting of the **UUID** of the API.
        explode: false
        in: path
        name: apiId
        required: true
        schema:
          type: string
        style: simple
      - description: |
          Validator for conditional requests; based on the ETag of the formerly retrieved
          variant of the resourec.
        explode: false
        in: header
        name: If-None-Match
        required: false
        schema:
          type: string
        style: simple
      - description: |
          For cross-tenant invocations, this is used to specify the tenant domain, where the resource need to be
            retrieved from.
        explode: false
        in: header
        name: X-WSO2-Tenant
        required: false
        schema:
          type: string
        style: simple
      responses:
        "200":
          content: {}
          description: |
            OK.
            Requested swagger document of the API is returned
          headers:
            ETag:
              description: |
                Entity Tag of the response resource. Used by caches, or in conditional requests.
              explode: false
              schema:
                type: string
              style: simple
            Last-Modified:
              description: |
                Date and time the resource has been modifed the last time.
                Used by caches, or in conditional requests.
              explode: false
              schema:
                type: string
              style: simple
        "304":
          content: {}
          description: |
            Not Modified.
            Empty body because the client has already the latest version of the requested resource.
        "404":
          content:
            application/json:
              example:
                code: 404
                message: Not Found
                description: The specified resource does not exist
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Found. The specified resource does not exist.
        "406":
          content:
            application/json:
              example:
                code: 406
                message: Not Acceptable
                description: The requested media type is not supported
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Acceptable. The requested media type is not supported.
      security:
      - OAuth2Security: []
      summary: |
        Get GraphQL Definition
      tags:
      - APIs
      x-code-samples:
      - lang: Curl
        source: curl -k "https://localhost:9443/api/am/devportal/v3/apis/c43a325c-260b-4302-81cb-768eafaa3aed/graphql-schema"
      x-accepts: application/json
  /apis/{apiId}/sdks/{language}:
    get:
      description: |
        This operation can be used to generate SDKs (System Development Kits), for the APIs available in the API Developer Portal, for a requested development language.
      parameters:
      - description: |
          **API ID** consisting of the **UUID** of the API.
        explode: false
        in: path
        name: apiId
        required: true
        schema:
          type: string
        style: simple
      - description: |
          Programming language of the SDK that is required.
        explode: false
        in: path
        name: language
        required: true
        schema:
          type: string
        style: simple
      - description: |
          For cross-tenant invocations, this is used to specify the tenant domain, where the resource need to be
            retrieved from.
        explode: false
        in: header
        name: X-WSO2-Tenant
        required: false
        schema:
          type: string
        style: simple
      responses:
        "200":
          content:
            application/zip:
              schema:
                format: byte
                type: string
          description: |
            OK.
            SDK generated successfully.
        "400":
          content:
            application/json:
              example:
                code: 400
                message: Bad Request
                description: Invalid request or validation error
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Bad Request. Invalid request or validation error.
        "404":
          content:
            application/json:
              example:
                code: 404
                message: Not Found
                description: The specified resource does not exist
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Found. The specified resource does not exist.
        "500":
          content:
            application/json:
              example:
                code: 500
                message: Internal Server Error
                description: The server encountered an internal error. Please contact
                  administrator.
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Internal Server Error.
      security:
      - OAuth2Security:
        - apim:subscribe
      summary: |
        Generate a SDK for an API
      tags:
      - SDKs
      x-code-samples:
      - lang: Curl
        source: curl -k -H "Authorization:Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8"
          "https://localhost:9443/api/am/devportal/v3/apis/890a4f4d-09eb-4877-a323-57f6ce2ed79b/sdks/java"
          > Swagger Petstore_java_1.0.0.zip
      x-accepts: application/json
  /apis/{apiId}/wsdl:
    get:
      description: |
        This operation can be used to retrieve the swagger definition of an API.
      operationId: getWSDLOfAPI
      parameters:
      - description: |
          **API ID** consisting of the **UUID** of the API.
        explode: false
        in: path
        name: apiId
        required: true
        schema:
          type: string
        style: simple
      - description: |
          Name of the API gateway environment.
        explode: true
        in: query
        name: environmentName
        required: false
        schema:
          type: string
        style: form
      - description: |
          Validator for conditional requests; based on the ETag of the formerly retrieved
          variant of the resourec.
        explode: false
        in: header
        name: If-None-Match
        required: false
        schema:
          type: string
        style: simple
      - description: |
          For cross-tenant invocations, this is used to specify the tenant domain, where the resource need to be
            retrieved from.
        explode: false
        in: header
        name: X-WSO2-Tenant
        required: false
        schema:
          type: string
        style: simple
      responses:
        "200":
          content: {}
          description: |
            OK.
            Requested WSDL document of the API is returned
          headers:
            ETag:
              description: |
                Entity Tag of the response resource. Used by caches, or in conditional requests (Will be supported in future).
              explode: false
              schema:
                type: string
              style: simple
            Last-Modified:
              description: |
                Date and time the resource has been modifed the last time.
                Used by caches, or in conditional requests (Will be supported in future).
              explode: false
              schema:
                type: string
              style: simple
        "304":
          content: {}
          description: |
            Not Modified.
            Empty body because the client has already the latest version of the requested resource (Will be supported in future).
        "404":
          content:
            application/json:
              example:
                code: 404
                message: Not Found
                description: The specified resource does not exist
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Found. The specified resource does not exist.
        "406":
          content:
            application/json:
              example:
                code: 406
                message: Not Acceptable
                description: The requested media type is not supported
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Acceptable. The requested media type is not supported.
      security:
      - OAuth2Security: []
      summary: Get API WSDL definition
      tags:
      - APIs
      x-code-samples:
      - lang: Curl
        source: curl -k "https://localhost:9443/api/am/devportal/v3/apis/c43a325c-260b-4302-81cb-768eafaa3aed/wsdl"
      x-examples:
        $ref: docs/examples/apis/wsdl/apiId_wsdl_get.yaml
      x-accepts: application/json
  /apis/{apiId}/documents:
    get:
      description: |
        This operation can be used to retrive a list of documents belonging to an API by providing the id of the API.

        `X-WSO2-Tenant` header can be used to retrive documents of an API that belongs to a different tenant domain. If not specified super tenant will be used. If Authorization header is present in the request, the user's tenant associated with the access token will be used.

        **NOTE:**
        * This operation does not require an Authorization header by default. But in order to see a restricted API's documents, you need to provide Authorization header.
      parameters:
      - description: |
          **API ID** consisting of the **UUID** of the API.
        explode: false
        in: path
        name: apiId
        required: true
        schema:
          type: string
        style: simple
      - description: |
          Maximum size of resource array to return.
        explode: true
        in: query
        name: limit
        required: false
        schema:
          default: 25
          type: integer
        style: form
      - description: |
          Starting point within the complete list of items qualified.
        explode: true
        in: query
        name: offset
        required: false
        schema:
          default: 0
          type: integer
        style: form
      - description: |
          For cross-tenant invocations, this is used to specify the tenant domain, where the resource need to be
            retrieved from.
        explode: false
        in: header
        name: X-WSO2-Tenant
        required: false
        schema:
          type: string
        style: simple
      - description: |
          Validator for conditional requests; based on the ETag of the formerly retrieved
          variant of the resourec.
        explode: false
        in: header
        name: If-None-Match
        required: false
        schema:
          type: string
        style: simple
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DocumentList'
          description: |
            OK.
            Document list is returned.
          headers:
            ETag:
              description: |
                Entity Tag of the response resource. Used by caches, or in conditional requests.
              explode: false
              schema:
                type: string
              style: simple
        "304":
          content: {}
          description: |
            Not Modified.
            Empty body because the client has already the latest version of the requested resource.
        "404":
          content:
            application/json:
              example:
                code: 404
                message: Not Found
                description: The specified resource does not exist
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Found. The specified resource does not exist.
        "406":
          content:
            application/json:
              example:
                code: 406
                message: Not Acceptable
                description: The requested media type is not supported
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Acceptable. The requested media type is not supported.
      security:
      - OAuth2Security: []
      summary: |
        Get a List of Documents of an API
      tags:
      - API Documents
      x-code-samples:
      - lang: Curl
        source: curl -k "https://localhost:9443/api/am/devportal/v3/apis/c43a325c-260b-4302-81cb-768eafaa3aed/documents"
      x-accepts: application/json
  /apis/{apiId}/documents/{documentId}:
    get:
      description: |
        This operation can be used to retrieve a particular document's metadata associated with an API.

        `X-WSO2-Tenant` header can be used to retrive a document of an API that belongs to a different tenant domain. If not specified super tenant will be used. If Authorization header is present in the request, the user's tenant associated with the access token will be used.

        **NOTE:**
        * This operation does not require an Authorization header by default. But in order to see a restricted API's document, you need to provide Authorization header.
      parameters:
      - description: |
          **API ID** consisting of the **UUID** of the API.
        explode: false
        in: path
        name: apiId
        required: true
        schema:
          type: string
        style: simple
      - description: |
          Document Identifier
        explode: false
        in: path
        name: documentId
        required: true
        schema:
          type: string
        style: simple
      - description: |
          For cross-tenant invocations, this is used to specify the tenant domain, where the resource need to be
            retrieved from.
        explode: false
        in: header
        name: X-WSO2-Tenant
        required: false
        schema:
          type: string
        style: simple
      - description: |
          Validator for conditional requests; based on the ETag of the formerly retrieved
          variant of the resourec.
        explode: false
        in: header
        name: If-None-Match
        required: false
        schema:
          type: string
        style: simple
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Document'
          description: |
            OK.
            Document returned.
          headers:
            ETag:
              description: |
                Entity Tag of the response resource.
                Used by caches, or in conditional requests.
              explode: false
              schema:
                type: string
              style: simple
        "304":
          content: {}
          description: |
            Not Modified.
            Empty body because the client has already the latest version of the requested resource.
        "404":
          content:
            application/json:
              example:
                code: 404
                message: Not Found
                description: The specified resource does not exist
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Found. The specified resource does not exist.
        "406":
          content:
            application/json:
              example:
                code: 406
                message: Not Acceptable
                description: The requested media type is not supported
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Acceptable. The requested media type is not supported.
      security:
      - OAuth2Security: []
      summary: |
        Get a Document of an API
      tags:
      - API Documents
      x-code-samples:
      - lang: Curl
        source: curl -k "https://localhost:9443/api/am/devportal/v3/apis/c43a325c-260b-4302-81cb-768eafaa3aed/documents/850a4f34-db2c-4d23-9d85-3f95fbfb082c"
      x-accepts: application/json
  /apis/{apiId}/documents/{documentId}/content:
    get:
      description: |
        This operation can be used to retrive the content of an API's document.

        The document can be of 3 types. In each cases responses are different.

        1. **Inline type**:
           The content of the document will be retrieved in `text/plain` content type
        2. **FILE type**:
           The file will be downloaded with the related content type (eg. `application/pdf`)
        3. **URL type**:
            The client will recieve the URL of the document as the Location header with the response with - `303 See Other`

        `X-WSO2-Tenant` header can be used to retrive the content of a document of an API that belongs to a different tenant domain. If not specified super tenant will be used. If Authorization header is present in the request, the user's tenant associated with the access token will be used.

        **NOTE:**
        * This operation does not require an Authorization header by default. But in order to see a restricted API's document content, you need to provide Authorization header.
      parameters:
      - description: |
          **API ID** consisting of the **UUID** of the API.
        explode: false
        in: path
        name: apiId
        required: true
        schema:
          type: string
        style: simple
      - description: |
          Document Identifier
        explode: false
        in: path
        name: documentId
        required: true
        schema:
          type: string
        style: simple
      - description: |
          For cross-tenant invocations, this is used to specify the tenant domain, where the resource need to be
            retrieved from.
        explode: false
        in: header
        name: X-WSO2-Tenant
        required: false
        schema:
          type: string
        style: simple
      - description: |
          Validator for conditional requests; based on the ETag of the formerly retrieved
          variant of the resourec.
        explode: false
        in: header
        name: If-None-Match
        required: false
        schema:
          type: string
        style: simple
      responses:
        "200":
          content: {}
          description: |
            OK.
            File or inline content returned.
          headers:
            ETag:
              description: |
                Entity Tag of the response resource.
                Used by caches, or in conditional requests.
              explode: false
              schema:
                type: string
              style: simple
            Last-Modified:
              description: |
                Date and time the resource has been modifed the last time.
                Used by caches, or in conditional requests.
              explode: false
              schema:
                type: string
              style: simple
        "303":
          content: {}
          description: |
            See Other.
            Source can be retrived from the URL specified at the Location header.
          headers:
            Location:
              description: |
                The Source URL of the document.
              explode: false
              schema:
                type: string
              style: simple
        "304":
          content: {}
          description: |
            Not Modified.
            Empty body because the client has already the latest version of the requested resource.
        "404":
          content:
            application/json:
              example:
                code: 404
                message: Not Found
                description: The specified resource does not exist
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Found. The specified resource does not exist.
        "406":
          content:
            application/json:
              example:
                code: 406
                message: Not Acceptable
                description: The requested media type is not supported
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Acceptable. The requested media type is not supported.
      security:
      - OAuth2Security: []
      summary: |
        Get the Content of an API Document
      tags:
      - API Documents
      x-code-samples:
      - lang: Curl
        source: curl -k "https://localhost:9443/api/am/devportal/v3/apis/890a4f4d-09eb-4877-a323-57f6ce2ed79b/documents/0bcb7f05-599d-4e1a-adce-5cb89bfe58d5/content"
      x-accepts: application/json
  /apis/{apiId}/thumbnail:
    get:
      description: |
        This operation can be used to download a thumbnail image of an API.

        `X-WSO2-Tenant` header can be used to retrive a thumbnail of an API that belongs to a different tenant domain. If not specified super tenant will be used. If Authorization header is present in the request, the user's tenant associated with the access token will be used.

        **NOTE:**
        * This operation does not require an Authorization header by default. But in order to see a restricted API's thumbnail, you need to provide Authorization header.
      parameters:
      - description: |
          **API ID** consisting of the **UUID** of the API.
        explode: false
        in: path
        name: apiId
        required: true
        schema:
          type: string
        style: simple
      - description: |
          For cross-tenant invocations, this is used to specify the tenant domain, where the resource need to be
            retrieved from.
        explode: false
        in: header
        name: X-WSO2-Tenant
        required: false
        schema:
          type: string
        style: simple
      - description: |
          Validator for conditional requests; based on the ETag of the formerly retrieved
          variant of the resourec.
        explode: false
        in: header
        name: If-None-Match
        required: false
        schema:
          type: string
        style: simple
      responses:
        "200":
          content: {}
          description: |
            OK.
            Thumbnail image returned
          headers:
            ETag:
              description: |
                Entity Tag of the response resource.
                Used by caches, or in conditional requests.
              explode: false
              schema:
                type: string
              style: simple
            Last-Modified:
              description: |
                Date and time the resource has been modifed the last time.
                Used by caches, or in conditional requests (Will be supported in future).
              explode: false
              schema:
                type: string
              style: simple
            Content-Type:
              description: |
                The content type of the body.
              explode: false
              schema:
                type: string
              style: simple
        "304":
          content: {}
          description: |
            Not Modified.
            Empty body because the client has already the latest version of the requested resource.
        "404":
          content:
            application/json:
              example:
                code: 404
                message: Not Found
                description: The specified resource does not exist
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Found. The specified resource does not exist.
        "406":
          content:
            application/json:
              example:
                code: 406
                message: Not Acceptable
                description: The requested media type is not supported
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Acceptable. The requested media type is not supported.
      security:
      - OAuth2Security: []
      summary: Get Thumbnail Image
      tags:
      - APIs
      x-code-samples:
      - lang: Curl
        source: curl -k "https://localhost:9443/api/am/devportal/v3/apis/e93fb282-b456-48fc-8981-003fb89086ae/thumbnail"
      x-accepts: application/json
  /apis/{apiId}/ratings:
    get:
      description: |
        This operation can be used to retrieve the list of ratings of an API.

        `X-WSO2-Tenant` header can be used to retrieve ratings of an API that belongs to a different tenant domain. If not specified super tenant will be used. If Authorization header is present in the request, the user's tenant associated with the access token will be used.
      parameters:
      - description: |
          **API ID** consisting of the **UUID** of the API.
        explode: false
        in: path
        name: apiId
        required: true
        schema:
          type: string
        style: simple
      - description: |
          Maximum size of resource array to return.
        explode: true
        in: query
        name: limit
        required: false
        schema:
          default: 25
          type: integer
        style: form
      - description: |
          Starting point within the complete list of items qualified.
        explode: true
        in: query
        name: offset
        required: false
        schema:
          default: 0
          type: integer
        style: form
      - description: |
          For cross-tenant invocations, this is used to specify the tenant domain, where the resource need to be
            retrieved from.
        explode: false
        in: header
        name: X-WSO2-Tenant
        required: false
        schema:
          type: string
        style: simple
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RatingList'
          description: |
            OK.
            Rating list returned.
        "406":
          content:
            application/json:
              example:
                code: 406
                message: Not Acceptable
                description: The requested media type is not supported
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Acceptable. The requested media type is not supported.
      security:
      - OAuth2Security: []
      summary: Retrieve API Ratings
      tags:
      - Ratings
      x-code-samples:
      - lang: Curl
        source: curl -k "https://localhost:9443/api/am/devportal/v3/apis/e93fb282-b456-48fc-8981-003fb89086ae/ratings"
      x-examples:
        $ref: docs/examples/apis/apis_id_ratings_get.yaml
      x-accepts: application/json
  /apis/{apiId}/user-rating:
    delete:
      description: |
        This operation can be used to delete logged in user API rating.

        `X-WSO2-Tenant` header can be used to delete the logged in user rating of an API that belongs to a different tenant domain. If not specified super tenant will be used. If Authorization header is present in the request, the user's tenant associated with the access token will be used.
      parameters:
      - description: |
          **API ID** consisting of the **UUID** of the API.
        explode: false
        in: path
        name: apiId
        required: true
        schema:
          type: string
        style: simple
      - description: |
          For cross-tenant invocations, this is used to specify the tenant domain, where the resource need to be
            retrieved from.
        explode: false
        in: header
        name: X-WSO2-Tenant
        required: false
        schema:
          type: string
        style: simple
      - description: |
          Validator for conditional requests; based on ETag.
        explode: false
        in: header
        name: If-Match
        required: false
        schema:
          type: string
        style: simple
      responses:
        "200":
          content: {}
          description: |
            OK.
            Resource successfully deleted.
      security:
      - OAuth2Security:
        - apim:subscribe
      summary: Delete User API Rating
      tags:
      - Ratings
      x-code-samples:
      - lang: Curl
        source: curl -k -X DELETE -H "Authorization:Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8"
          "https://localhost:9443/api/am/devportal/v3/apis/e93fb282-b456-48fc-8981-003fb89086ae/user-rating"
      x-examples:
        $ref: docs/examples/apis/apis_id_user-rating.yaml#/delete
      x-accepts: application/json
    get:
      description: |
        This operation can be used to get the user rating of an API.

        `X-WSO2-Tenant` header can be used to retrieve the logged in user rating of an API that belongs to a different tenant domain. If not specified super tenant will be used. If Authorization header is present in the request, the user's tenant associated with the access token will be used.
      parameters:
      - description: |
          **API ID** consisting of the **UUID** of the API.
        explode: false
        in: path
        name: apiId
        required: true
        schema:
          type: string
        style: simple
      - description: |
          For cross-tenant invocations, this is used to specify the tenant domain, where the resource need to be
            retrieved from.
        explode: false
        in: header
        name: X-WSO2-Tenant
        required: false
        schema:
          type: string
        style: simple
      - description: |
          Validator for conditional requests; based on the ETag of the formerly retrieved
          variant of the resourec.
        explode: false
        in: header
        name: If-None-Match
        required: false
        schema:
          type: string
        style: simple
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Rating'
          description: |
            OK.
            Rating returned.
          headers:
            ETag:
              description: |
                Entity Tag of the response resource.
                Used by caches, or in conditional requests.
              explode: false
              schema:
                type: string
              style: simple
            Last-Modified:
              description: |
                Date and time the resource has been modified the last time.
                Used by caches, or in conditional requests.
              explode: false
              schema:
                type: string
              style: simple
        "304":
          content: {}
          description: |
            Not Modified.
            Empty body because the client already has the latest version of the requested resource.
        "404":
          content:
            application/json:
              example:
                code: 404
                message: Not Found
                description: The specified resource does not exist
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Found. The specified resource does not exist.
        "406":
          content:
            application/json:
              example:
                code: 406
                message: Not Acceptable
                description: The requested media type is not supported
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Acceptable. The requested media type is not supported.
      security:
      - OAuth2Security:
        - apim:subscribe
      summary: Retrieve API Rating of User
      tags:
      - Ratings
      x-code-samples:
      - lang: Curl
        source: curl -k -H "Authorization:Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8"
          "https://localhost:9443/api/am/devportal/v3/apis/e93fb282-b456-48fc-8981-003fb89086ae/user-rating"
      x-examples:
        $ref: docs/examples/apis/apis_id_user-rating.yaml#/get
      x-accepts: application/json
    put:
      description: |
        This operation can be used to add or update an API rating.

        `X-WSO2-Tenant` header can be used to add or update the logged in user rating of an API that belongs to a different tenant domain. If not specified super tenant will be used. If Authorization header is present in the request, the user's tenant associated with the access token will be used.
      parameters:
      - description: |
          **API ID** consisting of the **UUID** of the API.
        explode: false
        in: path
        name: apiId
        required: true
        schema:
          type: string
        style: simple
      - description: |
          For cross-tenant invocations, this is used to specify the tenant domain, where the resource need to be
            retrieved from.
        explode: false
        in: header
        name: X-WSO2-Tenant
        required: false
        schema:
          type: string
        style: simple
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Rating'
        description: |
          Rating object that should to be added
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Rating'
          description: |
            OK.
            Successful response with the newly created or updated object as entity in the body.
          headers:
            ETag:
              description: |
                Entity Tag of the response resource. Used by caches, or in conditional request.
              explode: false
              schema:
                type: string
              style: simple
        "400":
          content:
            application/json:
              example:
                code: 400
                message: Bad Request
                description: Invalid request or validation error
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Bad Request. Invalid request or validation error.
        "415":
          content:
            application/json:
              example:
                code: 415
                message: Unsupported media type
                description: The entity of the request was not in a supported format
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Unsupported Media Type. The entity of the request was not in
            a supported format.
      security:
      - OAuth2Security:
        - apim:subscribe
      summary: Add or Update Logged in User's Rating for an API
      tags:
      - Ratings
      x-code-samples:
      - lang: Curl
        source: 'curl -k -X PUT -H "Authorization:Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8"
          -H "Content-Type: application/json" -d @data.json "https://localhost:9443/api/am/devportal/v3/apis/e93fb282-b456-48fc-8981-003fb89086ae/user-rating"'
      x-examples:
        $ref: docs/examples/apis/apis_id_user-rating.yaml#/put
      x-contentType: application/json
      x-accepts: application/json
  /apis/{apiId}/comments:
    get:
      description: |
        Get a list of Comments that are already added to APIs
      operationId: getAllCommentsOfAPI
      parameters:
      - description: |
          **API ID** consisting of the **UUID** of the API.
        explode: false
        in: path
        name: apiId
        required: true
        schema:
          type: string
        style: simple
      - description: |
          For cross-tenant invocations, this is used to specify the tenant domain, where the resource need to be
            retrieved from.
        explode: false
        in: header
        name: X-WSO2-Tenant
        required: false
        schema:
          type: string
        style: simple
      - description: |
          Maximum size of resource array to return.
        explode: true
        in: query
        name: limit
        required: false
        schema:
          default: 25
          type: integer
        style: form
      - description: |
          Starting point within the complete list of items qualified.
        explode: true
        in: query
        name: offset
        required: false
        schema:
          default: 0
          type: integer
        style: form
      - description: |
          Whether we need to display commentor details.
        explode: true
        in: query
        name: includeCommenterInfo
        required: false
        schema:
          default: false
          type: boolean
        style: form
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CommentList'
          description: |
            OK.
            Comments list is returned.
        "404":
          content:
            application/json:
              example:
                code: 404
                message: Not Found
                description: The specified resource does not exist
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Found. The specified resource does not exist.
        "500":
          content:
            application/json:
              example:
                code: 500
                message: Internal Server Error
                description: The server encountered an internal error. Please contact
                  administrator.
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Internal Server Error.
      security:
      - OAuth2Security: []
      summary: Retrieve API Comments
      tags:
      - Comments
      x-code-samples:
      - lang: Curl
        source: curl -k "https://localhost:9443/api/am/devportal/v3/apis/e93fb282-b456-48fc-8981-003fb89086ae/comments"
      x-examples:
        $ref: docs/examples/apis/comments.yaml#/get
      x-accepts: application/json
    post:
      operationId: addCommentToAPI
      parameters:
      - description: |
          **API ID** consisting of the **UUID** of the API.
        explode: false
        in: path
        name: apiId
        required: true
        schema:
          type: string
        style: simple
      - description: |
          ID of the perent comment.
        explode: true
        in: query
        name: replyTo
        required: false
        schema:
          type: string
        style: form
      requestBody:
        $ref: '#/components/requestBodies/Post_request_body'
        content:
          application/json:
            schema:
              properties:
                content:
                  description: |
                    Content of the comment
                  example: This is a comment
                  maxLength: 512
                  type: string
                category:
                  description: |
                    Category of the comment
                  example: general
                  type: string
              required:
              - content
              title: Post request body
              type: object
        description: |
          Comment object that should to be added
        required: true
      responses:
        "201":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Comment'
          description: |
            Created.
            Successful response with the newly created object as entity in the body.
            Location header contains URL of newly created entity.
          headers:
            ETag:
              description: |
                Entity Tag of the response resource. Used by caches, or in conditional request.
              explode: false
              schema:
                type: string
              style: simple
            Location:
              description: |
                Location to the newly created Comment.
              explode: false
              schema:
                type: string
              style: simple
        "400":
          content:
            application/json:
              example:
                code: 400
                message: Bad Request
                description: Invalid request or validation error
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Bad Request. Invalid request or validation error.
        "401":
          content:
            application/json:
              example:
                code: 401
                message: Unauthorized
                description: The user is not authorized
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Unauthorized. The user is not authorized.
        "404":
          content:
            application/json:
              example:
                code: 404
                message: Not Found
                description: The specified resource does not exist
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Found. The specified resource does not exist.
        "415":
          content:
            application/json:
              example:
                code: 415
                message: Unsupported media type
                description: The entity of the request was not in a supported format
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Unsupported Media Type. The entity of the request was not in
            a supported format.
        "500":
          content:
            application/json:
              example:
                code: 500
                message: Internal Server Error
                description: The server encountered an internal error. Please contact
                  administrator.
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Internal Server Error.
      security:
      - OAuth2Security:
        - apim:subscribe
      summary: Add an API Comment
      tags:
      - Comments
      x-code-samples:
      - lang: Curl
        source: 'curl -k -X POST -H "Authorization:Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8"
          -H "Content-Type: application/json" -d @data.json "https://localhost:9443/api/am/devportal/v3/apis/e93fb282-b456-48fc-8981-003fb89086ae/comments"'
      x-examples:
        $ref: docs/examples/apis/comments.yaml#/post
      x-contentType: application/json
      x-accepts: application/json
  /apis/{apiId}/comments/{commentId}:
    delete:
      description: |
        Remove a Comment
      operationId: deleteComment
      parameters:
      - description: |
          Comment Id
        explode: false
        in: path
        name: commentId
        required: true
        schema:
          type: string
        style: simple
      - description: |
          **API ID** consisting of the **UUID** of the API.
        explode: false
        in: path
        name: apiId
        required: true
        schema:
          type: string
        style: simple
      - description: |
          Validator for conditional requests; based on ETag.
        explode: false
        in: header
        name: If-Match
        required: false
        schema:
          type: string
        style: simple
      responses:
        "200":
          content: {}
          description: |
            OK.
            Resource successfully deleted.
        "401":
          content:
            application/json:
              example:
                code: 401
                message: Unauthorized
                description: The user is not authorized
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Unauthorized. The user is not authorized.
        "403":
          content: {}
          description: |
            Forbidden.
            The request must be conditional but no condition has been specified.
        "404":
          content:
            application/json:
              example:
                code: 404
                message: Not Found
                description: The specified resource does not exist
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Found. The specified resource does not exist.
        "405":
          content: {}
          description: |
            MethodNotAllowed.
            Request method is known by the server but is not supported by the target resource.
        "500":
          content:
            application/json:
              example:
                code: 500
                message: Internal Server Error
                description: The server encountered an internal error. Please contact
                  administrator.
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Internal Server Error.
      security:
      - OAuth2Security:
        - apim:subscribe
        - apim:admin
      summary: Delete an API Comment
      tags:
      - Comments
      x-code-samples:
      - lang: Curl
        source: curl -k -X DELETE -H "Authorization:Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8"
          "https://localhost:9443/api/am/devportal/v2/apis/e93fb282-b456-48fc-8981-003fb89086ae/comments/d4cf1704-5d09-491c-bc48-4d19ce6ea9b4"
      x-examples:
        $ref: docs/examples/apis/comment_id-comments.yaml#/delete
      x-accepts: application/json
    get:
      description: |
        Get the individual comment given by a username for a certain API.
      operationId: getCommentOfAPI
      parameters:
      - description: |
          Comment Id
        explode: false
        in: path
        name: commentId
        required: true
        schema:
          type: string
        style: simple
      - description: |
          **API ID** consisting of the **UUID** of the API.
        explode: false
        in: path
        name: apiId
        required: true
        schema:
          type: string
        style: simple
      - description: |
          For cross-tenant invocations, this is used to specify the tenant domain, where the resource need to be
            retrieved from.
        explode: false
        in: header
        name: X-WSO2-Tenant
        required: false
        schema:
          type: string
        style: simple
      - description: |
          Validator for conditional requests; based on the ETag of the formerly retrieved
          variant of the resourec.
        explode: false
        in: header
        name: If-None-Match
        required: false
        schema:
          type: string
        style: simple
      - description: |
          Whether we need to display commentor details.
        explode: true
        in: query
        name: includeCommenterInfo
        required: false
        schema:
          default: false
          type: boolean
        style: form
      - description: |
          Maximum size of replies array to return.
        explode: true
        in: query
        name: replyLimit
        required: false
        schema:
          default: 25
          type: integer
        style: form
      - description: |
          Starting point within the complete list of replies.
        explode: true
        in: query
        name: replyOffset
        required: false
        schema:
          default: 0
          type: integer
        style: form
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Comment'
          description: |
            OK.
            Comment returned.
          headers:
            ETag:
              description: |
                Entity Tag of the response resource.
                Used by caches, or in conditional requests.
              explode: false
              schema:
                type: string
              style: simple
            Last-Modified:
              description: |
                Date and time the resource has been modifed the last time.
                Used by caches, or in conditional requests.
              explode: false
              schema:
                type: string
              style: simple
        "401":
          content:
            application/json:
              example:
                code: 401
                message: Unauthorized
                description: The user is not authorized
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Unauthorized. The user is not authorized.
        "404":
          content:
            application/json:
              example:
                code: 404
                message: Not Found
                description: The specified resource does not exist
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Found. The specified resource does not exist.
        "406":
          content:
            application/json:
              example:
                code: 406
                message: Not Acceptable
                description: The requested media type is not supported
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Acceptable. The requested media type is not supported.
        "500":
          content:
            application/json:
              example:
                code: 500
                message: Internal Server Error
                description: The server encountered an internal error. Please contact
                  administrator.
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Internal Server Error.
      security:
      - OAuth2Security: []
      summary: Get Details of an API Comment
      tags:
      - Comments
      x-code-samples:
      - lang: Curl
        source: curl -k "https://localhost:9443/api/am/devportal/v3/apis/e93fb282-b456-48fc-8981-003fb89086ae/comments/d4cf1704-5d09-491c-bc48-4d19ce6ea9b4"
      x-examples:
        $ref: docs/examples/apis/comment_id-comments.yaml#/get
      x-accepts: application/json
    patch:
      description: |
        Edit the individual comment
      operationId: editCommentOfAPI
      parameters:
      - description: |
          Comment Id
        explode: false
        in: path
        name: commentId
        required: true
        schema:
          type: string
        style: simple
      - description: |
          **API ID** consisting of the **UUID** of the API.
        explode: false
        in: path
        name: apiId
        required: true
        schema:
          type: string
        style: simple
      requestBody:
        $ref: '#/components/requestBodies/Patch_request_body'
        content:
          application/json:
            schema:
              properties:
                content:
                  description: |
                    Content of the comment
                  example: This is a comment
                  maxLength: 512
                  type: string
                category:
                  description: |
                    Category of the comment
                  example: general
                  type: string
              title: Patch request body
              type: object
        description: |
          Comment object that should to be updated
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Comment'
          description: |
            OK.
            Comment updated.
          headers:
            ETag:
              description: |
                Entity Tag of the response resource. Used by caches, or in conditional request.
              explode: false
              schema:
                type: string
              style: simple
            Location:
              description: |
                Location to the newly created Comment.
              explode: false
              schema:
                type: string
              style: simple
        "400":
          content:
            application/json:
              example:
                code: 400
                message: Bad Request
                description: Invalid request or validation error
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Bad Request. Invalid request or validation error.
        "401":
          content:
            application/json:
              example:
                code: 401
                message: Unauthorized
                description: The user is not authorized
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Unauthorized. The user is not authorized.
        "403":
          description: |
            Forbidden.
            The request must be conditional but no condition has been specified.
        "404":
          content:
            application/json:
              example:
                code: 404
                message: Not Found
                description: The specified resource does not exist
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Found. The specified resource does not exist.
        "415":
          content:
            application/json:
              example:
                code: 415
                message: Unsupported media type
                description: The entity of the request was not in a supported format
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Unsupported Media Type. The entity of the request was not in
            a supported format.
        "500":
          content:
            application/json:
              example:
                code: 500
                message: Internal Server Error
                description: The server encountered an internal error. Please contact
                  administrator.
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Internal Server Error.
      security:
      - OAuth2Security:
        - apim:subscribe
      summary: Edit a comment
      tags:
      - Comments
      x-code-samples:
      - lang: Curl
        source: 'curl -k -X PATCH -H "Authorization:Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8"
          -H "Content-Type: application/json" -d @data.json "https://localhost:9443/api/am/store/v2/apis/e93fb282-b456-48fc-8981-003fb89086ae/comments/d4cf1704-5d09-491c-bc48-4d19ce6ea9b4"'
      x-examples:
        $ref: docs/examples/apis/comments.yaml#/post
      x-contentType: application/json
      x-accepts: application/json
  /apis/{apiId}/comments/{commentId}/replies:
    get:
      description: |
        Get replies of a comment
      operationId: getRepliesOfComment
      parameters:
      - description: |
          Comment Id
        explode: false
        in: path
        name: commentId
        required: true
        schema:
          type: string
        style: simple
      - description: |
          **API ID** consisting of the **UUID** of the API.
        explode: false
        in: path
        name: apiId
        required: true
        schema:
          type: string
        style: simple
      - description: |
          For cross-tenant invocations, this is used to specify the tenant domain, where the resource need to be
            retrieved from.
        explode: false
        in: header
        name: X-WSO2-Tenant
        required: false
        schema:
          type: string
        style: simple
      - description: |
          Maximum size of resource array to return.
        explode: true
        in: query
        name: limit
        required: false
        schema:
          default: 25
          type: integer
        style: form
      - description: |
          Starting point within the complete list of items qualified.
        explode: true
        in: query
        name: offset
        required: false
        schema:
          default: 0
          type: integer
        style: form
      - description: |
          Validator for conditional requests; based on the ETag of the formerly retrieved
          variant of the resourec.
        explode: false
        in: header
        name: If-None-Match
        required: false
        schema:
          type: string
        style: simple
      - description: |
          Whether we need to display commentor details.
        explode: true
        in: query
        name: includeCommenterInfo
        required: false
        schema:
          default: false
          type: boolean
        style: form
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CommentList'
          description: |
            OK.
            Comment returned.
          headers:
            ETag:
              description: |
                Entity Tag of the response resource.
                Used by caches, or in conditional requests.
              explode: false
              schema:
                type: string
              style: simple
            Last-Modified:
              description: |
                Date and time the resource has been modifed the last time.
                Used by caches, or in conditional requests.
              explode: false
              schema:
                type: string
              style: simple
        "401":
          content:
            application/json:
              example:
                code: 401
                message: Unauthorized
                description: The user is not authorized
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Unauthorized. The user is not authorized.
        "404":
          content:
            application/json:
              example:
                code: 404
                message: Not Found
                description: The specified resource does not exist
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Found. The specified resource does not exist.
        "406":
          content:
            application/json:
              example:
                code: 406
                message: Not Acceptable
                description: The requested media type is not supported
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Acceptable. The requested media type is not supported.
        "500":
          content:
            application/json:
              example:
                code: 500
                message: Internal Server Error
                description: The server encountered an internal error. Please contact
                  administrator.
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Internal Server Error.
      security:
      - OAuth2Security: []
      summary: Get replies of a comment
      tags:
      - Comments
      x-code-samples:
      - lang: Curl
        source: curl -k "https://localhost:9443/api/am/store/v2/apis/e93fb282-b456-48fc-8981-003fb89086ae/comments/d4cf1704-5d09-491c-bc48-4d19ce6ea9b4/replies"
      x-examples:
        $ref: docs/examples/apis/comment_id-comments.yaml#/get
      x-accepts: application/json
  /apis/{apiId}/topics:
    get:
      description: |
        This operation will provide a list of topics available for a given Async API, based on the provided API ID.
      parameters:
      - description: |
          **API ID** consisting of the **UUID** of the API.
        explode: false
        in: path
        name: apiId
        required: true
        schema:
          type: string
        style: simple
      - description: |
          For cross-tenant invocations, this is used to specify the tenant domain, where the resource need to be
            retrieved from.
        explode: false
        in: header
        name: X-WSO2-Tenant
        required: false
        schema:
          type: string
        style: simple
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TopicList'
          description: |
            OK.
            Topic list returned.
          headers:
            ETag:
              description: |
                Entity Tag of the response resource.
                Used by caches, or in conditional requests.
              explode: false
              schema:
                type: string
              style: simple
        "404":
          content:
            application/json:
              example:
                code: 404
                message: Not Found
                description: The specified resource does not exist
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Found. The specified resource does not exist.
        "500":
          content:
            application/json:
              example:
                code: 500
                message: Internal Server Error
                description: The server encountered an internal error. Please contact
                  administrator.
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Internal Server Error.
      security:
      - OAuth2Security: []
      summary: |
        Get a list of available topics for a given async API
      tags:
      - Topics
      x-code-samples:
      - lang: Curl
        source: curl -k -H "Authorization:Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8"
          "https://localhost:9443/api/am/store/v1/topics/5b65808c-cdf2-43e1-a695-de63e3ad0ae9"
      x-accepts: application/json
  /apis/{apiId}/subscription-policies:
    get:
      description: |
        This operation can be used to retrieve details of the subscription throttling policy of an API by specifying the API Id.

        `X-WSO2-Tenant` header can be used to retrive API subscription throttling policies that belongs to a different tenant domain. If not specified super tenant will be used. If Authorization header is present in the request, the user's tenant associated with the access token will be used.
      parameters:
      - description: |
          **API ID** consisting of the **UUID** of the API.
        explode: false
        in: path
        name: apiId
        required: true
        schema:
          type: string
        style: simple
      - description: |
          For cross-tenant invocations, this is used to specify the tenant domain, where the resource need to be
            retrieved from.
        explode: false
        in: header
        name: X-WSO2-Tenant
        required: false
        schema:
          type: string
        style: simple
      - description: |
          Validator for conditional requests; based on the ETag of the formerly retrieved
          variant of the resourec.
        explode: false
        in: header
        name: If-None-Match
        required: false
        schema:
          type: string
        style: simple
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ThrottlingPolicy'
          description: |
            OK.
            Throttling Policy returned
          headers:
            ETag:
              description: |
                Entity Tag of the response resource.
                Used by caches, or in conditional requests.
              explode: false
              schema:
                type: string
              style: simple
            Last-Modified:
              description: |
                Date and time the resource has been modifed the last time.
                Used by caches, or in conditional requests.
              explode: false
              schema:
                type: string
              style: simple
        "304":
          content: {}
          description: |
            Not Modified.
            Empty body because the client has already the latest version of the requested resource.
        "404":
          content:
            application/json:
              example:
                code: 404
                message: Not Found
                description: The specified resource does not exist
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Found. The specified resource does not exist.
        "406":
          content:
            application/json:
              example:
                code: 406
                message: Not Acceptable
                description: The requested media type is not supported
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Acceptable. The requested media type is not supported.
      security:
      - OAuth2Security: []
      summary: |
        Get Details of the Subscription Throttling Policies of an API
      tags:
      - APIs
      x-code-samples:
      - lang: Curl
        source: curl -k "https://localhost:9443/api/am/devportal/v2/apis/268c9e55-3dc1-4f47-82e7-977e5343d077/subscription-policies"
      x-accepts: application/json
  /applications:
    get:
      description: |
        This operation can be used to retrieve list of applications that is belonged to the user associated with the provided access token.
      parameters:
      - description: |
          Application Group Id
        explode: true
        in: query
        name: groupId
        required: false
        schema:
          type: string
        style: form
      - description: |
          **Search condition**.

          You can search for an application by specifying the name as "query" attribute.

          Eg.
          "app1" will match an application if the name is exactly "app1".

          Currently this does not support wildcards. Given name must exactly match the application name.
        explode: true
        in: query
        name: query
        required: false
        schema:
          type: string
        style: form
      - explode: true
        in: query
        name: sortBy
        required: false
        schema:
          enum:
          - name
          - throttlingPolicy
          - status
          type: string
        style: form
      - explode: true
        in: query
        name: sortOrder
        required: false
        schema:
          enum:
          - asc
          - desc
          type: string
        style: form
      - description: |
          Maximum size of resource array to return.
        explode: true
        in: query
        name: limit
        required: false
        schema:
          default: 25
          type: integer
        style: form
      - description: |
          Starting point within the complete list of items qualified.
        explode: true
        in: query
        name: offset
        required: false
        schema:
          default: 0
          type: integer
        style: form
      - description: |
          Validator for conditional requests; based on the ETag of the formerly retrieved
          variant of the resourec.
        explode: false
        in: header
        name: If-None-Match
        required: false
        schema:
          type: string
        style: simple
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApplicationList'
          description: |
            OK.
            Application list returned.
          headers:
            ETag:
              description: |
                Entity Tag of the response resource.
                Used by caches, or in conditional requests.
              explode: false
              schema:
                type: string
              style: simple
        "304":
          content: {}
          description: |
            Not Modified.
            Empty body because the client has already the latest version of the requested resource.
        "400":
          content:
            application/json:
              example:
                code: 400
                message: Bad Request
                description: Invalid request or validation error
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Bad Request. Invalid request or validation error.
        "406":
          content:
            application/json:
              example:
                code: 406
                message: Not Acceptable
                description: The requested media type is not supported
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Acceptable. The requested media type is not supported.
      security:
      - OAuth2Security:
        - apim:subscribe
        - apim:app_manage
        - apim:app_import_export
      summary: |
        Retrieve/Search Applications
      tags:
      - Applications
      x-code-samples:
      - lang: Curl
        source: 'curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8"
          "https://localhost:9443/api/am/devportal/v2/applications"'
      x-accepts: application/json
    post:
      description: |
        This operation can be used to create a new application specifying the details of the application in the payload.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Application'
        description: |
          Application object that is to be created.
        required: true
      responses:
        "201":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Application'
          description: |
            Created.
            Successful response with the newly created object as entity in the body.
            Location header contains URL of newly created entity.
          headers:
            ETag:
              description: |
                Entity Tag of the response resource. Used by caches, or in conditional request
              explode: false
              schema:
                type: string
              style: simple
            Location:
              description: |
                Location of the newly created Application.
              explode: false
              schema:
                type: string
              style: simple
        "202":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkflowResponse'
          description: |
            Accepted.
            The request has been accepted.
          headers:
            Location:
              description: |
                Location of the newly created Application.
              explode: false
              schema:
                type: string
              style: simple
        "400":
          content:
            application/json:
              example:
                code: 400
                message: Bad Request
                description: Invalid request or validation error
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Bad Request. Invalid request or validation error.
        "409":
          content:
            application/json:
              example:
                code: 409
                message: Conflict
                description: Specified resource already exists
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Conflict. Specified resource already exists.
        "415":
          content:
            application/json:
              example:
                code: 415
                message: Unsupported media type
                description: The entity of the request was not in a supported format
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Unsupported Media Type. The entity of the request was not in
            a supported format.
      security:
      - OAuth2Security:
        - apim:subscribe
        - apim:app_manage
      summary: |
        Create a New Application
      tags:
      - Applications
      x-code-samples:
      - lang: Curl
        source: 'curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8"
          -H "Content-Type: application/json" -X POST -d @data.json "https://localhost:9443/api/am/devportal/v2/applications"'
      x-contentType: application/json
      x-accepts: application/json
  /applications/{applicationId}:
    delete:
      description: |
        This operation can be used to remove an application specifying its id.
      parameters:
      - description: |
          Application Identifier consisting of the UUID of the Application.
        explode: false
        in: path
        name: applicationId
        required: true
        schema:
          type: string
        style: simple
      - description: |
          Validator for conditional requests; based on ETag.
        explode: false
        in: header
        name: If-Match
        required: false
        schema:
          type: string
        style: simple
      responses:
        "200":
          content: {}
          description: |
            OK.
            Resource successfully deleted.
        "202":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkflowResponse'
          description: |
            Accepted.
            The request has been accepted.
          headers:
            Location:
              description: |
                Location of the existing Application.
              explode: false
              schema:
                type: string
              style: simple
        "404":
          content:
            application/json:
              example:
                code: 404
                message: Not Found
                description: The specified resource does not exist
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Found. The specified resource does not exist.
        "412":
          content:
            application/json:
              example:
                code: 412
                message: Precondition Failed
                description: The request has not been performed because one of the
                  preconditions is not met
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Precondition Failed. The request has not been performed because
            one of the preconditions is not met.
      security:
      - OAuth2Security:
        - apim:subscribe
        - apim:app_manage
        - apim:app_import_export
      summary: |
        Remove an Application
      tags:
      - Applications
      x-code-samples:
      - lang: Curl
        source: 'curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8"
          -X DELETE "https://localhost:9443/api/am/devportal/v2/applications/896658a0-b4ee-4535-bbfa-806c894a4015"'
      x-accepts: application/json
    get:
      description: |
        This operation can be used to retrieve details of an individual application specifying the application id in the URI.
      parameters:
      - description: |
          Application Identifier consisting of the UUID of the Application.
        explode: false
        in: path
        name: applicationId
        required: true
        schema:
          type: string
        style: simple
      - description: |
          Validator for conditional requests; based on the ETag of the formerly retrieved
          variant of the resourec.
        explode: false
        in: header
        name: If-None-Match
        required: false
        schema:
          type: string
        style: simple
      - description: |
          For cross-tenant invocations, this is used to specify the tenant domain, where the resource need to be
            retrieved from.
        explode: false
        in: header
        name: X-WSO2-Tenant
        required: false
        schema:
          type: string
        style: simple
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Application'
          description: |
            OK.
            Application returned.
          headers:
            ETag:
              description: |
                Entity Tag of the response resource. Used by caches, or in conditional requests.
              explode: false
              schema:
                type: string
              style: simple
            Last-Modified:
              description: |
                Date and time the resource has been modifed the last time.
                Used by caches, or in conditional requests.
              explode: false
              schema:
                type: string
              style: simple
        "304":
          content: {}
          description: |
            Not Modified.
            Empty body because the client has already the latest version of the requested resource.
        "404":
          content:
            application/json:
              example:
                code: 404
                message: Not Found
                description: The specified resource does not exist
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Found. The specified resource does not exist.
        "406":
          content:
            application/json:
              example:
                code: 406
                message: Not Acceptable
                description: The requested media type is not supported
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Acceptable. The requested media type is not supported.
      security:
      - OAuth2Security:
        - apim:subscribe
        - apim:app_manage
      summary: |
        Get Details of an Application
      tags:
      - Applications
      x-code-samples:
      - lang: Curl
        source: 'curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8"
          "https://localhost:9443/api/am/devportal/v2/applications/896658a0-b4ee-4535-bbfa-806c894a4015"'
      x-accepts: application/json
    put:
      description: |
        This operation can be used to update an application. Upon succesfull you will retrieve the updated application as the response.
      parameters:
      - description: |
          Application Identifier consisting of the UUID of the Application.
        explode: false
        in: path
        name: applicationId
        required: true
        schema:
          type: string
        style: simple
      - description: |
          Validator for conditional requests; based on ETag.
        explode: false
        in: header
        name: If-Match
        required: false
        schema:
          type: string
        style: simple
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Application'
        description: |
          Application object that needs to be updated
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Application'
          description: |
            OK.
            Application updated.
          headers:
            ETag:
              description: |
                Entity Tag of the response resource. Used by caches, or in conditional request.
              explode: false
              schema:
                type: string
              style: simple
            Last-Modified:
              description: |
                Date and time the resource has been modifed the last time.
                Used by caches, or in conditional requests.
              explode: false
              schema:
                type: string
              style: simple
            Location:
              description: |
                The URL of the newly created resource.
              explode: false
              schema:
                type: string
              style: simple
        "400":
          content:
            application/json:
              example:
                code: 400
                message: Bad Request
                description: Invalid request or validation error
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Bad Request. Invalid request or validation error.
        "404":
          content:
            application/json:
              example:
                code: 404
                message: Not Found
                description: The specified resource does not exist
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Found. The specified resource does not exist.
        "412":
          content:
            application/json:
              example:
                code: 412
                message: Precondition Failed
                description: The request has not been performed because one of the
                  preconditions is not met
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Precondition Failed. The request has not been performed because
            one of the preconditions is not met.
      security:
      - OAuth2Security:
        - apim:subscribe
        - apim:app_manage
      summary: |
        Update an Application
      tags:
      - Applications
      x-code-samples:
      - lang: Curl
        source: 'curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8"
          -H "Content-Type: application/json" -X PUT -d @data.json "https://localhost:9443/api/am/devportal/v2/applications/896658a0-b4ee-4535-bbfa-806c894a4015"'
      x-contentType: application/json
      x-accepts: application/json
  /applications/{applicationId}/generate-keys:
    post:
      description: |
        Generate keys (Consumer key/secret) for application
      parameters:
      - description: |
          Application Identifier consisting of the UUID of the Application.
        explode: false
        in: path
        name: applicationId
        required: true
        schema:
          type: string
        style: simple
      - description: |
          For cross-tenant invocations, this is used to specify the tenant domain, where the resource need to be
            retrieved from.
        explode: false
        in: header
        name: X-WSO2-Tenant
        required: false
        schema:
          type: string
        style: simple
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApplicationKeyGenerateRequest'
        description: |
          Application key generation request object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApplicationKey'
          description: |
            OK.
            Keys are generated.
        "400":
          content:
            application/json:
              example:
                code: 400
                message: Bad Request
                description: Invalid request or validation error
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Bad Request. Invalid request or validation error.
        "404":
          content:
            application/json:
              example:
                code: 404
                message: Not Found
                description: The specified resource does not exist
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Found. The specified resource does not exist.
        "412":
          content:
            application/json:
              example:
                code: 412
                message: Precondition Failed
                description: The request has not been performed because one of the
                  preconditions is not met
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Precondition Failed. The request has not been performed because
            one of the preconditions is not met.
      security:
      - OAuth2Security:
        - apim:subscribe
        - apim:app_manage
      summary: Generate Application Keys
      tags:
      - Application Keys
      x-code-samples:
      - lang: Curl
        source: 'curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8"
          -H "Content-Type: application/json" -X POST -d @data.json "https://localhost:9443/api/am/devportal/v2/applications/896658a0-b4ee-4535-bbfa-806c894a4015/generate-keys"'
      x-contentType: application/json
      x-accepts: application/json
  /applications/{applicationId}/map-keys:
    post:
      description: |
        Map keys (Consumer key/secret) to an application
      parameters:
      - description: |
          Application Identifier consisting of the UUID of the Application.
        explode: false
        in: path
        name: applicationId
        required: true
        schema:
          type: string
        style: simple
      - description: |
          For cross-tenant invocations, this is used to specify the tenant domain, where the resource need to be
            retrieved from.
        explode: false
        in: header
        name: X-WSO2-Tenant
        required: false
        schema:
          type: string
        style: simple
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApplicationKeyMappingRequest'
        description: |
          Application key mapping request object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApplicationKey'
          description: |
            OK.
            Keys are mapped.
        "400":
          content:
            application/json:
              example:
                code: 400
                message: Bad Request
                description: Invalid request or validation error
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Bad Request. Invalid request or validation error.
        "404":
          content:
            application/json:
              example:
                code: 404
                message: Not Found
                description: The specified resource does not exist
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Found. The specified resource does not exist.
        "412":
          content:
            application/json:
              example:
                code: 412
                message: Precondition Failed
                description: The request has not been performed because one of the
                  preconditions is not met
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Precondition Failed. The request has not been performed because
            one of the preconditions is not met.
      security:
      - OAuth2Security:
        - apim:subscribe
        - apim:app_manage
      summary: Map Application Keys
      tags:
      - Application Keys
      x-code-samples:
      - lang: Curl
        source: 'curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8"
          -H "Content-Type: application/json" -X POST -d @data.json "https://localhost:9443/api/am/devportal/v2/applications/896658a0-b4ee-4535-bbfa-806c894a4015/map-keys"'
      x-contentType: application/json
      x-accepts: application/json
  /applications/{applicationId}/keys:
    get:
      deprecated: true
      description: |
        Retrieve keys (Consumer key/secret) of application
      parameters:
      - description: |
          Application Identifier consisting of the UUID of the Application.
        explode: false
        in: path
        name: applicationId
        required: true
        schema:
          type: string
        style: simple
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApplicationKeyList'
          description: |
            OK.
            Keys are returned.
        "400":
          content:
            application/json:
              example:
                code: 400
                message: Bad Request
                description: Invalid request or validation error
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Bad Request. Invalid request or validation error.
        "404":
          content:
            application/json:
              example:
                code: 404
                message: Not Found
                description: The specified resource does not exist
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Found. The specified resource does not exist.
        "412":
          content:
            application/json:
              example:
                code: 412
                message: Precondition Failed
                description: The request has not been performed because one of the
                  preconditions is not met
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Precondition Failed. The request has not been performed because
            one of the preconditions is not met.
      security:
      - OAuth2Security:
        - apim:subscribe
        - apim:app_manage
      summary: Retrieve All Application Keys
      tags:
      - Application Keys
      x-code-samples:
      - lang: Curl
        source: 'curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8"
          "https://localhost:9443/api/am/devportal/v2/applications/896658a0-b4ee-4535-bbfa-806c894a4015/keys"'
      x-accepts: application/json
  /applications/{applicationId}/keys/{keyType}:
    get:
      deprecated: true
      description: |
        This operation can be used to retrieve key details of an individual application specifying the key type in the URI.
      parameters:
      - description: |
          Application Identifier consisting of the UUID of the Application.
        explode: false
        in: path
        name: applicationId
        required: true
        schema:
          type: string
        style: simple
      - description: |
          **Application Key Type** standing for the type of the keys (i.e. Production or Sandbox).
        explode: false
        in: path
        name: keyType
        required: true
        schema:
          enum:
          - PRODUCTION
          - SANDBOX
          type: string
        style: simple
      - description: |
          Application Group Id
        explode: true
        in: query
        name: groupId
        required: false
        schema:
          type: string
        style: form
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApplicationKey'
          description: |
            OK.
            Keys of given type are returned.
        "400":
          content:
            application/json:
              example:
                code: 400
                message: Bad Request
                description: Invalid request or validation error
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Bad Request. Invalid request or validation error.
        "404":
          content:
            application/json:
              example:
                code: 404
                message: Not Found
                description: The specified resource does not exist
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Found. The specified resource does not exist.
        "412":
          content:
            application/json:
              example:
                code: 412
                message: Precondition Failed
                description: The request has not been performed because one of the
                  preconditions is not met
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Precondition Failed. The request has not been performed because
            one of the preconditions is not met.
      security:
      - OAuth2Security:
        - apim:subscribe
        - apim:app_manage
      summary: |
        Get Key Details of a Given Type
      tags:
      - Application Keys
      x-code-samples:
      - lang: Curl
        source: 'curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8"
          "https://localhost:9443/api/am/devportal/v2/applications/896658a0-b4ee-4535-bbfa-806c894a4015/keys/PRODUCTION"'
      x-accepts: application/json
    put:
      deprecated: true
      description: |
        This operation can be used to update grant types and callback url of an application. (Consumer Key and Consumer Secret are ignored) Upon succesfull you will retrieve the updated key details as the response.
      parameters:
      - description: |
          Application Identifier consisting of the UUID of the Application.
        explode: false
        in: path
        name: applicationId
        required: true
        schema:
          type: string
        style: simple
      - description: |
          **Application Key Type** standing for the type of the keys (i.e. Production or Sandbox).
        explode: false
        in: path
        name: keyType
        required: true
        schema:
          enum:
          - PRODUCTION
          - SANDBOX
          type: string
        style: simple
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApplicationKey'
        description: |
          Grant types/Callback URL update request object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApplicationKey'
          description: |
            Ok.
            Grant types or/and callback url is/are updated.
        "400":
          content:
            application/json:
              example:
                code: 400
                message: Bad Request
                description: Invalid request or validation error
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Bad Request. Invalid request or validation error.
        "404":
          content:
            application/json:
              example:
                code: 404
                message: Not Found
                description: The specified resource does not exist
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Found. The specified resource does not exist.
        "412":
          content:
            application/json:
              example:
                code: 412
                message: Precondition Failed
                description: The request has not been performed because one of the
                  preconditions is not met
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Precondition Failed. The request has not been performed because
            one of the preconditions is not met.
      security:
      - OAuth2Security:
        - apim:subscribe
        - apim:app_manage
      summary: |
        Update Grant Types and Callback Url of an Application
      tags:
      - Application Keys
      x-code-samples:
      - lang: Curl
        source: 'curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8"
          -H "Content-Type: application/json" -X PUT -d @data.json "https://localhost:9443/api/am/devportal/v2/applications/896658a0-b4ee-4535-bbfa-806c894a4015/keys/PRODUCTION"'
      x-contentType: application/json
      x-accepts: application/json
  /applications/{applicationId}/keys/{keyType}/regenerate-secret:
    post:
      deprecated: true
      description: |
        This operation can be used to re generate consumer secret for an application for the give key type
      parameters:
      - description: |
          Application Identifier consisting of the UUID of the Application.
        explode: false
        in: path
        name: applicationId
        required: true
        schema:
          type: string
        style: simple
      - description: |
          **Application Key Type** standing for the type of the keys (i.e. Production or Sandbox).
        explode: false
        in: path
        name: keyType
        required: true
        schema:
          enum:
          - PRODUCTION
          - SANDBOX
          type: string
        style: simple
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApplicationKeyReGenerateResponse'
          description: |
            OK.
            Keys are re generated.
          headers:
            ETag:
              description: |
                Entity Tag of the response resource.
                Used by caches, or in conditional requests (Will be supported in future).
              explode: false
              schema:
                type: string
              style: simple
            Last-Modified:
              description: |
                Date and time the resource has been modifed the last time.
                Used by caches, or in conditional requests (Will be supported in future).‚
              explode: false
              schema:
                type: string
              style: simple
            Content-Type:
              description: |
                The content type of the body.
              explode: false
              schema:
                type: string
              style: simple
        "400":
          content:
            application/json:
              example:
                code: 400
                message: Bad Request
                description: Invalid request or validation error
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Bad Request. Invalid request or validation error.
        "404":
          content:
            application/json:
              example:
                code: 404
                message: Not Found
                description: The specified resource does not exist
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Found. The specified resource does not exist.
        "412":
          content:
            application/json:
              example:
                code: 412
                message: Precondition Failed
                description: The request has not been performed because one of the
                  preconditions is not met
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Precondition Failed. The request has not been performed because
            one of the preconditions is not met.
      security:
      - OAuth2Security:
        - apim:subscribe
        - apim:app_manage
      summary: |
        Re-Generate Consumer Secret
      tags:
      - Application Keys
      x-code-samples:
      - lang: Curl
        source: 'curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8"
          -H "Content-Type: application/json" -X POST "https://localhost:9443/api/am/devportal/v2/applications/896658a0-b4ee-4535-bbfa-806c894a4015/keys/PRODUCTION/regenerate-secret"'
      x-accepts: application/json
  /applications/{applicationId}/keys/{keyType}/clean-up:
    post:
      deprecated: true
      description: |
        Clean up keys after failed key generation of an application
      parameters:
      - description: |
          Application Identifier consisting of the UUID of the Application.
        explode: false
        in: path
        name: applicationId
        required: true
        schema:
          type: string
        style: simple
      - description: |
          **Application Key Type** standing for the type of the keys (i.e. Production or Sandbox).
        explode: false
        in: path
        name: keyType
        required: true
        schema:
          enum:
          - PRODUCTION
          - SANDBOX
          type: string
        style: simple
      - description: |
          Validator for conditional requests; based on ETag.
        explode: false
        in: header
        name: If-Match
        required: false
        schema:
          type: string
        style: simple
      responses:
        "200":
          content: {}
          description: |
            OK.
            Clean up is performed
        "400":
          content:
            application/json:
              example:
                code: 400
                message: Bad Request
                description: Invalid request or validation error
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Bad Request. Invalid request or validation error.
        "404":
          content:
            application/json:
              example:
                code: 404
                message: Not Found
                description: The specified resource does not exist
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Found. The specified resource does not exist.
        "412":
          content:
            application/json:
              example:
                code: 412
                message: Precondition Failed
                description: The request has not been performed because one of the
                  preconditions is not met
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Precondition Failed. The request has not been performed because
            one of the preconditions is not met.
      security:
      - OAuth2Security:
        - apim:subscribe
        - apim:app_manage
      summary: Clean-Up Application Keys
      tags:
      - Application Keys
      x-code-samples:
      - lang: Curl
        source: 'curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8"
          -H "Content-Type: application/json" -X POST "https://localhost:9443/api/am/devportal/v2/applications/896658a0-b4ee-4535-bbfa-806c894a4015/keys/PRODUCTION/clean-up"'
      x-accepts: application/json
  /applications/{applicationId}/keys/{keyType}/generate-token:
    post:
      deprecated: true
      description: |
        Generate an access token for application by client_credentials grant type
      parameters:
      - description: |
          Application Identifier consisting of the UUID of the Application.
        explode: false
        in: path
        name: applicationId
        required: true
        schema:
          type: string
        style: simple
      - description: |
          **Application Key Type** standing for the type of the keys (i.e. Production or Sandbox).
        explode: false
        in: path
        name: keyType
        required: true
        schema:
          enum:
          - PRODUCTION
          - SANDBOX
          type: string
        style: simple
      - description: |
          Validator for conditional requests; based on ETag.
        explode: false
        in: header
        name: If-Match
        required: false
        schema:
          type: string
        style: simple
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApplicationTokenGenerateRequest'
        description: |
          Application token generation request object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApplicationToken'
          description: |
            OK.
            Token is generated.
        "400":
          content:
            application/json:
              example:
                code: 400
                message: Bad Request
                description: Invalid request or validation error
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Bad Request. Invalid request or validation error.
        "404":
          content:
            application/json:
              example:
                code: 404
                message: Not Found
                description: The specified resource does not exist
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Found. The specified resource does not exist.
        "412":
          content:
            application/json:
              example:
                code: 412
                message: Precondition Failed
                description: The request has not been performed because one of the
                  preconditions is not met
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Precondition Failed. The request has not been performed because
            one of the preconditions is not met.
      security:
      - OAuth2Security:
        - apim:subscribe
        - apim:app_manage
      summary: Generate Application Token
      tags:
      - Application Tokens
      x-code-samples:
      - lang: Curl
        source: 'curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8"
          -H "Content-Type: application/json" -X POST -d @data.json "https://localhost:9443/api/am/devportal/v2/applications/16cd2684-9657-4a01-a956-4efd89e96077/keys/PRODUCTION/generate-token"'
      x-contentType: application/json
      x-accepts: application/json
  /applications/{applicationId}/oauth-keys:
    get:
      description: |
        Retrieve keys (Consumer key/secret) of application
      parameters:
      - description: |
          Application Identifier consisting of the UUID of the Application.
        explode: false
        in: path
        name: applicationId
        required: true
        schema:
          type: string
        style: simple
      - description: |
          For cross-tenant invocations, this is used to specify the tenant domain, where the resource need to be
            retrieved from.
        explode: false
        in: header
        name: X-WSO2-Tenant
        required: false
        schema:
          type: string
        style: simple
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApplicationKeyList'
          description: |
            OK.
            Keys are returned.
        "400":
          content:
            application/json:
              example:
                code: 400
                message: Bad Request
                description: Invalid request or validation error
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Bad Request. Invalid request or validation error.
        "404":
          content:
            application/json:
              example:
                code: 404
                message: Not Found
                description: The specified resource does not exist
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Found. The specified resource does not exist.
        "412":
          content:
            application/json:
              example:
                code: 412
                message: Precondition Failed
                description: The request has not been performed because one of the
                  preconditions is not met
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Precondition Failed. The request has not been performed because
            one of the preconditions is not met.
      security:
      - OAuth2Security:
        - apim:subscribe
        - apim:app_manage
      summary: Retrieve All Application Keys
      tags:
      - Application Keys
      x-code-samples:
      - lang: Curl
        source: 'curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8"
          "https://localhost:9443/api/am/devportal/v2/applications/16cd2684-9657-4a01-a956-4efd89e96077/oauth-keys"'
      x-accepts: application/json
  /applications/{applicationId}/oauth-keys/{keyMappingId}:
    get:
      description: |
        This operation can be used to retrieve key details of an individual application specifying the key type in the URI.
      parameters:
      - description: |
          Application Identifier consisting of the UUID of the Application.
        explode: false
        in: path
        name: applicationId
        required: true
        schema:
          type: string
        style: simple
      - description: |
          OAuth Key Identifier consisting of the UUID of the Oauth Key Mapping.
        explode: false
        in: path
        name: keyMappingId
        required: true
        schema:
          type: string
        style: simple
      - description: |
          Application Group Id
        explode: true
        in: query
        name: groupId
        required: false
        schema:
          type: string
        style: form
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApplicationKey'
          description: |
            OK.
            Keys of given type are returned.
        "400":
          content:
            application/json:
              example:
                code: 400
                message: Bad Request
                description: Invalid request or validation error
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Bad Request. Invalid request or validation error.
        "404":
          content:
            application/json:
              example:
                code: 404
                message: Not Found
                description: The specified resource does not exist
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Found. The specified resource does not exist.
        "412":
          content:
            application/json:
              example:
                code: 412
                message: Precondition Failed
                description: The request has not been performed because one of the
                  preconditions is not met
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Precondition Failed. The request has not been performed because
            one of the preconditions is not met.
      security:
      - OAuth2Security:
        - apim:subscribe
        - apim:app_manage
      summary: |
        Get Key Details of a Given Type
      tags:
      - Application Keys
      x-code-samples:
      - lang: Curl
        source: 'curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8"
          "https://localhost:9443/api/am/devportal/v2/applications/16cd2684-9657-4a01-a956-4efd89e96077/oauth-keys/df972173-c957-46d4-96ac-99be8e303584"'
      x-accepts: application/json
    put:
      description: |
        This operation can be used to update grant types and callback url of an application. (Consumer Key and Consumer Secret are ignored) Upon succesfull you will retrieve the updated key details as the response.
      parameters:
      - description: |
          Application Identifier consisting of the UUID of the Application.
        explode: false
        in: path
        name: applicationId
        required: true
        schema:
          type: string
        style: simple
      - description: |
          OAuth Key Identifier consisting of the UUID of the Oauth Key Mapping.
        explode: false
        in: path
        name: keyMappingId
        required: true
        schema:
          type: string
        style: simple
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApplicationKey'
        description: |
          Grant types/Callback URL update request object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApplicationKey'
          description: |
            Ok.
            Grant types or/and callback url is/are updated.
        "400":
          content:
            application/json:
              example:
                code: 400
                message: Bad Request
                description: Invalid request or validation error
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Bad Request. Invalid request or validation error.
        "404":
          content:
            application/json:
              example:
                code: 404
                message: Not Found
                description: The specified resource does not exist
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Found. The specified resource does not exist.
        "412":
          content:
            application/json:
              example:
                code: 412
                message: Precondition Failed
                description: The request has not been performed because one of the
                  preconditions is not met
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Precondition Failed. The request has not been performed because
            one of the preconditions is not met.
      security:
      - OAuth2Security:
        - apim:subscribe
        - apim:app_manage
      summary: |
        Update Grant Types and Callback URL of an Application
      tags:
      - Application Keys
      x-code-samples:
      - lang: Curl
        source: 'curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8"
          -H "Content-Type: application/json" -X POST -d @data.json "https://localhost:9443/api/am/devportal/v2/applications/16cd2684-9657-4a01-a956-4efd89e96077/oauth-keys/df972173-c957-46d4-96ac-99be8e303584"'
      x-contentType: application/json
      x-accepts: application/json
  /applications/{applicationId}/oauth-keys/{keyMappingId}/regenerate-secret:
    post:
      description: |
        This operation can be used to re generate consumer secret for an application for the give key type
      parameters:
      - description: |
          Application Identifier consisting of the UUID of the Application.
        explode: false
        in: path
        name: applicationId
        required: true
        schema:
          type: string
        style: simple
      - description: |
          OAuth Key Identifier consisting of the UUID of the Oauth Key Mapping.
        explode: false
        in: path
        name: keyMappingId
        required: true
        schema:
          type: string
        style: simple
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApplicationKeyReGenerateResponse'
          description: |
            OK.
            Keys are re generated.
          headers:
            ETag:
              description: |
                Entity Tag of the response resource.
                Used by caches, or in conditional requests (Will be supported in future).
              explode: false
              schema:
                type: string
              style: simple
            Last-Modified:
              description: |
                Date and time the resource has been modifed the last time.
                Used by caches, or in conditional requests (Will be supported in future).‚
              explode: false
              schema:
                type: string
              style: simple
            Content-Type:
              description: |
                The content type of the body.
              explode: false
              schema:
                type: string
              style: simple
        "400":
          content:
            application/json:
              example:
                code: 400
                message: Bad Request
                description: Invalid request or validation error
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Bad Request. Invalid request or validation error.
        "404":
          content:
            application/json:
              example:
                code: 404
                message: Not Found
                description: The specified resource does not exist
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Found. The specified resource does not exist.
        "412":
          content:
            application/json:
              example:
                code: 412
                message: Precondition Failed
                description: The request has not been performed because one of the
                  preconditions is not met
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Precondition Failed. The request has not been performed because
            one of the preconditions is not met.
      security:
      - OAuth2Security:
        - apim:subscribe
        - apim:app_manage
      summary: |
        Re-Generate Consumer Secret
      tags:
      - Application Keys
      x-code-samples:
      - lang: Curl
        source: 'curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8"
          -H "Content-Type: application/json" -X POST "https://localhost:9443/api/am/devportal/v2/applications/16cd2684-9657-4a01-a956-4efd89e96077/oauth-keys/df972173-c957-46d4-96ac-99be8e303584/regenerate-secret"'
      x-accepts: application/json
  /applications/{applicationId}/oauth-keys/{keyMappingId}/clean-up:
    post:
      description: |
        Clean up keys after failed key generation of an application
      parameters:
      - description: |
          Application Identifier consisting of the UUID of the Application.
        explode: false
        in: path
        name: applicationId
        required: true
        schema:
          type: string
        style: simple
      - description: |
          OAuth Key Identifier consisting of the UUID of the Oauth Key Mapping.
        explode: false
        in: path
        name: keyMappingId
        required: true
        schema:
          type: string
        style: simple
      - description: |
          Validator for conditional requests; based on ETag.
        explode: false
        in: header
        name: If-Match
        required: false
        schema:
          type: string
        style: simple
      responses:
        "200":
          content: {}
          description: |
            OK.
            Clean up is performed
        "400":
          content:
            application/json:
              example:
                code: 400
                message: Bad Request
                description: Invalid request or validation error
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Bad Request. Invalid request or validation error.
        "404":
          content:
            application/json:
              example:
                code: 404
                message: Not Found
                description: The specified resource does not exist
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Found. The specified resource does not exist.
        "412":
          content:
            application/json:
              example:
                code: 412
                message: Precondition Failed
                description: The request has not been performed because one of the
                  preconditions is not met
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Precondition Failed. The request has not been performed because
            one of the preconditions is not met.
      security:
      - OAuth2Security:
        - apim:subscribe
        - apim:app_manage
      summary: Clean-Up Application Keys
      tags:
      - Application Keys
      x-code-samples:
      - lang: Curl
        source: 'curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8"
          -H "Content-Type: application/json" -X POST "https://localhost:9443/api/am/devportal/v2/applications/16cd2684-9657-4a01-a956-4efd89e96077/oauth-keys/df972173-c957-46d4-96ac-99be8e303584/clean-up"'
      x-accepts: application/json
  /applications/{applicationId}/oauth-keys/{keyMappingId}/generate-token:
    post:
      description: |
        Generate an access token for application by client_credentials grant type
      parameters:
      - description: |
          Application Identifier consisting of the UUID of the Application.
        explode: false
        in: path
        name: applicationId
        required: true
        schema:
          type: string
        style: simple
      - description: |
          OAuth Key Identifier consisting of the UUID of the Oauth Key Mapping.
        explode: false
        in: path
        name: keyMappingId
        required: true
        schema:
          type: string
        style: simple
      - description: |
          Validator for conditional requests; based on ETag.
        explode: false
        in: header
        name: If-Match
        required: false
        schema:
          type: string
        style: simple
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApplicationTokenGenerateRequest'
        description: |
          Application token generation request object
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApplicationToken'
          description: |
            OK.
            Token is generated.
        "400":
          content:
            application/json:
              example:
                code: 400
                message: Bad Request
                description: Invalid request or validation error
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Bad Request. Invalid request or validation error.
        "404":
          content:
            application/json:
              example:
                code: 404
                message: Not Found
                description: The specified resource does not exist
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Found. The specified resource does not exist.
        "412":
          content:
            application/json:
              example:
                code: 412
                message: Precondition Failed
                description: The request has not been performed because one of the
                  preconditions is not met
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Precondition Failed. The request has not been performed because
            one of the preconditions is not met.
      security:
      - OAuth2Security:
        - apim:subscribe
        - apim:app_manage
      summary: Generate Application Token
      tags:
      - Application Tokens
      x-code-samples:
      - lang: Curl
        source: 'curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8"
          -H "Content-Type: application/json" -X POST -d @data.json "https://localhost:9443/api/am/devportal/v2/applications/16cd2684-9657-4a01-a956-4efd89e96077/oauth-keys/{keyMappingId}/generate-token"'
      x-contentType: application/json
      x-accepts: application/json
  /applications/{applicationId}/api-keys/{keyType}/generate:
    post:
      description: |
        Generate a self contained API Key for the application
      parameters:
      - description: |
          Application Identifier consisting of the UUID of the Application.
        explode: false
        in: path
        name: applicationId
        required: true
        schema:
          type: string
        style: simple
      - description: |
          **Application Key Type** standing for the type of the keys (i.e. Production or Sandbox).
        explode: false
        in: path
        name: keyType
        required: true
        schema:
          enum:
          - PRODUCTION
          - SANDBOX
          type: string
        style: simple
      - description: |
          Validator for conditional requests; based on ETag.
        explode: false
        in: header
        name: If-Match
        required: false
        schema:
          type: string
        style: simple
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/APIKeyGenerateRequest'
        description: |
          API Key generation request object
        required: false
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/APIKey'
          description: |
            OK.
            apikey generated.
        "400":
          content:
            application/json:
              example:
                code: 400
                message: Bad Request
                description: Invalid request or validation error
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Bad Request. Invalid request or validation error.
        "404":
          content:
            application/json:
              example:
                code: 404
                message: Not Found
                description: The specified resource does not exist
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Found. The specified resource does not exist.
        "412":
          content:
            application/json:
              example:
                code: 412
                message: Precondition Failed
                description: The request has not been performed because one of the
                  preconditions is not met
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Precondition Failed. The request has not been performed because
            one of the preconditions is not met.
      security:
      - OAuth2Security:
        - apim:subscribe
        - apim:app_manage
        - apim:api_key
      summary: Generate API Key
      tags:
      - API Keys
      x-code-samples:
      - lang: Curl
        source: 'curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8"
          -H "Content-Type: application/json" -X POST -d @data.json "https://localhost:9443/api/am/devportal/v2/applications/16cd2684-9657-4a01-a956-4efd89e96077/api-keys/PRODUCTION/generate"'
      x-contentType: application/json
      x-accepts: application/json
  /applications/{applicationId}/api-keys/{keyType}/revoke:
    post:
      description: |
        Revoke a self contained API Key for the application
      parameters:
      - description: |
          Application Identifier consisting of the UUID of the Application.
        explode: false
        in: path
        name: applicationId
        required: true
        schema:
          type: string
        style: simple
      - description: |
          **Application Key Type** standing for the type of the keys (i.e. Production or Sandbox).
        explode: false
        in: path
        name: keyType
        required: true
        schema:
          enum:
          - PRODUCTION
          - SANDBOX
          type: string
        style: simple
      - description: |
          Validator for conditional requests; based on ETag.
        explode: false
        in: header
        name: If-Match
        required: false
        schema:
          type: string
        style: simple
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/APIKeyRevokeRequest'
        description: |
          API Key revoke request object
        required: false
      responses:
        "200":
          content: {}
          description: |
            OK.
            apikey revoked successfully.
        "400":
          content:
            application/json:
              example:
                code: 400
                message: Bad Request
                description: Invalid request or validation error
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Bad Request. Invalid request or validation error.
        "412":
          content:
            application/json:
              example:
                code: 412
                message: Precondition Failed
                description: The request has not been performed because one of the
                  preconditions is not met
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Precondition Failed. The request has not been performed because
            one of the preconditions is not met.
      security:
      - OAuth2Security:
        - apim:subscribe
        - apim:app_manage
        - apim:api_key
      summary: Revoke API Key
      tags:
      - API Keys
      x-code-samples:
      - lang: Curl
        source: 'curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8"
          -H "Content-Type: application/json" -X POST -d @data.json "https://localhost:9443/api/am/devportal/v2/applications/16cd2684-9657-4a01-a956-4efd89e96077/api-keys/PRODUCTION/revoke"'
      x-contentType: application/json
      x-accepts: application/json
  /applications/export:
    get:
      description: |
        This operation can be used to export the details of a particular application as a zip file.
      parameters:
      - description: |
          Application Name
        explode: true
        in: query
        name: appName
        required: true
        schema:
          type: string
        style: form
      - description: |
          Owner of the Application
        explode: true
        in: query
        name: appOwner
        required: true
        schema:
          type: string
        style: form
      - description: |
          Export application keys
        explode: true
        in: query
        name: withKeys
        required: false
        schema:
          type: boolean
        style: form
      - description: |
          Format of output documents. Can be YAML or JSON.
        explode: true
        in: query
        name: format
        required: false
        schema:
          enum:
          - JSON
          - YAML
          type: string
        style: form
      responses:
        "200":
          content:
            application/zip:
              schema:
                format: binary
                type: string
          description: |
            OK.
            Export Successful.
          headers:
            Content-Type:
              description: |
                The content type of the body.
              explode: false
              schema:
                type: string
              style: simple
        "400":
          content:
            application/json:
              example:
                code: 400
                message: Bad Request
                description: Invalid request or validation error
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Bad Request. Invalid request or validation error.
        "404":
          content:
            application/json:
              example:
                code: 404
                message: Not Found
                description: The specified resource does not exist
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Found. The specified resource does not exist.
        "406":
          content:
            application/json:
              example:
                code: 406
                message: Not Acceptable
                description: The requested media type is not supported
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Acceptable. The requested media type is not supported.
      security:
      - OAuth2Security:
        - apim:app_import_export
      summary: Export an Application
      tags:
      - Import Export
      x-code-samples:
      - lang: Shell
        source: 'curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8"
          "https://127.0.0.1:9443/api/am/devportal/v2/applications/import?appName=sampleApp&appOwner=admin&withKeys=true"
          > exportedApplication.zip'
      x-accepts: application/json
  /applications/import:
    post:
      description: |
        This operation can be used to import an application.
      parameters:
      - description: |
          Preserve Original Creator of the Application
        explode: true
        in: query
        name: preserveOwner
        required: false
        schema:
          type: boolean
        style: form
      - description: |
          Skip importing Subscriptions of the Application
        explode: true
        in: query
        name: skipSubscriptions
        required: false
        schema:
          type: boolean
        style: form
      - description: |
          Expected Owner of the Application in the Import Environment
        explode: true
        in: query
        name: appOwner
        required: false
        schema:
          type: string
        style: form
      - description: |
          Skip importing Keys of the Application
        explode: true
        in: query
        name: skipApplicationKeys
        required: false
        schema:
          type: boolean
        style: form
      - description: |
          Update if application exists
        explode: true
        in: query
        name: update
        required: false
        schema:
          type: boolean
        style: form
      requestBody:
        content:
          multipart/form-data:
            schema:
              properties:
                file:
                  description: |
                    Zip archive consisting of exported Application Configuration.
                  format: binary
                  type: string
              required:
              - file
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApplicationInfo'
          description: |
            OK.
            Successful response with the updated object information as entity in the body.
          headers:
            Content-Type:
              description: |
                The content type of the body.
              explode: false
              schema:
                type: string
              style: simple
        "207":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/APIInfoList'
          description: |
            Multi Status.
            Partially successful response with skipped APIs information object as entity in the body.
        "400":
          content:
            application/json:
              example:
                code: 400
                message: Bad Request
                description: Invalid request or validation error
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Bad Request. Invalid request or validation error.
        "406":
          content:
            application/json:
              example:
                code: 406
                message: Not Acceptable
                description: The requested media type is not supported
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Acceptable. The requested media type is not supported.
      security:
      - OAuth2Security:
        - apim:app_import_export
      summary: Import an Application
      tags:
      - Application (Individual)
      x-code-samples:
      - lang: Shell
        source: 'curl -k -X POST -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8"
          -F file=@exportedApplication.zip "https://127.0.0.1:9443/api/am/devportal/v2/applications/import?preserveOwner=true&skipSubscriptions=false&appOwner=admin&skipApplicationKeys=false&update=true"'
      x-contentType: multipart/form-data
      x-accepts: application/json
  /subscriptions:
    get:
      description: |
        This operation can be used to retrieve a list of subscriptions of the user associated with the provided access token. This operation is capable of

        1. Retrieving applications which are subscibed to a specific API.
        `GET https://localhost:9443/api/am/devportal/v2/subscriptions?apiId=c43a325c-260b-4302-81cb-768eafaa3aed`

        2. Retrieving APIs which are subscribed by a specific application.
        `GET https://localhost:9443/api/am/devportal/v2/subscriptions?applicationId=c43a325c-260b-4302-81cb-768eafaa3aed`

        **IMPORTANT:**
        * It is mandatory to provide either **apiId** or **applicationId**.
      parameters:
      - description: |
          **API ID** consisting of the **UUID** of the API.
        explode: true
        in: query
        name: apiId
        required: false
        schema:
          type: string
        style: form
      - description: |
          **Application Identifier** consisting of the UUID of the Application.
        explode: true
        in: query
        name: applicationId
        required: false
        schema:
          type: string
        style: form
      - description: |
          Application Group Id
        explode: true
        in: query
        name: groupId
        required: false
        schema:
          type: string
        style: form
      - description: |
          For cross-tenant invocations, this is used to specify the tenant domain, where the resource need to be
            retrieved from.
        explode: false
        in: header
        name: X-WSO2-Tenant
        required: false
        schema:
          type: string
        style: simple
      - description: |
          Starting point within the complete list of items qualified.
        explode: true
        in: query
        name: offset
        required: false
        schema:
          default: 0
          type: integer
        style: form
      - description: |
          Maximum size of resource array to return.
        explode: true
        in: query
        name: limit
        required: false
        schema:
          default: 25
          type: integer
        style: form
      - description: |
          Validator for conditional requests; based on the ETag of the formerly retrieved
          variant of the resourec.
        explode: false
        in: header
        name: If-None-Match
        required: false
        schema:
          type: string
        style: simple
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubscriptionList'
          description: |
            OK.
            Subscription list returned.
          headers:
            ETag:
              description: |
                Entity Tag of the response resource.
                Used by caches, or in conditional requests.
              explode: false
              schema:
                type: string
              style: simple
        "304":
          content: {}
          description: |
            Not Modified.
            Empty body because the client has already the latest version of the requested resource.
        "406":
          content:
            application/json:
              example:
                code: 406
                message: Not Acceptable
                description: The requested media type is not supported
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Acceptable. The requested media type is not supported.
      security:
      - OAuth2Security:
        - apim:subscribe
        - apim:sub_manage
      summary: |
        Get All Subscriptions
      tags:
      - Subscriptions
      x-code-samples:
      - lang: Curl
        source: 'curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8"
          "https://localhost:9443/api/am/devportal/v2/subscriptions?apiId=02e658e7-71c7-4b1d-a623-be145b789340"'
      x-accepts: application/json
    post:
      description: |
        This operation can be used to add a new subscription providing the id of the API and the application.
      parameters:
      - description: |
          For cross-tenant invocations, this is used to specify the tenant domain, where the resource need to be
            retrieved from.
        explode: false
        in: header
        name: X-WSO2-Tenant
        required: false
        schema:
          type: string
        style: simple
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Subscription'
        description: |
          Subscription object that should to be added
        required: true
      responses:
        "201":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Subscription'
          description: |
            Created.
            Successful response with the newly created object as entity in the body.
            Location header contains URL of newly created entity.
          headers:
            ETag:
              description: |
                Entity Tag of the response resource. Used by caches, or in conditional request.
              explode: false
              schema:
                type: string
              style: simple
            Location:
              description: |
                Location to the newly created subscription.
              explode: false
              schema:
                type: string
              style: simple
        "202":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkflowResponse'
          description: |
            Accepted.
            The request has been accepted.
          headers:
            Location:
              description: |
                Location of the newly created subscription.
              explode: false
              schema:
                type: string
              style: simple
        "400":
          content:
            application/json:
              example:
                code: 400
                message: Bad Request
                description: Invalid request or validation error
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Bad Request. Invalid request or validation error.
        "415":
          content:
            application/json:
              example:
                code: 415
                message: Unsupported media type
                description: The entity of the request was not in a supported format
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Unsupported Media Type. The entity of the request was not in
            a supported format.
      security:
      - OAuth2Security:
        - apim:subscribe
        - apim:sub_manage
      summary: |
        Add a New Subscription
      tags:
      - Subscriptions
      x-code-samples:
      - lang: Curl
        source: 'curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8"
          -H "Content-Type: application/json" -X POST -d @data.json "https://localhost:9443/api/am/devportal/v2/subscriptions"'
      x-contentType: application/json
      x-accepts: application/json
  /subscriptions/multiple:
    post:
      description: |
        This operation can be used to add a new subscriptions providing the ids of the APIs and the applications.
      parameters:
      - description: |
          For cross-tenant invocations, this is used to specify the tenant domain, where the resource need to be
            retrieved from.
        explode: false
        in: header
        name: X-WSO2-Tenant
        required: false
        schema:
          type: string
        style: simple
      requestBody:
        content:
          application/json:
            schema:
              items:
                $ref: '#/components/schemas/Subscription'
              type: array
        description: |
          Subscription objects that should to be added
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/Subscription'
                type: array
          description: |
            OK.
            Successful response with the newly created objects as entity in the body.
          headers:
            ETag:
              description: |
                Entity Tag of the response resource. Used by caches, or in conditional requests (Will be supported in future).
              explode: false
              schema:
                type: string
              style: simple
            Content-Type:
              description: |
                The content type of the body.
              explode: false
              schema:
                type: string
              style: simple
        "400":
          content:
            application/json:
              example:
                code: 400
                message: Bad Request
                description: Invalid request or validation error
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Bad Request. Invalid request or validation error.
        "415":
          content:
            application/json:
              example:
                code: 415
                message: Unsupported media type
                description: The entity of the request was not in a supported format
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Unsupported Media Type. The entity of the request was not in
            a supported format.
      security:
      - OAuth2Security:
        - apim:subscribe
        - apim:sub_manage
      summary: |
        Add New Subscriptions
      tags:
      - Subscriptions
      x-code-samples:
      - lang: Curl
        source: 'curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8"
          -H "Content-Type: application/json" -X POST -d @data.json "https://localhost:9443/api/am/devportal/v2/subscriptions/multiple"'
      x-contentType: application/json
      x-accepts: application/json
  /subscriptions/{apiId}/additionalInfo:
    get:
      description: |
        This operation can be used to retrieve all additional Information of subscriptions attached to an API by providing the API id.
      operationId: getAdditionalInfoOfAPISubscriptions
      parameters:
      - description: |
          **API ID** consisting of the **UUID** of the API.
        explode: false
        in: path
        name: apiId
        required: true
        schema:
          type: string
        style: simple
      - description: |
          Application Group Id
        explode: true
        in: query
        name: groupId
        required: false
        schema:
          type: string
        style: form
      - description: |
          For cross-tenant invocations, this is used to specify the tenant domain, where the resource need to be
            retrieved from.
        explode: false
        in: header
        name: X-WSO2-Tenant
        required: false
        schema:
          type: string
        style: simple
      - description: |
          Starting point within the complete list of items qualified.
        explode: true
        in: query
        name: offset
        required: false
        schema:
          default: 0
          type: integer
        style: form
      - description: |
          Maximum size of resource array to return.
        explode: true
        in: query
        name: limit
        required: false
        schema:
          default: 25
          type: integer
        style: form
      - description: |
          Validator for conditional requests; based on the ETag of the formerly retrieved
          variant of the resourec.
        explode: false
        in: header
        name: If-None-Match
        required: false
        schema:
          type: string
        style: simple
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdditionalSubscriptionInfoList'
          description: |
            OK.
            Types and fields returned successfully.
          headers:
            Content-Type:
              description: |
                The content of the body.
              explode: false
              schema:
                default: application/json
                type: string
              style: simple
        "404":
          content: {}
          description: |
            Not Found.
            Retrieving types and fields failed.
      security:
      - OAuth2Security: []
      summary: Get Additional Information of subscriptions attached to an API.
      tags:
      - Subscriptions
      x-code-samples:
      - lang: Curl
        source: curl -k "https://localhost:9443/api/am/devportal/v2/subscriptions/e93fb282-b456-48fc-8981-003fb89086ae/additionalInfo"
      x-accepts: application/json
  /subscriptions/{subscriptionId}:
    delete:
      description: |
        This operation can be used to remove a subscription.
      parameters:
      - description: |
          Subscription Id
        explode: false
        in: path
        name: subscriptionId
        required: true
        schema:
          type: string
        style: simple
      - description: |
          Validator for conditional requests; based on ETag.
        explode: false
        in: header
        name: If-Match
        required: false
        schema:
          type: string
        style: simple
      responses:
        "200":
          content: {}
          description: |
            OK.
            Resource successfully deleted.
        "202":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkflowResponse'
          description: |
            Accepted.
            The request has been accepted.
          headers:
            Location:
              description: |
                Location of the existing subscription.
              explode: false
              schema:
                type: string
              style: simple
        "404":
          content:
            application/json:
              example:
                code: 404
                message: Not Found
                description: The specified resource does not exist
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Found. The specified resource does not exist.
        "412":
          content:
            application/json:
              example:
                code: 412
                message: Precondition Failed
                description: The request has not been performed because one of the
                  preconditions is not met
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Precondition Failed. The request has not been performed because
            one of the preconditions is not met.
      security:
      - OAuth2Security:
        - apim:subscribe
        - apim:sub_manage
      summary: |
        Remove a Subscription
      tags:
      - Subscriptions
      x-code-samples:
      - lang: Curl
        source: 'curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8"
          -H "Content-Type: application/json" -X DELETE "https://localhost:9443/api/am/devportal/v2/subscriptions/80369180-7d90-4ee8-99a1-19fa68512aa5"'
      x-wso2-curl: 'curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8"
        -X DELETE "https://localhost:9443/api/am/devportal/v2/subscriptions/5b65808c-cdf2-43e1-a695-de63e3ad0ae9"'
      x-wso2-request: |
        DELETE https://localhost:9443/api/am/devportal/v2/subscriptions/5b65808c-cdf2-43e1-a695-de63e3ad0ae9
      x-wso2-response: HTTP/1.1 200 OK
      x-accepts: application/json
    get:
      description: |
        This operation can be used to get details of a single subscription.
      parameters:
      - description: |
          Subscription Id
        explode: false
        in: path
        name: subscriptionId
        required: true
        schema:
          type: string
        style: simple
      - description: |
          Validator for conditional requests; based on the ETag of the formerly retrieved
          variant of the resourec.
        explode: false
        in: header
        name: If-None-Match
        required: false
        schema:
          type: string
        style: simple
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Subscription'
          description: |
            OK.
            Subscription returned
          headers:
            ETag:
              description: Entity Tag of the response resource. Used by caches, or
                in conditional requests.
              explode: false
              schema:
                type: string
              style: simple
            Last-Modified:
              description: Date and time the resource has been modifed the last time.
                Used by caches, or in conditional reuquests.
              explode: false
              schema:
                type: string
              style: simple
        "304":
          content: {}
          description: |
            Not Modified.
            Empty body because the client has already the latest version of the requested resource.
        "404":
          content:
            application/json:
              example:
                code: 404
                message: Not Found
                description: The specified resource does not exist
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Found. The specified resource does not exist.
      security:
      - OAuth2Security:
        - apim:subscribe
        - apim:sub_manage
      summary: |
        Get Details of a Subscription
      tags:
      - Subscriptions
      x-code-samples:
      - lang: Curl
        source: 'curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8"
          "https://localhost:9443/api/am/devportal/v2/subscriptions/5b65808c-cdf2-43e1-a695-de63e3ad0ae9"'
      x-accepts: application/json
    put:
      description: |
        This operation can be used to update a subscription providing the subscription id, api id, application Id, status and updated throttling policy tier.
      parameters:
      - description: |
          For cross-tenant invocations, this is used to specify the tenant domain, where the resource need to be
            retrieved from.
        explode: false
        in: header
        name: X-WSO2-Tenant
        required: false
        schema:
          type: string
        style: simple
      - description: |
          Subscription Id
        explode: false
        in: path
        name: subscriptionId
        required: true
        schema:
          type: string
        style: simple
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Subscription'
        description: |
          Subscription object that should to be added
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Subscription'
          description: |
            Subscription Updated.
            Successful response with the updated object as entity in the body.
            Location header contains URL of newly updates entity.
          headers:
            ETag:
              description: |
                Entity Tag of the response resource. Used by caches, or in conditional request.
              explode: false
              schema:
                type: string
              style: simple
            Location:
              description: |
                Location to the updated subscription.
              explode: false
              schema:
                type: string
              style: simple
        "202":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkflowResponse'
          description: |
            Accepted.
            The request has been accepted.
          headers:
            Location:
              description: |
                Location of the updated subscription.
              explode: false
              schema:
                type: string
              style: simple
        "304":
          content: {}
          description: |
            Not Modified.
            Empty body because the client has already the latest version of the requested resource.
        "400":
          content:
            application/json:
              example:
                code: 400
                message: Bad Request
                description: Invalid request or validation error
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Bad Request. Invalid request or validation error.
        "404":
          content: {}
          description: |
            Not Found.
            Requested Subscription does not exist.
        "415":
          content: {}
          description: |
            Unsupported media type.
            The entity of the request was in a not supported format.
      security:
      - OAuth2Security:
        - apim:subscribe
        - apim:sub_manage
      summary: |
        Update Existing Subscription
      tags:
      - Subscriptions
      x-code-samples:
      - lang: Curl
        source: 'curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8"
          -H "Content-Type: application/json" -X PUT -d @data.json "https://localhost:9443/api/am/devportal/v2/subscriptions/80369180-7d90-4ee8-99a1-19fa68512aa5"'
      x-contentType: application/json
      x-accepts: application/json
  /subscriptions/{subscriptionId}/usage:
    get:
      description: |
        This operation can be used to get details of a pending invoice for a monetized subscription with metered billing.
      parameters:
      - description: |
          Subscription Id
        explode: false
        in: path
        name: subscriptionId
        required: true
        schema:
          type: string
        style: simple
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/APIMonetizationUsage'
          description: |
            OK.
            Details of a pending invoice returned.
          headers:
            ETag:
              description: Entity Tag of the response resource. Used by caches, or
                in conditional requests (Will be supported in future).
              explode: false
              schema:
                type: string
              style: simple
            Last-Modified:
              description: Date and time the resource has been modified the last time.
                Used by caches, or in conditional requests (Will be supported in future).
              explode: false
              schema:
                type: string
              style: simple
            Content-Type:
              description: The content type of the body.
              explode: false
              schema:
                type: string
              style: simple
        "304":
          content: {}
          description: |
            Not Modified.
            Empty body because the client has already the latest version of the requested resource (Will be supported in future).
        "404":
          content:
            application/json:
              example:
                code: 404
                message: Not Found
                description: The specified resource does not exist
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Found. The specified resource does not exist.
      security:
      - OAuth2Security:
        - apim:subscribe
        - apim:sub_manage
      summary: Get Details of a Pending Invoice for a Monetized Subscription with
        Metered Billing.
      tags:
      - API Monetization
      x-code-samples:
      - lang: Curl
        source: 'curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8"
          "https://localhost:9443/api/am/devportal/v2/subscriptions/5b65808c-cdf2-43e1-a695-de63e3ad0ae9/usage"'
      x-accepts: application/json
  /throttling-policies/{policyLevel}:
    get:
      description: |
        Get available Throttling Policies
      parameters:
      - description: |
          Maximum size of resource array to return.
        explode: true
        in: query
        name: limit
        required: false
        schema:
          default: 25
          type: integer
        style: form
      - description: |
          Starting point within the complete list of items qualified.
        explode: true
        in: query
        name: offset
        required: false
        schema:
          default: 0
          type: integer
        style: form
      - description: |
          List Application or Subscription type thro.
        explode: false
        in: path
        name: policyLevel
        required: true
        schema:
          enum:
          - application
          - subscription
          type: string
        style: simple
      - description: |
          Validator for conditional requests; based on the ETag of the formerly retrieved
          variant of the resourec.
        explode: false
        in: header
        name: If-None-Match
        required: false
        schema:
          type: string
        style: simple
      - description: |
          For cross-tenant invocations, this is used to specify the tenant domain, where the resource need to be
            retrieved from.
        explode: false
        in: header
        name: X-WSO2-Tenant
        required: false
        schema:
          type: string
        style: simple
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ThrottlingPolicyList'
          description: |
            OK.
            List of throttling policies returned.
          headers:
            ETag:
              description: |
                Entity Tag of the response resource.
                Used by caches, or in conditional requests.
              explode: false
              schema:
                type: string
              style: simple
        "304":
          content: {}
          description: |
            Not Modified.
            Empty body because the client has already the latest version of the requested resource.
        "406":
          content:
            application/json:
              example:
                code: 406
                message: Not Acceptable
                description: The requested media type is not supported
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Acceptable. The requested media type is not supported.
      security:
      - OAuth2Security: []
      summary: Get All Available Throttling Policies
      tags:
      - Throttling Policies
      x-code-samples:
      - lang: Curl
        source: curl -k "https://localhost:9443/api/am/devportal/v2/throttling-policies/application"
      x-accepts: application/json
  /throttling-policies/{policyLevel}/{policyId}:
    get:
      description: |
        This operation can be used to retrieve details of a single throttling policy by specifying the policy level and policy name.

        `X-WSO2-Tenant` header can be used to retrive throttling policy that belongs to a different tenant domain. If not specified super tenant will be used. If Authorization header is present in the request, the user's tenant associated with the access token will be used.
      parameters:
      - description: |
          The name of the policy
        explode: false
        in: path
        name: policyId
        required: true
        schema:
          type: string
        style: simple
      - description: |
          List Application or Subscription type thro.
        explode: false
        in: path
        name: policyLevel
        required: true
        schema:
          enum:
          - application
          - subscription
          type: string
        style: simple
      - description: |
          For cross-tenant invocations, this is used to specify the tenant domain, where the resource need to be
            retrieved from.
        explode: false
        in: header
        name: X-WSO2-Tenant
        required: false
        schema:
          type: string
        style: simple
      - description: |
          Validator for conditional requests; based on the ETag of the formerly retrieved
          variant of the resourec.
        explode: false
        in: header
        name: If-None-Match
        required: false
        schema:
          type: string
        style: simple
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ThrottlingPolicy'
          description: |
            OK.
            Throttling Policy returned
          headers:
            ETag:
              description: |
                Entity Tag of the response resource.
                Used by caches, or in conditional requests.
              explode: false
              schema:
                type: string
              style: simple
            Last-Modified:
              description: |
                Date and time the resource has been modifed the last time.
                Used by caches, or in conditional requests.
              explode: false
              schema:
                type: string
              style: simple
        "304":
          content: {}
          description: |
            Not Modified.
            Empty body because the client has already the latest version of the requested resource.
        "404":
          content:
            application/json:
              example:
                code: 404
                message: Not Found
                description: The specified resource does not exist
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Found. The specified resource does not exist.
        "406":
          content:
            application/json:
              example:
                code: 406
                message: Not Acceptable
                description: The requested media type is not supported
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Acceptable. The requested media type is not supported.
      security:
      - OAuth2Security: []
      summary: |
        Get Details of a Throttling Policy
      tags:
      - Throttling Policies
      x-code-samples:
      - lang: Curl
        source: curl -k "https://localhost:9443/api/am/devportal/v2/throttling-policies/application/10PerMin"
      x-accepts: application/json
  /tags:
    get:
      description: |
        This operation can be used to retrieve a list of tags that are already added to APIs.

        `X-WSO2-Tenant` header can be used to retrive tags that belongs to a different tenant domain. If not specified super tenant will be used. If Authorization header is present in the request, the user's tenant associated with the access token will be used.

        **NOTE:**
        * This operation does not require an Authorization header by default. But in order to see a restricted API's tags, you need to provide Authorization header.
      parameters:
      - description: |
          Maximum size of resource array to return.
        explode: true
        in: query
        name: limit
        required: false
        schema:
          default: 25
          type: integer
        style: form
      - description: |
          Starting point within the complete list of items qualified.
        explode: true
        in: query
        name: offset
        required: false
        schema:
          default: 0
          type: integer
        style: form
      - description: |
          For cross-tenant invocations, this is used to specify the tenant domain, where the resource need to be
            retrieved from.
        explode: false
        in: header
        name: X-WSO2-Tenant
        required: false
        schema:
          type: string
        style: simple
      - description: |
          Validator for conditional requests; based on the ETag of the formerly retrieved
          variant of the resourec.
        explode: false
        in: header
        name: If-None-Match
        required: false
        schema:
          type: string
        style: simple
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TagList'
          description: |
            OK.
            Tag list is returned.
          headers:
            ETag:
              description: |
                Entity Tag of the response resource.
                Used by caches, or in conditional requests.
              explode: false
              schema:
                type: string
              style: simple
        "304":
          content: {}
          description: |
            Not Modified.
            Empty body because the client has already the latest version of the requested resource.
        "404":
          content:
            application/json:
              example:
                code: 404
                message: Not Found
                description: The specified resource does not exist
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Found. The specified resource does not exist.
        "406":
          content:
            application/json:
              example:
                code: 406
                message: Not Acceptable
                description: The requested media type is not supported
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Acceptable. The requested media type is not supported.
      security:
      - OAuth2Security: []
      summary: |
        Get All Tags
      tags:
      - Tags
      x-code-samples:
      - lang: Curl
        source: curl -k "https://localhost:9443/api/am/devportal/v2/tags"
      x-accepts: application/json
  /search:
    get:
      description: |
        This operation provides you a list of available APIs and API Documents qualifying the given keyword match.
      parameters:
      - description: |
          Maximum size of resource array to return.
        explode: true
        in: query
        name: limit
        required: false
        schema:
          default: 25
          type: integer
        style: form
      - description: |
          Starting point within the complete list of items qualified.
        explode: true
        in: query
        name: offset
        required: false
        schema:
          default: 0
          type: integer
        style: form
      - description: |
          For cross-tenant invocations, this is used to specify the tenant domain, where the resource need to be
            retrieved from.
        explode: false
        in: header
        name: X-WSO2-Tenant
        required: false
        schema:
          type: string
        style: simple
      - description: |
          **Search**.

          You can search by using providing the search term in the query parameters.
        explode: true
        in: query
        name: query
        required: false
        schema:
          type: string
        style: form
      - description: |
          Validator for conditional requests; based on the ETag of the formerly retrieved
          variant of the resourec.
        explode: false
        in: header
        name: If-None-Match
        required: false
        schema:
          type: string
        style: simple
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchResultList'
          description: |
            OK.
            List of qualifying APIs and docs is returned.
          headers:
            ETag:
              description: |
                Entity Tag of the response resource. Used by caches, or in conditional requests (Will be supported in future).
              explode: false
              schema:
                type: string
              style: simple
            Content-Type:
              description: The content type of the body.
              explode: false
              schema:
                type: string
              style: simple
        "304":
          content: {}
          description: |
            Not Modified.
            Empty body because the client has already the latest version of the requested resource (Will be supported in future).
        "406":
          content:
            application/json:
              example:
                code: 406
                message: Not Acceptable
                description: The requested media type is not supported
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Acceptable. The requested media type is not supported.
      security:
      - OAuth2Security: []
      summary: |
        Retrieve/Search APIs and API Documents by Content
      tags:
      - Unified Search
      x-code-samples:
      - lang: Curl
        source: curl -k "https://localhost:9443/api/am/devportal/v2/search?query=PizzaShackAPI"
      x-accepts: application/json
  /sdk-gen/languages:
    get:
      description: |
        This operation will provide a list of programming languages that are supported by the swagger codegen library for generating System Development Kits (SDKs) for APIs available in the API Manager Developer Portal
      responses:
        "200":
          content: {}
          description: |
            OK.
            List of supported languages for generating SDKs.
        "404":
          content:
            application/json:
              example:
                code: 404
                message: Not Found
                description: The specified resource does not exist
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Found. The specified resource does not exist.
        "500":
          content:
            application/json:
              example:
                code: 500
                message: Internal Server Error
                description: The server encountered an internal error. Please contact
                  administrator.
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Internal Server Error.
      security:
      - OAuth2Security:
        - apim:subscribe
      summary: |
        Get a List of Supported SDK Languages
      tags:
      - SDKs
      x-code-samples:
      - lang: Curl
        source: curl -k -H "Authorization:Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8"
          "https://localhost:9443/api/am/devportal/v2/sdk-gen/languages"
      x-accepts: application/json
  /webhooks/subscriptions:
    get:
      description: |
        This operation will provide a list of web hook topic subscriptions for a given application. If the api id is provided
        results will be filtered by the api Id.
      parameters:
      - description: |
          **Application Identifier** consisting of the UUID of the Application.
        explode: true
        in: query
        name: applicationId
        required: false
        schema:
          type: string
        style: form
      - description: |
          **API ID** consisting of the **UUID** of the API.
        explode: true
        in: query
        name: apiId
        required: false
        schema:
          type: string
        style: form
      - description: |
          For cross-tenant invocations, this is used to specify the tenant domain, where the resource need to be
            retrieved from.
        explode: false
        in: header
        name: X-WSO2-Tenant
        required: false
        schema:
          type: string
        style: simple
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookSubscriptionList'
          description: |
            OK.
            Topic list returned.
          headers:
            ETag:
              description: |
                Entity Tag of the response resource.
                Used by caches, or in conditional requests.
              explode: false
              schema:
                type: string
              style: simple
        "404":
          content:
            application/json:
              example:
                code: 404
                message: Not Found
                description: The specified resource does not exist
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Found. The specified resource does not exist.
        "500":
          content:
            application/json:
              example:
                code: 500
                message: Internal Server Error
                description: The server encountered an internal error. Please contact
                  administrator.
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Internal Server Error.
      security:
      - OAuth2Security: []
      summary: |
        Get available web hook subscriptions for a given application.
      tags:
      - Webhooks
      x-code-samples:
      - lang: Curl
        source: curl -k -H "Authorization:Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8"
          "https://localhost:9443/api/am/store/v1/webhooks/subscriptions/5b65808c-cdf2-43e1-a695-de63e3ad0ae9"
      x-accepts: application/json
  /settings:
    get:
      description: |
        Retreive Developer Portal Settings
      parameters:
      - description: |
          For cross-tenant invocations, this is used to specify the tenant domain, where the resource need to be
            retrieved from.
        explode: false
        in: header
        name: X-WSO2-Tenant
        required: false
        schema:
          type: string
        style: simple
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Settings'
          description: |
            OK.
            Settings returned
        "404":
          content:
            application/json:
              example:
                code: 404
                message: Not Found
                description: The specified resource does not exist
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Found. The specified resource does not exist.
      security:
      - OAuth2Security:
        - apim:store_settings
      summary: Retreive Developer Portal settings
      tags:
      - Settings
      x-code-samples:
      - lang: Curl
        source: 'curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8"
          "https://localhost:9443/api/am/devportal/v2/settings"'
      x-accepts: application/json
  /settings/application-attributes:
    get:
      description: |
        This operation can be used to retrieve the application attributes from configuration. It will not return hidden attributes.
      parameters:
      - description: |
          Validator for conditional requests; based on the ETag of the formerly retrieved
          variant of the resourec.
        explode: false
        in: header
        name: If-None-Match
        required: false
        schema:
          type: string
        style: simple
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApplicationAttributeList'
          description: |
            OK.
            Application attributes returned.
          headers:
            Content-Type:
              description: |
                The content type of the body.
              explode: false
              schema:
                type: string
              style: simple
        "404":
          content:
            application/json:
              example:
                code: 404
                message: Not Found
                description: The specified resource does not exist
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Found. The specified resource does not exist.
        "406":
          content:
            application/json:
              example:
                code: 406
                message: Not Acceptable
                description: The requested media type is not supported
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Acceptable. The requested media type is not supported.
      security:
      - OAuth2Security:
        - apim:subscribe
      summary: |
        Get All Application Attributes from Configuration
      tags:
      - Settings
      x-code-samples:
      - lang: Curl
        source: 'curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8"
          "https://localhost:9443/api/am/devportal/v2/settings/application-attributes"'
      x-accepts: application/json
  /tenants:
    get:
      description: |
        This operation is to get tenants by state
      parameters:
      - description: |
          The state represents the current state of the tenant

          Supported states are [ active, inactive]
        explode: true
        in: query
        name: state
        required: false
        schema:
          default: active
          enum:
          - active
          - inactive
          type: string
        style: form
      - description: |
          Maximum size of resource array to return.
        explode: true
        in: query
        name: limit
        required: false
        schema:
          default: 25
          type: integer
        style: form
      - description: |
          Starting point within the complete list of items qualified.
        explode: true
        in: query
        name: offset
        required: false
        schema:
          default: 0
          type: integer
        style: form
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TenantList'
          description: |
            OK.
            Tenant names returned.
          headers:
            Content-Type:
              description: |
                The content type of the body.
              explode: false
              schema:
                type: string
              style: simple
        "404":
          content:
            application/json:
              example:
                code: 404
                message: Not Found
                description: The specified resource does not exist
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Found. The specified resource does not exist.
        "406":
          content:
            application/json:
              example:
                code: 406
                message: Not Acceptable
                description: The requested media type is not supported
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Acceptable. The requested media type is not supported.
      security:
      - OAuth2Security: []
      summary: |
        Get Tenants by State
      tags:
      - Tenants
      x-code-samples:
      - lang: Curl
        source: curl -k "https://localhost:9443/api/am/devportal/v2/tenants"
      x-examples:
        $ref: docs/examples/tenants/tenants.yam
      x-accepts: application/json
  /recommendations:
    get:
      description: This API can be used to get recommended APIs for a user who logs
        into the API Developer Portal
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Recommendations'
          description: |
            OK.
            Requested recommendations are returned
          headers:
            ETag:
              description: |
                Entity Tag of the response resource. Used by caches, or in conditional requests
              explode: false
              schema:
                type: string
              style: simple
        "404":
          content:
            application/json:
              example:
                code: 404
                message: Not Found
                description: The specified resource does not exist
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Not Found. The specified resource does not exist.
      security:
      - OAuth2Security:
        - apim:subscribe
      summary: Give API Recommendations for a User
      tags:
      - Recommendations
      x-code-samples:
      - lang: Curl
        source: 'curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8"
          "https://localhost:9443/api/am/devportal/v2/recommendations"'
      x-accepts: application/json
  /api-categories:
    get:
      description: |
        Get all API categories
      parameters:
      - description: |
          For cross-tenant invocations, this is used to specify the tenant domain, where the resource need to be
            retrieved from.
        explode: false
        in: header
        name: X-WSO2-Tenant
        required: false
        schema:
          type: string
        style: simple
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/APICategoryList'
          description: |
            OK.
            Categories returned
      security:
      - OAuth2Security: []
      summary: Get All API Categories
      tags:
      - API Category (Collection)
      x-code-samples:
      - lang: Curl
        source: curl -k "https://localhost:9443/api/am/devportal/v2/api-categories"
      x-accepts: application/json
  /key-managers:
    get:
      description: |
        Get all Key managers
      parameters:
      - description: |
          For cross-tenant invocations, this is used to specify the tenant domain, where the resource need to be
            retrieved from.
        explode: false
        in: header
        name: X-WSO2-Tenant
        required: false
        schema:
          type: string
        style: simple
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/KeyManagerList'
          description: |
            OK.
            Categories returned
      security:
      - OAuth2Security:
        - apim:subscribe
      summary: Get All Key Managers
      tags:
      - Key Managers (Collection)
      x-code-samples:
      - lang: Curl
        source: 'curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8"
          "https://localhost:9443/api/am/devportal/v2/key-managers"'
      x-accepts: application/json
  /apis/{apiId}/graphql-policies/complexity:
    get:
      description: |
        This operation can be used to retrieve complexity related details belonging to an API by providing the API id.
      parameters:
      - description: |
          **API ID** consisting of the **UUID** of the API.
        explode: false
        in: path
        name: apiId
        required: true
        schema:
          type: string
        style: simple
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GraphQLQueryComplexityInfo'
          description: |
            OK.
            Requested complexity details returned.
          headers:
            Content-Type:
              description: |
                The content of the body.
              explode: false
              schema:
                default: application/json
                type: string
              style: simple
        "404":
          content: {}
          description: |
            Not Found.
            Requested API does not contain any complexity details.
      security:
      - OAuth2Security: []
      summary: Get the Complexity Related Details of an API
      tags:
      - GraphQL Policies
      x-code-samples:
      - lang: Curl
        source: curl -k "https://localhost:9443/api/am/devportal/v2/apis/e93fb282-b456-48fc-8981-003fb89086ae/graphql-policies/complexity"
      x-accepts: application/json
  /apis/{apiId}/graphql-policies/complexity/types:
    get:
      description: |
        This operation can be used to retrieve all types and fields of the GraphQL Schema by providing the API id.
      parameters:
      - description: |
          **API ID** consisting of the **UUID** of the API.
        explode: false
        in: path
        name: apiId
        required: true
        schema:
          type: string
        style: simple
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GraphQLSchemaTypeList'
          description: |
            OK.
            Types and fields returned successfully.
          headers:
            Content-Type:
              description: |
                The content of the body.
              explode: false
              schema:
                default: application/json
                type: string
              style: simple
        "404":
          content: {}
          description: |
            Not Found.
            Retrieving types and fields failed.
      security:
      - OAuth2Security: []
      summary: Retrieve Types and Fields of a GraphQL Schema
      tags:
      - GraphQL Policies
      x-code-samples:
      - lang: Curl
        source: curl -k "https://localhost:9443/api/am/devportal/v2/apis/e93fb282-b456-48fc-8981-003fb89086ae/graphql-policies/complexity/types"
      x-accepts: application/json
  /me/change-password:
    post:
      description: |
        Using this operation, logged-in user can change their password.
      operationId: changeUserPassword
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CurrentAndNewPasswords'
        description: |
          Current and new password of the user
        required: true
      responses:
        "200":
          content: {}
          description: OK. User password changed successfully
        "400":
          content:
            application/json:
              example:
                code: 400
                message: Bad Request
                description: Invalid request or validation error
                moreInfo: ""
                error: []
              schema:
                $ref: '#/components/schemas/Error'
          description: Bad Request. Invalid request or validation error.
      security:
      - OAuth2Security:
        - apim:subscribe
      summary: Change the Password of the user
      tags:
      - Users
      x-code-samples:
      - lang: Curl
        source: 'curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8"
          -H "Content-Type: application/json" -X POST -d @data.json "https://localhost:9443/api/am/devportal/v2/me/change-password"'
      x-contentType: application/json
      x-accepts: application/json
components:
  parameters:
    parentCommentID:
      description: |
        ID of the perent comment.
      explode: true
      in: query
      name: replyTo
      required: false
      schema:
        type: string
      style: form
    requestedTenant:
      description: |
        For cross-tenant invocations, this is used to specify the tenant domain, where the resource need to be
          retrieved from.
      explode: false
      in: header
      name: X-WSO2-Tenant
      required: false
      schema:
        type: string
      style: simple
    includeCommenterInfo:
      description: |
        Whether we need to display commentor details.
      explode: true
      in: query
      name: includeCommenterInfo
      required: false
      schema:
        default: false
        type: boolean
      style: form
    apiId:
      description: |
        **API ID** consisting of the **UUID** of the API.
      explode: false
      in: path
      name: apiId
      required: true
      schema:
        type: string
      style: simple
    apiProductId:
      description: |
        **API Product ID** consisting of the **UUID** of the API Product.
      explode: false
      in: path
      name: apiProductId
      required: true
      schema:
        type: string
        x-encoded: true
      style: simple
      x-encoded: true
    apiId-Q:
      description: |
        **API ID** consisting of the **UUID** of the API.
      explode: true
      in: query
      name: apiId
      required: false
      schema:
        type: string
      style: form
    apiType-Q:
      description: |
        **API TYPE** Identifies the type API(API or API_PRODUCT).
      explode: true
      in: query
      name: apiType
      required: false
      schema:
        type: string
      style: form
    language:
      description: |
        Programming language to generate SDK.
      explode: true
      in: query
      name: language
      required: true
      schema:
        type: string
      style: form
    documentId:
      description: |
        Document Identifier
      explode: false
      in: path
      name: documentId
      required: true
      schema:
        type: string
      style: simple
    applicationId:
      description: |
        Application Identifier consisting of the UUID of the Application.
      explode: false
      in: path
      name: applicationId
      required: true
      schema:
        type: string
      style: simple
    keyMappingId:
      description: |
        OAuth Key Identifier consisting of the UUID of the Oauth Key Mapping.
      explode: false
      in: path
      name: keyMappingId
      required: true
      schema:
        type: string
      style: simple
    filterByUserRoles:
      description: |
        Filter user by roles.
      explode: true
      in: query
      name: filterByUserRoles
      required: false
      schema:
        type: boolean
      style: form
    applicationId-Q:
      description: |
        **Application Identifier** consisting of the UUID of the Application.
      explode: true
      in: query
      name: applicationId
      required: false
      schema:
        type: string
      style: form
    groupId:
      description: |
        Application Group Id
      explode: true
      in: query
      name: groupId
      required: false
      schema:
        type: string
      style: form
    subscriptionId:
      description: |
        Subscription Id
      explode: false
      in: path
      name: subscriptionId
      required: true
      schema:
        type: string
      style: simple
    policyId:
      description: |
        The name of the policy
      explode: false
      in: path
      name: policyId
      required: true
      schema:
        type: string
      style: simple
    commentId:
      description: |
        Comment Id
      explode: false
      in: path
      name: commentId
      required: true
      schema:
        type: string
      style: simple
    ratingId:
      description: |
        Rating Id
      explode: false
      in: path
      name: ratingId
      required: true
      schema:
        type: string
      style: simple
    policyLevel:
      description: |
        List Application or Subscription type thro.
      explode: false
      in: path
      name: policyLevel
      required: true
      schema:
        enum:
        - application
        - subscription
        type: string
      style: simple
    environmentName:
      description: |
        Name of the API gateway environment.
      explode: true
      in: query
      name: environmentName
      required: false
      schema:
        type: string
      style: form
    limit:
      description: |
        Maximum size of resource array to return.
      explode: true
      in: query
      name: limit
      required: false
      schema:
        default: 25
        type: integer
      style: form
    offset:
      description: |
        Starting point within the complete list of items qualified.
      explode: true
      in: query
      name: offset
      required: false
      schema:
        default: 0
        type: integer
      style: form
    replyLimit:
      description: |
        Maximum size of replies array to return.
      explode: true
      in: query
      name: replyLimit
      required: false
      schema:
        default: 25
        type: integer
      style: form
    replyOffset:
      description: |
        Starting point within the complete list of replies.
      explode: true
      in: query
      name: replyOffset
      required: false
      schema:
        default: 0
        type: integer
      style: form
    keyType:
      description: |
        **Application Key Type** standing for the type of the keys (i.e. Production or Sandbox).
      explode: false
      in: path
      name: keyType
      required: true
      schema:
        enum:
        - PRODUCTION
        - SANDBOX
        type: string
      style: simple
    If-None-Match:
      description: |
        Validator for conditional requests; based on the ETag of the formerly retrieved
        variant of the resourec.
      explode: false
      in: header
      name: If-None-Match
      required: false
      schema:
        type: string
      style: simple
    If-Match:
      description: |
        Validator for conditional requests; based on ETag.
      explode: false
      in: header
      name: If-Match
      required: false
      schema:
        type: string
      style: simple
    alertType:
      description: |
        The alert type.
      explode: false
      in: path
      name: alertType
      required: true
      schema:
        type: string
      style: simple
    configurationId:
      description: |
        The alert configuration id.
        Base64 encoded value of 'apiName#apiVersion#applicationName'.
      explode: false
      in: path
      name: configurationId
      required: true
      schema:
        type: string
      style: simple
  requestBodies:
    Post_request_body:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Post_request_body'
      required: true
    Patch_request_body:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Patch_request_body'
      required: true
  responses:
    BadRequest:
      content:
        application/json:
          example:
            code: 400
            message: Bad Request
            description: Invalid request or validation error
            moreInfo: ""
            error: []
          schema:
            $ref: '#/components/schemas/Error'
      description: Bad Request. Invalid request or validation error.
    Conflict:
      content:
        application/json:
          example:
            code: 409
            message: Conflict
            description: Specified resource already exists
            moreInfo: ""
            error: []
          schema:
            $ref: '#/components/schemas/Error'
      description: Conflict. Specified resource already exists.
    InternalServerError:
      content:
        application/json:
          example:
            code: 500
            message: Internal Server Error
            description: The server encountered an internal error. Please contact
              administrator.
            moreInfo: ""
            error: []
          schema:
            $ref: '#/components/schemas/Error'
      description: Internal Server Error.
    NotAcceptable:
      content:
        application/json:
          example:
            code: 406
            message: Not Acceptable
            description: The requested media type is not supported
            moreInfo: ""
            error: []
          schema:
            $ref: '#/components/schemas/Error'
      description: Not Acceptable. The requested media type is not supported.
    NotFound:
      content:
        application/json:
          example:
            code: 404
            message: Not Found
            description: The specified resource does not exist
            moreInfo: ""
            error: []
          schema:
            $ref: '#/components/schemas/Error'
      description: Not Found. The specified resource does not exist.
    PreconditionFailed:
      content:
        application/json:
          example:
            code: 412
            message: Precondition Failed
            description: The request has not been performed because one of the preconditions
              is not met
            moreInfo: ""
            error: []
          schema:
            $ref: '#/components/schemas/Error'
      description: Precondition Failed. The request has not been performed because
        one of the preconditions is not met.
    Unauthorized:
      content:
        application/json:
          example:
            code: 401
            message: Unauthorized
            description: The user is not authorized
            moreInfo: ""
            error: []
          schema:
            $ref: '#/components/schemas/Error'
      description: Unauthorized. The user is not authorized.
    UnsupportedMediaType:
      content:
        application/json:
          example:
            code: 415
            message: Unsupported media type
            description: The entity of the request was not in a supported format
            moreInfo: ""
            error: []
          schema:
            $ref: '#/components/schemas/Error'
      description: Unsupported Media Type. The entity of the request was not in a
        supported format.
  schemas:
    APIList:
      example:
        count: 2
        list:
        - id: 01234567-0123-0123-0123-012345678901
          name: CalculatorAPI
          description: A calculator API that supports basic operations
          context: /CalculatorAPI
          version: 1.0.0
          provider: admin
          lifeCycleStatus: PUBLISHED
          thumbnailUri: /apis/01234567-0123-0123-0123-012345678901/thumbnail
        - id: 01123567-1233-5453-0212-12353678901
          name: PizzaShackAPI
          description: A Pizza ordering API
          context: /PizzaShackAPI
          version: 1.0.0
          provider: admin
          lifeCycleStatus: PUBLISHED
          thumbnailUri: /apis/01123567-1233-5453-0212-12353678901/thumbnail
        pagination:
          offset: 2
          limit: 2
          total: 10
          next: /apis?limit=2&offset=4
          previous: /apis?limit=2&offset=0
      properties:
        count:
          description: |
            Number of APIs returned.
          example: 1
          type: integer
        list:
          items:
            $ref: '#/components/schemas/APIInfo'
          type: array
        pagination:
          $ref: '#/components/schemas/Pagination'
      title: API List
      type: object
    APIInfo:
      example:
        monetizationLabel: Free
        description: A calculator API that supports basic operations
        throttlingPolicies:
        - Unlimited
        - Bronze
        type: WS
        version: 1.0.0
        isSubscriptionAvailable: false
        provider: admin
        businessInformation:
          technicalOwnerEmail: technicalowner@wso2.com
          businessOwnerEmail: businessowner@wso2.com
          businessOwner: businessowner
          technicalOwner: technicalowner
        name: CalculatorAPI
        context: CalculatorAPI
        advertiseInfo:
          apiOwner: admin
          advertised: true
          vendor: WSO2
          originalDevPortalUrl: https://localhost:9443/devportal
        createdTime: "1614020559444"
        avgRating: "4.5"
        id: 01234567-0123-0123-0123-012345678901
        thumbnailUri: /apis/01234567-0123-0123-0123-012345678901/thumbnail
        lifeCycleStatus: PUBLISHED
      properties:
        id:
          example: 01234567-0123-0123-0123-012345678901
          type: string
        name:
          example: CalculatorAPI
          type: string
        description:
          example: A calculator API that supports basic operations
          type: string
        context:
          example: CalculatorAPI
          type: string
        version:
          example: 1.0.0
          type: string
        type:
          example: WS
          type: string
        createdTime:
          example: "1614020559444"
          type: string
        provider:
          description: |
            If the provider value is not given, the user invoking the API will be used as the provider.
          example: admin
          type: string
        lifeCycleStatus:
          example: PUBLISHED
          type: string
        thumbnailUri:
          example: /apis/01234567-0123-0123-0123-012345678901/thumbnail
          type: string
        avgRating:
          description: Average rating of the API
          example: "4.5"
          type: string
        throttlingPolicies:
          description: List of throttling policies of the API
          example:
          - Unlimited
          - Bronze
          items:
            type: string
          type: array
        advertiseInfo:
          $ref: '#/components/schemas/AdvertiseInfo'
        businessInformation:
          $ref: '#/components/schemas/APIBusinessInformation'
        isSubscriptionAvailable:
          example: false
          type: boolean
        monetizationLabel:
          example: Free
          type: string
      title: API Info object with basic API details.
      type: object
    APIInfoList:
      properties:
        count:
          description: |
            Number of API Info objects returned.
          example: 1
          type: integer
        list:
          items:
            $ref: '#/components/schemas/APIInfo'
          type: array
      title: API Info List
      type: object
    API:
      example:
        tiers:
        - tierName: Gold
          tierPlan: COMMERCIAL
          monetizationAttributes:
            currencyType: USD
            pricePerRequest: "1"
            billingCycle: month
            fixedPrice: "10"
        - tierName: Gold
          tierPlan: COMMERCIAL
          monetizationAttributes:
            currencyType: USD
            pricePerRequest: "1"
            billingCycle: month
            fixedPrice: "10"
        monetization:
          enabled: true
        description: A calculator API that supports basic operations
        apiDefinition: '{"paths":{"\/substract":{"get":{"x-auth-type":"Application
          & Application User","x-throttling-tier":"Unlimited","parameters":[{"name":"x","required":true,"type":"string","in":"query"},{"name":"y","required":true,"type":"string","in":"query"}],"responses":{"200":{}}}},"\/add":{"get":{"x-auth-type":"Application
          & Application User","x-throttling-tier":"Unlimited","parameters":[{"name":"x","required":true,"type":"string","in":"query"},{"name":"y","required":true,"type":"string","in":"query"}],"responses":{"200":{}}}}},"swagger":"2.0","info":{"title":"CalculatorAPI","version":"1.0.0"}}'
        authorizationHeader: Authorization
        type: WS
        operations: []
        provider: admin
        endpointURLs:
        - URLs:
            wss: wss://localhost:9099/phoneverify/1.0.0
            http: http://localhost:8280/phoneverify/1.0.0
            https: https://localhost:8243/phoneverify/1.0.0
            ws: ws://localhost:9099/phoneverify/1.0.0
          environmentName: Default
          environmentType: hybrid
          environmentDisplayName: Default
          defaultVersionURLs:
            wss: ws://localhost:9099/phoneverify/
            http: http://localhost:8280/phoneverify/
            https: https://localhost:8243/phoneverify/
            ws: ws://localhost:9099/phoneverify/
        - URLs:
            wss: wss://localhost:9099/phoneverify/1.0.0
            http: http://localhost:8280/phoneverify/1.0.0
            https: https://localhost:8243/phoneverify/1.0.0
            ws: ws://localhost:9099/phoneverify/1.0.0
          environmentName: Default
          environmentType: hybrid
          environmentDisplayName: Default
          defaultVersionURLs:
            wss: ws://localhost:9099/phoneverify/
            http: http://localhost:8280/phoneverify/
            https: https://localhost:8243/phoneverify/
            ws: ws://localhost:9099/phoneverify/
        context: CalculatorAPI
        createdTime: 2020-10-31T13:57:16.229
        avgRating: "4.5"
        lastUpdatedTime: 2020-10-31T13:57:16.229
        id: 01234567-0123-0123-0123-012345678901
        categories:
        - categories
        - categories
        wsdlUri: http://www.webservicex.com/globalweather.asmx?wsdl
        hasThumbnail: true
        transport:
        - http
        - https
        version: 1.0.0
        isSubscriptionAvailable: false
        tags:
        - substract
        - add
        isDefaultVersion: false
        gatewayVendor: wso2
        asyncTransportProtocols:
        - http
        - mqtt
        businessInformation:
          technicalOwnerEmail: technicalowner@wso2.com
          businessOwnerEmail: businessowner@wso2.com
          businessOwner: businessowner
          technicalOwner: technicalowner
        securityScheme:
        - oauth2
        - oauth_basic_auth_api_key_mandatory
        name: CalculatorAPI
        advertiseInfo:
          apiOwner: admin
          advertised: true
          vendor: WSO2
          originalDevPortalUrl: https://localhost:9443/devportal
        environmentList:
        - PRODUCTION
        - SANDBOX
        keyManagers: '{}'
        additionalProperties: {}
        scopes:
        - roles:
          - manager
          - developer
          name: admin scope
          description: description
          key: admin_scope
        - roles:
          - manager
          - developer
          name: admin scope
          description: description
          key: admin_scope
        lifeCycleStatus: PUBLISHED
      properties:
        id:
          description: |
            UUID of the api
          example: 01234567-0123-0123-0123-012345678901
          type: string
        name:
          description: Name of the API
          example: CalculatorAPI
          type: string
        description:
          description: A brief description about the API
          example: A calculator API that supports basic operations
          type: string
        context:
          description: A string that represents thecontext of the user's request
          example: CalculatorAPI
          type: string
        version:
          description: The version of the API
          example: 1.0.0
          type: string
        provider:
          description: |
            If the provider value is not given user invoking the api will be used as the provider.
          example: admin
          type: string
        apiDefinition:
          description: |
            Swagger definition of the API which contains details about URI templates and scopes
          example: '{"paths":{"\/substract":{"get":{"x-auth-type":"Application & Application
            User","x-throttling-tier":"Unlimited","parameters":[{"name":"x","required":true,"type":"string","in":"query"},{"name":"y","required":true,"type":"string","in":"query"}],"responses":{"200":{}}}},"\/add":{"get":{"x-auth-type":"Application
            & Application User","x-throttling-tier":"Unlimited","parameters":[{"name":"x","required":true,"type":"string","in":"query"},{"name":"y","required":true,"type":"string","in":"query"}],"responses":{"200":{}}}}},"swagger":"2.0","info":{"title":"CalculatorAPI","version":"1.0.0"}}'
          type: string
        wsdlUri:
          description: |
            WSDL URL if the API is based on a WSDL endpoint
          example: http://www.webservicex.com/globalweather.asmx?wsdl
          type: string
        lifeCycleStatus:
          description: This describes in which status of the lifecycle the API is.
          example: PUBLISHED
          type: string
        isDefaultVersion:
          example: false
          type: boolean
        type:
          description: This describes the transport type of the API
          example: WS
          type: string
        transport:
          example:
          - http
          - https
          items:
            description: |
              Supported transports for the API (http and/or https).
            type: string
          type: array
        operations:
          example: []
          items:
            $ref: '#/components/schemas/APIOperations'
          type: array
        authorizationHeader:
          description: |
            Name of the Authorization header used for invoking the API. If it is not set, Authorization header name specified
            in tenant or system level will be used.
          example: Authorization
          type: string
        securityScheme:
          description: |
            Types of API security, the current API secured with. It can be either OAuth2 or mutual SSL or both. If
            it is not set OAuth2 will be set as the security for the current API.
          example:
          - oauth2
          - oauth_basic_auth_api_key_mandatory
          items:
            type: string
          type: array
        tags:
          description: Search keywords related to the API
          example:
          - substract
          - add
          items:
            type: string
          type: array
        tiers:
          description: The subscription tiers selected for the particular API
          items:
            $ref: '#/components/schemas/API_tiers'
          type: array
        hasThumbnail:
          default: false
          example: true
          type: boolean
        additionalProperties:
          description: |
            Custom(user defined) properties of API
          example: {}
          items:
            $ref: '#/components/schemas/API_additionalProperties'
          type: array
        monetization:
          $ref: '#/components/schemas/APIMonetizationInfo'
        endpointURLs:
          items:
            $ref: '#/components/schemas/API_endpointURLs'
          type: array
        businessInformation:
          $ref: '#/components/schemas/APIBusinessInformation'
        environmentList:
          description: The environment list configured with non empty endpoint URLs
            for the particular API.
          example:
          - PRODUCTION
          - SANDBOX
          items:
            type: string
          type: array
        scopes:
          items:
            $ref: '#/components/schemas/ScopeInfo'
          type: array
        avgRating:
          description: The average rating of the API
          example: "4.5"
          type: string
        advertiseInfo:
          $ref: '#/components/schemas/AdvertiseInfo'
        isSubscriptionAvailable:
          example: false
          type: boolean
        categories:
          description: |
            API categories
          items:
            type: string
          type: array
        keyManagers:
          description: |
            API Key Managers
          properties: {}
          type: object
        createdTime:
          example: 2020-10-31T13:57:16.229
          type: string
        lastUpdatedTime:
          example: 2020-10-31T13:57:16.229
          type: string
        gatewayVendor:
          example: wso2
          title: Gateway vendor of the API
          type: string
        asyncTransportProtocols:
          description: |
            Supported transports for the aync API.
          example:
          - http
          - mqtt
          items:
            type: string
          type: array
      required:
      - context
      - lifeCycleStatus
      - name
      - provider
      - version
      title: API object
      type: object
    APIMonetizationInfo:
      example:
        enabled: true
      properties:
        enabled:
          description: Flag to indicate the monetization status
          example: true
          type: boolean
      required:
      - enabled
      title: API monetization object
      type: object
    ApplicationList:
      example:
        pagination:
          next: next
          total: 10
          offset: 0
          previous: previous
          limit: 1
        count: 1
        list:
        - owner: admin
          name: CalculatorApp
          subscriptionCount: 0
          description: Sample calculator application
          groups:
          - groups
          - groups
          attributes: External Reference ID, Billing Tier
          throttlingPolicy: Unlimited
          applicationId: 01234567-0123-0123-0123-012345678901
          status: APPROVED
        - owner: admin
          name: CalculatorApp
          subscriptionCount: 0
          description: Sample calculator application
          groups:
          - groups
          - groups
          attributes: External Reference ID, Billing Tier
          throttlingPolicy: Unlimited
          applicationId: 01234567-0123-0123-0123-012345678901
          status: APPROVED
      properties:
        count:
          description: |
            Number of applications returned.
          example: 1
          type: integer
        list:
          items:
            $ref: '#/components/schemas/ApplicationInfo'
          type: array
        pagination:
          $ref: '#/components/schemas/Pagination'
      title: Application List
      type: object
    Application:
      example:
        owner: admin
        keys: []
        subscriptionCount: 0
        description: Sample calculator application
        groups: []
        throttlingPolicy: Unlimited
        hashEnabled: false
        subscriptionScopes: []
        name: CalculatorApp
        attributes: {}
        applicationId: 01234567-0123-0123-0123-012345678901
        tokenType: JWT
        status: APPROVED
      properties:
        applicationId:
          example: 01234567-0123-0123-0123-012345678901
          readOnly: true
          type: string
        name:
          example: CalculatorApp
          maxLength: 100
          minLength: 1
          type: string
        throttlingPolicy:
          example: Unlimited
          minLength: 1
          type: string
        description:
          example: Sample calculator application
          maxLength: 512
          type: string
        tokenType:
          default: JWT
          description: |
            Type of the access token generated for this application.

            **OAUTH:** A UUID based access token
            **JWT:** A self-contained, signed JWT based access token which is issued by default.
          enum:
          - OAUTH
          - JWT
          example: JWT
          type: string
        status:
          default: ""
          example: APPROVED
          readOnly: true
          type: string
        groups:
          example: []
          items:
            type: string
          type: array
        subscriptionCount:
          readOnly: true
          type: integer
        keys:
          example: []
          items:
            $ref: '#/components/schemas/ApplicationKey'
          readOnly: true
          type: array
        attributes:
          additionalProperties:
            type: string
          example: {}
          type: object
        subscriptionScopes:
          example: []
          items:
            $ref: '#/components/schemas/ScopeInfo'
          type: array
        owner:
          description: |
            Application created user
          example: admin
          readOnly: true
          type: string
        hashEnabled:
          example: false
          readOnly: true
          type: boolean
      required:
      - name
      - throttlingPolicy
      title: Application
      type: object
    ApplicationInfo:
      example:
        owner: admin
        name: CalculatorApp
        subscriptionCount: 0
        description: Sample calculator application
        groups:
        - groups
        - groups
        attributes: External Reference ID, Billing Tier
        throttlingPolicy: Unlimited
        applicationId: 01234567-0123-0123-0123-012345678901
        status: APPROVED
      properties:
        applicationId:
          example: 01234567-0123-0123-0123-012345678901
          type: string
        name:
          example: CalculatorApp
          type: string
        throttlingPolicy:
          example: Unlimited
          type: string
        description:
          example: Sample calculator application
          type: string
        status:
          default: ""
          example: APPROVED
          type: string
        groups:
          items:
            type: string
          type: array
        subscriptionCount:
          type: integer
        attributes:
          example: External Reference ID, Billing Tier
          properties: {}
          type: object
        owner:
          example: admin
          type: string
      title: Application info object with basic application details
      type: object
    DocumentList:
      example:
        pagination:
          next: next
          total: 10
          offset: 0
          previous: previous
          limit: 1
        count: 1
        list:
        - summary: Summary of Calculator Documentation
          sourceUrl: sourceUrl
          sourceType: INLINE
          otherTypeName: otherTypeName
          name: CalculatorDoc
          documentId: 01234567-0123-0123-0123-012345678901
          type: HOWTO
        - summary: Summary of Calculator Documentation
          sourceUrl: sourceUrl
          sourceType: INLINE
          otherTypeName: otherTypeName
          name: CalculatorDoc
          documentId: 01234567-0123-0123-0123-012345678901
          type: HOWTO
      properties:
        count:
          description: |
            Number of Documents returned.
          example: 1
          type: integer
        list:
          items:
            $ref: '#/components/schemas/Document'
          type: array
        pagination:
          $ref: '#/components/schemas/Pagination'
      title: Document List
      type: object
    Document:
      example:
        summary: Summary of Calculator Documentation
        sourceUrl: sourceUrl
        sourceType: INLINE
        otherTypeName: otherTypeName
        name: CalculatorDoc
        documentId: 01234567-0123-0123-0123-012345678901
        type: HOWTO
      properties:
        documentId:
          example: 01234567-0123-0123-0123-012345678901
          type: string
        name:
          example: CalculatorDoc
          type: string
        type:
          enum:
          - HOWTO
          - SAMPLES
          - PUBLIC_FORUM
          - SUPPORT_FORUM
          - API_MESSAGE_FORMAT
          - SWAGGER_DOC
          - OTHER
          example: HOWTO
          type: string
        summary:
          example: Summary of Calculator Documentation
          type: string
        sourceType:
          enum:
          - INLINE
          - MARKDOWN
          - URL
          - FILE
          example: INLINE
          type: string
        sourceUrl:
          type: string
        otherTypeName:
          type: string
      required:
      - name
      - sourceType
      - type
      title: Document
      type: object
    ThrottlingPolicyList:
      example:
        pagination:
          next: next
          total: 10
          offset: 0
          previous: previous
          limit: 1
        count: 1
        list:
        - requestCount: 50
          stopOnQuotaReach: true
          rateLimitTimeUnit: min
          description: Allows 50 request(s) per minute.
          dataUnit: KB
          policyLevel: subscription
          rateLimitCount: 10
          tierPlan: FREE
          name: Platinum
          throttlingPolicyPermissions:
            roles:
            - manager
            - developer
            type: allow
          attributes: {}
          monetizationAttributes:
            currencyType: USD
            billingType: fixedPrice
            pricePerRequest: "1"
            billingCycle: month
            fixedPrice: "10"
          unitTime: 60000
          timeUnit: min
          quotaPolicyType: REQUESTCOUNT
        - requestCount: 50
          stopOnQuotaReach: true
          rateLimitTimeUnit: min
          description: Allows 50 request(s) per minute.
          dataUnit: KB
          policyLevel: subscription
          rateLimitCount: 10
          tierPlan: FREE
          name: Platinum
          throttlingPolicyPermissions:
            roles:
            - manager
            - developer
            type: allow
          attributes: {}
          monetizationAttributes:
            currencyType: USD
            billingType: fixedPrice
            pricePerRequest: "1"
            billingCycle: month
            fixedPrice: "10"
          unitTime: 60000
          timeUnit: min
          quotaPolicyType: REQUESTCOUNT
      properties:
        count:
          description: |
            Number of Throttling Policies returned.
          example: 1
          type: integer
        list:
          items:
            $ref: '#/components/schemas/ThrottlingPolicy'
          type: array
        pagination:
          $ref: '#/components/schemas/Pagination'
      title: Throttling Policy List
      type: object
    ThrottlingPolicy:
      example:
        requestCount: 50
        stopOnQuotaReach: true
        rateLimitTimeUnit: min
        description: Allows 50 request(s) per minute.
        dataUnit: KB
        policyLevel: subscription
        rateLimitCount: 10
        tierPlan: FREE
        name: Platinum
        throttlingPolicyPermissions:
          roles:
          - manager
          - developer
          type: allow
        attributes: {}
        monetizationAttributes:
          currencyType: USD
          billingType: fixedPrice
          pricePerRequest: "1"
          billingCycle: month
          fixedPrice: "10"
        unitTime: 60000
        timeUnit: min
        quotaPolicyType: REQUESTCOUNT
      properties:
        name:
          example: Platinum
          type: string
        description:
          example: Allows 50 request(s) per minute.
          type: string
        policyLevel:
          enum:
          - application
          - subscription
          example: subscription
          type: string
        attributes:
          additionalProperties:
            type: string
          description: |
            Custom attributes added to the throttling policy
          example: {}
          type: object
        requestCount:
          description: |
            Maximum number of requests which can be sent within a provided unit time
          example: 50
          format: int64
          type: integer
        dataUnit:
          description: |
            Unit of data allowed to be transfered. Allowed values are "KB", "MB" and "GB"
          example: KB
          type: string
        unitTime:
          example: 60000
          format: int64
          type: integer
        timeUnit:
          example: min
          type: string
        rateLimitCount:
          default: 0
          description: Burst control request count
          example: 10
          type: integer
        rateLimitTimeUnit:
          description: Burst control time unit
          example: min
          type: string
        quotaPolicyType:
          description: Default quota limit type
          enum:
          - REQUESTCOUNT
          - BANDWIDTHVOLUME
          example: REQUESTCOUNT
          type: string
        tierPlan:
          description: |
            This attribute declares whether this tier is available under commercial or free
          enum:
          - FREE
          - COMMERCIAL
          example: FREE
          type: string
        stopOnQuotaReach:
          description: |
            If this attribute is set to false, you are capabale of sending requests
            even if the request count exceeded within a unit time
          example: true
          type: boolean
        monetizationAttributes:
          $ref: '#/components/schemas/MonetizationInfo'
        throttlingPolicyPermissions:
          $ref: '#/components/schemas/ThrottlingPolicyPermissionInfo'
      required:
      - name
      - requestCount
      - stopOnQuotaReach
      - tierPlan
      - unitTime
      title: Throttling Policy
      type: object
    SubscriptionList:
      example:
        pagination:
          next: next
          total: 10
          offset: 0
          previous: previous
          limit: 1
        count: 1
        list:
        - requestedThrottlingPolicy: Unlimited
          redirectionParams: redirectionParams
          throttlingPolicy: Unlimited
          subscriptionId: faae5fcc-cbae-40c4-bf43-89931630d313
          applicationId: b3ade481-30b0-4b38-9a67-498a40873a6d
          apiInfo:
            monetizationLabel: Free
            description: A calculator API that supports basic operations
            throttlingPolicies:
            - Unlimited
            - Bronze
            type: WS
            version: 1.0.0
            isSubscriptionAvailable: false
            provider: admin
            businessInformation:
              technicalOwnerEmail: technicalowner@wso2.com
              businessOwnerEmail: businessowner@wso2.com
              businessOwner: businessowner
              technicalOwner: technicalowner
            name: CalculatorAPI
            context: CalculatorAPI
            advertiseInfo:
              apiOwner: admin
              advertised: true
              vendor: WSO2
              originalDevPortalUrl: https://localhost:9443/devportal
            createdTime: "1614020559444"
            avgRating: "4.5"
            id: 01234567-0123-0123-0123-012345678901
            thumbnailUri: /apis/01234567-0123-0123-0123-012345678901/thumbnail
            lifeCycleStatus: PUBLISHED
          applicationInfo:
            owner: admin
            name: CalculatorApp
            subscriptionCount: 0
            description: Sample calculator application
            groups:
            - groups
            - groups
            attributes: External Reference ID, Billing Tier
            throttlingPolicy: Unlimited
            applicationId: 01234567-0123-0123-0123-012345678901
            status: APPROVED
          apiId: 2962f3bb-8330-438e-baee-0ee1d6434ba4
          status: UNBLOCKED
        - requestedThrottlingPolicy: Unlimited
          redirectionParams: redirectionParams
          throttlingPolicy: Unlimited
          subscriptionId: faae5fcc-cbae-40c4-bf43-89931630d313
          applicationId: b3ade481-30b0-4b38-9a67-498a40873a6d
          apiInfo:
            monetizationLabel: Free
            description: A calculator API that supports basic operations
            throttlingPolicies:
            - Unlimited
            - Bronze
            type: WS
            version: 1.0.0
            isSubscriptionAvailable: false
            provider: admin
            businessInformation:
              technicalOwnerEmail: technicalowner@wso2.com
              businessOwnerEmail: businessowner@wso2.com
              businessOwner: businessowner
              technicalOwner: technicalowner
            name: CalculatorAPI
            context: CalculatorAPI
            advertiseInfo:
              apiOwner: admin
              advertised: true
              vendor: WSO2
              originalDevPortalUrl: https://localhost:9443/devportal
            createdTime: "1614020559444"
            avgRating: "4.5"
            id: 01234567-0123-0123-0123-012345678901
            thumbnailUri: /apis/01234567-0123-0123-0123-012345678901/thumbnail
            lifeCycleStatus: PUBLISHED
          applicationInfo:
            owner: admin
            name: CalculatorApp
            subscriptionCount: 0
            description: Sample calculator application
            groups:
            - groups
            - groups
            attributes: External Reference ID, Billing Tier
            throttlingPolicy: Unlimited
            applicationId: 01234567-0123-0123-0123-012345678901
            status: APPROVED
          apiId: 2962f3bb-8330-438e-baee-0ee1d6434ba4
          status: UNBLOCKED
      properties:
        count:
          description: |
            Number of Subscriptions returned.
          example: 1
          type: integer
        list:
          items:
            $ref: '#/components/schemas/Subscription'
          type: array
        pagination:
          $ref: '#/components/schemas/Pagination'
      title: Subscription List
      type: object
    TopicList:
      example:
        pagination:
          next: next
          total: 10
          offset: 0
          previous: previous
          limit: 1
        count: 1
        list:
        - name: orderBooks
          type: publisher
          apiId: faae5fcc-cbae-40c4-bf43-89931630d313
        - name: orderBooks
          type: publisher
          apiId: faae5fcc-cbae-40c4-bf43-89931630d313
      properties:
        count:
          description: |
            Number of Topics returned.
          example: 1
          type: integer
        list:
          items:
            $ref: '#/components/schemas/Topic'
          type: array
        pagination:
          $ref: '#/components/schemas/Pagination'
      title: Topic List
      type: object
    Topic:
      example:
        name: orderBooks
        type: publisher
        apiId: faae5fcc-cbae-40c4-bf43-89931630d313
      properties:
        apiId:
          example: faae5fcc-cbae-40c4-bf43-89931630d313
          type: string
        name:
          example: orderBooks
          type: string
        type:
          example: publisher
          type: string
      title: Topic
      type: object
    WebhookSubscriptionList:
      example:
        pagination:
          next: next
          total: 10
          offset: 0
          previous: previous
          limit: 1
        count: 1
        list:
        - callBackUrl: www.orderbooksite.com
          deliveryTime: faae5fcc-cbae-40c4-bf43-89931630d313
          appId: faae5fcc-cbae-40c4-bf43-89931630d313
          topic: orderBooks
          apiId: faae5fcc-cbae-40c4-bf43-89931630d313
          deliveryStatus: 1
        - callBackUrl: www.orderbooksite.com
          deliveryTime: faae5fcc-cbae-40c4-bf43-89931630d313
          appId: faae5fcc-cbae-40c4-bf43-89931630d313
          topic: orderBooks
          apiId: faae5fcc-cbae-40c4-bf43-89931630d313
          deliveryStatus: 1
      properties:
        count:
          description: |
            Number of webhook subscriptions returned.
          example: 1
          type: integer
        list:
          items:
            $ref: '#/components/schemas/WebhookSubscription'
          type: array
        pagination:
          $ref: '#/components/schemas/Pagination'
      title: Subscribed Webhook List
      type: object
    WebhookSubscription:
      example:
        callBackUrl: www.orderbooksite.com
        deliveryTime: faae5fcc-cbae-40c4-bf43-89931630d313
        appId: faae5fcc-cbae-40c4-bf43-89931630d313
        topic: orderBooks
        apiId: faae5fcc-cbae-40c4-bf43-89931630d313
        deliveryStatus: 1
      properties:
        apiId:
          example: faae5fcc-cbae-40c4-bf43-89931630d313
          type: string
        appId:
          example: faae5fcc-cbae-40c4-bf43-89931630d313
          type: string
        topic:
          example: orderBooks
          type: string
        callBackUrl:
          example: www.orderbooksite.com
          type: string
        deliveryTime:
          example: faae5fcc-cbae-40c4-bf43-89931630d313
          type: string
        deliveryStatus:
          example: 1
          type: integer
      title: Webhook Subscription
      type: object
    APIBusinessInformation:
      example:
        technicalOwnerEmail: technicalowner@wso2.com
        businessOwnerEmail: businessowner@wso2.com
        businessOwner: businessowner
        technicalOwner: technicalowner
      properties:
        businessOwner:
          example: businessowner
          type: string
        businessOwnerEmail:
          example: businessowner@wso2.com
          type: string
        technicalOwner:
          example: technicalowner
          type: string
        technicalOwnerEmail:
          example: technicalowner@wso2.com
          type: string
      type: object
    Subscription:
      example:
        requestedThrottlingPolicy: Unlimited
        redirectionParams: redirectionParams
        throttlingPolicy: Unlimited
        subscriptionId: faae5fcc-cbae-40c4-bf43-89931630d313
        applicationId: b3ade481-30b0-4b38-9a67-498a40873a6d
        apiInfo:
          monetizationLabel: Free
          description: A calculator API that supports basic operations
          throttlingPolicies:
          - Unlimited
          - Bronze
          type: WS
          version: 1.0.0
          isSubscriptionAvailable: false
          provider: admin
          businessInformation:
            technicalOwnerEmail: technicalowner@wso2.com
            businessOwnerEmail: businessowner@wso2.com
            businessOwner: businessowner
            technicalOwner: technicalowner
          name: CalculatorAPI
          context: CalculatorAPI
          advertiseInfo:
            apiOwner: admin
            advertised: true
            vendor: WSO2
            originalDevPortalUrl: https://localhost:9443/devportal
          createdTime: "1614020559444"
          avgRating: "4.5"
          id: 01234567-0123-0123-0123-012345678901
          thumbnailUri: /apis/01234567-0123-0123-0123-012345678901/thumbnail
          lifeCycleStatus: PUBLISHED
        applicationInfo:
          owner: admin
          name: CalculatorApp
          subscriptionCount: 0
          description: Sample calculator application
          groups:
          - groups
          - groups
          attributes: External Reference ID, Billing Tier
          throttlingPolicy: Unlimited
          applicationId: 01234567-0123-0123-0123-012345678901
          status: APPROVED
        apiId: 2962f3bb-8330-438e-baee-0ee1d6434ba4
        status: UNBLOCKED
      properties:
        subscriptionId:
          description: The UUID of the subscription
          example: faae5fcc-cbae-40c4-bf43-89931630d313
          readOnly: true
          type: string
        applicationId:
          description: The UUID of the application
          example: b3ade481-30b0-4b38-9a67-498a40873a6d
          type: string
        apiId:
          description: The unique identifier of the API.
          example: 2962f3bb-8330-438e-baee-0ee1d6434ba4
          type: string
        apiInfo:
          $ref: '#/components/schemas/APIInfo'
        applicationInfo:
          $ref: '#/components/schemas/ApplicationInfo'
        throttlingPolicy:
          example: Unlimited
          type: string
        requestedThrottlingPolicy:
          example: Unlimited
          type: string
        status:
          enum:
          - BLOCKED
          - PROD_ONLY_BLOCKED
          - UNBLOCKED
          - ON_HOLD
          - REJECTED
          - TIER_UPDATE_PENDING
          example: UNBLOCKED
          type: string
        redirectionParams:
          description: A url and other parameters the subscriber can be redirected.
          readOnly: true
          type: string
      required:
      - applicationId
      - throttlingPolicy
      title: Subscription
      type: object
    Tag:
      example:
        count: 5
        value: tag1
      properties:
        value:
          example: tag1
          type: string
        count:
          example: 5
          type: integer
      title: Tag
      type: object
    TagList:
      example:
        pagination:
          next: next
          total: 10
          offset: 0
          previous: previous
          limit: 1
        count: 1
        list:
        - count: 5
          value: tag1
        - count: 5
          value: tag1
      properties:
        count:
          description: |
            Number of Tags returned.
          example: 1
          type: integer
        list:
          items:
            $ref: '#/components/schemas/Tag'
          type: array
        pagination:
          $ref: '#/components/schemas/Pagination'
      title: Tag List
      type: object
    Rating:
      example:
        ratedBy: admin
        ratingId: 32acfa7a-77f8-4fe0-bb7f-a902f36546d0
        rating: 4
        apiId: e93fb282-b456-48fc-8981-003fb89086ae
      properties:
        ratingId:
          example: 32acfa7a-77f8-4fe0-bb7f-a902f36546d0
          readOnly: true
          type: string
        apiId:
          example: e93fb282-b456-48fc-8981-003fb89086ae
          readOnly: true
          type: string
        ratedBy:
          example: admin
          maxLength: 50
          readOnly: true
          type: string
        rating:
          example: 4
          type: integer
      required:
      - rating
      title: Rating
      type: object
    RatingList:
      example:
        pagination:
          next: next
          total: 10
          offset: 0
          previous: previous
          limit: 1
        count: 1
        avgRating: "4"
        list:
        - ratedBy: admin
          ratingId: 32acfa7a-77f8-4fe0-bb7f-a902f36546d0
          rating: 4
          apiId: e93fb282-b456-48fc-8981-003fb89086ae
        - ratedBy: admin
          ratingId: 32acfa7a-77f8-4fe0-bb7f-a902f36546d0
          rating: 4
          apiId: e93fb282-b456-48fc-8981-003fb89086ae
        userRating: 4
      properties:
        avgRating:
          description: |
            Average Rating of the API
          example: "4"
          type: string
        userRating:
          description: |
            Rating given by the user
          example: 4
          type: integer
        count:
          description: |
            Number of Subscriber Ratings returned.
          example: 1
          type: integer
        list:
          items:
            $ref: '#/components/schemas/Rating'
          type: array
        pagination:
          $ref: '#/components/schemas/Pagination'
      title: Rating List
      type: object
    Comment:
      example:
        updatedTime: 2021-02-12-19:57:25
        commenterInfo:
          firstName: John
          lastName: David
          fullName: John David
        createdBy: admin
        createdTime: 2021-02-11-09:57:25
        parentCommentId: 6f38aea2-f41e-4ac9-b3f2-a9493d00ba97
        id: 943d3002-000c-42d3-a1b9-d6559f8a4d49
        entryPoint: devPortal
        category: general
        content: This is a comment
      properties:
        id:
          example: 943d3002-000c-42d3-a1b9-d6559f8a4d49
          readOnly: true
          type: string
        content:
          example: This is a comment
          maxLength: 512
          type: string
        createdTime:
          example: 2021-02-11-09:57:25
          readOnly: true
          type: string
        createdBy:
          example: admin
          readOnly: true
          type: string
        updatedTime:
          example: 2021-02-12-19:57:25
          readOnly: true
          type: string
        category:
          default: general
          example: general
          readOnly: true
          type: string
        parentCommentId:
          example: 6f38aea2-f41e-4ac9-b3f2-a9493d00ba97
          readOnly: true
          type: string
        entryPoint:
          enum:
          - devPortal
          - publisher
          readOnly: true
          type: string
        commenterInfo:
          $ref: '#/components/schemas/CommenterInfo'
        replies:
          $ref: '#/components/schemas/CommentList'
      required:
      - content
      title: Comment
      type: object
    CommentList:
      example:
        pagination:
          next: next
          total: 10
          offset: 0
          previous: previous
          limit: 1
        count: 1
        list:
        - updatedTime: 2021-02-12-19:57:25
          commenterInfo:
            firstName: John
            lastName: David
            fullName: John David
          createdBy: admin
          createdTime: 2021-02-11-09:57:25
          parentCommentId: 6f38aea2-f41e-4ac9-b3f2-a9493d00ba97
          id: 943d3002-000c-42d3-a1b9-d6559f8a4d49
          entryPoint: devPortal
          category: general
          content: This is a comment
        - updatedTime: 2021-02-12-19:57:25
          commenterInfo:
            firstName: John
            lastName: David
            fullName: John David
          createdBy: admin
          createdTime: 2021-02-11-09:57:25
          parentCommentId: 6f38aea2-f41e-4ac9-b3f2-a9493d00ba97
          id: 943d3002-000c-42d3-a1b9-d6559f8a4d49
          entryPoint: devPortal
          category: general
          content: This is a comment
      properties:
        count:
          description: |
            Number of Comments returned.
          example: 1
          readOnly: true
          type: integer
        list:
          items:
            $ref: '#/components/schemas/Comment'
          readOnly: true
          type: array
        pagination:
          $ref: '#/components/schemas/Pagination'
      title: Comments List
      type: object
    Error:
      properties:
        code:
          format: int64
          type: integer
        message:
          description: Error message.
          type: string
        description:
          description: |
            A detail description about the error message.
          type: string
        moreInfo:
          description: |
            Preferably an url with more details about the error.
          type: string
        error:
          description: |
            If there are more than one error list them out.
            For example, list out validation errors by each field.
          items:
            $ref: '#/components/schemas/ErrorListItem'
          type: array
      required:
      - code
      - message
      title: Error object returned with 4XX HTTP status
      type: object
    ErrorListItem:
      properties:
        code:
          type: string
        message:
          description: |
            Description about individual errors occurred
          type: string
      required:
      - code
      - message
      title: Description of individual errors that may have occurred during a request.
      type: object
    ApplicationToken:
      example:
        validityTime: 3600
        tokenScopes:
        - default
        - read_api
        - write_api
        accessToken: 1.2345678901234568E+30
      properties:
        accessToken:
          description: Access token
          example: 1.2345678901234568E+30
          type: string
        tokenScopes:
          description: Valid comma seperated scopes for the access token
          example:
          - default
          - read_api
          - write_api
          items:
            type: string
          type: array
        validityTime:
          description: Maximum validity time for the access token
          example: 3600
          format: int64
          type: integer
      title: Application token details to invoke APIs
      type: object
    APIKey:
      example:
        validityTime: 3600
        apikey: eyJoZWxsbyI6IndvcmxkIn0=.eyJ3c28yIjoiYXBpbSJ9.eyJ3c28yIjoic2lnbmF0dXJlIn0=
      properties:
        apikey:
          description: API Key
          example: eyJoZWxsbyI6IndvcmxkIn0=.eyJ3c28yIjoiYXBpbSJ9.eyJ3c28yIjoic2lnbmF0dXJlIn0=
          type: string
        validityTime:
          example: 3600
          format: int32
          type: integer
      title: API Key details to invoke APIs
      type: object
    ApplicationKey:
      example:
        mode: CREATED
        consumerSecret: TIDlOFkpzB7WjufO3OJUhy1fsvAa
        keyMappingId: 92ab520c-8847-427a-a921-3ed19b15aad7
        supportedGrantTypes:
        - client_credentials
        - password
        keyState: APPROVED
        groupId: "2"
        callbackUrl: http://sample.com/callback/url
        additionalProperties: '{}'
        consumerKey: vYDoc9s7IgAFdkSyNDaswBX7ejoa
        keyType: PRODUCTION
        keyManager: Resident Key Manager
        token:
          validityTime: 3600
          tokenScopes:
          - default
          - read_api
          - write_api
          accessToken: 1.2345678901234568E+30
      properties:
        keyMappingId:
          description: Key Manager Mapping UUID
          example: 92ab520c-8847-427a-a921-3ed19b15aad7
          readOnly: true
          type: string
        keyManager:
          description: Key Manager Name
          example: Resident Key Manager
          type: string
        consumerKey:
          description: Consumer key of the application
          example: vYDoc9s7IgAFdkSyNDaswBX7ejoa
          readOnly: true
          type: string
        consumerSecret:
          description: Consumer secret of the application
          example: TIDlOFkpzB7WjufO3OJUhy1fsvAa
          readOnly: true
          type: string
        supportedGrantTypes:
          description: The grant types that are supported by the application
          example:
          - client_credentials
          - password
          items:
            type: string
          type: array
        callbackUrl:
          description: Callback URL
          example: http://sample.com/callback/url
          type: string
        keyState:
          description: Describes the state of the key generation.
          example: APPROVED
          type: string
        keyType:
          description: Describes to which endpoint the key belongs
          enum:
          - PRODUCTION
          - SANDBOX
          example: PRODUCTION
          type: string
        mode:
          description: Describe the which mode Application Mapped.
          enum:
          - MAPPED
          - CREATED
          example: CREATED
          type: string
        groupId:
          description: Application group id (if any).
          example: "2"
          type: string
        token:
          $ref: '#/components/schemas/ApplicationToken'
        additionalProperties:
          description: additionalProperties (if any).
          properties: {}
          type: object
      title: Application key details
      type: object
    ApplicationKeyReGenerateResponse:
      example:
        consumerSecret: TIDlOFkpzB7WjufO3OJUhy1fsvAa
        consumerKey: vYDoc9s7IgAFdkSyNDaswBX7ejoa
      properties:
        consumerKey:
          description: The consumer key associated with the application, used to indetify
            the client
          example: vYDoc9s7IgAFdkSyNDaswBX7ejoa
          type: string
        consumerSecret:
          description: The client secret that is used to authenticate the client with
            the authentication server
          example: TIDlOFkpzB7WjufO3OJUhy1fsvAa
          type: string
      title: Application key details after re generating consumer secret
      type: object
    ApplicationKeyList:
      example:
        count: 1
        list:
        - mode: CREATED
          consumerSecret: TIDlOFkpzB7WjufO3OJUhy1fsvAa
          keyMappingId: 92ab520c-8847-427a-a921-3ed19b15aad7
          supportedGrantTypes:
          - client_credentials
          - password
          keyState: APPROVED
          groupId: "2"
          callbackUrl: http://sample.com/callback/url
          additionalProperties: '{}'
          consumerKey: vYDoc9s7IgAFdkSyNDaswBX7ejoa
          keyType: PRODUCTION
          keyManager: Resident Key Manager
          token:
            validityTime: 3600
            tokenScopes:
            - default
            - read_api
            - write_api
            accessToken: 1.2345678901234568E+30
        - mode: CREATED
          consumerSecret: TIDlOFkpzB7WjufO3OJUhy1fsvAa
          keyMappingId: 92ab520c-8847-427a-a921-3ed19b15aad7
          supportedGrantTypes:
          - client_credentials
          - password
          keyState: APPROVED
          groupId: "2"
          callbackUrl: http://sample.com/callback/url
          additionalProperties: '{}'
          consumerKey: vYDoc9s7IgAFdkSyNDaswBX7ejoa
          keyType: PRODUCTION
          keyManager: Resident Key Manager
          token:
            validityTime: 3600
            tokenScopes:
            - default
            - read_api
            - write_api
            accessToken: 1.2345678901234568E+30
      properties:
        count:
          description: |
            Number of applications keys returned.
          example: 1
          type: integer
        list:
          items:
            $ref: '#/components/schemas/ApplicationKey'
          type: array
      title: Application Keys List
      type: object
    ApplicationKeyGenerateRequest:
      properties:
        keyType:
          enum:
          - PRODUCTION
          - SANDBOX
          type: string
        keyManager:
          description: key Manager to Generate Keys
          example: Resident Key Manager
          type: string
        grantTypesToBeSupported:
          description: Grant types that should be supported by the application
          example:
          - password
          - client_credentials
          items:
            type: string
          type: array
        callbackUrl:
          description: Callback URL
          example: http://sample.com/callback/url
          type: string
        scopes:
          description: Allowed scopes for the access token
          example:
          - am_application_scope
          - default
          items:
            type: string
          type: array
        validityTime:
          example: "3600"
          type: string
        clientId:
          description: Client ID for generating access token.
          example: sZzoeSCI_vL2cjSXZQmsmV8JEyga
          readOnly: true
          type: string
        clientSecret:
          description: Client secret for generating access token. This is given together
            with the client Id.
          example: nrs3YAP4htxnz_DqpvGhf9Um04oa
          readOnly: true
          type: string
        additionalProperties:
          description: Additional properties needed.
          example: {}
          properties: {}
          type: object
      required:
      - grantTypesToBeSupported
      - keyType
      title: Application key generation request object
      type: object
    ApplicationKeyMappingRequest:
      properties:
        consumerKey:
          description: Consumer key of the application
          example: oYhwZu4P2ThDmiDprBk6c0YfjR8a
          type: string
        consumerSecret:
          description: Consumer secret of the application
          example: ondWGtFTCOVM4sfPyOfZ7fel610a
          type: string
        keyManager:
          description: Key Manager Name
          example: Resident Key Manager
          type: string
        keyType:
          enum:
          - PRODUCTION
          - SANDBOX
          type: string
      required:
      - consumerKey
      - keyType
      title: Application key provision request object
      type: object
    ApplicationTokenGenerateRequest:
      properties:
        consumerSecret:
          description: Consumer secret of the application
          example: cV5pvyisxug5b5QZInq9cGZrMOMa
          type: string
        validityPeriod:
          description: Token validity period
          example: 3600
          format: int64
          type: integer
        scopes:
          description: Allowed scopes (space seperated) for the access token
          example:
          - apim:subscribe
          items:
            type: string
          type: array
        revokeToken:
          description: Token to be revoked, if any
          type: string
        grantType:
          default: CLIENT_CREDENTIALS
          enum:
          - CLIENT_CREDENTIALS
          - TOKEN_EXCHANGE
          type: string
        additionalProperties:
          description: Additional parameters if Authorization server needs any
          properties: {}
          type: object
      title: Application access token generation request object
      type: object
    APIKeyGenerateRequest:
      properties:
        validityPeriod:
          description: Token validity period
          example: 3600
          format: int32
          type: integer
        additionalProperties:
          description: Additional parameters if Authorization server needs any
          properties: {}
          type: object
      title: API Key generation request object
      type: object
    APIKeyRevokeRequest:
      properties:
        apikey:
          description: API Key to revoke
          example: eyJoZWxsbyI6IndvcmxkIn0=.eyJ3c28yIjoiYXBpbSJ9.eyJ3c28yIjoic2lnbmF0dXJlIn0=
          type: string
      title: API Key revoke request object
      type: object
    ScopeInfo:
      example:
        roles:
        - manager
        - developer
        name: admin scope
        description: description
        key: admin_scope
      properties:
        key:
          example: admin_scope
          type: string
        name:
          example: admin scope
          type: string
        roles:
          description: Allowed roles for the scope
          example:
          - manager
          - developer
          items:
            type: string
          type: array
        description:
          description: Description of the scope
          type: string
      title: API Scope info object with scope details
      type: object
    ScopeList:
      properties:
        count:
          description: |
            Number of results returned.
          example: 1
          type: integer
        list:
          items:
            $ref: '#/components/schemas/ScopeInfo'
          type: array
        pagination:
          $ref: '#/components/schemas/Pagination'
      title: Scope list
      type: object
    ThrottlingPolicyPermissionInfo:
      example:
        roles:
        - manager
        - developer
        type: allow
      properties:
        type:
          enum:
          - allow
          - deny
          type: string
        roles:
          description: roles for this permission
          example:
          - manager
          - developer
          items:
            type: string
          type: array
      title: Throttling Policy Permission info object with throttling policy permission
        details
      type: object
    MonetizationInfo:
      example:
        currencyType: USD
        billingType: fixedPrice
        pricePerRequest: "1"
        billingCycle: month
        fixedPrice: "10"
      properties:
        billingType:
          enum:
          - fixedPrice
          - dynamicRate
          example: fixedPrice
          type: string
        billingCycle:
          example: month
          type: string
        fixedPrice:
          example: "10"
          type: string
        pricePerRequest:
          example: "1"
          type: string
        currencyType:
          example: USD
          type: string
      title: Monetization
      type: object
    APIMonetizationUsage:
      example:
        properties:
          key: properties
      properties:
        properties:
          additionalProperties:
            type: string
          description: Map of custom properties related to monetization usage
          type: object
      title: API monetization usage object
      type: object
    WorkflowResponse:
      properties:
        workflowStatus:
          description: |
            This attribute declares whether this workflow task is approved or rejected.
          enum:
          - CREATED
          - APPROVED
          - REJECTED
          - REGISTERED
          example: APPROVED
          type: string
        jsonPayload:
          description: |
            Attributes that returned after the workflow execution
          type: string
      required:
      - workflowStatus
      title: workflow Response
      type: object
    User:
      properties:
        username:
          type: string
        password:
          type: string
        firstName:
          type: string
        lastName:
          type: string
        email:
          type: string
      required:
      - email
      - firstName
      - lastName
      - password
      - username
      title: User
      type: object
    APIOperations:
      properties:
        id:
          example: apioperation
          type: string
        target:
          type: string
        verb:
          type: string
      title: Operation
      type: object
    SearchResultList:
      example:
        pagination:
          next: next
          total: 10
          offset: 0
          previous: previous
          limit: 1
        count: 1
        list:
        - '{}'
        - '{}'
      properties:
        count:
          description: |
            Number of results returned.
          example: 1
          type: integer
        list:
          items:
            type: object
          type: array
        pagination:
          $ref: '#/components/schemas/Pagination'
      title: Search Result List
      type: object
    SearchResult:
      discriminator:
        propertyName: name
      properties:
        id:
          example: 01234567-0123-0123-0123-012345678901
          type: string
        name:
          example: TestAPI
          type: string
        type:
          enum:
          - DOC
          - API
          example: API
          type: string
        transportType:
          description: Accepted values are HTTP, WS, SOAPTOREST, GRAPHQL
          type: string
      required:
      - name
      title: Search Result
      type: object
    APISearchResult:
      allOf:
      - $ref: '#/components/schemas/SearchResult'
      - $ref: '#/components/schemas/APISearchResult_allOf'
      title: API Result
    DocumentSearchResult:
      allOf:
      - $ref: '#/components/schemas/SearchResult'
      - $ref: '#/components/schemas/DocumentSearchResult_allOf'
      title: Document Result
    CommenterInfo:
      example:
        firstName: John
        lastName: David
        fullName: John David
      properties:
        firstName:
          example: John
          type: string
        lastName:
          example: David
          type: string
        fullName:
          example: John David
          type: string
      type: object
    Pagination:
      example:
        next: next
        total: 10
        offset: 0
        previous: previous
        limit: 1
      properties:
        offset:
          example: 0
          type: integer
        limit:
          example: 1
          type: integer
        total:
          example: 10
          type: integer
        next:
          description: |
            Link to the next subset of resources qualified.
            Empty if no more resources are to be returned.
            example: ""
          type: string
        previous:
          description: |
            Link to the previous subset of resources qualified.
            Empty if current subset is the first subset returned.
            example: ""
          type: string
      title: Pagination
      type: object
    Settings:
      example:
        IsAnonymousModeEnabled: true
        passwordPolicyPattern: passwordPolicyPattern
        IsPasswordChangeEnabled: true
        monetizationEnabled: false
        IsUnlimitedTierPaid: false
        applicationSharingEnabled: false
        identityProvider:
          external: false
        grantTypes:
        - grantTypes
        - grantTypes
        mapExistingAuthApps: false
        recommendationEnabled: false
        passwordPolicyMaxLength: 6
        userStorePasswordPattern: userStorePasswordPattern
        scopes:
        - scopes
        - scopes
        apiGatewayEndpoint: apiGatewayEndpoint
        passwordPolicyMinLength: 0
      properties:
        grantTypes:
          items:
            type: string
          type: array
        scopes:
          items:
            type: string
          type: array
        applicationSharingEnabled:
          default: false
          type: boolean
        mapExistingAuthApps:
          default: false
          type: boolean
        apiGatewayEndpoint:
          type: string
        monetizationEnabled:
          default: false
          type: boolean
        recommendationEnabled:
          default: false
          type: boolean
        IsUnlimitedTierPaid:
          default: false
          type: boolean
        identityProvider:
          $ref: '#/components/schemas/Settings_identityProvider'
        IsAnonymousModeEnabled:
          default: true
          type: boolean
        IsPasswordChangeEnabled:
          default: true
          type: boolean
        userStorePasswordPattern:
          description: The 'PasswordJavaRegEx' cofigured in the UserStoreManager
          type: string
        passwordPolicyPattern:
          description: The regex configured in the Password Policy property 'passwordPolicy.pattern'
          type: string
        passwordPolicyMinLength:
          description: If Password Policy Feature is enabled, the property 'passwordPolicy.min.length'
            is returned as the 'passwordPolicyMinLength'. If password policy is not
            enabled, default value -1 will be returned. And it should be noted that
            the regex pattern(s) returned in 'passwordPolicyPattern' and 'userStorePasswordPattern'
            properties too will affect the minimum password length allowed and an
            intersection of all conditions will be considered finally to validate
            the password.
          type: integer
        passwordPolicyMaxLength:
          description: If Password Policy Feature is enabled, the property 'passwordPolicy.max.length'
            is returned as the 'passwordPolicyMaxLength'. If password policy is not
            enabled, default value -1 will be returned. And it should be noted that
            the regex pattern(s) returned in 'passwordPolicyPattern' and 'userStorePasswordPattern'
            properties too will affect the maximum password length allowed and an
            intersection of all conditions will be considered finally to validate
            the password.
          type: integer
      title: Settings
      type: object
    ApplicationAttribute:
      example:
        hidden: "false"
        tooltip: Sample tooltip
        description: Sample description of the attribute
        attribute: External Reference Id
        type: text
        required: "false"
      properties:
        description:
          description: description of the application attribute
          example: Sample description of the attribute
          type: string
        type:
          description: type of the input element to display
          example: text
          type: string
        tooltip:
          description: tooltop to display for the input element
          example: Sample tooltip
          type: string
        required:
          description: whether this is a required attribute
          example: "false"
          type: string
        attribute:
          description: the name of the attribute
          example: External Reference Id
          type: string
        hidden:
          description: whether this is a hidden attribute
          example: "false"
          type: string
      title: Application attributes
      type: object
    ApplicationAttributeList:
      example:
        count: 1
        list:
        - hidden: "false"
          tooltip: Sample tooltip
          description: Sample description of the attribute
          attribute: External Reference Id
          type: text
          required: "false"
        - hidden: "false"
          tooltip: Sample tooltip
          description: Sample description of the attribute
          attribute: External Reference Id
          type: text
          required: "false"
      properties:
        count:
          description: |
            Number of application attributes returned.
          example: 1
          type: integer
        list:
          items:
            $ref: '#/components/schemas/ApplicationAttribute'
          type: array
      title: Application Attributes List
      type: object
    Tenant:
      example:
        domain: wso2.com
        status: active
      properties:
        domain:
          description: tenant domain
          example: wso2.com
          type: string
        status:
          description: current status of the tenant active/inactive
          example: active
          type: string
      title: Tenant
      type: object
    TenantList:
      example:
        pagination:
          next: next
          total: 10
          offset: 0
          previous: previous
          limit: 1
        count: 1
        list:
        - domain: wso2.com
          status: active
        - domain: wso2.com
          status: active
      properties:
        count:
          description: |
            Number of tenants returned.
          example: 1
          type: integer
        list:
          items:
            $ref: '#/components/schemas/Tenant'
          type: array
        pagination:
          $ref: '#/components/schemas/Pagination'
      title: Tenant list
      type: object
    AdvertiseInfo:
      example:
        apiOwner: admin
        advertised: true
        vendor: WSO2
        originalDevPortalUrl: https://localhost:9443/devportal
      properties:
        advertised:
          example: true
          type: boolean
        originalDevPortalUrl:
          example: https://localhost:9443/devportal
          type: string
        apiOwner:
          example: admin
          type: string
        vendor:
          default: WSO2
          enum:
          - WSO2
          - AWS
          type: string
      title: API Advertise info object with advertise details
      type: object
    APICategory:
      example:
        name: Finance
        description: Finance related APIs
        id: 01234567-0123-0123-0123-012345678901
      properties:
        id:
          example: 01234567-0123-0123-0123-012345678901
          type: string
        name:
          example: Finance
          type: string
        description:
          example: Finance related APIs
          type: string
      required:
      - name
      title: API Category
      type: object
    APICategoryList:
      example:
        count: 1
        list:
        - name: Finance
          description: Finance related APIs
          id: 01234567-0123-0123-0123-012345678901
        - name: Finance
          description: Finance related APIs
          id: 01234567-0123-0123-0123-012345678901
      properties:
        count:
          description: |
            Number of API categories returned.
          example: 1
          type: integer
        list:
          items:
            $ref: '#/components/schemas/APICategory'
          type: array
      title: API Category List
      type: object
    Recommendations:
      example:
        count: 1
        list:
        - name: CalculatorAPI
          avgRating: "4.5"
          id: 01234567-0123-0123-0123-012345678901
        - name: CalculatorAPI
          avgRating: "4.5"
          id: 01234567-0123-0123-0123-012345678901
      properties:
        count:
          description: |
            Number of APIs returned.
          example: 1
          type: integer
        list:
          items:
            $ref: '#/components/schemas/recommendedAPI'
          type: array
      title: API recommendations
      type: object
    recommendedAPI:
      example:
        name: CalculatorAPI
        avgRating: "4.5"
        id: 01234567-0123-0123-0123-012345678901
      properties:
        id:
          example: 01234567-0123-0123-0123-012345678901
          type: string
        name:
          example: CalculatorAPI
          type: string
        avgRating:
          description: Average rating of the API
          example: "4.5"
          type: string
      title: Recommended API
      type: object
    KeyManagerInfo:
      example:
        displayName: Resident Key Manager
        enableMapOAuthConsumerApps: false
        enableTokenEncryption: false
        description: This is Resident Key Manager
        availableGrantTypes:
        - client_credentials
        - client_credentials
        applicationConfiguration:
        - default: admin
          values:
          - '{}'
          - '{}'
          name: consumer_key
          multiple: true
          tooltip: Enter username to connect to key manager
          label: Consumer Key
          type: select
          required: true
          mask: true
        - default: admin
          values:
          - '{}'
          - '{}'
          name: consumer_key
          multiple: true
          tooltip: Enter username to connect to key manager
          label: Consumer Key
          type: select
          required: true
          mask: true
        type: default
        enabled: true
        revokeEndpoint: https://localhost:9443/oauth2/revoke
        tokenEndpoint: https://localhost:9443/oauth2/token
        name: Resident Key Manager
        alias: https://localhost:9443/oauth2/token
        id: 01234567-0123-0123-0123-012345678901
        enableTokenHashing: false
        enableOAuthAppCreation: true
        additionalProperties: '{}'
        userInfoEndpoint: userInfoEndpoint
        tokenType: EXCHANGED
        enableTokenGeneration: true
      properties:
        id:
          example: 01234567-0123-0123-0123-012345678901
          type: string
        name:
          example: Resident Key Manager
          type: string
        type:
          example: default
          type: string
        displayName:
          description: |
            display name of Keymanager
          example: Resident Key Manager
          type: string
        description:
          example: This is Resident Key Manager
          type: string
        enabled:
          example: true
          type: boolean
        availableGrantTypes:
          items:
            example: client_credentials
            type: string
          type: array
        tokenEndpoint:
          example: https://localhost:9443/oauth2/token
          type: string
        revokeEndpoint:
          example: https://localhost:9443/oauth2/revoke
          type: string
        userInfoEndpoint:
          type: string
        enableTokenGeneration:
          example: true
          type: boolean
        enableTokenEncryption:
          default: false
          example: false
          type: boolean
        enableTokenHashing:
          default: false
          example: false
          type: boolean
        enableOAuthAppCreation:
          default: true
          example: true
          type: boolean
        enableMapOAuthConsumerApps:
          default: false
          example: false
          type: boolean
        applicationConfiguration:
          items:
            $ref: '#/components/schemas/KeyManagerApplicationConfiguration'
          type: array
        alias:
          description: |
            The alias of Identity Provider.
            If the tokenType is EXCHANGED, the alias value should be inclusive in the audience values of the JWT token
          example: https://localhost:9443/oauth2/token
          type: string
        additionalProperties:
          properties: {}
          type: object
        tokenType:
          default: DIRECT
          description: The type of the tokens to be used (exchanged or without exchanged).
            Accepted values are EXCHANGED, DIRECT and BOTH.
          enum:
          - EXCHANGED
          - DIRECT
          - BOTH
          example: EXCHANGED
          type: string
      required:
      - name
      - type
      title: Key Manager Info
      type: object
    KeyManagerApplicationConfiguration:
      example:
        default: admin
        values:
        - '{}'
        - '{}'
        name: consumer_key
        multiple: true
        tooltip: Enter username to connect to key manager
        label: Consumer Key
        type: select
        required: true
        mask: true
      properties:
        name:
          example: consumer_key
          type: string
        label:
          example: Consumer Key
          type: string
        type:
          example: select
          type: string
        required:
          example: true
          type: boolean
        mask:
          example: true
          type: boolean
        multiple:
          example: true
          type: boolean
        tooltip:
          example: Enter username to connect to key manager
          type: string
        default:
          example: admin
          properties: {}
          type: object
        values:
          items:
            properties: {}
            type: object
          type: array
      title: Key Manager application Configuration
      type: object
    KeyManagerList:
      example:
        count: 1
        list:
        - displayName: Resident Key Manager
          enableMapOAuthConsumerApps: false
          enableTokenEncryption: false
          description: This is Resident Key Manager
          availableGrantTypes:
          - client_credentials
          - client_credentials
          applicationConfiguration:
          - default: admin
            values:
            - '{}'
            - '{}'
            name: consumer_key
            multiple: true
            tooltip: Enter username to connect to key manager
            label: Consumer Key
            type: select
            required: true
            mask: true
          - default: admin
            values:
            - '{}'
            - '{}'
            name: consumer_key
            multiple: true
            tooltip: Enter username to connect to key manager
            label: Consumer Key
            type: select
            required: true
            mask: true
          type: default
          enabled: true
          revokeEndpoint: https://localhost:9443/oauth2/revoke
          tokenEndpoint: https://localhost:9443/oauth2/token
          name: Resident Key Manager
          alias: https://localhost:9443/oauth2/token
          id: 01234567-0123-0123-0123-012345678901
          enableTokenHashing: false
          enableOAuthAppCreation: true
          additionalProperties: '{}'
          userInfoEndpoint: userInfoEndpoint
          tokenType: EXCHANGED
          enableTokenGeneration: true
        - displayName: Resident Key Manager
          enableMapOAuthConsumerApps: false
          enableTokenEncryption: false
          description: This is Resident Key Manager
          availableGrantTypes:
          - client_credentials
          - client_credentials
          applicationConfiguration:
          - default: admin
            values:
            - '{}'
            - '{}'
            name: consumer_key
            multiple: true
            tooltip: Enter username to connect to key manager
            label: Consumer Key
            type: select
            required: true
            mask: true
          - default: admin
            values:
            - '{}'
            - '{}'
            name: consumer_key
            multiple: true
            tooltip: Enter username to connect to key manager
            label: Consumer Key
            type: select
            required: true
            mask: true
          type: default
          enabled: true
          revokeEndpoint: https://localhost:9443/oauth2/revoke
          tokenEndpoint: https://localhost:9443/oauth2/token
          name: Resident Key Manager
          alias: https://localhost:9443/oauth2/token
          id: 01234567-0123-0123-0123-012345678901
          enableTokenHashing: false
          enableOAuthAppCreation: true
          additionalProperties: '{}'
          userInfoEndpoint: userInfoEndpoint
          tokenType: EXCHANGED
          enableTokenGeneration: true
      properties:
        count:
          description: |
            Number of Key managers returned.
          example: 1
          type: integer
        list:
          items:
            $ref: '#/components/schemas/KeyManagerInfo'
          type: array
      title: Key Manager List
      type: object
    GraphQLQueryComplexityInfo:
      example:
        list:
        - complexityValue: 1
          field: name
          type: Country
        - complexityValue: 1
          field: name
          type: Country
      properties:
        list:
          items:
            $ref: '#/components/schemas/GraphQLCustomComplexityInfo'
          type: array
      title: GraphQL Query Complexity Info
      type: object
    GraphQLCustomComplexityInfo:
      example:
        complexityValue: 1
        field: name
        type: Country
      properties:
        type:
          description: |
            The type found within the schema of the API
          example: Country
          type: string
        field:
          description: |
            The field which is found under the type within the schema of the API
          example: name
          type: string
        complexityValue:
          description: |
            The complexity value allocated for the associated field under the specified type
          example: 1
          type: integer
      required:
      - complexityValue
      - field
      - type
      title: GraphQL Custom Complexity Info
      type: object
    GraphQLSchemaTypeList:
      example:
        typeList:
        - type: Country
          fieldList:
          - code
          - name
        - type: Country
          fieldList:
          - code
          - name
      properties:
        typeList:
          items:
            $ref: '#/components/schemas/GraphQLSchemaType'
          type: array
      title: List of types and corresponding fields of the GraphQL Schema
      type: object
    GraphQLSchemaType:
      example:
        type: Country
        fieldList:
        - code
        - name
      properties:
        type:
          description: |
            Type found within the GraphQL Schema
          example: Country
          type: string
        fieldList:
          description: |
            Array of fields under current type
          example:
          - code
          - name
          items:
            type: string
          type: array
      title: Single type and corresponding fields found within the GraphQL Schema
      type: object
    CurrentAndNewPasswords:
      properties:
        currentPassword:
          example: password123
          type: string
        newPassword:
          example: newpassword1234
          type: string
      title: Current and new passowrd of the user
      type: object
    AdditionalSubscriptionInfoList:
      example:
        pagination:
          next: next
          total: 10
          offset: 0
          previous: previous
          limit: 1
        count: 1
        list:
        - solaceDeployedEnvironments:
          - SolaceTopicsObject:
              mqttSyntax:
                subscribeTopics:
                - subscribeTopics
                - subscribeTopics
                publishTopics:
                - publishTopics
                - publishTopics
              defaultSyntax:
                subscribeTopics:
                - subscribeTopics
                - subscribeTopics
                publishTopics:
                - publishTopics
                - publishTopics
            organizationName: organizationName
            environmentName: environmentName
            environmentDisplayName: environmentDisplayName
            solaceURLs:
            - protocol: Defalt
              endpointURL: Default
            - protocol: Defalt
              endpointURL: Default
          - SolaceTopicsObject:
              mqttSyntax:
                subscribeTopics:
                - subscribeTopics
                - subscribeTopics
                publishTopics:
                - publishTopics
                - publishTopics
              defaultSyntax:
                subscribeTopics:
                - subscribeTopics
                - subscribeTopics
                publishTopics:
                - publishTopics
                - publishTopics
            organizationName: organizationName
            environmentName: environmentName
            environmentDisplayName: environmentDisplayName
            solaceURLs:
            - protocol: Defalt
              endpointURL: Default
            - protocol: Defalt
              endpointURL: Default
          solaceOrganization: SolaceWso2
          isSolaceAPI: false
          subscriptionId: faae5fcc-cbae-40c4-bf43-89931630d313
          applicationId: b3ade481-30b0-4b38-9a67-498a40873a6d
          applicationName: Sample Application
          apiId: 2962f3bb-8330-438e-baee-0ee1d6434ba4
        - solaceDeployedEnvironments:
          - SolaceTopicsObject:
              mqttSyntax:
                subscribeTopics:
                - subscribeTopics
                - subscribeTopics
                publishTopics:
                - publishTopics
                - publishTopics
              defaultSyntax:
                subscribeTopics:
                - subscribeTopics
                - subscribeTopics
                publishTopics:
                - publishTopics
                - publishTopics
            organizationName: organizationName
            environmentName: environmentName
            environmentDisplayName: environmentDisplayName
            solaceURLs:
            - protocol: Defalt
              endpointURL: Default
            - protocol: Defalt
              endpointURL: Default
          - SolaceTopicsObject:
              mqttSyntax:
                subscribeTopics:
                - subscribeTopics
                - subscribeTopics
                publishTopics:
                - publishTopics
                - publishTopics
              defaultSyntax:
                subscribeTopics:
                - subscribeTopics
                - subscribeTopics
                publishTopics:
                - publishTopics
                - publishTopics
            organizationName: organizationName
            environmentName: environmentName
            environmentDisplayName: environmentDisplayName
            solaceURLs:
            - protocol: Defalt
              endpointURL: Default
            - protocol: Defalt
              endpointURL: Default
          solaceOrganization: SolaceWso2
          isSolaceAPI: false
          subscriptionId: faae5fcc-cbae-40c4-bf43-89931630d313
          applicationId: b3ade481-30b0-4b38-9a67-498a40873a6d
          applicationName: Sample Application
          apiId: 2962f3bb-8330-438e-baee-0ee1d6434ba4
      properties:
        count:
          description: |
            Number of additional information sets of subscription returned.
          example: 1
          type: integer
        list:
          items:
            $ref: '#/components/schemas/AdditionalSubscriptionInfo'
          type: array
        pagination:
          $ref: '#/components/schemas/Pagination'
      title: Additional Subscription Info List
      type: object
    AdditionalSubscriptionInfo:
      example:
        solaceDeployedEnvironments:
        - SolaceTopicsObject:
            mqttSyntax:
              subscribeTopics:
              - subscribeTopics
              - subscribeTopics
              publishTopics:
              - publishTopics
              - publishTopics
            defaultSyntax:
              subscribeTopics:
              - subscribeTopics
              - subscribeTopics
              publishTopics:
              - publishTopics
              - publishTopics
          organizationName: organizationName
          environmentName: environmentName
          environmentDisplayName: environmentDisplayName
          solaceURLs:
          - protocol: Defalt
            endpointURL: Default
          - protocol: Defalt
            endpointURL: Default
        - SolaceTopicsObject:
            mqttSyntax:
              subscribeTopics:
              - subscribeTopics
              - subscribeTopics
              publishTopics:
              - publishTopics
              - publishTopics
            defaultSyntax:
              subscribeTopics:
              - subscribeTopics
              - subscribeTopics
              publishTopics:
              - publishTopics
              - publishTopics
          organizationName: organizationName
          environmentName: environmentName
          environmentDisplayName: environmentDisplayName
          solaceURLs:
          - protocol: Defalt
            endpointURL: Default
          - protocol: Defalt
            endpointURL: Default
        solaceOrganization: SolaceWso2
        isSolaceAPI: false
        subscriptionId: faae5fcc-cbae-40c4-bf43-89931630d313
        applicationId: b3ade481-30b0-4b38-9a67-498a40873a6d
        applicationName: Sample Application
        apiId: 2962f3bb-8330-438e-baee-0ee1d6434ba4
      properties:
        subscriptionId:
          description: The UUID of the subscription
          example: faae5fcc-cbae-40c4-bf43-89931630d313
          readOnly: true
          type: string
        applicationId:
          description: The UUID of the application
          example: b3ade481-30b0-4b38-9a67-498a40873a6d
          type: string
        applicationName:
          description: The name of the application
          example: Sample Application
          type: string
        apiId:
          description: The unique identifier of the API.
          example: 2962f3bb-8330-438e-baee-0ee1d6434ba4
          type: string
        isSolaceAPI:
          example: false
          type: boolean
        solaceOrganization:
          example: SolaceWso2
          type: string
        solaceDeployedEnvironments:
          items:
            $ref: '#/components/schemas/AdditionalSubscriptionInfo_solaceDeployedEnvironments'
          type: array
      title: Additional Information of subscriptions related to an API
      type: object
    SolaceTopics:
      example:
        subscribeTopics:
        - subscribeTopics
        - subscribeTopics
        publishTopics:
        - publishTopics
        - publishTopics
      properties:
        publishTopics:
          items:
            type: string
          type: array
        subscribeTopics:
          items:
            type: string
          type: array
      title: SolaceTopics
      type: object
    Post_request_body:
      properties:
        content:
          description: |
            Content of the comment
          example: This is a comment
          maxLength: 512
          type: string
        category:
          description: |
            Category of the comment
          example: general
          type: string
      required:
      - content
      title: Post request body
      type: object
    Patch_request_body:
      properties:
        content:
          description: |
            Content of the comment
          example: This is a comment
          maxLength: 512
          type: string
        category:
          description: |
            Category of the comment
          example: general
          type: string
      title: Patch request body
      type: object
    API_monetizationAttributes:
      example:
        currencyType: USD
        pricePerRequest: "1"
        billingCycle: month
        fixedPrice: "10"
      properties:
        fixedPrice:
          example: "10"
          type: string
        pricePerRequest:
          example: "1"
          type: string
        currencyType:
          example: USD
          type: string
        billingCycle:
          example: month
          type: string
    API_tiers:
      example:
        tierName: Gold
        tierPlan: COMMERCIAL
        monetizationAttributes:
          currencyType: USD
          pricePerRequest: "1"
          billingCycle: month
          fixedPrice: "10"
      properties:
        tierName:
          example: Gold
          type: string
        tierPlan:
          example: COMMERCIAL
          type: string
        monetizationAttributes:
          $ref: '#/components/schemas/API_monetizationAttributes'
    API_additionalProperties:
      properties:
        name:
          type: string
        value:
          type: string
        display:
          type: boolean
    API_URLs:
      example:
        wss: wss://localhost:9099/phoneverify/1.0.0
        http: http://localhost:8280/phoneverify/1.0.0
        https: https://localhost:8243/phoneverify/1.0.0
        ws: ws://localhost:9099/phoneverify/1.0.0
      properties:
        http:
          description: HTTP environment URL
          example: http://localhost:8280/phoneverify/1.0.0
          type: string
        https:
          description: HTTPS environment URL
          example: https://localhost:8243/phoneverify/1.0.0
          type: string
        ws:
          description: WS environment URL
          example: ws://localhost:9099/phoneverify/1.0.0
          type: string
        wss:
          description: WSS environment URL
          example: wss://localhost:9099/phoneverify/1.0.0
          type: string
    API_defaultVersionURLs:
      example:
        wss: ws://localhost:9099/phoneverify/
        http: http://localhost:8280/phoneverify/
        https: https://localhost:8243/phoneverify/
        ws: ws://localhost:9099/phoneverify/
      properties:
        http:
          description: HTTP environment default URL
          example: http://localhost:8280/phoneverify/
          type: string
        https:
          description: HTTPS environment default URL
          example: https://localhost:8243/phoneverify/
          type: string
        ws:
          description: WS environment default URL
          example: ws://localhost:9099/phoneverify/
          type: string
        wss:
          description: WSS environment default URL
          example: ws://localhost:9099/phoneverify/
          type: string
    API_endpointURLs:
      example:
        URLs:
          wss: wss://localhost:9099/phoneverify/1.0.0
          http: http://localhost:8280/phoneverify/1.0.0
          https: https://localhost:8243/phoneverify/1.0.0
          ws: ws://localhost:9099/phoneverify/1.0.0
        environmentName: Default
        environmentType: hybrid
        environmentDisplayName: Default
        defaultVersionURLs:
          wss: ws://localhost:9099/phoneverify/
          http: http://localhost:8280/phoneverify/
          https: https://localhost:8243/phoneverify/
          ws: ws://localhost:9099/phoneverify/
      properties:
        environmentName:
          example: Default
          type: string
        environmentDisplayName:
          example: Default
          type: string
        environmentType:
          example: hybrid
          type: string
        URLs:
          $ref: '#/components/schemas/API_URLs'
        defaultVersionURLs:
          $ref: '#/components/schemas/API_defaultVersionURLs'
    APISearchResult_allOf:
      properties:
        description:
          description: A brief description about the API
          example: A calculator API that supports basic operations
          type: string
        context:
          description: A string that represents the context of the user's request
          example: CalculatorAPI
          type: string
        version:
          description: The version of the API
          example: 1.0.0
          type: string
        provider:
          description: |
            If the provider value is notgiven, the user invoking the API will be used as the provider.
          example: admin
          type: string
        status:
          description: This describes in which status of the lifecycle the API is
          example: CREATED
          type: string
        thumbnailUri:
          example: /apis/01234567-0123-0123-0123-012345678901/thumbnail
          type: string
        businessInformation:
          $ref: '#/components/schemas/APIBusinessInformation'
        avgRating:
          description: Average rating of the API
          example: "4.5"
          type: string
    DocumentSearchResult_allOf:
      properties:
        docType:
          enum:
          - HOWTO
          - SAMPLES
          - PUBLIC_FORUM
          - SUPPORT_FORUM
          - API_MESSAGE_FORMAT
          - SWAGGER_DOC
          - OTHER
          example: HOWTO
          type: string
        summary:
          example: Summary of Calculator Documentation
          type: string
        sourceType:
          enum:
          - INLINE
          - URL
          - FILE
          - MARKDOWN
          example: INLINE
          type: string
        sourceUrl:
          type: string
        otherTypeName:
          type: string
        visibility:
          enum:
          - OWNER_ONLY
          - PRIVATE
          - API_LEVEL
          example: API_LEVEL
          type: string
        apiName:
          description: The name of the associated API
          example: TestAPI
          type: string
        apiVersion:
          description: The version of the associated API
          example: 1.0.0
          type: string
        apiProvider:
          example: admin
          type: string
        apiUUID:
          type: string
    Settings_identityProvider:
      example:
        external: false
      properties:
        external:
          default: false
          type: boolean
    AdditionalSubscriptionInfo_solaceURLs:
      example:
        protocol: Defalt
        endpointURL: Default
      properties:
        protocol:
          example: Defalt
          type: string
        endpointURL:
          example: Default
          type: string
    AdditionalSubscriptionInfo_SolaceTopicsObject:
      example:
        mqttSyntax:
          subscribeTopics:
          - subscribeTopics
          - subscribeTopics
          publishTopics:
          - publishTopics
          - publishTopics
        defaultSyntax:
          subscribeTopics:
          - subscribeTopics
          - subscribeTopics
          publishTopics:
          - publishTopics
          - publishTopics
      properties:
        defaultSyntax:
          $ref: '#/components/schemas/SolaceTopics'
        mqttSyntax:
          $ref: '#/components/schemas/SolaceTopics'
    AdditionalSubscriptionInfo_solaceDeployedEnvironments:
      example:
        SolaceTopicsObject:
          mqttSyntax:
            subscribeTopics:
            - subscribeTopics
            - subscribeTopics
            publishTopics:
            - publishTopics
            - publishTopics
          defaultSyntax:
            subscribeTopics:
            - subscribeTopics
            - subscribeTopics
            publishTopics:
            - publishTopics
            - publishTopics
        organizationName: organizationName
        environmentName: environmentName
        environmentDisplayName: environmentDisplayName
        solaceURLs:
        - protocol: Defalt
          endpointURL: Default
        - protocol: Defalt
          endpointURL: Default
      properties:
        environmentName:
          type: string
        environmentDisplayName:
          type: string
        organizationName:
          type: string
        solaceURLs:
          items:
            $ref: '#/components/schemas/AdditionalSubscriptionInfo_solaceURLs'
          type: array
        SolaceTopicsObject:
          $ref: '#/components/schemas/AdditionalSubscriptionInfo_SolaceTopicsObject'
  securitySchemes:
    OAuth2Security:
      flows:
        password:
          scopes:
            openid: Authorize access to user details
            apim:subscribe: Subscribe API
            apim:api_key: Generate API Keys
            apim:app_manage: Retrieve, Manage and Import, Export applications
            apim:sub_manage: Retrieve, Manage subscriptions
            apim:store_settings: Retrieve Developer Portal settings
            apim:sub_alert_manage: Retrieve, subscribe and configure Developer Portal
              alert types
            apim:app_import_export: Import and export applications related operations
            apim:admin: Manage all admin operations
          tokenUrl: https://localhost:9443/oauth2/token
      type: oauth2

