All Downloads are FREE. Search and download functionalities are using the official Maven repository.

pim.rest.api.portal.gravitee-apim-rest-api-portal-rest.4.5.5.source-code.portal-openapi.yaml Maven / Gradle / Ivy

openapi: 3.0.0
info:
    title: Gravitee.io Portal Rest API
    description: API dedicated to the devportal part of Gravitee
    termsOfService: terms
    contact:
        name: The Gravitee Team
        url: https://gravitee.io
        email: [email protected]
    license:
        name: Apache 2.0
        url: http://www.apache.org/licenses/LICENSE-2.0
    version: "4.5.5"
servers:
    - url: http://localhost:8083/portal/environments/{envId}
      description: The portal API for a given environment
      variables:
          envId:
              default: DEFAULT
              description: ID of the environment
tags:
    - name: Analytics
      description: All about application analytics
    - name: Api
      description: All about APIs
    - name: Application
      description: All about applications
    - name: Group
      description: All about groups
    - name: Portal
      description: All about portal configurations
    - name: Subscription
      description: All about subscriptions
    - name: User
      description: All about the current user
    - name: Users
      description: All about the portal users
    - name: Entrypoints
      description: All about entrypoints

security:
    - BasicAuth: []
    - CookieAuth: []

paths:
    /apis:
        get:
            tags:
                - Api
            parameters:
                - $ref: "#/components/parameters/pageNumberParam"
                - $ref: "#/components/parameters/pageSizeParam"
                - $ref: "#/components/parameters/apiContextPathQueryParam"
                - $ref: "#/components/parameters/apiLabelQueryParam"
                - $ref: "#/components/parameters/apiVersionQueryParam"
                - $ref: "#/components/parameters/apiNameQueryParam"
                - $ref: "#/components/parameters/apiCategoryQueryParam"
                - $ref: "#/components/parameters/apiFilterQueryParam"
                - $ref: "#/components/parameters/apiFilterExcludedQueryParam"
                - $ref: "#/components/parameters/apiPromotedQueryParam"
            summary: List APIs
            description: |
                List public APIs for anonymous requests.
                List all the APIs the current user is allowed to category for authenticated requests.

                The list can be filtered according to query parameters.

                By default the list is sorted by alphabetic order.
                If a **cat** query param is sent, a specific sorting can be applied. Please refer to **cat** description for detail.
            operationId: getApis
            security:
                - {}
                - BasicAuth: []
                - CookieAuth: []
            responses:
                200:
                    description: List accessible APIs for current user
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/ApisResponse"
                500:
                    $ref: "#/components/responses/InternalServerError"
    /apis/_search:
        post:
            tags:
                - Api
            parameters:
                - $ref: "#/components/parameters/pageNumberParam"
                - $ref: "#/components/parameters/pageSizeParam"
                - $ref: "#/components/parameters/apiQueryParam"
            summary: Search APIs with a query
            description: |
                Same as `/apis` but with a search query as a parameter. Search for API using the search engine.
                Supports pagination.
            operationId: searchApis
            security:
                - {}
                - BasicAuth: []
                - CookieAuth: []
            responses:
                200:
                    description: Search accessible APIs for current user
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/ApisResponse"
                500:
                    $ref: "#/components/responses/InternalServerError"
    /apis/categories:
        get:
            tags:
                - Api
            parameters:
                - $ref: "#/components/parameters/apiFilterQueryParam"
            summary: List Categories
            description: |
                For anonymous requests, list all categories of public APIs.
                For authenticated requests, list all categories of all the APIs the current user can access.

                The list is sorted by alphabetic order.
            operationId: listCategories
            security:
                - {}
                - BasicAuth: []
                - CookieAuth: []
            responses:
                200:
                    description: List used categories in accessible APIs for current user
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/CategoriesResponse"
                500:
                    $ref: "#/components/responses/InternalServerError"
    /apis/{apiId}:
        parameters:
            - $ref: "#/components/parameters/apiIdParam"
        get:
            tags:
                - Api
            parameters:
                - $ref: "#/components/parameters/apiIncludeParam"
            summary: Get the API definition
            description: |
                Get the detail of an API.

                This API has to be accessible by the current user, otherwise a 404 will be returned.
            operationId: getApiByApiId
            security:
                - {}
                - BasicAuth: []
                - CookieAuth: []
            responses:
                200:
                    description: API definition
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/Api"
                404:
                    $ref: "#/components/responses/APINotFoundError"
                500:
                    $ref: "#/components/responses/InternalServerError"
    /apis/{apiId}/informations:
        parameters:
            - $ref: "#/components/parameters/apiIdParam"
        get:
            tags:
                - Portal
            summary: Get the api dynamic informations to display.
            operationId: getApiInformations
            description: |
                Get api informations.
            security:
                - {}
                - BasicAuth: []
                - CookieAuth: []
            responses:
                200:
                    description: List of api informations
                    content:
                        application/json:
                            schema:
                                type: array
                                items:
                                    $ref: "#/components/schemas/ApiInformation"
                500:
                    $ref: "#/components/responses/InternalServerError"
    /apis/{apiId}/links:
        parameters:
            - $ref: "#/components/parameters/apiIdParam"
        get:
            tags:
                - Api
            summary: Get the API links from Aside SYSTEM_FOLDER.
            operationId: getApiLinks
            description: |
                Get all the links (internal and external) to be displayed in the detail of the API.
            security:
                - {}
                - BasicAuth: []
                - CookieAuth: []
            responses:
                200:
                    description: List of Links
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/LinksResponse"
                500:
                    $ref: "#/components/responses/InternalServerError"
    /apis/{apiId}/metrics:
        parameters:
            - $ref: "#/components/parameters/apiIdParam"
        get:
            tags:
                - Api
            summary: Get API metrics
            description: |
                Get some metrics about an API :
                  * number of subscribers
                  * number of hits during the last 7 days
                  * health ratio over the last week

                This API has to be accessible by the current user, otherwise a 404 will be returned.
            operationId: getApiMetricsByApiId
            security:
                - {}
                - BasicAuth: []
                - CookieAuth: []
            responses:
                200:
                    description: API metrics
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/ApiMetrics"
                404:
                    $ref: "#/components/responses/APINotFoundError"
                500:
                    $ref: "#/components/responses/InternalServerError"
    /apis/{apiId}/pages:
        parameters:
            - $ref: "#/components/parameters/apiIdParam"
        get:
            tags:
                - Api
            parameters:
                - $ref: "#/components/parameters/pageNumberParam"
                - $ref: "#/components/parameters/pageSizeParam"
                - $ref: "#/components/parameters/homePageQueryParam"
                - $ref: "#/components/parameters/parentPageQueryParam"
            summary: List API pages
            description: |
                List all documentation pages of an API.

                This API has to be accessible by the current user, otherwise a 404 will be returned.
            operationId: getPagesByApiId
            security:
                - {}
                - BasicAuth: []
                - CookieAuth: []
            responses:
                200:
                    $ref: "#/components/responses/PagesSuccess"
                404:
                    $ref: "#/components/responses/APINotFoundError"
                500:
                    $ref: "#/components/responses/InternalServerError"
    /apis/{apiId}/pages/{pageId}:
        parameters:
            - $ref: "#/components/parameters/apiIdParam"
            - $ref: "#/components/parameters/pageIdParam"
        get:
            tags:
                - Api
            parameters:
                - $ref: "#/components/parameters/pageIncludeParam"
            summary: Get an API page
            description: |
                Get an API page.

                This API has to be accessible by the current user, otherwise a 404 will be returned.
            operationId: getPageByApiIdAndPageId
            security:
                - {}
                - BasicAuth: []
                - CookieAuth: []
            responses:
                200:
                    $ref: "#/components/responses/PageSuccess"
                404:
                    description: API or Page not found
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/ErrorResponse"
                500:
                    $ref: "#/components/responses/InternalServerError"
    /apis/{apiId}/pages/{pageId}/content:
        parameters:
            - $ref: "#/components/parameters/apiIdParam"
            - $ref: "#/components/parameters/pageIdParam"
        get:
            tags:
                - Api
            summary: Get the content of an API page.
            description: |
                Get the content of a specific API documentation page.

                This API has to be accessible by the current user, otherwise a 404 will be returned.
            operationId: getPageContentByApiIdAndPageId
            security:
                - {}
                - BasicAuth: []
                - CookieAuth: []
            responses:
                200:
                    description: The content of the api documentation page.
                    content:
                        text/plain:
                            schema:
                                type: string
                404:
                    description: API or Page not found
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/ErrorResponse"
    /apis/{apiId}/picture:
        parameters:
            - $ref: "#/components/parameters/apiIdParam"
        get:
            tags:
                - Api
            summary: Get the API's picture
            description: |
                Get the API's picture.

                This API has to be accessible by the current user, otherwise a 404 will be returned.
            operationId: getPictureByApiId
            security:
                - {}
                - BasicAuth: []
                - CookieAuth: []
            responses:
                200:
                    $ref: "#/components/responses/PictureSuccess"
                404:
                    $ref: "#/components/responses/APINotFoundError"
                500:
                    $ref: "#/components/responses/InternalServerError"
    /apis/{apiId}/background:
        parameters:
            - $ref: "#/components/parameters/apiIdParam"
        get:
            tags:
                - Api
            summary: Get the API's background
            description: |
                Get the API's background.

                This API has to be accessible by the current user, otherwise a 404 will be returned.
            operationId: getBackgroundByApiId
            security:
                - {}
                - BasicAuth: []
                - CookieAuth: []
            responses:
                200:
                    $ref: "#/components/responses/PictureSuccess"
                404:
                    $ref: "#/components/responses/APINotFoundError"
                500:
                    $ref: "#/components/responses/InternalServerError"
    /apis/{apiId}/plans:
        parameters:
            - $ref: "#/components/parameters/apiIdParam"
        get:
            tags:
                - Api
            parameters:
                - $ref: "#/components/parameters/pageNumberParam"
                - $ref: "#/components/parameters/pageSizeParam"

            summary: List plans for an API
            description: |
                List plans for an API.

                This API has to be accessible by the current user, otherwise a 404 will be returned.
            operationId: getApiPlansByApiId
            security:
                - {}
                - BasicAuth: []
                - CookieAuth: []
            responses:
                200:
                    description: List accessible plans for current user
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/PlansResponse"
                404:
                    $ref: "#/components/responses/APINotFoundError"
                500:
                    $ref: "#/components/responses/InternalServerError"
    /apis/{apiId}/ratings:
        parameters:
            - $ref: "#/components/parameters/apiIdParam"
        get:
            tags:
                - Api
            parameters:
                - $ref: "#/components/parameters/pageNumberParam"
                - $ref: "#/components/parameters/pageSizeParam"
                - $ref: "#/components/parameters/mineQueryParam"
                - $ref: "#/components/parameters/ratingOrderQueryParam"
            summary: List ratings for an API
            description: |
                List ratings for an API.

                This API has to be accessible by the current user, otherwise a 404 will be returned.
            operationId: getApiRatingsByApiId
            security:
                - {}
                - BasicAuth: []
                - CookieAuth: []
            responses:
                200:
                    description: List of ratings
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/RatingsResponse"
                404:
                    $ref: "#/components/responses/APINotFoundError"
                500:
                    $ref: "#/components/responses/InternalServerError"
        post:
            tags:
                - Api
            summary: Create a rating for an API
            description: |
                Create a rating for an API.

                This API has to be accessible by the current user, otherwise a 404 will be returned.

                The current must have API_RATING[CREATE] permission to create a rating.
            operationId: createApiRating
            requestBody:
                description: Use to add a rating to an api
                content:
                    application/json:
                        schema:
                            $ref: "#/components/schemas/RatingInput"
            responses:
                201:
                    description: Created Rating
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/Rating"
                400:
                    description: Rating for this api and this user already exists.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/ErrorResponse"
                403:
                    description: Rating service is not activated or user does not have sufficient rights to access this resource.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/ErrorResponse"
                404:
                    $ref: "#/components/responses/APINotFoundError"
                500:
                    $ref: "#/components/responses/InternalServerError"
    /apis/{apiId}/ratings/{ratingId}:
        parameters:
            - $ref: "#/components/parameters/apiIdParam"
            - $ref: "#/components/parameters/ratingIdParam"
        put:
            tags:
                - Api
            summary: Update a rating for an API
            description: |
                Update a rating for an API.

                This API has to be accessible by the current user, otherwise a 404 will be returned.

                The current must have API_RATING[CREATE] permission to update a rating.
            operationId: updateApiRating
            requestBody:
                description: Use to update a rating to an api
                content:
                    application/json:
                        schema:
                            $ref: "#/components/schemas/RatingInput"
            responses:
                200:
                    description: Updated Rating
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/Rating"
                403:
                    description: Rating service is not activated or user does not have sufficient rights to access this resource.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/ErrorResponse"
                404:
                    description: API or Rating not found
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/ErrorResponse"
                500:
                    $ref: "#/components/responses/InternalServerError"
        delete:
            tags:
                - Api
            summary: Delete a rating for an API
            description: |
                Delete a rating for an API.

                This API has to be accessible by the current user, otherwise a 404 will be returned.

                The current must have API_RATING[DELETE] permission to delete a rating.
            operationId: deleteApiRating
            responses:
                204:
                    description: Deleted Rating
                403:
                    description: Rating service is not activated or user does not have sufficient rights to access this resource.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/ErrorResponse"
                404:
                    description: API or Rating not found
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/ErrorResponse"
                500:
                    $ref: "#/components/responses/InternalServerError"
    /apis/{apiId}/ratings/{ratingId}/answers:
        parameters:
            - $ref: "#/components/parameters/apiIdParam"
            - $ref: "#/components/parameters/ratingIdParam"
        post:
            tags:
                - Api
            summary: Create an answer to rating
            description: |
                Create an answer to rating of API.

                This API has to be accessible by the current user, otherwise a 404 will be returned.

                The current must have API_RATING_ANSWER[CREATE] permission to create an answer.
            operationId: createApiRatingAnswer
            requestBody:
                description: Use to create an answer
                content:
                    application/json:
                        schema:
                            $ref: "#/components/schemas/RatingAnswerInput"
            responses:
                200:
                    description: Updated Rating with answer
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/Rating"
                403:
                    description: Rating service is not activated or user does not have sufficient rights to access this resource.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/ErrorResponse"
                404:
                    description: API or Rating not found
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/ErrorResponse"
                500:
                    $ref: "#/components/responses/InternalServerError"
    /apis/{apiId}/ratings/{ratingId}/answers/{answerId}:
        parameters:
            - $ref: "#/components/parameters/apiIdParam"
            - $ref: "#/components/parameters/ratingIdParam"
            - $ref: "#/components/parameters/answerIdParam"
        delete:
            tags:
                - Api
            summary: Delete an answer rating for an API
            description: |
                Delete an answer rating for an API.

                This API has to be accessible by the current user, otherwise a 404 will be returned.

                The current must have API_RATING_ANSWER[DELETE] permission to delete a rating.
            operationId: deleteApiRatingAnswer
            responses:
                204:
                    description: Deleted Rating Answer
                403:
                    description: Rating service is not activated or user does not have sufficient rights to access this resource.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/ErrorResponse"
                404:
                    description: API, Rating or Answer not found
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/ErrorResponse"
                500:
                    $ref: "#/components/responses/InternalServerError"
    /apis/{apiId}/subscribers:
        parameters:
            - $ref: "#/components/parameters/apiIdParam"
        get:
            tags:
                - Api
            parameters:
                - $ref: "#/components/parameters/pageNumberParam"
                - $ref: "#/components/parameters/pageSizeParam"
                - $ref: "#/components/parameters/subscriptionStatusesQueryParam"

            summary: List applications that subscribred to an API
            description: |
                If the current user is the owner of the API, all connected applications will be returned. Filtered by status. Ordered by number of hits.
                Else only applications that current is allowed to access will.

                This API has to be accessible by the current user, otherwise a 404 will be returned.
            operationId: getSubscriberApplicationsByApiId
            security:
                - {}
                - BasicAuth: []
                - CookieAuth: []
            responses:
                200:
                    description: List accessible applications for current user
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/ApplicationsResponse"
                404:
                    $ref: "#/components/responses/APINotFoundError"
                500:
                    $ref: "#/components/responses/InternalServerError"
    /apis/{apiId}/media/{mediaHash}:
        parameters:
            - $ref: "#/components/parameters/apiIdParam"
            - $ref: "#/components/parameters/mediaHashParam"
        get:
            tags:
                - Api
            summary: Get the api media.
            operationId: getApiMedia
            description: |
                Get api media.
            security:
                - {}
                - BasicAuth: []
                - CookieAuth: []
            responses:
                200:
                    $ref: "#/components/responses/MediaSuccess"
                404:
                    $ref: "#/components/responses/APINotFoundError"
                500:
                    $ref: "#/components/responses/InternalServerError"

    /applications:
        get:
            tags:
                - Application
            parameters:
                - $ref: "#/components/parameters/pageNumberParam"
                - $ref: "#/components/parameters/pageSizeParam"
                - $ref: "#/components/parameters/forSubscriptionParam"
                - $ref: "#/components/parameters/applicationOrderQueryParam"
            summary: List all the applications accessible to authenticated user. Default order is by *name* ASC.
            description: |
                List all the applications accessible to authenticated user.

                User must have MANAGEMENT_APPLICATION[READ] and PORTAL_APPLICATION[READ] permission.
                For performance reasons, calling `/applications?size=-1` does not return the number of subscribers and the only information available in the owner of each application is:
                  - id
                  - displayName
                  - email
            operationId: getApplications
            responses:
                200:
                    description: List of Applications.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/ApplicationsResponse"
                403:
                    $ref: "#/components/responses/PermissionError"
                500:
                    $ref: "#/components/responses/InternalServerError"
        post:
            tags:
                - Application
            requestBody:
                description: Use to create an application.
                content:
                    application/json:
                        schema:
                            $ref: "#/components/schemas/ApplicationInput"
            summary: Create an application
            description: |
                Create an application.

                User must have MANAGEMENT_APPLICATION[CREATE] permission.
            operationId: createApplication
            responses:
                201:
                    description: Created application.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/Application"
                400:
                    description: Bad Request if body is empty.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/ErrorResponse"
                403:
                    $ref: "#/components/responses/PermissionError"
                500:
                    $ref: "#/components/responses/InternalServerError"
    /applications/{applicationId}:
        parameters:
            - $ref: "#/components/parameters/applicationIdParam"
        get:
            tags:
                - Application
            summary: Get an application.
            description: |
                Get an application.

                User must have the APPLICATION_DEFINITION[READ] permission.
            operationId: getApplicationByApplicationId
            responses:
                200:
                    description: One application.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/Application"
                403:
                    $ref: "#/components/responses/PermissionError"
                404:
                    $ref: "#/components/responses/ApplicationNotFoundError"
                500:
                    $ref: "#/components/responses/InternalServerError"
        put:
            tags:
                - Application
            requestBody:
                description: Use to update an application.
                content:
                    application/json:
                        schema:
                            $ref: "#/components/schemas/Application"
            summary: Update an application.
            description: |
                Update an application.

                User must have APPLICATION_DEFINITION[UPDATE] permission.
            operationId: updateApplicationByApplicationId
            responses:
                200:
                    description: Updated application.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/Application"
                400:
                    description: Bad Request if body is empty.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/ErrorResponse"
                403:
                    $ref: "#/components/responses/PermissionError"
                404:
                    $ref: "#/components/responses/ApplicationNotFoundError"
                500:
                    $ref: "#/components/responses/InternalServerError"
        delete:
            tags:
                - Application
            summary: Delete an application
            description: |
                Delete an application.

                User must have the APPLICATION_DEFINITION[DELETE] permission.
            operationId: deleteApplicationByApplicationId
            responses:
                204:
                    description: No-Content
                403:
                    $ref: "#/components/responses/PermissionError"
                404:
                    $ref: "#/components/responses/ApplicationNotFoundError"
                500:
                    $ref: "#/components/responses/InternalServerError"
    /applications/{applicationId}/picture:
        parameters:
            - $ref: "#/components/parameters/applicationIdParam"
        get:
            tags:
                - Application
            summary: Get the application's picture
            description: |
                Get the application's picture.

                User must have APPLICATION_DEFINITION[READ] permission.
            operationId: getApplicationPictureByApplicationId
            responses:
                200:
                    $ref: "#/components/responses/PictureSuccess"
                403:
                    $ref: "#/components/responses/PermissionError"
                404:
                    $ref: "#/components/responses/ApplicationNotFoundError"
                500:
                    $ref: "#/components/responses/InternalServerError"
    /applications/{applicationId}/background:
        parameters:
            - $ref: "#/components/parameters/applicationIdParam"
        get:
            tags:
                - Application
            summary: Get the application's background
            description: |
                Get the application's background.

                User must have APPLICATION_DEFINITION[READ] permission.
            operationId: getApplicationBackgroundByApplicationId
            responses:
                200:
                    $ref: "#/components/responses/PictureSuccess"
                403:
                    $ref: "#/components/responses/PermissionError"
                404:
                    $ref: "#/components/responses/ApplicationNotFoundError"
                500:
                    $ref: "#/components/responses/InternalServerError"
    /applications/{applicationId}/alerts:
        parameters:
            - $ref: "#/components/parameters/applicationIdParam"
        get:
            tags:
                - Application
            summary: Get application alerts
            description: |
                Get application alerts.

                User must have APPLICATION_ALERT[READ] permission to get alerts.
            operationId: getAlertsByApplicationId
            responses:
                200:
                    description: List of alerts
                    content:
                        application/json:
                            schema:
                                type: array
                                items:
                                    $ref: "#/components/schemas/Alert"
                403:
                    $ref: "#/components/responses/PermissionError"
                404:
                    $ref: "#/components/responses/ApplicationNotFoundError"
                500:
                    $ref: "#/components/responses/InternalServerError"
        post:
            tags:
                - Application
            requestBody:
                description: Use to create a post.
                content:
                    application/json:
                        schema:
                            $ref: "#/components/schemas/AlertInput"
            summary: Create an application alert
            description: |
                Create an application alert.

                User must have the APPLICATION_ALERT[CREATE] permission.
            operationId: createApplicationAlert
            responses:
                201:
                    description: Created alert
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/Alert"
                403:
                    $ref: "#/components/responses/PermissionError"
                404:
                    $ref: "#/components/responses/ApplicationNotFoundError"
                500:
                    $ref: "#/components/responses/InternalServerError"

    /applications/{applicationId}/alerts/{alertId}:
        parameters:
            - $ref: "#/components/parameters/applicationIdParam"
            - $ref: "#/components/parameters/alertIdParam"

        delete:
            tags:
                - Application
            summary: Delete a alert for an Application
            description: |
                Delete a alert for an Application.

                The current user must have APPLICATION_ALERT[DELETE] permission to delete a alert.
            operationId: deleteApplicationAlert
            responses:
                204:
                    description: Deleted Alert
                403:
                    description: Alert service is not activated or user does not have sufficient rights to access this resource.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/ErrorResponse"
                404:
                    description: Application or Alert not found
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/ErrorResponse"
                500:
                    $ref: "#/components/responses/InternalServerError"
        put:
            tags:
                - Application
            requestBody:
                description: Use to update an application alert.
                content:
                    application/json:
                        schema:
                            $ref: "#/components/schemas/AlertInput"
            summary: Update alert for an application.
            description: |
                Update alert for an application.

                User must have APPLICATION_ALERT[UPDATE] permission to update alerts.
            operationId: updateAlert
            responses:
                200:
                    description: Updated application alerts.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/Alert"
                403:
                    $ref: "#/components/responses/PermissionError"
                404:
                    $ref: "#/components/responses/ApplicationNotFoundError"
                500:
                    $ref: "#/components/responses/InternalServerError"
    /applications/{applicationId}/alerts/status:
        parameters:
            - $ref: "#/components/parameters/applicationIdParam"
        get:
            tags:
                - Application
            summary: Get application alert status
            description: |
                Get application alert status.

                User must have APPLICATION_ALERT[READ] permission to get alert status.
            operationId: getApplicationAlertStatus
            responses:
                200:
                    description: Alert status
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/AlertStatusResponse"
                403:
                    $ref: "#/components/responses/PermissionError"
                404:
                    $ref: "#/components/responses/ApplicationNotFoundError"
                500:
                    $ref: "#/components/responses/InternalServerError"
    /applications/{applicationId}/notifications:
        parameters:
            - $ref: "#/components/parameters/applicationIdParam"
        get:
            tags:
                - Application
            summary: Get application notifications
            description: |
                Get application notifications.

                User must have APPLICATION_NOTIFICATION[READ] permission to get notifications.
            operationId: getNotificationsByApplicationId
            responses:
                200:
                    description: List of notifications configured
                    content:
                        application/json:
                            schema:
                                description: List of notifications configured on the application.
                                type: array
                                items:
                                    type: string
                403:
                    $ref: "#/components/responses/PermissionError"
                404:
                    $ref: "#/components/responses/ApplicationNotFoundError"
                500:
                    $ref: "#/components/responses/InternalServerError"
        put:
            tags:
                - Application
            requestBody:
                description: Use to update application notifications.
                content:
                    application/json:
                        schema:
                            description: List of notifications configured on the application.
                            $ref: "#/components/schemas/NotificationInput"
            summary: Update notifications for an application.
            description: |
                Update notifications for an application.

                User must have APPLICATION_NOTIFICATION[UPDATE] permission to update notifications.
            operationId: updateApplicationNotifications
            responses:
                200:
                    description: Updated application notifications.
                    content:
                        application/json:
                            schema:
                                type: array
                                items:
                                    type: string
                403:
                    $ref: "#/components/responses/PermissionError"
                404:
                    $ref: "#/components/responses/ApplicationNotFoundError"
                500:
                    $ref: "#/components/responses/InternalServerError"
    /applications/{applicationId}/members:
        parameters:
            - $ref: "#/components/parameters/applicationIdParam"
        get:
            tags:
                - Application
            parameters:
                - $ref: "#/components/parameters/pageNumberParam"
                - $ref: "#/components/parameters/pageSizeParam"
            summary: List application members
            description: |
                List application members.

                User must have the APPLICATION_MEMBER[READ] permission.
            operationId: getMembersByApplicationId
            responses:
                200:
                    description: List of members
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/MembersResponse"
                403:
                    $ref: "#/components/responses/PermissionError"
                404:
                    $ref: "#/components/responses/ApplicationNotFoundError"
                500:
                    $ref: "#/components/responses/InternalServerError"
        post:
            tags:
                - Application
            requestBody:
                description: Use to create a member.
                content:
                    application/json:
                        schema:
                            $ref: "#/components/schemas/MemberInput"
            summary: Create an application member
            description: |
                Create an application member.

                User must have the APPLICATION_MEMBER[CREATE] permission.
            operationId: createApplicationMember
            responses:
                201:
                    description: Created member
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/Member"
                403:
                    $ref: "#/components/responses/PermissionError"
                404:
                    $ref: "#/components/responses/ApplicationNotFoundError"
                500:
                    $ref: "#/components/responses/InternalServerError"
    /applications/{applicationId}/members/_transfer_ownership:
        parameters:
            - $ref: "#/components/parameters/applicationIdParam"
        post:
            tags:
                - Application
            requestBody:
                description: Use to transfer ownership of an application.
                content:
                    application/json:
                        schema:
                            $ref: "#/components/schemas/TransferOwnershipInput"
            summary: Transfer the ownership of the application
            description: |
                Transfer the ownership of the application.

                User must have the APPLICATION_MEMBER[UPDATE] permission.
            operationId: transferMemberOwnership
            responses:
                204:
                    description: No-Content
                403:
                    $ref: "#/components/responses/PermissionError"
                404:
                    $ref: "#/components/responses/ApplicationNotFoundError"
                500:
                    $ref: "#/components/responses/InternalServerError"
    /applications/{applicationId}/members/{memberId}:
        parameters:
            - $ref: "#/components/parameters/applicationIdParam"
            - $ref: "#/components/parameters/memberIdParam"
        get:
            tags:
                - Application
            summary: Get an application member
            description: |
                Get an application member.

                User must have the APPLICATION_MEMBER[READ] permission.
            operationId: getApplicationMemberByApplicationIdAndMemberId
            responses:
                200:
                    description: A member
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/Member"
                403:
                    $ref: "#/components/responses/PermissionError"
                404:
                    description: Application or Member not found
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/ErrorResponse"
                500:
                    $ref: "#/components/responses/InternalServerError"
        put:
            tags:
                - Application
            requestBody:
                description: Use to update a member.
                content:
                    application/json:
                        schema:
                            $ref: "#/components/schemas/MemberInput"
            summary: Update an application member.
            description: |
                Update an application member.

                User must have the APPLICATION_MEMBER[UPDATE] permission.
            operationId: updateApplicationMemberByApplicationIdAndMemberId
            responses:
                200:
                    description: Updated member.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/Member"
                403:
                    $ref: "#/components/responses/PermissionError"
                404:
                    description: Application or Member not found
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/ErrorResponse"
                500:
                    $ref: "#/components/responses/InternalServerError"
        delete:
            tags:
                - Application
            summary: Remove an application member
            description: |
                Remove an application member.

                User must have the APPLICATION_MEMBER[DELETE] permission.
            operationId: deleteApplicationMember
            responses:
                204:
                    description: No-Content
                403:
                    $ref: "#/components/responses/PermissionError"
                404:
                    description: Application or Member not found
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/ErrorResponse"
                500:
                    $ref: "#/components/responses/InternalServerError"
    /applications/{applicationId}/metadata:
        parameters:
            - $ref: "#/components/parameters/applicationIdParam"
        get:
            tags:
                - Application
            parameters:
                - $ref: "#/components/parameters/pageNumberParam"
                - $ref: "#/components/parameters/pageSizeParam"
            summary: List application metadata
            description: |
                List application metadata.

                User must have the APPLICATION_METADATA[READ] permission.
            operationId: getMetadataByApplicationId
            responses:
                200:
                    description: List of metadata
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/ReferenceMetadataResponse"
                403:
                    $ref: "#/components/responses/PermissionError"
                404:
                    $ref: "#/components/responses/ApplicationNotFoundError"
                500:
                    $ref: "#/components/responses/InternalServerError"
        post:
            tags:
                - Application
            requestBody:
                description: Use to create a metadata.
                content:
                    application/json:
                        schema:
                            $ref: "#/components/schemas/ReferenceMetadataInput"
            summary: Create an application metadata
            description: |
                Create an application metadata.

                User must have the APPLICATION_METADATA[CREATE] permission.
            operationId: createApplicationMetadata
            responses:
                201:
                    description: Created metadata
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/ReferenceMetadata"
                403:
                    $ref: "#/components/responses/PermissionError"
                404:
                    $ref: "#/components/responses/ApplicationNotFoundError"
                500:
                    $ref: "#/components/responses/InternalServerError"
    /applications/{applicationId}/metadata/{metadataId}:
        parameters:
            - $ref: "#/components/parameters/applicationIdParam"
            - $ref: "#/components/parameters/metadataIdParam"
        get:
            tags:
                - Application
            summary: Get an application metadata
            description: |
                Get an application metadata.

                User must have the APPLICATION_METADATA[READ] permission.
            operationId: getApplicationMetadataByApplicationIdAndMetadataId
            responses:
                200:
                    description: A metadata
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/ReferenceMetadata"
                403:
                    $ref: "#/components/responses/PermissionError"
                404:
                    description: Application or Metadata not found
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/ErrorResponse"
                500:
                    $ref: "#/components/responses/InternalServerError"
        put:
            tags:
                - Application
            requestBody:
                description: Use to update a metadata.
                content:
                    application/json:
                        schema:
                            $ref: "#/components/schemas/ReferenceMetadataInput"
            summary: Update an application metadata.
            description: |
                Update an application metadata.

                User must have the APPLICATION_METADATA[UPDATE] permission.
            operationId: updateApplicationMetadataByApplicationIdAndMetadataId
            responses:
                200:
                    description: Updated metadata.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/ReferenceMetadata"
                403:
                    $ref: "#/components/responses/PermissionError"
                404:
                    description: Application or Metadata not found
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/ErrorResponse"
                500:
                    $ref: "#/components/responses/InternalServerError"
        delete:
            tags:
                - Application
            summary: Remove an application metadata
            description: |
                Remove an application metadata.

                User must have the APPLICATION_METADATA[DELETE] permission.
            operationId: deleteApplicationMetadata
            responses:
                204:
                    description: No-Content
                403:
                    $ref: "#/components/responses/PermissionError"
                404:
                    description: Application or Metadata not found
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/ErrorResponse"
                500:
                    $ref: "#/components/responses/InternalServerError"
    /applications/{applicationId}/analytics:
        parameters:
            - $ref: "#/components/parameters/applicationIdParam"
        get:
            tags:
                - Application
                - Analytics
            parameters:
                - $ref: "#/components/parameters/pageNumberParam"
                - $ref: "#/components/parameters/pageSizeParam"
                - $ref: "#/components/parameters/fromQueryParam"
                - $ref: "#/components/parameters/toQueryParam"
                - $ref: "#/components/parameters/intervalQueryParam"
                - $ref: "#/components/parameters/queryQueryParam"
                - $ref: "#/components/parameters/fieldQueryParam"
                - $ref: "#/components/parameters/analyticTypeQueryParam"
                - $ref: "#/components/parameters/analyticRangeQueryParam"
                - $ref: "#/components/parameters/analyticAggregationQueryParam"
                - $ref: "#/components/parameters/analyticOrderQueryParam"
            summary: Get Application analytics
            description: |
                Get the application analytics.

                User must have the APPLICATION_ANALYTICS[READ] permission.
            operationId: getApplicationAnalytics
            responses:
                200:
                    description: Analytics
                    content:
                        application/json:
                            schema:
                                oneOf:
                                    - $ref: "#/components/schemas/DateHistoAnalytics"
                                    - $ref: "#/components/schemas/GroupByAnalytics"
                                    - $ref: "#/components/schemas/CountAnalytics"
                400:
                    description: Invalid query params.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/ErrorResponse"
                403:
                    $ref: "#/components/responses/PermissionError"
                404:
                    $ref: "#/components/responses/ApplicationNotFoundError"
                500:
                    $ref: "#/components/responses/InternalServerError"
    /applications/{applicationId}/configuration:
        parameters:
            - $ref: "#/components/parameters/applicationIdParam"
        get:
            tags:
                - Application
            summary: Get the application type configuration.
            operationId: getApplicationType
            description: |
                Get application type.
            security:
                - {}
                - BasicAuth: []
                - CookieAuth: []
            responses:
                200:
                    description: Application type configuration
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/ApplicationType"
                500:
                    $ref: "#/components/responses/InternalServerError"
    /applications/{applicationId}/logs:
        parameters:
            - $ref: "#/components/parameters/applicationIdParam"
        get:
            tags:
                - Application
                - Analytics
            parameters:
                - $ref: "#/components/parameters/pageNumberParam"
                - $ref: "#/components/parameters/pageSizeParam"
                - $ref: "#/components/parameters/fromQueryParam"
                - $ref: "#/components/parameters/toQueryParam"
                - $ref: "#/components/parameters/queryQueryParam"
                - $ref: "#/components/parameters/fieldQueryParam"
                - $ref: "#/components/parameters/logOrderQueryParam"
            summary: Get Application logs
            description: |
                Get the application logs.

                User must have the APPLICATION_LOG[READ] permission.
            operationId: getApplicationLogs
            responses:
                200:
                    description: List of logs
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/LogsResponse"
                400:
                    description: Invalid query params.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/ErrorResponse"
                403:
                    $ref: "#/components/responses/PermissionError"
                404:
                    $ref: "#/components/responses/ApplicationNotFoundError"
                500:
                    $ref: "#/components/responses/InternalServerError"
    /applications/{applicationId}/logs/_export:
        parameters:
            - $ref: "#/components/parameters/applicationIdParam"
        post:
            tags:
                - Application
                - Analytics
            parameters:
                - $ref: "#/components/parameters/pageNumberParam"
                - $ref: "#/components/parameters/pageSizeParam"
                - $ref: "#/components/parameters/fromQueryParam"
                - $ref: "#/components/parameters/toQueryParam"
                - $ref: "#/components/parameters/queryQueryParam"
                - $ref: "#/components/parameters/fieldQueryParam"
                - $ref: "#/components/parameters/logOrderQueryParam"
            summary: Export application logs as CSV
            description: |
                Export application logs as CSV.

                User must have the APPLICATION_LOG[READ] permission.
            operationId: exportApplicationLogsByApplicationId
            responses:
                200:
                    description: CSV export of the logs
                    content:
                        text/plain:
                            schema:
                                type: string
                400:
                    description: Invalid query params.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/ErrorResponse"
                403:
                    $ref: "#/components/responses/PermissionError"
                404:
                    $ref: "#/components/responses/ApplicationNotFoundError"
                500:
                    $ref: "#/components/responses/InternalServerError"
    /applications/{applicationId}/logs/{logId}:
        parameters:
            - $ref: "#/components/parameters/applicationIdParam"
            - $ref: "#/components/parameters/logIdParam"
        get:
            tags:
                - Application
                - Analytics
            parameters:
                - $ref: "#/components/parameters/logTimestampQueryParam"
            summary: Get a specific log of an application
            description: |
                Get a specific log of an application.

                User must have the APPLICATION_LOG[READ] permission.
            operationId: getApplicationLogByApplicationIdAndLogId
            responses:
                200:
                    description: A log
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/Log"
                403:
                    $ref: "#/components/responses/PermissionError"
                404:
                    description: Application or Log not found
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/ErrorResponse"
                500:
                    $ref: "#/components/responses/InternalServerError"
    /applications/{applicationId}/_renew_secret:
        parameters:
            - $ref: "#/components/parameters/applicationIdParam"
        post:
            tags:
                - Application
            summary: Renew the client secret for an OAuth2 application
            description: |
                Renew the client secret for an OAuth2 application.

                User must have the APPLICATION_DEFINITION[UPDATE] permission.
            operationId: renewApplicationSecret
            responses:
                200:
                    description: Updated application with a new secret.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/Application"
                403:
                    $ref: "#/components/responses/PermissionError"
                404:
                    $ref: "#/components/responses/ApplicationNotFoundError"
                500:
                    $ref: "#/components/responses/InternalServerError"
    /applications/{applicationId}/subscribers:
        parameters:
            - $ref: "#/components/parameters/applicationIdParam"
        get:
            tags:
                - Application
            parameters:
                - $ref: "#/components/parameters/pageNumberParam"
                - $ref: "#/components/parameters/pageSizeParam"
                - $ref: "#/components/parameters/subscriptionStatusesQueryParam"

            summary: List APIs that subscribed with an application
            description: |
                Lists API that current user is allowed to access. May be filtered by status. Ordered by nimber of hits.

                This application has to be accessible by the current user, otherwise a 404 will be returned.
            operationId: getSubscriberApisByApplicationId
            security:
                - {}
                - BasicAuth: []
                - CookieAuth: []
            responses:
                200:
                    description: List accessible APIs for current user
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/ApisResponse"
                404:
                    $ref: "#/components/responses/ApplicationNotFoundError"
                500:
                    $ref: "#/components/responses/InternalServerError"
    /applications/{applicationId}/keys/_renew:
        parameters:
            - $ref: "#/components/parameters/applicationIdParam"
        post:
            tags:
                - Application
            summary: Renew the shared API Key of an application.
            description: |
                Renew the shared API Key of on application.
                The application must have the ApiKeyMode set to SHARED
                User must have APPLICATION_SUBSCRIPTION[UPDATE] permission.
            operationId: renewSharedKey
            responses:
                201:
                    description: Renewed Key.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/Key"
                400:
                    description: Application does not use shared API Key mode
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/ErrorResponse"
                403:
                    $ref: "#/components/responses/PermissionError"
                404:
                    description: Application not found
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/ErrorResponse"
                500:
                    $ref: "#/components/responses/InternalServerError"
    /applications/{applicationId}/keys/{apiKey}/_revoke:
        parameters:
            - $ref: "#/components/parameters/applicationIdParam"
            - name: apiKey
              in: path
              required: true
              schema:
                  type: string
        post:
            tags:
                - Application
            summary: Revoke the shared API Key of an application.
            description: |
                Revoke the shared API Key of on application.
                The application must have the ApiKeyMode set to SHARED
                User must have APPLICATION_SUBSCRIPTION[UPDATE] permission.
            operationId: revokeSharedKey
            responses:
                204:
                    description: No-Content
                400:
                    description: ApiKey parameter does not correspond to the application
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/ErrorResponse"
                403:
                    $ref: "#/components/responses/PermissionError"
                404:
                    description: Application or key not found
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/ErrorResponse"
                500:
                    $ref: "#/components/responses/InternalServerError"

    /groups:
        get:
            tags:
                - Group
            parameters:
                - $ref: "#/components/parameters/pageNumberParam"
                - $ref: "#/components/parameters/pageSizeParam"
            summary: List groups
            description: |
                List all groups

                User must have the MANAGEMENT_GROUP[READ] permission.
            operationId: getGroups
            responses:
                200:
                    description: List of groups
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/GroupsResponse"
                500:
                    $ref: "#/components/responses/InternalServerError"
    /groups/{groupId}/members:
        parameters:
            - $ref: "#/components/parameters/groupIdParam"
        get:
            tags:
                - Group
            parameters:
                - $ref: "#/components/parameters/pageNumberParam"
                - $ref: "#/components/parameters/pageSizeParam"
            summary: List group members
            description: |
                List group members that have a Application role.

                User must have the MANAGEMENT_GROUP[READ] permission.
            operationId: getMembersByGroupId
            responses:
                200:
                    description: List of members
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/MembersResponse"
                403:
                    $ref: "#/components/responses/PermissionError"
                404:
                    $ref: "#/components/responses/GroupNotFoundError"
                500:
                    $ref: "#/components/responses/InternalServerError"
    /media/{mediaHash}:
        parameters:
            - $ref: "#/components/parameters/mediaHashParam"
        get:
            tags:
                - Portal
            summary: Get the media of the portal.
            operationId: getPortalMedia
            description: |
                Get portal media.
            security:
                - {}
                - BasicAuth: []
                - CookieAuth: []
            responses:
                200:
                    $ref: "#/components/responses/MediaSuccess"
                500:
                    $ref: "#/components/responses/InternalServerError"
    /pages:
        get:
            tags:
                - Portal
            parameters:
                - $ref: "#/components/parameters/pageNumberParam"
                - $ref: "#/components/parameters/pageSizeParam"
                - $ref: "#/components/parameters/homePageQueryParam"
                - $ref: "#/components/parameters/parentPageQueryParam"
            summary: List portal pages
            description: |
                List all portal documentation pages
            operationId: getPages
            security:
                - {}
                - BasicAuth: []
                - CookieAuth: []
            responses:
                200:
                    $ref: "#/components/responses/PagesSuccess"
                500:
                    $ref: "#/components/responses/InternalServerError"
    /pages/{pageId}:
        parameters:
            - $ref: "#/components/parameters/pageIdParam"
        get:
            tags:
                - Portal
            parameters:
                - $ref: "#/components/parameters/pageIncludeParam"
            summary: Get a portal page
            description: |
                Get a specific portal documentation page.
            operationId: getPageByPageId
            security:
                - {}
                - BasicAuth: []
                - CookieAuth: []
            responses:
                200:
                    $ref: "#/components/responses/PageSuccess"
                404:
                    description: Page not found
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/ErrorResponse"
                500:
                    $ref: "#/components/responses/InternalServerError"
    /pages/{pageId}/content:
        parameters:
            - $ref: "#/components/parameters/pageIdParam"
        get:
            tags:
                - Portal
            summary: Get the content of a portal page.
            description: |
                Get the contentn of a specific portal documentation page.
            operationId: getPageContentByPageId
            security:
                - {}
                - BasicAuth: []
                - CookieAuth: []
            responses:
                200:
                    description: The content of the portal documentation page.
                    content:
                        text/plain:
                            schema:
                                type: string
                404:
                    description: Page not found
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/ErrorResponse"
                500:
                    $ref: "#/components/responses/InternalServerError"
    /applications/hooks:
        get:
            tags:
                - Application
            summary: Get the application's hooks list.
            operationId: getHooks
            description: |
                Get application's hooks that can be used in the portal.
            security:
                - {}
                - BasicAuth: []
                - CookieAuth: []
            responses:
                200:
                    description: List of hooks
                    content:
                        application/json:
                            schema:
                                description: List of hooks
                                type: array
                                items:
                                    $ref: "#/components/schemas/Hook"
                500:
                    $ref: "#/components/responses/InternalServerError"

    /subscriptions:
        get:
            tags:
                - Subscription
            parameters:
                - $ref: "#/components/parameters/apiIdQueryParam"
                - $ref: "#/components/parameters/applicationIdQueryParam"
                - $ref: "#/components/parameters/subscriptionStatusesQueryParam"
                - $ref: "#/components/parameters/pageNumberParam"
                - $ref: "#/components/parameters/pageSizeParam"
            description: |
                List all ACCEPTED, PAUSED & PENDING subscriptions, filtered by api and/or by application. At least an api or an application must be provided.

                User must have the APPLICATION_SUBSCRIPTION[READ] permission to list subscription with application query param.\
                User must have the API_SUBSCRIPTION[READ] permission to list subscription with api query param.

            operationId: getSubscriptions
            responses:
                200:
                    description: List of Subscriptions
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/SubscriptionsResponse"
                400:
                    description: At least an api or an application must be provided.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/ErrorResponse"
                403:
                    $ref: "#/components/responses/PermissionError"
                500:
                    $ref: "#/components/responses/InternalServerError"
        post:
            tags:
                - Subscription
            requestBody:
                description: Use to create a subscription.
                content:
                    application/json:
                        schema:
                            $ref: "#/components/schemas/SubscriptionInput"
            summary: Create a subscription.
            description: |
                Create a new subscription. If the application used to subscribe has no api key mode (UNSPECIFIED) and the plan is APIKEY, then the api key mode can be set during creation.
                Otherwise, the api_key_mode field is ignored.

                User must have APPLICATION_SUBSCRIPTION[CREATE] permission.
            operationId: createSubscription
            responses:
                200:
                    description: Created subscription.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/Subscription"
                400:
                    description: Input must not be null.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/ErrorResponse"
                403:
                    $ref: "#/components/responses/PermissionError"
                500:
                    $ref: "#/components/responses/InternalServerError"
    /subscriptions/{subscriptionId}:
        parameters:
            - $ref: "#/components/parameters/subscriptionIdParam"
        get:
            tags:
                - Subscription
            parameters:
                - $ref: "#/components/parameters/subscriptionIncludeQueryParam"

            summary: Get a subscription.
            description: |
                Get a subscription.

                User must have API_SUBSCRIPTION[CREATE] or APPLICATION_SUBSCRIPTION[CREATE] permission.
            operationId: getSubscriptionById
            responses:
                200:
                    description: One subscription.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/Subscription"
                403:
                    $ref: "#/components/responses/PermissionError"
                404:
                    description: Subscription not found
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/ErrorResponse"
                500:
                    $ref: "#/components/responses/InternalServerError"
        put:
            tags:
                - Subscription
            summary: Update a subscription
            requestBody:
                description: Configuration of the subscription to update
                content:
                    application/json:
                        schema:
                            $ref: "#/components/schemas/UpdateSubscriptionInput"
            description: |
                Update a subscription.

                User must have APPLICATION_SUBSCRIPTION[UPDATE] permission.
            operationId: updateSubscription
            responses:
                200:
                    description: Subscription updated
                403:
                    $ref: "#/components/responses/PermissionError"
                404:
                    description: Subscription not found
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/ErrorResponse"
                400:
                    description: Subscription not updatable, or bad subscription configuration format
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/ErrorResponse"
                500:
                    $ref: "#/components/responses/InternalServerError"
    /subscriptions/{subscriptionId}/_close:
        parameters:
            - $ref: "#/components/parameters/subscriptionIdParam"
        post:
            tags:
                - Subscription
            summary: Close a subscription
            description: |
                Close a subscription.

                User must have APPLICATION_SUBSCRIPTION[DELETE] permission.
            operationId: closeSubscription
            responses:
                204:
                    description: No-Content
                403:
                    $ref: "#/components/responses/PermissionError"
                404:
                    description: Subscription not found
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/ErrorResponse"
                500:
                    $ref: "#/components/responses/InternalServerError"
    /subscriptions/{subscriptionId}/_changeConsumerStatus:
        parameters:
            - $ref: "#/components/parameters/subscriptionIdParam"
            - $ref: "#/components/parameters/subscriptionConsumerStatusParam"
        post:
            tags:
                - Subscription
            summary: Update the consumer status of a subscription
            description: |
                Update the consumer status of a subscription

                User must have APPLICATION_SUBSCRIPTION[UPDATE] permission.
            operationId: updateSubscriptionConsumerStatus
            responses:
                200:
                    description: Subscription successfully updated
                403:
                    $ref: "#/components/responses/PermissionError"
                400:
                    description: Invalid Request
                404:
                    description: Subscription not found
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/ErrorResponse"
                500:
                    $ref: "#/components/responses/InternalServerError"
    /subscriptions/{subscriptionId}/keys/_renew:
        parameters:
            - $ref: "#/components/parameters/subscriptionIdParam"
        post:
            tags:
                - Subscription
            requestBody:
                description: Use to renew keys of a subscription.
                content:
                    application/json:
                        schema:
                            type: array
                            items:
                                type: string
            summary: Renew a key subscription.
            description: |
                Renew a key subscription.

                User must have API_SUBSCRIPTION[UPDATE] or APPLICATION_SUBSCRIPTION[UPDATE] permission.
            operationId: renewKeySubscription
            responses:
                201:
                    description: Renewed Key.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/Key"
                403:
                    $ref: "#/components/responses/PermissionError"
                404:
                    description: Subscription not found
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/ErrorResponse"
                500:
                    $ref: "#/components/responses/InternalServerError"
    /subscriptions/{subscriptionId}/keys/{apiKey}/_revoke:
        parameters:
            - $ref: "#/components/parameters/subscriptionIdParam"
            - name: apiKey
              in: path
              required: true
              schema:
                  type: string
        post:
            tags:
                - Subscription
            summary: Revoke a key subscription.
            description: |
                Revoke a key subscription.

                User must have API_SUBSCRIPTION[UPDATE] or APPLICATION_SUBSCRIPTION[UPDATE] permission.
            operationId: revokeKeySubscription
            responses:
                204:
                    description: No-Content
                403:
                    $ref: "#/components/responses/PermissionError"
                404:
                    description: Subscription or Key not found
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/ErrorResponse"
                500:
                    $ref: "#/components/responses/InternalServerError"

    /users/registration:
        post:
            tags:
                - Users
            summary: Register a new user.
            description: |
                Register a new user for the portal. As a result, an email is sent with an activation link.

                User registration must be enabled.\
                A SMTP server must have been configured.
            operationId: registerNewUser
            requestBody:
                description: Used to register a new User.
                content:
                    application/json:
                        schema:
                            $ref: "#/components/schemas/RegisterUserInput"
            responses:
                200:
                    description: User successfully registered
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/User"
                500:
                    $ref: "#/components/responses/InternalServerError"

    /users/registration/_finalize:
        post:
            tags:
                - Users
            summary: Finalize user registration.
            description: |
                Create a new user for the portal.

                User registration must be enabled.
            operationId: finalizeUserRegistration
            requestBody:
                description: Used to finalize a user registration.
                content:
                    application/json:
                        schema:
                            $ref: "#/components/schemas/FinalizeRegistrationInput"
            responses:
                200:
                    description: User successfully created.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/User"
                500:
                    $ref: "#/components/responses/InternalServerError"
    /users/_reset_password:
        post:
            tags:
                - Users
            summary: Reset a user's password
            description: |
                Send an email with a link so the user with this email can provide a new password.
                The user must be internally managed and active.
            operationId: resetUserPassword
            requestBody:
                description: Use to reset a user's password.
                content:
                    application/json:
                        schema:
                            $ref: "#/components/schemas/ResetUserPasswordInput"
            responses:
                204:
                    description: The user whose password has been reset.
                400:
                    description: Input must not be null or no active and internally managed user has been found.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/ErrorResponse"
                500:
                    $ref: "#/components/responses/InternalServerError"
    /users/_change_password:
        post:
            tags:
                - Users
            summary: Change a user's password after a reset requests
            description: |
                Perform the password update for a user
            operationId: changeUserPassword
            requestBody:
                description: Use to change a user's password.
                content:
                    application/json:
                        schema:
                            $ref: "#/components/schemas/ChangeUserPasswordInput"
            responses:
                200:
                    description: The user whose password has been change.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/User"
                400:
                    description: Input must not be null or no active and internally managed user has been found.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/ErrorResponse"
                500:
                    $ref: "#/components/responses/InternalServerError"
    /users/_search:
        post:
            tags:
                - Users
            parameters:
                - $ref: "#/components/parameters/pageNumberParam"
                - $ref: "#/components/parameters/pageSizeParam"
                - $ref: "#/components/parameters/usersQueryParam"
            summary: List platform users.
            description: |
                List platform users from identity providers.

                User must have the MANAGEMENT_USERS[READ] permission.
            operationId: getUsers
            responses:
                200:
                    description: List of platform users
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/UsersResponse"
                403:
                    $ref: "#/components/responses/PermissionError"
                500:
                    $ref: "#/components/responses/InternalServerError"
    /users/{userId}/avatar:
        parameters:
            - $ref: "#/components/parameters/userIdParam"
        get:
            tags:
                - Users
            summary: Retrieve a user's avatar
            description: |
                Retrieve a user's avatar.
            operationId: getUserAvatar
            responses:
                200:
                    $ref: "#/components/responses/PictureSuccess"
                500:
                    $ref: "#/components/responses/InternalServerError"
    /user:
        get:
            tags:
                - User
            summary: Get the authenticated user
            description: |
                Get information about the authenticated user.
            operationId: getCurrentUser
            responses:
                200:
                    description: The current user
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/User"
                500:
                    $ref: "#/components/responses/InternalServerError"
        put:
            tags:
                - User
            requestBody:
                description: Use to update a user.
                content:
                    application/json:
                        schema:
                            $ref: "#/components/schemas/UserInput"
            summary: Modify current user information.
            description: |
                Modify current user information.

                Only the current user can modify his/her information.
                The user email is not modifiable.
            operationId: updateCurrentUser
            responses:
                200:
                    description: Updated user
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/User"
                400:
                    description: Input must not be null.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/ErrorResponse"
                403:
                    description: Not allowed to modify another user.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/ErrorResponse"
                500:
                    $ref: "#/components/responses/InternalServerError"
    /user/notifications:
        get:
            tags:
                - User
            parameters:
                - $ref: "#/components/parameters/pageNumberParam"
                - $ref: "#/components/parameters/pageSizeParam"
            summary: Retrieve user's notifications
            description: |
                Retrieve current user's notifications.
            operationId: getCurrentUserNotifications
            responses:
                200:
                    description: List of notifications
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/PortalNotificationsResponse"
                500:
                    $ref: "#/components/responses/InternalServerError"
        delete:
            tags:
                - User
            summary: Delete all notifications of the current user
            description: |
                Delete all notifications of the current user.
            operationId: deleteAllCurrentUserNotifications
            responses:
                204:
                    description: No-Content
                500:
                    $ref: "#/components/responses/InternalServerError"
    /user/notifications/{notificationId}:
        parameters:
            - $ref: "#/components/parameters/notificationIdParam"
        delete:
            tags:
                - User
            summary: Delete a specific notification of the current user
            description: |
                Delete a specific notification of the current user.
            operationId: deleteCurrentUserNotificationByNotificationId
            responses:
                204:
                    description: No-Content
                404:
                    description: Notification not found
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/ErrorResponse"
                500:
                    $ref: "#/components/responses/InternalServerError"
    /user/avatar:
        get:
            tags:
                - User
            summary: Retrieve user's avatar
            description: |
                Retrieve user's avatar.
            operationId: getCurrentUserAvatar
            responses:
                200:
                    $ref: "#/components/responses/PictureSuccess"
                500:
                    $ref: "#/components/responses/InternalServerError"
    /permissions:
        get:
            tags:
                - Permissions
            parameters:
                - $ref: "#/components/parameters/apiIdQueryParam"
                - $ref: "#/components/parameters/applicationIdQueryParam"
            summary: Retrieve user's permissions
            description: |
                Retrieve user's permissions.
            operationId: getCurrentUserPermissions
            responses:
                200:
                    description: List of user's permissions
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/PermissionsResponse"
                403:
                    $ref: "#/components/responses/PermissionError"
                500:
                    $ref: "#/components/responses/InternalServerError"

    /tickets:
        post:
            tags:
                - Portal
            requestBody:
                description: a new ticket to create
                content:
                    application/json:
                        schema:
                            $ref: "#/components/schemas/TicketInput"
            summary: Create a ticket.
            description: |
                Create a ticket. This ticket can aim :
                  * a specific application
                  * a specific API
                  * the gravitee portal

                User must be authenticated to use this service.
            operationId: createTicket
            responses:
                201:
                    description: Created
                500:
                    $ref: "#/components/responses/InternalServerError"
        get:
            tags:
                - Portal
            parameters:
                - $ref: "#/components/parameters/apiIdQueryParam"
                - $ref: "#/components/parameters/applicationIdQueryParam"
                - $ref: "#/components/parameters/pageNumberParam"
                - $ref: "#/components/parameters/pageSizeParam"
                - $ref: "#/components/parameters/orderQueryParam"
            description: |
                List all tickets written by current user

            operationId: getTickets
            responses:
                200:
                    description: List of Tickets
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/TicketsResponse"
                500:
                    $ref: "#/components/responses/InternalServerError"
    /categories:
        get:
            tags:
                - Portal
            parameters:
                - $ref: "#/components/parameters/pageNumberParam"
                - $ref: "#/components/parameters/pageSizeParam"
            summary: Get a Category list
            description: |
                Get all categories of the platform.
            operationId: getCategories
            security:
                - {}
                - BasicAuth: []
                - CookieAuth: []
            responses:
                200:
                    description: List of Categories
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/CategoriesResponse"
                500:
                    $ref: "#/components/responses/InternalServerError"
    /categories/{categoryId}:
        parameters:
            - $ref: "#/components/parameters/categoryIdParam"
        get:
            tags:
                - Portal
            summary: Get a Category
            description: |
                Get a specific category.
            operationId: getCategoryByCategoryId
            security:
                - {}
                - BasicAuth: []
                - CookieAuth: []
            responses:
                200:
                    description: One Category
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/Category"
                404:
                    description: Category not found
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/ErrorResponse"
                500:
                    $ref: "#/components/responses/InternalServerError"
    /categories/{categoryId}/picture:
        parameters:
            - $ref: "#/components/parameters/categoryIdParam"
        get:
            tags:
                - Portal
            summary: Get picture of a Category
            description: |
                Get the picture of a category.
            operationId: getPictureByCategoryId
            security:
                - {}
                - BasicAuth: []
                - CookieAuth: []
            responses:
                200:
                    $ref: "#/components/responses/PictureSuccess"
                404:
                    description: Category not found
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/ErrorResponse"
                500:
                    $ref: "#/components/responses/InternalServerError"
    /categories/{categoryId}/background:
        parameters:
            - $ref: "#/components/parameters/categoryIdParam"
        get:
            tags:
                - Portal
            summary: Get background of a Category
            description: |
                Get the background of a category.
            operationId: getBackgroundByCategoryId
            security:
                - {}
                - BasicAuth: []
                - CookieAuth: []
            responses:
                200:
                    $ref: "#/components/responses/PictureSuccess"
                404:
                    description: Category not found
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/ErrorResponse"
                500:
                    $ref: "#/components/responses/InternalServerError"
    /theme:
        get:
            tags:
                - Portal
            parameters:
                - $ref: "#/components/parameters/themeTypeParam"
            summary: Get portal theme.
            operationId: getPortalTheme
            description: |
                Get portal theme.
            security:
                - {}
                - BasicAuth: []
                - CookieAuth: []
            responses:
                200:
                    description: Portal configuration
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/ThemeResponse"
                404:
                    description: Theme not found
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/ErrorResponse"
                500:
                    $ref: "#/components/responses/InternalServerError"
    /configuration:
        get:
            tags:
                - Portal
            summary: Get portal configuration.
            operationId: getPortalConfiguration
            description: |
                Get all the portal configuration from the platform settings.
            security:
                - {}
                - BasicAuth: []
                - CookieAuth: []
            responses:
                200:
                    description: Portal configuration
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/ConfigurationResponse"
                500:
                    $ref: "#/components/responses/InternalServerError"
    /configuration/identities:
        get:
            tags:
                - Portal
            summary: Get the identity provider list.
            operationId: getPortalIdentityProviders
            description: |
                Get all the identity providers that can used in the portal.
            security:
                - {}
                - BasicAuth: []
                - CookieAuth: []
            responses:
                200:
                    description: List of identity providers
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/ConfigurationIdentitiesResponse"
                500:
                    $ref: "#/components/responses/InternalServerError"
    /configuration/identities/{identityProviderId}:
        parameters:
            - $ref: "#/components/parameters/identityProviderIdParam"
        get:
            tags:
                - Portal
            summary: Get an identity provider.
            operationId: getPortalIdentityProvider
            description: |
                Get a specific identity provider by its id.
            security:
                - {}
                - BasicAuth: []
                - CookieAuth: []
            responses:
                200:
                    description: An identity provider
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/IdentityProvider"
                500:
                    $ref: "#/components/responses/InternalServerError"
    /configuration/links:
        get:
            tags:
                - Portal
            summary: Get the portal links for header and footer.
            operationId: getPortalLinks
            description: |
                Get all the links (internal and external) to be displayed in the header and in the footer of the portal.
            security:
                - {}
                - BasicAuth: []
                - CookieAuth: []
            responses:
                200:
                    description: List of Links
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/LinksResponse"
                500:
                    $ref: "#/components/responses/InternalServerError"
    /configuration/applications/types:
        get:
            tags:
                - Portal
            summary: Get the application types list.
            operationId: getEnabledApplicationTypes
            description: |
                Get enabled application types.
            security:
                - {}
                - BasicAuth: []
                - CookieAuth: []
            responses:
                200:
                    description: List of enabled application types
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/ConfigurationApplicationTypesResponse"
                500:
                    $ref: "#/components/responses/InternalServerError"
    /configuration/applications/roles:
        get:
            tags:
                - Portal
            summary: Get the application roles list.
            operationId: getApplicationRoles
            description: |
                Get application roles.
            security:
                - {}
                - BasicAuth: []
                - CookieAuth: []
            responses:
                200:
                    description: List of application roles
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/ConfigurationApplicationRolesResponse"
                500:
                    $ref: "#/components/responses/InternalServerError"
    /configuration/users/custom-fields:
        get:
            tags:
                - Users
            summary: List all the Custom User Fields.
            description: |
                Provide the list of custom user fields asked to the new users.
            operationId: listCustomUserFields
            responses:
                200:
                    description: The list of custom user fields
                    content:
                        application/json:
                            schema:
                                type: array
                                items:
                                    $ref: "#/components/schemas/CustomUserFields"
                500:
                    $ref: "#/components/responses/InternalServerError"
    /info:
        get:
            tags:
                - Portal
            summary: Get portal information.
            operationId: getPortalInformation
            description: |
                Get some information about the portal (version, ...).
            security:
                - {}
                - BasicAuth: []
                - CookieAuth: []
            responses:
                200:
                    description: API information
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/Info"
                500:
                    $ref: "#/components/responses/InternalServerError"
    /dashboards:
        get:
            tags:
                - Portal
            summary: Get a Dashboards list
            description: |
                Get all dashboards of the platform.
            operationId: getDashboards
            security:
                - {}
                - BasicAuth: []
                - CookieAuth: []
            responses:
                200:
                    description: List of Dashboards
                    content:
                        application/json:
                            schema:
                                type: array
                                items:
                                    $ref: "#/components/schemas/Dashboard"
                500:
                    $ref: "#/components/responses/InternalServerError"

    /auth/login:
        post:
            tags:
                - Authentication
            operationId: login
            description: |
                Used to get a Gravitee token. This token is mandatory for all the secured resources of the Portal API.
            parameters:
                - name: Authorization
                  in: header
                  required: true
                  description: Basic authentication.
                  schema:
                      type: string
            responses:
                200:
                    $ref: "#/components/responses/AuthSuccess"
                401:
                    $ref: "#/components/responses/UnauthorizedError"
                500:
                    $ref: "#/components/responses/InternalServerError"
    /auth/logout:
        post:
            tags:
                - Authentication
            operationId: logout
            description: |
                User need to be authenticated to logout.
            responses:
                200:
                    description: An empty cookie
                    headers:
                        set-cookie:
                            description: Empty cookie
                            schema:
                                type: string
                                example: Auth-Graviteeio-APIM=;Path=/;Expires=Thu, 01-Jan-1970 00:00:00 GMT;Max-Age=0;HttpOnly
                500:
                    $ref: "#/components/responses/InternalServerError"
    /auth/oauth2/{identity}:
        post:
            tags:
                - Authentication
            security:
                - {}
                - BasicAuth: []
                - CookieAuth: []
            parameters:
                - $ref: "#/components/parameters/authIdentityParam"
            operationId: exchangeAuthorizationCode
            description: |
                Used to get a gravitee token from an Authorization code (PayloadInput.code). Portal API authenticates the user with the specified IDP ({identity} path param).
            requestBody:
                description: OAuth2 payload for authentication.
                content:
                    application/x-www-form-urlencoded:
                        schema:
                            $ref: "#/components/schemas/PayloadInput"
            responses:
                200:
                    $ref: "#/components/responses/AuthSuccess"
                401:
                    $ref: "#/components/responses/UnauthorizedError"
                404:
                    description: Identity not found
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/ErrorResponse"
                500:
                    $ref: "#/components/responses/InternalServerError"
    /auth/oauth2/{identity}/_exchange:
        post:
            tags:
                - Authentication
            security:
                - {}
                - BasicAuth: []
                - CookieAuth: []
            parameters:
                - $ref: "#/components/parameters/authIdentityParam"
                - name: token
                  in: query
                  required: true
                  schema:
                      type: string
            operationId: tokenExchange
            description: |
                Used to get a gravitee token from a IdentityProvider token. Portal API authenticates the user with the specified IDP ({identity} path param).
            responses:
                200:
                    $ref: "#/components/responses/AuthSuccess"
                401:
                    $ref: "#/components/responses/UnauthorizedError"
                404:
                    description: Identity not found
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/ErrorResponse"
                500:
                    $ref: "#/components/responses/InternalServerError"
    /notifiers:
        get:
            tags:
                - Notifiers
            summary: Get notifiers list
            operationId: getNotifiers
            description: |
                Get notifiers
            security:
                - {}
                - BasicAuth: []
                - CookieAuth: []
            responses:
                200:
                    description: Notifier information
                    content:
                        application/json:
                            schema:
                                type: array
                                items:
                                    $ref: "#/components/schemas/Notifier"
                500:
                    $ref: "#/components/responses/InternalServerError"

    /entrypoints:
        get:
            tags:
                - Entrypoints
            parameters:
                - $ref: "#/components/parameters/entrypointsQueryParam"
            summary: List Entrypoints
            description: |
                List available entrypoints.
            operationId: getEntrypoints
            security:
                - {}
                - BasicAuth: []
                - CookieAuth: []
            responses:
                200:
                    description: List available entrypoints for current user
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/EntrypointsResponse"
                500:
                    $ref: "#/components/responses/InternalServerError"
    /portal-menu-links:
        get:
            tags:
                - Portal
            summary: Get the portal menu links for Portal NEXT.
            operationId: getPortalNextLinks
            description: |
                Get all the links to be displayed in the header of portal next only.
            security:
                - {}
                - BasicAuth: []
                - CookieAuth: []
            responses:
                200:
                    description: List of Portal Menu Links
                    content:
                        application/json:
                            schema:
                                type: array
                                items:
                                    $ref: "#/components/schemas/PortalMenuLink"
                500:
                    $ref: "#/components/responses/InternalServerError"

components:
    requestBodies:
        pictureUpdateInputBody:
            description: Use to update a picture.
            content:
                "image/*":
                    schema:
                        type: string
                        format: binary
    parameters:
        ##############
        # Path Param #
        ##############
        apiIdParam:
            name: apiId
            in: path
            required: true
            description: Id of an API.
            schema:
                type: string
        applicationIdParam:
            name: applicationId
            in: path
            required: true
            description: Id of an application.
            schema:
                type: string
        alertIdParam:
            name: alertId
            in: path
            required: true
            description: Id of an alert.
            schema:
                type: string
        groupIdParam:
            name: groupId
            in: path
            required: true
            description: Id of a group.
            schema:
                type: string
        logIdParam:
            name: logId
            in: path
            required: true
            description: Id of a log.
            schema:
                type: string
        memberIdParam:
            name: memberId
            in: path
            required: true
            description: Id of a member.
            schema:
                type: string
        metadataIdParam:
            name: metadataId
            in: path
            required: true
            description: Id of an application metadata.
            schema:
                type: string
        notificationIdParam:
            name: notificationId
            in: path
            required: true
            description: Id of a notification.
            schema:
                type: string
        pageIdParam:
            name: pageId
            in: path
            required: true
            description: Id of a documentation page.
            schema:
                type: string
        subscriptionIdParam:
            name: subscriptionId
            in: path
            required: true
            description: Id of a subscription.
            schema:
                type: string
        categoryIdParam:
            name: categoryId
            in: path
            required: true
            description: Id of a Category.
            schema:
                type: string
        authIdentityParam:
            name: identity
            in: path
            required: true
            schema:
                type: string
        identityProviderIdParam:
            name: identityProviderId
            in: path
            required: true
            description: Id of an identity provider.
            schema:
                type: string
        ratingIdParam:
            name: ratingId
            in: path
            required: true
            description: Id of an rating
            schema:
                type: string
        answerIdParam:
            name: answerId
            in: path
            required: true
            description: Id of an rating answer
            schema:
                type: string
        userIdParam:
            name: userId
            in: path
            required: true
            description: Id of a user
            schema:
                type: string
        mediaHashParam:
            name: mediaHash
            in: path
            required: true
            description: Hash of media
            schema:
                type: string
        ###############
        # Query Param #
        ###############

        #Common
        apiIdQueryParam:
            name: apiId
            in: query
            required: false
            description: Id of an api.
            schema:
                type: string
        applicationIdQueryParam:
            name: applicationId
            in: query
            required: false
            description: Id of an application.
            schema:
                type: string
        mineQueryParam:
            name: mine
            in: query
            required: false
            description: If true, returns only connected user data.
            schema:
                type: boolean

        #Pagination
        pageNumberParam:
            name: page
            in: query
            required: false
            description: The page number for pagination.
            schema:
                type: integer
                default: 1
        pageSizeParam:
            name: size
            in: query
            required: false
            description: |
                The number of items per page for pagination.
                If the size is 0, the response contains only metadata and returns the values as for a non-paged resource.
                If the size is -1, the response contains all datas.
            schema:
                type: integer
                default: 10

        #Apis filtering
        apiContextPathQueryParam:
            name: context-path
            in: query
            required: false
            description: The context-path of an API.
            schema:
                type: string
        apiLabelQueryParam:
            name: label
            in: query
            required: false
            description: One of the labels of an API.
            schema:
                type: string
        apiVersionQueryParam:
            name: version
            in: query
            required: false
            description: The version of an API.
            schema:
                type: string
        apiNameQueryParam:
            name: name
            in: query
            required: false
            description: The name of an API.
            schema:
                type: string
        apiCategoryQueryParam:
            name: category
            in: query
            required: false
            description: One of the category linked with an API.
            schema:
                type: string
        apiFilterQueryParam:
            name: filter
            in: query
            required: false
            description: |
                Name of a FILTER. A filter is used to pre-select some APIs. It can be combined with others query params.
                  - FEATURED : top APIs. Sorted by specific order.
                  - MINE : APIs subscribed by the current user. Sorted by alphabetical order.
                  - STARRED: Rated APIs. Sorted by Ratings DESC, nb of ratings DESC, alphabetic order.
                  - TRENDINGS: Subscribed APIs. Sorted by number of subscriptions DESC, alphabetic order.
            schema:
                $ref: "#/components/schemas/FilterApiQuery"
        apiFilterExcludedQueryParam:
            name: -filter
            in: query
            required: false
            description: |
                Name of a FILTER to exclude. Excluded filter has priority over filter. A filter is used to pre-select some APIs. It can be combined with others query params.
                  - FEATURED : not in top APIs. Sorted by specific order.
                  - MINE : APIs not subscribed by the current user. Sorted by alphabetical order.
                  - STARRED: not rated APIs. Sorted by Ratings DESC, nb of ratings DESC, alphabetic order.
                  - TRENDINGS: not subscribed APIs. Sorted by number of subscriptions DESC, alphabetic order.
            schema:
                $ref: "#/components/schemas/FilterApiQuery"
        apiPromotedQueryParam:
            name: promoted
            in: query
            required: false
            description: |
                Allow to filter on promoted APIs or not.
                  - If absent, no effect on the result
                  - If *false*, removes the promoted API of the list
                  - If *true*, returns only the promoted API of the list

                A promoted API is either the highlighted API of a category (if it exists) or the first API in the list.
            schema:
                type: boolean
        apiQueryParam:
            name: q
            in: query
            description: query string to be used in the search engine
            schema:
                type: string
        apiIncludeParam:
            name: include
            in: query
            required: false
            description: Comma-separated list of related objects to include in the response.
            schema:
                type: array
                items:
                    type: string
                    enum:
                        - pages
                        - plans
        ratingOrderQueryParam:
            name: order
            in: query
            required: false
            description: |
                A  list of "field" elements.
                By default, sort is ASC. If *field* starts with '-', the order sort is DESC.\
                Currently, only **value**, **date** and **answers** are supported.
            example: "order=value"
            schema:
                type: string

        #Applications filtering
        forSubscriptionParam:
            name: forSubscription
            in: query
            required: false
            description: If true, only return applications with APPLICATION_SUBSCRIPTION[CREATE] permission.
            schema:
                type: boolean
        applicationOrderQueryParam:
            name: order
            in: query
            required: false
            description: |
                By default, sort is ASC. If *field* starts with '-', the order sort is DESC.\
                Currently, only **name** and **nbSubscriptions** are supported.
            example: "order=-nbSubscriptions"
            schema:
                type: string

        #Pages filtering
        homePageQueryParam:
            name: homepage
            in: query
            required: false
            description: If true, only the documentation homepage of the portal is returned.
            schema:
                type: boolean
        parentPageQueryParam:
            name: parent
            in: query
            required: false
            description: The name of the parent documentation page. If not null, only this page and its children are returned.
            schema:
                type: string
        pageIncludeParam:
            name: include
            in: query
            required: false
            description: Comma-separated list of related objects to include in the response.
            schema:
                type: array
                items:
                    type: string
                    enum:
                        - content
        #Analytics & logs filtering
        fromQueryParam:
            name: from
            in: query
            required: false
            description: Lower bound of timestamp for filtering.
            schema:
                type: integer
                format: int64
        toQueryParam:
            name: to
            in: query
            required: false
            description: Upper bound of timestamp for filtering. Must be greater than *from* query param.
            schema:
                type: integer
                format: int64
        queryQueryParam:
            name: query
            in: query
            required: false
            description: Query used for filtering.
            schema:
                type: string
        fieldQueryParam:
            name: field
            in: query
            required: false
            description: Field used for filtering. **required** when type is **GROUP_BY**.
            schema:
                type: string
        intervalQueryParam:
            name: interval
            in: query
            required: false
            description: Interval for time search. Must be >= 1 000 and <= 1 000 000 000.
            schema:
                type: integer
                minimum: 1000
                maximum: 1000000000
        analyticTypeQueryParam:
            name: type
            in: query
            required: false
            description: |
                Type of analytics that is expected :
                  - GROUP_BY :
                      Used to group total hits by a specific field (Application, Status, Path, ...).\
                      Query params :
                      - from
                      - to
                      - interval
                      - query
                      - field
                      - order
                      - ranges
                  - DATE_HISTO :
                      Used to retrieve total hits per range of time, on a specific time interval.\
                      Query params :
                      - from
                      - to
                      - interval
                      - query
                      - aggs
                  - COUNT :
                      Used to retrieve total hits, on a specific time interval.\
                      Query params :
                      - from
                      - to
                      - interval
                      - query
                  - STATS :
                      Used to retrieve stats data, on a specific time interval.\
                      Query params :
                      - from
                      - to
                      - query
            schema:
                type: string
                enum:
                    - GROUP_BY
                    - DATE_HISTO
                    - COUNT
                    - STATS
        analyticRangeQueryParam:
            name: ranges
            in: query
            required: false
            description: |
                Used with GROUP_BY type only.

                A semicolon separated list of "from:to" elements. **/!\\ Different from *from* and *to* query params**
            example: "ranges=100:199;200:299;300;599"
            schema:
                type: string
        analyticAggregationQueryParam:
            name: aggs
            in: query
            required: false
            description: |
                Used with DATE_HISTO type only.

                A semicolon separated list of "type:field" elements. **/!\\ Different from *type* and *field* query params**\
                Type can be **FIELD**, **AVG**, **MIN**, **MAX**
            example: "aggs=avg:response-time;avg:api-response-time"
            schema:
                type: string
        analyticOrderQueryParam:
            name: order
            in: query
            required: false
            description: |
                Used with GROUP_BY type only.

                A colon separated list of "type:field" elements. **/!\\ Different from *type* and *field* query params**\
                By default, sort is ASC. If *type* starts with '-', the order sort is DESC.\
                Currently, only **AVG** is supported.
            example: "order=-avg:response-time"
            schema:
                type: string
        orderQueryParam:
            name: order
            in: query
            required: false
            description: |
                Used to sort result.

                By default, sort is ASC. If *type* starts with '-', the order sort is DESC
            example: "order=-created_at"
            schema:
                type: string
        logOrderQueryParam:
            name: order
            in: query
            required: false
            description: Order used to sort the result list.
            schema:
                type: string
                enum:
                    - ASC
                    - DESC
                default: ASC
        logTimestampQueryParam:
            name: timestamp
            in: query
            required: false
            description: Used to select the right index
            schema:
                type: integer
                format: int64

        #Subscriptions filtering
        subscriptionStatusesQueryParam:
            name: statuses
            in: query
            required: false
            description: status of subscription.
            schema:
                type: array
                items:
                    type: string
                    enum:
                        - ACCEPTED
                        - CLOSED
                        - PAUSED
                        - PENDING
                        - REJECTED
        subscriptionIncludeQueryParam:
            name: include
            in: query
            required: false
            description: Comma-separated list of related objects to include in the response.
            schema:
                type: array
                items:
                    type: string
                    enum:
                        - keys
        subscriptionConsumerStatusParam:
            name: status
            in: query
            required: true
            description: consumer status of subscription.
            schema:
                type: string
                enum:
                    - STARTED
                    - STOPPED
                    - FAILURE

        # Theme filtering
        themeTypeParam:
            name: type
            in: query
            required: true
            description: Type of theme
            schema:
                type: string
                enum:
                    - PORTAL
                    - PORTAL_NEXT

        #Users filtering
        usersQueryParam:
            name: q
            in: query
            required: false
            description: query string to be used in the search engine
            schema:
                type: string

        #Entrypoinds Expand
        entrypointsQueryParam:
            name: expand
            in: query
            required: false
            description: expand entrypoints details
            schema:
                type: array
                items:
                    type: string
                    enum:
                        - schema
                        - icon
                        - subscriptionSchema
    schemas:
        #####################
        # Responses Objects #
        #####################
        ErrorResponse:
            properties:
                errors:
                    description: List of errors
                    type: array
                    items:
                        $ref: "#/components/schemas/Error"

        ApisResponse:
            properties:
                data:
                    description: List of API.
                    type: array
                    items:
                        $ref: "#/components/schemas/Api"
                metadata:
                    $ref: "#/components/schemas/MetadataMap"
                links:
                    $ref: "#/components/schemas/Links"
        ApplicationsResponse:
            properties:
                data:
                    description: List of applications.
                    type: array
                    items:
                        $ref: "#/components/schemas/Application"
                metadata:
                    $ref: "#/components/schemas/MetadataMap"
                links:
                    $ref: "#/components/schemas/Links"
        AlertStatusResponse:
            properties:
                available_plugins:
                    description: Number of available plugins.
                    type: integer
                enabled:
                    description: Is alerting enabled
                    type: boolean
        GroupsResponse:
            properties:
                data:
                    description: List of groups.
                    type: array
                    items:
                        $ref: "#/components/schemas/Group"
                metadata:
                    $ref: "#/components/schemas/MetadataMap"
                links:
                    $ref: "#/components/schemas/Links"
        PagesResponse:
            properties:
                data:
                    description: List of pages.
                    type: array
                    items:
                        $ref: "#/components/schemas/Page"
                metadata:
                    $ref: "#/components/schemas/MetadataMap"
                links:
                    $ref: "#/components/schemas/Links"
        RatingsResponse:
            properties:
                data:
                    description: List of ratings.
                    type: array
                    items:
                        $ref: "#/components/schemas/Rating"
                metadata:
                    $ref: "#/components/schemas/MetadataMap"
                links:
                    $ref: "#/components/schemas/Links"
        PlansResponse:
            properties:
                data:
                    description: List of data.
                    type: array
                    items:
                        $ref: "#/components/schemas/Plan"
                metadata:
                    $ref: "#/components/schemas/MetadataMap"
                links:
                    $ref: "#/components/schemas/Links"
        MembersResponse:
            properties:
                data:
                    description: List of members.
                    type: array
                    items:
                        $ref: "#/components/schemas/Member"
                metadata:
                    $ref: "#/components/schemas/MetadataMap"
                links:
                    $ref: "#/components/schemas/Links"
        ReferenceMetadataResponse:
            properties:
                data:
                    description: List of application metadata.
                    type: array
                    items:
                        $ref: "#/components/schemas/ReferenceMetadata"
                metadata:
                    $ref: "#/components/schemas/MetadataMap"
                links:
                    $ref: "#/components/schemas/Links"
        UsersResponse:
            properties:
                data:
                    description: List of users.
                    type: array
                    items:
                        $ref: "#/components/schemas/User"
                metadata:
                    $ref: "#/components/schemas/MetadataMap"
                links:
                    $ref: "#/components/schemas/Links"
        CategoriesResponse:
            properties:
                data:
                    description: List of categories.
                    type: array
                    items:
                        $ref: "#/components/schemas/Category"
                metadata:
                    $ref: "#/components/schemas/MetadataMap"
                links:
                    $ref: "#/components/schemas/Links"
        PortalNotificationsResponse:
            properties:
                data:
                    description: List of portal notifications.
                    type: array
                    items:
                        $ref: "#/components/schemas/PortalNotification"
                metadata:
                    $ref: "#/components/schemas/MetadataMap"
                links:
                    $ref: "#/components/schemas/Links"
        LogsResponse:
            properties:
                data:
                    description: List of logs.
                    type: array
                    items:
                        $ref: "#/components/schemas/Log"
                metadata:
                    $ref: "#/components/schemas/MetadataMap"
                links:
                    $ref: "#/components/schemas/Links"
        SubscriptionsResponse:
            properties:
                data:
                    description: List of subscriptions.
                    type: array
                    items:
                        $ref: "#/components/schemas/Subscription"
                metadata:
                    $ref: "#/components/schemas/MetadataMap"
                links:
                    $ref: "#/components/schemas/Links"
        TicketsResponse:
            properties:
                data:
                    description: List of tickets.
                    type: array
                    items:
                        $ref: "#/components/schemas/Ticket"
                metadata:
                    $ref: "#/components/schemas/MetadataMap"
                links:
                    $ref: "#/components/schemas/Links"
        ConfigurationIdentitiesResponse:
            properties:
                data:
                    description: List of identity providers
                    type: array
                    items:
                        $ref: "#/components/schemas/IdentityProvider"
                metadata:
                    $ref: "#/components/schemas/MetadataMap"
                links:
                    $ref: "#/components/schemas/Links"
        ConfigurationApplicationTypesResponse:
            properties:
                data:
                    description: List of application types
                    type: array
                    items:
                        $ref: "#/components/schemas/ApplicationType"
        ConfigurationApplicationRolesResponse:
            properties:
                data:
                    description: List of application roles
                    type: array
                    items:
                        $ref: "#/components/schemas/ApplicationRole"
        LinksResponse:
            properties:
                slots:
                    description: |
                        Map of CategorizedLinks. Keys of the map can be:
                        * aside
                        * header
                        * topfooter
                        * footer
                    additionalProperties:
                        type: array
                        items:
                            $ref: "#/components/schemas/CategorizedLinks"
        PermissionsResponse:
            description: Map of Permissions.
            properties:
                METADATA:
                    type: array
                    items:
                        type: string
                DOCUMENTATION:
                    type: array
                    items:
                        type: string
                DEFINITION:
                    type: array
                    items:
                        type: string
                PLAN:
                    type: array
                    items:
                        type: string
                SUBSCRIPTION:
                    type: array
                    items:
                        type: string
                MEMBER:
                    type: array
                    items:
                        type: string
                ANALYTICS:
                    type: array
                    items:
                        type: string
                EVENT:
                    type: array
                    items:
                        type: string
                HEALTH:
                    type: array
                    items:
                        type: string
                LOG:
                    type: array
                    items:
                        type: string
                GATEWAY_DEFINITION:
                    type: array
                    items:
                        type: string
                AUDIT:
                    type: array
                    items:
                        type: string
                RATING:
                    type: array
                    items:
                        type: string
                RATING_ANSWER:
                    type: array
                    items:
                        type: string
                NOTIFICATION:
                    type: array
                    items:
                        type: string
                MESSAGE:
                    type: array
                    items:
                        type: string
                ALERT:
                    type: array
                    items:
                        type: string
                RESPONSE_TEMPLATES:
                    type: array
                    items:
                        type: string
                REVIEWS:
                    type: array
                    items:
                        type: string
                QUALITY_RULE:
                    type: array
                    items:
                        type: string

        #####################
        # Resources Objects #
        #####################
        Error:
            properties:
                status:
                    description: Status HTTP of the error
                    type: string
                message:
                    description: Message of the error
                    type: string
                code:
                    description: Technical code of the error
                    type: string
                parameters:
                    description: Parameters
                    type: object
                    additionalProperties:
                        type: string
        Api:
            description: |
                Describes an API.
            required:
                - id
                - name
                - version
                - description
                - owner
            properties:
                id:
                    description: Unique identifier of an API.
                    type: string
                definitionVersion:
                    $ref: "#/components/schemas/DefinitionVersion"
                name:
                    description: Name of the API.
                    type: string
                version:
                    description: Version of the API.
                    type: string
                description:
                    description: Description of the API.
                    type: string
                draft:
                    type: boolean
                    description: Whether or not the API is in draft.
                public:
                    type: boolean
                    description: Whether or not the API is public.
                running:
                    type: boolean
                    description: Whether or not the API is running.
                entrypoints:
                    description: List of all the available endpoints to call the API.
                    type: array
                    items:
                        type: string
                listener_type:
                    $ref: "#/components/schemas/ListenerType"
                labels:
                    description: List of labels linked to this API.
                    type: array
                    items:
                        type: string
                owner:
                    $ref: "#/components/schemas/User"
                created_at:
                    description: Create date and time.
                    type: string
                    format: date-time
                updated_at:
                    description: Last update date and time.
                    type: string
                    format: date-time
                categories:
                    description: |
                        List of category keys this API belongs to.
                        Example: ["media", "health"]
                    type: array
                    items:
                        type: string
                rating_summary:
                    $ref: "#/components/schemas/RatingSummary"
                _links:
                    $ref: "#/components/schemas/ApiLinks"

                ###################
                # may be included #
                ###################
                pages:
                    description: |
                        Only returned with (*)/apis/{apiId}*.
                        Need *include* query param to contain 'pages'.

                        The documentation pages of this API. Same as (*)/apis/{apiId}/pages*.
                    type: array
                    items:
                        $ref: "#/components/schemas/Page"
                plans:
                    description: |
                        Only returned with (*)/apis/{apiId}*.
                        Need *include* query param to contain 'plans'.

                        The plans of this API. Same as (*)/apis/{apiId}/plans*.
                    type: array
                    items:
                        $ref: "#/components/schemas/Plan"

        DefinitionVersion:
            type: string
            description: API's gravitee definition version.
            example: V4
            enum:
                - V1
                - V2
                - V4
                - FEDERATED
        ListenerType:
            description: Listener of the API entrypoints.
            type: string
            example: HTTP
            enum:
                - HTTP
                - TCP
                - SUBSCRIPTION
        ApiInformation:
            properties:
                name:
                    type: string
                    description: Name of api information
                value:
                    type: string
                    description: Value of api information
        ApiMetrics:
            properties:
                subscribers:
                    type: number
                    description: Number of applications that have subscribed to this API.
                hits:
                    type: number
                    description: Number of calls on this API, during last 7 days.
                health:
                    type: number
                    description: Healthcheck ratio over the last 7 days. It's a decimal number between 0 and 1.
                    example: 0.9876
        Group:
            required:
                - id
                - name
            properties:
                id:
                    description: Unique identifier of a group.
                    type: string
                name:
                    description: Name of the group.
                    type: string
        Page:
            required:
                - id
                - name
                - type
                - order
            properties:
                id:
                    description: Unique identifier of a page.
                    type: string
                name:
                    description: Name of the page.
                    type: string
                type:
                    description: Type of documentation.
                    type: string
                    enum:
                        - ASCIIDOC
                        - ASYNCAPI
                        - SWAGGER
                        - MARKDOWN
                        - FOLDER
                        - ROOT
                        - LINK
                order:
                    description: Order of the documentation page in its folder.
                    type: integer
                parent:
                    description: Parent page. MAY be null.
                    type: string
                updated_at:
                    description: Last update date and time.
                    type: string
                    format: date-time
                configuration:
                    $ref: "#/components/schemas/PageConfiguration"
                media:
                    description: list of media hash, attached to this page
                    type: array
                    items:
                        $ref: "#/components/schemas/PageMedia"
                metadata:
                    description: Array of metadata about the page. This array is filled when the page has been fetched from a distant source (GitHub, GitLab, etc...).
                    type: array
                    items:
                        $ref: "#/components/schemas/Metadata"
                _links:
                    $ref: "#/components/schemas/PageLinks"

                ###################
                # may be included #
                ###################
                content:
                    description: |
                        Only returned with (*)/apis/{apiId}/pages/{pageId}* and (*)/pages/{pageId}*.
                        Need *include* query param to contain 'content'.

                        The content of the page.
                    type: string
                contentRevisionId:
                    description: The page revision used to fill the content.
                    $ref: "#/components/schemas/PageRevisionId"

        PageMedia:
            required:
                - name
                - link
                - type
            properties:
                name:
                    description: the name of the media.
                    type: string
                link:
                    description: link to download the media.
                    type: string
                type:
                    description: type of the media.
                    type: string

        Plan:
            required:
                - id
                - name
                - security
                - type
                - description
                - validation
                - order
                - comment_required
                - mode
            properties:
                id:
                    description: Unique identifier of a plan.
                    type: string
                name:
                    description: Name of the plan.
                    type: string
                security:
                    description: Security used with this plan.
                    type: string
                    enum:
                        - API_KEY
                        - KEY_LESS
                        - JWT
                        - OAUTH2
                        - MTLS
                description:
                    description: Description of the plan.
                    type: string
                characteristics:
                    description: List of additional terms to describe the plan.
                    type: array
                    items:
                        type: string
                validation:
                    description: Type of validation for subscription requests.
                    type: string
                    enum:
                        - AUTO
                        - MANUAL
                order:
                    description: Priority order
                    type: integer
                comment_required:
                    description: True if a comment is required when a subscription is created.
                    type: boolean
                comment_question:
                    description: Content of the message sent to a user creating a subscription.
                    type: string
                general_conditions:
                    description: The  page reference with general conditions of use for the API.
                    type: string
                mode:
                    $ref: "#/components/schemas/PlanMode"
                usage_configuration:
                    $ref: "#/components/schemas/PlanUsageConfiguration"

        PlanUsageConfiguration:
            type: object
            description: Properties affecting how a plan can be used by API Consumers, such as rate-limit and quota.
            properties:
                rate_limit:
                    $ref: "#/components/schemas/TimePeriodConfiguration"
                quota:
                    $ref: "#/components/schemas/TimePeriodConfiguration"

        PeriodTimeUnit:
            type: string
            enum:
                - SECONDS
                - MINUTES
                - HOURS
                - DAYS
                - WEEKS
                - MONTHS

        TimePeriodConfiguration:
            required:
                - type
            type: object
            description: Configuration of how a plan can be used.
            properties:
                period_time:
                    type: number
                period_time_unit:
                    $ref: "#/components/schemas/PeriodTimeUnit"
                limit:
                    type: number
                    description: Maximum number of requests.

        PlanMode:
            type: string
            description: The behavioural mode of the Plan (Standard for classical plan, Push for subscription plan).
            example: STANDARD
            enum:
                - STANDARD
                - PUSH

        Rating:
            required:
                - id
                - title
                - value
                - comment
            properties:
                id:
                    description: Unique identifier of a rating.
                    type: string
                title:
                    description: Title of a rating.
                    type: string
                value:
                    description: Value of the rating. Integer between 1 and 5.
                    type: integer
                author:
                    $ref: "#/components/schemas/User"
                date:
                    description: Date and time of the rating.
                    type: string
                    format: date-time
                comment:
                    description: Comment left by the author to explain the rating.
                    type: string
                answers:
                    description: Array of answers.
                    type: array
                    items:
                        $ref: "#/components/schemas/RatingAnswer"
        Application:
            properties:
                id:
                    description: Unique identifier of an application.
                    type: string
                name:
                    description: Name of the application.
                    type: string
                description:
                    description: Description of the application.
                    type: string
                domain:
                    description: Domain used by the application.
                    type: string
                applicationType:
                    description: Type of the application (Web, Mobile, ...).
                    type: string
                hasClientId:
                    description: True if the application has client id.
                    type: boolean
                owner:
                    $ref: "#/components/schemas/User"
                created_at:
                    description: Creation date and time of the application.
                    type: string
                    format: date-time
                updated_at:
                    description: Last update date and time of the application.
                    type: string
                    format: date-time
                groups:
                    description: Array of groups associated to the application.
                    type: array
                    items:
                        $ref: "#/components/schemas/Group"
                picture:
                    description: |
                        Picture of the application. This attribute is only used to update a picture.\
                        To get the application picture, use /application/{applicationId}/picture.
                    type: string
                    writeOnly: true
                background:
                    description: |
                        Background of the application. This attribute is only used to update a picture.\
                        To get the application picture, use /application/{applicationId}/background.
                    type: string
                    writeOnly: true
                api_key_mode:
                    $ref: "#/components/schemas/ApiKeyModeEnum"
                settings:
                    $ref: "#/components/schemas/ApplicationSettings"
                _links:
                    $ref: "#/components/schemas/ApplicationLinks"
        PortalNotification:
            properties:
                id:
                    description: Unique identifier of a portal notification.
                    type: string
                title:
                    description: Title of the portal notification.
                    type: string
                message:
                    description: Content of the notification.
                    type: string
                created_at:
                    description: Creation date and time of the notification.
                    type: string
                    format: date-time
        Alert:
            properties:
                id:
                    description: Unique identifier of an alert.
                    type: string
                enabled:
                    description: true, if alert is enabled
                    type: boolean
                type:
                    $ref: "#/components/schemas/AlertType"
                api:
                    description: Filter on API id (empty for all apis)
                    type: string
                description:
                    description: Alert description
                    type: string
                status_code:
                    description: Http status code to trigger the alert
                    type: string
                status_percent:
                    description: Percent to trigger the alert on status code
                    type: integer
                    minimum: 1
                    maximum: 100
                response_time:
                    description: Response time to trigger the alert
                    type: integer
                    minimum: 1
                    maximum: 100000
                duration:
                    description: Compute alert on selected duration
                    type: integer
                time_unit:
                    $ref: "#/components/schemas/AlertTimeUnit"
                webhook:
                    $ref: "#/components/schemas/AlertWebhook"
        AlertWebhook:
            properties:
                httpMethod:
                    $ref: "#/components/schemas/HttpMethod"
                url:
                    description: URL called by webhook
                    type: string
        Member:
            properties:
                id:
                    description: Unique identifier of a member (user).
                    type: string
                user:
                    $ref: "#/components/schemas/User"
                created_at:
                    description: Creation date and time of the member.
                    type: string
                    format: date-time
                updated_at:
                    description: Last update date and time of the member.
                    type: string
                    format: date-time
                role:
                    description: Role of the member. (OWNER, USER, ...).
                    type: string
        ReferenceMetadata:
            required:
                - key
                - name
            properties:
                key:
                    description: Unique identifier of a metadata.
                    type: string
                name:
                    description: Name of the metadata.
                    type: string
                application:
                    description: Id of the application to which the metadata refers.
                    type: string
                format:
                    description: format of the metadata value.
                    $ref: "#/components/schemas/ReferenceMetadataFormatType"
                value:
                    description: value of the metadata. Supports freemarker syntax.
                    type: string
                defaultValue:
                    description: default value of the metadata.
                    type: string
        DateHistoAnalytics:
            properties:
                timestamp:
                    $ref: "#/components/schemas/Timerange"
                values:
                    description: List of data buckets.
                    type: array
                    items:
                        $ref: "#/components/schemas/Bucket"
        GroupByAnalytics:
            properties:
                values:
                    description: Total hits by terms.
                    type: object
                    additionalProperties:
                        type: integer
                        format: int64
                metadata:
                    $ref: "#/components/schemas/MetadataMap"
        CountAnalytics:
            properties:
                name:
                    type: string
                hits:
                    type: integer
                    format: int64
        Log:
            properties:
                id:
                    description: Unique identifier of a log.
                    type: string
                timestamp:
                    description: Instant of the log.
                    type: integer
                    format: int64
                transactionId:
                    description: Request identifier.
                    type: string
                path:
                    description: Path of the request.
                    type: string
                method:
                    $ref: "#/components/schemas/HttpMethod"
                status:
                    description: HTTP status code of the request.
                    type: integer
                responseTime:
                    description: Request duration.
                    type: integer
                    format: int64
                requestContentLength:
                    description: Request content length.
                    type: integer
                    format: int64
                responseContentLength:
                    description: Response content length.
                    type: integer
                    format: int64
                plan:
                    description: Plan used by the request.
                    type: string
                api:
                    description: API called by the request.
                    type: string
                request:
                    $ref: "#/components/schemas/Request"
                response:
                    $ref: "#/components/schemas/Response"
                metadata:
                    $ref: "#/components/schemas/MetadataMap"
                host:
                    description: API Gateway host.
                    type: string
                user:
                    description: User identifier.
                    type: string
                securityType:
                    description: Security type of the request.
                    type: string
                securityToken:
                    description: Token used by the request.
                    type: string
        Subscription:
            required:
                - id
                - api
                - application
                - plan
                - status
            properties:
                id:
                    description: Unique identifier of a subscription.
                    type: string
                api:
                    description: Subscribed API.
                    type: string
                application:
                    description: Subscribing application.
                    type: string
                plan:
                    description: Subscribed plan.
                    type: string
                request:
                    description: Comment of the user when asking for a subscription.
                    type: string
                reason:
                    description: Reason of the user when processing (accepting/rejecting) a subscription.
                    type: string
                created_at:
                    description: Creation date and time of the subscription.
                    type: string
                    format: date-time
                processed_at:
                    description: Date and time when the subscription request was processed.
                    type: string
                    format: date-time
                start_at:
                    description: Start date and time of the subscription.
                    type: string
                    format: date-time
                end_at:
                    description: Expiration date and time of the subscription.
                    type: string
                    format: date-time
                paused_at:
                    description: Paused date and time of the subscription.
                    type: string
                    format: date-time
                closed_at:
                    description: Closed date and time of the subscription.
                    type: string
                    format: date-time
                subscribed_by:
                    description: The user who subscribed.
                    type: string
                status:
                    description: Status of the subscription.
                    type: string
                    enum:
                        - PENDING
                        - ACCEPTED
                        - CLOSED
                        - REJECTED
                        - PAUSED
                consumerStatus:
                    description: Consumer status of the subscription.
                    type: string
                    enum:
                        - STARTED
                        - STOPPED
                        - FAILURE
                consumerPausedAt:
                    description: Paused date and time of the subscription for the customer.
                    type: string
                    format: date-time
                failureCause:
                    description: The cause of the failure
                    type: string
                ###################
                # may be included #
                ###################
                keys:
                    description: |
                        Only returned with (*)/subscriptions/{subscriptionId}*.
                        Need *include* query param to contain 'keys'.

                        List of APIKeys of the subscription.
                    type: array
                    items:
                        $ref: "#/components/schemas/Key"
        Ticket:
            properties:
                id:
                    description: Unique identifier of a ticket.
                    type: string
                api:
                    description: Concerned API.
                    type: string
                application:
                    description: Concerned application.
                    type: string
                subject:
                    description: Subject of the ticket.
                    type: string
                content:
                    description: Content of the ticket.
                    type: string
                created_at:
                    description: Creation date and time of the ticket.
                    type: string
                    format: date-time
                from_user:
                    description: User identifier of the ticket creator.
                    type: string
        User:
            properties:
                id:
                    description: Unique identifier of a user.
                    type: string
                reference:
                    description: Unique reference if user comes from external source. Use for search only.
                    type: string
                first_name:
                    type: string
                last_name:
                    type: string
                display_name:
                    type: string
                email:
                    type: string
                editable_profile:
                    description: True if the user can edit the MyAccount information
                    type: boolean
                    default: false
                permissions:
                    description: Map of Permissions.
                    type: object
                    properties:
                        APPLICATION:
                            type: array
                            items:
                                type: string
                        USER:
                            type: array
                            items:
                                type: string
                customFields:
                    type: object
                    description: Values for CustomUserFields
                    additionalProperties: true
                config:
                    $ref: "#/components/schemas/UserConfig"
                _links:
                    $ref: "#/components/schemas/UserLinks"
        UserConfig:
            properties:
                management_url:
                    description: The URL of the Gravitee management UI
                    type: string
        Token:
            properties:
                token_type:
                    type: string
                    enum:
                        - BEARER
                token:
                    type: string
                state:
                    type: string
                access_token:
                    type: string
                id_token:
                    type: string
        Category:
            properties:
                id:
                    description: Unique identifier of a category.
                    type: string
                name:
                    type: string
                description:
                    type: string
                order:
                    type: integer
                page:
                    description: id of the page used for category documentation.
                    type: string
                total_apis:
                    type: integer
                    format: int64
                _links:
                    $ref: "#/components/schemas/CategoryLinks"
        Dashboard:
            properties:
                id:
                    description: Unique identifier of a dashboard.
                    type: string
                name:
                    type: string
                definition:
                    type: string
        Info:
            properties:
                name:
                    description: Name of the API.
                    type: string
                version:
                    description: Version of the API.
                    type: string
        IdentityProvider:
            properties:
                id:
                    description: Unique identifier of an identity provider.
                    type: string
                name:
                    description: Name of the identity provider.
                    type: string
                description:
                    description: Description of the identity provider.
                    type: string
                client_id:
                    description: ClientId of the identity provider.
                    type: string
                email_required:
                    description: true, if an email is required for this identity provider.
                    type: boolean
                type:
                    $ref: "#/components/schemas/IdentityProviderType"
                authorizationEndpoint:
                    description: Authorization endpoint of the provider.
                    type: string
                tokenIntrospectionEndpoint:
                    description: Token introspection endpoint of the provider. (Gravitee.io AM and OpenId Connect only)
                    type: string
                userLogoutEndpoint:
                    description: User logout endpoint of the provider. (Gravitee.io AM and OpenId Connect only)
                    type: string
                color:
                    description: color to display for this provider. (Gravitee.io AM and OpenId Connect only)
                    type: string
                display:
                    description: Display style of the provider. (Google only)
                    type: string
                requiredUrlParams:
                    description: Required URL params of the provider. (Google only)
                    type: array
                    items:
                        type: string
                optionalUrlParams:
                    description: Optionnal URL params of the provider. (Github and Google only)
                    type: array
                    items:
                        type: string
                scopes:
                    description: Scope list of the provider.
                    type: array
                    items:
                        type: string
        ApplicationRole:
            properties:
                id:
                    description: Unique identifier of an application role.
                    type: string
                name:
                    description: Name of an application role.
                    type: string
                default:
                    description: is default role ?
                    type: boolean
                system:
                    description: is system role ?
                    type: boolean
        ApplicationType:
            properties:
                id:
                    description: Unique identifier of an application type.
                    type: string
                name:
                    description: Name of an application type.
                    type: string
                description:
                    description: description of an application type.
                    type: string
                requires_redirect_uris:
                    description: if true, application type require redirect uri
                    type: boolean
                allowed_grant_types:
                    description: List of allowed grant types
                    type: array
                    items:
                        $ref: "#/components/schemas/ApplicationGrantType"
                mandatory_grant_types:
                    description: List of mandatory grant types
                    type: array
                    items:
                        $ref: "#/components/schemas/ApplicationGrantType"
                default_grant_types:
                    description: List of default grant types
                    type: array
                    items:
                        $ref: "#/components/schemas/ApplicationGrantType"
        ApplicationGrantType:
            properties:
                type:
                    description: type of grant type
                    type: string
                name:
                    description: name of grant type
                    type: string
        Hook:
            properties:
                id:
                    description: Unique identifier of an identity provider.
                    type: string
                label:
                    description: Label of the hook.
                    type: string
                description:
                    description: Description of the hook.
                    type: string
                category:
                    description: Category of the hook.
                    type: string
        ThemeResponse:
            properties:
                definition:
                    description: The definition of custom theme.
                    type: object
                type:
                    description: The type of the theme.
                    type: string
                    enum:
                        - PORTAL
                        - PORTAL_NEXT
                _links:
                    $ref: "#/components/schemas/ThemeLinks"
        ConfigurationResponse:
            properties:
                portal:
                    $ref: "#/components/schemas/ConfigurationPortal"
                portalNext:
                    $ref: "#/components/schemas/ConfigurationPortalNext"
                authentication:
                    $ref: "#/components/schemas/ConfigurationAuthentication"
                scheduler:
                    $ref: "#/components/schemas/ConfigurationScheduler"
                documentation:
                    $ref: "#/components/schemas/ConfigurationDocumentation"
                plan:
                    $ref: "#/components/schemas/ConfigurationPlan"
                apiReview:
                    $ref: "#/components/schemas/Enabled"
                analytics:
                    $ref: "#/components/schemas/ConfigurationAnalytics"
                application:
                    $ref: "#/components/schemas/ConfigurationApplication"
                recaptcha:
                    $ref: "#/components/schemas/ConfigurationReCaptcha"
                alert:
                    $ref: "#/components/schemas/Enabled"
        ConfigurationPortal:
            properties:
                title:
                    description: The portal Title
                    type: string
                entrypoint:
                    description: Default entrypoint of the gateway.
                    type: string
                apikeyHeader:
                    description: Api-key Header. Used by portal to display the CURL command.
                    type: string
                support:
                    $ref: "#/components/schemas/Enabled"
                applicationCreation:
                    $ref: "#/components/schemas/Enabled"
                userCreation:
                    $ref: "#/components/schemas/Enabled"
                apis:
                    $ref: "#/components/schemas/ConfigurationPortalApis"
                analytics:
                    $ref: "#/components/schemas/ConfigurationPortalAnalytics"
                rating:
                    $ref: "#/components/schemas/ConfigurationPortalRating"
                uploadMedia:
                    $ref: "#/components/schemas/ConfigurationPortalMedia"
                homepageTitle:
                    description: Main phrase to display on the homepage.
                    type: string
        ConfigurationPortalNext:
            properties:
                siteTitle:
                    description: Title to display in the navigation menu
                    type: string
                banner:
                    $ref: "#/components/schemas/ConfigurationPortalNextBanner"

                access:
                    $ref: "#/components/schemas/Enabled"
        ConfigurationPortalNextBanner:
            type: object
            description: Configuration of the banner for Portal Next
            properties:
                enabled:
                    description: Portal next is enabled
                    type: boolean
                title:
                    description: Title to display on the homepage banner.
                    type: string
                subtitle:
                    description: Subtitle to display on the homepage banner.
                    type: string
                primaryButton:
                  $ref: "#/components/schemas/BannerButton"
                secondaryButton:
                  $ref: "#/components/schemas/BannerButton"
        BannerButton:
          type: object
          description: Button displayed in the Portal Next banner
          properties:
            enabled:
              description: Button is displayed
              type: boolean
            label:
              description: Button label
              type: string
            type:
              description: Type of link
              enum:
                - EXTERNAL
            target:
              description: Target of the link
              type: string
            visibility:
              description: Visibility of the button
              enum:
                - PUBLIC
                - PRIVATE
        ConfigurationPortalApis:
            properties:
                tilesMode:
                    $ref: "#/components/schemas/Enabled"
                categoryMode:
                    $ref: "#/components/schemas/Enabled"
                promotedApiMode:
                    $ref: "#/components/schemas/Enabled"
                apiHeaderShowTags:
                    $ref: "#/components/schemas/Enabled"
                apiHeaderShowCategories:
                    $ref: "#/components/schemas/Enabled"
        ConfigurationPortalAnalytics:
            properties:
                enabled:
                    description: true if Google analytics is activated
                    type: boolean
                trackingId:
                    description: Tracking ID for Google analytics.
                    type: string
        ConfigurationPortalRating:
            properties:
                enabled:
                    description: true if rating service is activated
                    type: boolean
                comment:
                    $ref: "#/components/schemas/ConfigurationPortalRatingComment"
        ConfigurationPortalRatingComment:
            properties:
                mandatory:
                    description: true if a comment is required to post a rating.
                    type: boolean
        ConfigurationPortalMedia:
            properties:
                enabled:
                    description: true if uploading images is allowed
                    type: boolean
                maxSizeInBytes:
                    description: Maximum size of uploaded images (in bytes)
                    type: integer
        ConfigurationAuthentication:
            properties:
                forceLogin:
                    $ref: "#/components/schemas/Enabled"
                localLogin:
                    $ref: "#/components/schemas/Enabled"
        ConfigurationScheduler:
            properties:
                notificationsInSeconds:
                    description: Number of seconds for notification scheduler.
                    type: integer
        ConfigurationDocumentation:
            properties:
                url:
                    description: URL of the main documentation.
                    type: string
        ConfigurationPlan:
            properties:
                security:
                    $ref: "#/components/schemas/ConfigurationPlanSecurity"
        ConfigurationPlanSecurity:
            properties:
                apikey:
                    $ref: "#/components/schemas/Enabled"
                sharedApiKey:
                    $ref: "#/components/schemas/Enabled"
                oauth2:
                    $ref: "#/components/schemas/Enabled"
                keyless:
                    $ref: "#/components/schemas/Enabled"
                jwt:
                    $ref: "#/components/schemas/Enabled"
                mtls:
                    $ref: "#/components/schemas/Enabled"
        ConfigurationAnalytics:
            properties:
                clientTimeout:
                    description: HTTP Client Timeout
                    type: integer
                    format: int64
        ConfigurationApplication:
            properties:
                registration:
                    $ref: "#/components/schemas/Enabled"
                types:
                    $ref: "#/components/schemas/ConfigurationApplicationTypes"
        ConfigurationApplicationTypes:
            properties:
                simple:
                    $ref: "#/components/schemas/Enabled"
                browser:
                    $ref: "#/components/schemas/Enabled"
                web:
                    $ref: "#/components/schemas/Enabled"
                native:
                    $ref: "#/components/schemas/Enabled"
                backend_to_backend:
                    $ref: "#/components/schemas/Enabled"
        ConfigurationReCaptcha:
            properties:
                enabled:
                    description: flag indication if recaptcha is enabled or not
                    type: boolean
                siteKey:
                    description: reCaptcha site key
                    type: string

        CategorizedLinks:
            properties:
                root:
                    type: boolean
                    description: true if the links of this category are in system folder and not in a subfolder.
                category:
                    type: string
                    description: name of the group of links
                links:
                    type: array
                    items:
                        $ref: "#/components/schemas/Link"
        Link:
            properties:
                name:
                    type: string
                    description: Name of the link.
                resourceRef:
                    type: string
                    description: target of the link. Can be either a URL id resourceType is 'external' or a UUID if resourceType is 'page' or 'category'.
                resourceType:
                    type: string
                    description: the type of the link.
                    enum:
                        - external
                        - page
                        - category
                folder:
                    type: boolean
                    description: true if resourceType is 'page' and resourceRef is the id of a folder.
        PortalMenuLink:
            type: object
            properties:
                id:
                    type: string
                    description: Portal menu link id
                    example: 00f8c9e7-78fc-4907-b8c9-e778fc790750
                name:
                    type: string
                    description: Displayed name of the menu link
                    example: My custom link
                type:
                    type: string
                    description: type of the menu link
                    enum:
                        - external
                    default: external
                    example: external
                target:
                    type: string
                    description: target of the menu link
                    example: https://gravitee.io
                order:
                    type: integer
                    description: The order of the menu link.
                    example: 2
            required:
                - id
                - name
                - type
                - order

        Notifier:
            properties:
                id:
                    type: string
                    description: Notifier id
                name:
                    type: string
                    description: Notifier name
                description:
                    type: string
                    description: Notifier description
        EntrypointsResponse:
            description: List of Entrypoints.
            type: array
            items:
                $ref: "#/components/schemas/Entrypoint"
        Entrypoint:
            description: |
                Describes an Entrypoint.
            properties:
                id:
                    description: Unique identifier of an Entrypoint.
                    type: string
                name:
                    description: Name of the Entrypoint.
                    type: string
                version:
                    description: Version of the Entrypoint.
                    type: string
                description:
                    description: Description of the Entrypoint.
                    type: string
                category:
                    type: string
                    description: Category of the Entrypoint.
                supportedApiType:
                    description: ApiType supported by the Entrypoint.
                    type: string
                    enum:
                        - sync
                        - async
                supportedModes:
                    description: ConnectorMode supported by the Entrypoint.
                    type: array
                    items:
                        type: string
                        enum:
                            - subscribe
                            - publish
                            - request_response
                supportedQos:
                    type: array
                    description: Qos supported by the Entrypoint.
                    items:
                        type: string
                        enum:
                            - none
                            - auto
                            - at-least-once
                            - at-most-once
                availableFeatures:
                    type: array
                    description: ConnectorFeature supported by the Entrypoint.
                    items:
                        type: string
                        enum:
                            - limit
                            - resume
                            - dlq
                supportedListenerType:
                    type: string
                    description: ListenerType supported by the Entrypoint.
                    enum:
                        - http
                        - subscription
                schema:
                    type: string
                    description: Schema of the Entrypoint.
                subscriptionSchema:
                    type: string
                    description: SubscriptionSchema of the Entrypoint.
                icon:
                    type: string
                    description: Icon of the Entrypoint.
        #################
        # Input Objects #
        #################
        RatingInput:
            properties:
                title:
                    type: string
                value:
                    type: integer
                    minimum: 0
                    maximum: 5
                comment:
                    type: string
        RatingAnswerInput:
            required:
                - comment
            properties:
                comment:
                    type: string
        ApplicationInput:
            properties:
                name:
                    type: string
                description:
                    type: string
                domain:
                    type: string
                picture:
                    type: string
                groups:
                    type: array
                    items:
                        type: string
                settings:
                    $ref: "#/components/schemas/ApplicationSettings"
                background:
                    type: string
                api_key_mode:
                    $ref: "#/components/schemas/ApiKeyModeEnum"
        MemberInput:
            properties:
                user:
                    type: string
                    description: User's technical identifier.
                reference:
                    type: string
                    description: User's reference for user providing from an identity provider.
                role:
                    type: string
                    description: Role's name
        AlertInput:
            properties:
                application:
                    description: Concerned application ID
                    type: string
                type:
                    $ref: "#/components/schemas/AlertType"
                api:
                    description: Filter on API id (empty for all apis)
                    type: string
                description:
                    description: Alert description
                    type: string
                    maxLength: 256
                status_code:
                    description: Http status code to trigger the alert
                    type: string
                status_percent:
                    description: Percent to trigger the alert on status code
                    type: integer
                    minimum: 1
                    maximum: 100
                enabled:
                    description: true, if alert is enabled
                    type: boolean
                    default: true
                response_time:
                    description: Response time to trigger the alert
                    type: integer
                    minimum: 1
                    maximum: 100000
                duration:
                    description: Compute alert on selected duration
                    type: integer
                time_unit:
                    $ref: "#/components/schemas/AlertTimeUnit"
                webhook:
                    $ref: "#/components/schemas/AlertWebhook"
        ReferenceMetadataInput:
            properties:
                name:
                    description: Name of the metadata.
                    type: string
                format:
                    description: format of the metadata value.
                    $ref: "#/components/schemas/ReferenceMetadataFormatType"
                value:
                    description: value of the metadata. Supports freemarker syntax.
                    type: string
                defaultValue:
                    description: default value of the metadata.
                    type: string
        SubscriptionInput:
            properties:
                application:
                    description: Id of the application which subscribe
                    type: string
                plan:
                    description: Id of the plan to which the application subscribe
                    type: string
                request:
                    description: A request message to the api owner why a user want to subscribe
                    type: string
                general_conditions_accepted:
                    description: Specify if the general conditions have been accepted by the API subscriber
                    type: boolean
                general_conditions_content_revision:
                    description: Page revision of the general conditions visualized and accepted by the API subscriber
                    $ref: "#/components/schemas/PageRevisionId"
                metadata:
                    description: Subscription metadata
                    type: object
                    additionalProperties:
                        type: string
                configuration:
                    description: Subscription configuration
                    $ref: "#/components/schemas/SubscriptionConfigurationInput"
                api_key_mode:
                    $ref: "#/components/schemas/ApiKeyModeEnum"
        UpdateSubscriptionInput:
            properties:
                metadata:
                    description: Subscription metadata
                    type: object
                    additionalProperties:
                        type: string
                configuration:
                    description: Subscription configuration
                    $ref: "#/components/schemas/SubscriptionConfigurationInput"
        SubscriptionConfigurationInput:
            properties:
                channel:
                    description: The channel to subscribe to if any
                    type: string
                entrypointId:
                    description: The entrypointId to subscribe to if any
                    type: string
                entrypointConfiguration:
                    description: The entrypoint configuration if needed
                    type: object
        TransferOwnershipInput:
            properties:
                new_primary_owner_id:
                    description: User identifier of the new Primary Owner of the application.
                    type: string
                new_primary_owner_reference:
                    description: User reference of the new Primary Owner of the application.
                    type: string
                primary_owner_newrole:
                    description: New role to be affected to the current PrimaryOwner.
                    type: string
        PayloadInput:
            properties:
                client_id:
                    type: string
                    minLength: 1
                redirect_uri:
                    type: string
                    minLength: 1
                code:
                    type: string
                    minLength: 1
                grant_type:
                    type: string
                    minLength: 1
                code_verifier:
                    type: string
                state:
                    type: string
        TicketInput:
            required:
                - subject
                - content
            properties:
                subject:
                    description: Subject of the ticket.
                    type: string
                content:
                    description: Description of the ticket.
                    type: string
                application:
                    description: Application identifier concerned by the ticket.
                    type: string
                api:
                    description: Api identifer concerned by the ticket.
                    type: string
                copy_to_sender:
                    description: True if the author of the ticket wants to receive a copy of the ticket.
                    type: boolean
        RegisterUserInput:
            required:
                - email
            properties:
                email:
                    description: Valid email of the new user.
                    type: string
                firstname:
                    description: First name of the new user.
                    type: string
                lastname:
                    description: Last name of the new user.
                    type: string
                confirmation_page_url:
                    description: URL of the confirmation page to be used in the 'User Registration' email.
                    type: string
                customFields:
                    type: object
                    description: Values for CustomUserFields
                    additionalProperties: true
        ChangeUserPasswordInput:
            required:
                - token
                - password
                - firstname
                - lastname
            properties:
                token:
                    description: Token of the user to be validated.
                    type: string
                password:
                    description: Password of the user.
                    type: string
                    format: password
                firstname:
                    description: First name of the user.
                    type: string
                lastname:
                    description: Last name of the user.
                    type: string
        FinalizeRegistrationInput:
            required:
                - token
                - password
                - firstname
                - lastname
            properties:
                token:
                    description: Token of the registered user to be validated.
                    type: string
                password:
                    description: Password of the registered user.
                    type: string
                firstname:
                    description: First name of the registered user.
                    type: string
                lastname:
                    description: Last name of the registered user.
                    type: string
        UserInput:
            required:
                - id
            properties:
                id:
                    description: Unique identifier of a user.
                    type: string
                avatar:
                    description: Avatar of the user.
                    type: string
                    writeOnly: true
                first_name:
                    description: Firstname of the user.
                    type: string
                    writeOnly: true
                last_name:
                    description: Lastname of the user.
                    type: string
                    writeOnly: true
                customFields:
                    type: object
                    description: Values for CustomUserFields
                    additionalProperties: true
        ResetUserPasswordInput:
            required:
                - username
            properties:
                username:
                    description: Username of the user.
                    type: string
                reset_page_url:
                    description: URL of the password reset page to be used in the 'Password reset' email.
                    type: string
        NotificationInput:
            properties:
                hooks:
                    type: array
                    items:
                        type: string

        #######################
        # Composition Objects #
        #######################
        ApplicationSettings:
            properties:
                app:
                    $ref: "#/components/schemas/SimpleApplicationSettings"
                oauth:
                    $ref: "#/components/schemas/OAuthClientSettings"
                tls:
                    $ref: "#/components/schemas/TlsClientSettings"
        SimpleApplicationSettings:
            properties:
                type:
                    type: string
                client_id:
                    type: string
        OAuthClientSettings:
            properties:
                client_secret:
                    type: string
                client_id:
                    type: string
                redirect_uris:
                    type: array
                    items:
                        type: string
                client_uri:
                    type: string
                logo_uri:
                    type: string
                response_types:
                    type: array
                    items:
                        type: string
                grant_types:
                    type: array
                    items:
                        type: string
                application_type:
                    type: string
                renew_client_secret_supported:
                    type: boolean
        TlsClientSettings:
            properties:
                client_certificate:
                    type: string
        Metadata:
            description: Information about the page, if this page is from an external source.
            properties:
                name:
                    type: string
                value:
                    type: string
                order:
                    type: string
        RatingSummary:
            properties:
                average:
                    type: number
                    format: double
                count:
                    type: number
                one_star:
                    type: number
                    format: double
                two_star:
                    type: number
                    format: double
                three_star:
                    type: number
                    format: double
                four_star:
                    type: number
                    format: double
                five_star:
                    type: number
                    format: double
        PageConfiguration:
            description: Technical information about the page
            properties:
                try_it:
                    type: boolean
                    description: Enable "Try It!" mode in documentation page.
                try_it_anonymous:
                    type: boolean
                    description: Enable "Try It!" mode in documentation page for anonymous users.
                try_it_url:
                    type: string
                    description: Base URL used to try the API.
                show_url:
                    type: boolean
                    description: Show the URL to download the content.
                display_operation_id:
                    type: boolean
                    description: Display the operationId in the operations list.
                doc_expansion:
                    type: string
                    description: |
                        Default expansion setting for the operations and tags.\
                        Possibles values are :
                         - list : Expands only the tags
                         - full : Expands the tags and operations
                         - none : Expands nothing. DEFAULT.
                    enum:
                        - list
                        - full
                        - none
                enable_filtering:
                    type: boolean
                    description: Add a top bar to filter content.
                show_extensions:
                    type: boolean
                    description: Display vendor extension (X-) fields and values for Operations, Parameters, and Schema.
                show_common_extensions:
                    type: boolean
                    description: Display extensions (pattern, maxLength, minLength, maximum, minimum) fields and values for Parameters.
                max_displayed_tags:
                    type: number
                    description: |
                        Number of max tagged operations displayed. \
                        Limits the number of tagged operations displayed to at most this many (negative means show all operations).\
                        No limit by default.
                use_pkce:
                    type: boolean
                    description: Enable use of PKCE with authorization code flows in documentation page.
                viewer:
                    type: string
                    description: The type of viewer for OpenAPI specification. Default is 'Swagger'
                    enum:
                        - Swagger
                        - Redoc
        RatingAnswer:
            required:
                - id
                - author
                - date
                - comment
            properties:
                id:
                    type: string
                author:
                    $ref: "#/components/schemas/User"
                date:
                    type: string
                    format: date-time
                comment:
                    type: string
        Key:
            description: Subscription Key
            properties:
                id:
                    type: string
                key:
                    type: string
                application:
                    $ref: "#/components/schemas/Application"
                subscriptions:
                    type: array
                    items:
                        $ref: "#/components/schemas/Subscription"
                paused:
                    type: boolean
                revoked:
                    type: boolean
                expired:
                    type: boolean
                created_at:
                    type: string
                    format: date-time
                revoked_at:
                    type: string
                    format: date-time
                expire_at:
                    type: string
                    format: date-time
        AlertType:
            type: string
            enum:
                - STATUS
                - RESPONSE_TIME
            default: STATUS
        AlertTimeUnit:
            type: string
            enum:
                - SECONDS
                - MINUTES
                - HOURS
            default: MINUTES
        ApiKeyModeEnum:
            description: |
                The API Key mode to use for this application.
                  - The `SHARED` API Key mode allows consumer to use the same API Key across all the subscriptions
                  - The `EXCLUSIVE` API Key mode will result to a new API Key being generated for each subscription
                  - The `UNSPECIFIED` API Key mode is a marker value informing that no choice as been made yet regarding
                    the API Key mode to use for the application.
            type: string
            enum:
                - SHARED
                - EXCLUSIVE
                - UNSPECIFIED
        HttpMethod:
            type: string
            enum:
                - CONNECT
                - DELETE
                - GET
                - HEAD
                - OPTIONS
                - PATCH
                - POST
                - PUT
                - TRACE
                - OTHER
            default: OTHER
        HttpHeaders:
            description: List of String List
            additionalProperties:
                type: array
                items:
                    type: string
        Request:
            description: Request logged by the API Gateway
            properties:
                method:
                    $ref: "#/components/schemas/HttpMethod"
                headers:
                    $ref: "#/components/schemas/HttpHeaders"
                uri:
                    type: string
                body:
                    type: string
        Response:
            description: Response logged by the API Gateway
            properties:
                status:
                    type: integer
                headers:
                    $ref: "#/components/schemas/HttpHeaders"
                body:
                    type: string
        MetadataMap:
            description: Map of Map of Object
            type: object
            additionalProperties:
                type: object
                additionalProperties:
                    type: object
        Bucket:
            properties:
                buckets:
                    type: array
                    items:
                        $ref: "#/components/schemas/Bucket"
                field:
                    type: string
                name:
                    type: string
                data:
                    type: array
                    items:
                        type: number
                metadata:
                    $ref: "#/components/schemas/MetadataMap"
        Timerange:
            properties:
                from:
                    type: integer
                    format: int64
                to:
                    type: integer
                    format: int64
                interval:
                    type: integer
                    format: int64
        FilterApiQuery:
            type: string
            enum:
                - ALL
                - FEATURED
                - MINE
                - STARRED
                - TRENDINGS
        Enabled:
            properties:
                enabled:
                    description: true, if the property is enabled
                    type: boolean
        IdentityProviderType:
            description: type of Identity Provider
            type: string
            enum:
                - GOOGLE
                - GITHUB
                - GRAVITEEIO_AM
                - OIDC
        PageRevisionId:
            properties:
                pageId:
                    type: string
                revision:
                    type: integer
                    format: int32
        ReferenceMetadataFormatType:
            type: string
            enum:
                - STRING
                - NUMERIC
                - BOOLEAN
                - DATE
                - MAIL
                - URL
            default: STRING
        #################
        # Links Objects #
        #################
        Links:
            properties:
                self:
                    type: string
                first:
                    type: string
                last:
                    type: string
                prev:
                    type: string
                next:
                    type: string
        ApiLinks:
            properties:
                self:
                    type: string
                links:
                    type: string
                metrics:
                    type: string
                pages:
                    type: string
                picture:
                    type: string
                background:
                    type: string
                plans:
                    type: string
                ratings:
                    type: string
        ApplicationLinks:
            properties:
                self:
                    type: string
                members:
                    type: string
                notifications:
                    type: string
                picture:
                    type: string
                background:
                    type: string
        PageLinks:
            properties:
                self:
                    type: string
                content:
                    type: string
                parent:
                    type: string
        ThemeLinks:
            properties:
                self:
                    type: string
                backgroundImage:
                    type: string
                logo:
                    type: string
                optionalLogo:
                    type: string
                favicon:
                    type: string
        UserLinks:
            properties:
                self:
                    type: string
                avatar:
                    type: string
                notifications:
                    type: string
        CategoryLinks:
            properties:
                self:
                    type: string
                highlighted_api:
                    type: string
                picture:
                    type: string
                background:
                    type: string
        CustomUserFields:
            description: Definition of addition user registration fields
            properties:
                key:
                    description: The field identifier.
                    type: string
                label:
                    description: The default field label.
                    type: string
                required:
                    description: The field is mandatory
                    type: boolean
                values:
                    description: List of authorized values for the field
                    type: array
                    items:
                        type: string
    responses:
        InternalServerError:
            description: Internal Server Error
            content:
                application/json:
                    schema:
                        $ref: "#/components/schemas/ErrorResponse"
        PermissionError:
            description: Insufficient rights to access this resource
            content:
                application/json:
                    schema:
                        $ref: "#/components/schemas/ErrorResponse"
        UnauthorizedError:
            description: Unauthorized
            content:
                application/json:
                    schema:
                        $ref: "#/components/schemas/ErrorResponse"
        APINotFoundError:
            description: API not found
            content:
                application/json:
                    schema:
                        $ref: "#/components/schemas/ErrorResponse"
        ApplicationNotFoundError:
            description: Application not found
            content:
                application/json:
                    schema:
                        $ref: "#/components/schemas/ErrorResponse"
        GroupNotFoundError:
            description: Group not found
            content:
                application/json:
                    schema:
                        $ref: "#/components/schemas/ErrorResponse"
        AuthSuccess:
            description: Auth token in payload and bearer in cookie
            headers:
                set-cookie:
                    description: Auth cookie
                    schema:
                        type: string
                        example: Auth-Graviteeio-APIM=Bearer%20xxxxxx;Path=/;HttpOnly
            content:
                application/json:
                    schema:
                        $ref: "#/components/schemas/Token"
        PageSuccess:
            description: One documentation page
            content:
                application/json:
                    schema:
                        $ref: "#/components/schemas/Page"
        PagesSuccess:
            description: List of pages
            content:
                application/json:
                    schema:
                        $ref: "#/components/schemas/PagesResponse"
        PictureSuccess:
            description: A picture
            content:
                "image/*":
                    schema:
                        type: string
                        format: binary
        MediaSuccess:
            description: A media
            content:
                "*":
                    schema:
                        type: string
                        format: binary

    securitySchemes:
        BasicAuth:
            type: http
            scheme: basic
        CookieAuth:
            type: apiKey
            in: cookie
            name: Auth-Graviteeio-APIM




© 2015 - 2025 Weber Informatics LLC | Privacy Policy