openapi: 3.0.2

info:
  title: SOL009 - NFV-MANO Configuration and Information Management Notification Interface
  description: |
    SOL009 - NFV-MANO Configuration and Information Management Notification Interface

    IMPORTANT: Please note that this file might be not aligned to the current
    version of the ETSI Group Specification it refers to. In case of
    discrepancies the published ETSI Group Specification takes precedence.

    Please report bugs to https://forge.etsi.org/rep/nfv/SOL009/issues

  contact:
    name: NFV-SOL WG
  license:
    name: ETSI Forge copyright notice
    url: https://forge.etsi.org/etsi-forge-copyright-notice.txt
  version: 2.2.0-impl:etsi.org:ETSI_NFV_OpenAPI:1

externalDocs:
  description: ETSI GS NFV-SOL 009 V3.7.1
  url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/009/03.07.01_60/gs_NFV-SOL009v030701p.pdf

servers:
  - url: http://127.0.0.1/callback/v2
  - url: https://127.0.0.1/callback/v2

paths:
  /URI_is_provided_by_the_client_when_creating_the_subscription-ConfigurationAndInformationNotification:
    description: >
      This resource represents a notification endpoint. The API producer can use this 
      resource to send notifications related to NFV-MANO configuration and information 
      management to a subscribed API consumer, which has provided the URI of this 
      resource during the subscription process.
    post:
      description: >
        The POST method delivers a notification from the API producer to an API consumer.
        The API consumer shall have previously created an "Individual subscription" resource
        with a matching filter. See clause 5.5.6.3.1.
      parameters:
        - $ref: "../components/SOL009_params.yaml#/components/parameters/Version"
        - $ref: "../components/SOL009_params.yaml#/components/parameters/Accept"
        - $ref: "../components/SOL009_params.yaml#/components/parameters/Authorization"
      requestBody:
        $ref: "#/components/requestBodies/ConfigurationAnfInformationNotification"
      responses:
        "204": 
          $ref: "#/components/responses/Notification.Post.204"
        "400":
          $ref: ../components/SOL009_resp.yaml#/components/responses/400
        "401":
          $ref: ../components/SOL009_resp.yaml#/components/responses/401
        "403":
          $ref: ../components/SOL009_resp.yaml#/components/responses/403
        "404":
          $ref: ../components/SOL009_resp.yaml#/components/responses/404
        "405":
          $ref: ../components/SOL009_resp.yaml#/components/responses/405
        "406":
          $ref: ../components/SOL009_resp.yaml#/components/responses/406
        "422":
          $ref: ../components/SOL009_resp.yaml#/components/responses/422
        "500":
          $ref: ../components/SOL009_resp.yaml#/components/responses/500
        "503":
          $ref: ../components/SOL009_resp.yaml#/components/responses/503
        "504":
          $ref: ../components/SOL009_resp.yaml#/components/responses/504

    get:
      description: >
        TThe GET method allows the API producer to test the notification endpoint that 
        is provided by the API consumer, e.g., during the subscription process. See clause 5.5.6.3.2.
      parameters:
        - $ref: "../components/SOL009_params.yaml#/components/parameters/Version"
        - $ref: "../components/SOL009_params.yaml#/components/parameters/Accept"
        - $ref: "../components/SOL009_params.yaml#/components/parameters/Authorization"
      responses:
        "204": 
          $ref: "#/components/responses/Notification.Get.204"
        "400":
          $ref: ../components/SOL009_resp.yaml#/components/responses/400
        "401":
          $ref: ../components/SOL009_resp.yaml#/components/responses/401
        "403":
          $ref: ../components/SOL009_resp.yaml#/components/responses/403
        "404":
          $ref: ../components/SOL009_resp.yaml#/components/responses/404
        "405":
          $ref: ../components/SOL009_resp.yaml#/components/responses/405
        "406":
          $ref: ../components/SOL009_resp.yaml#/components/responses/406
        "422":
          $ref: ../components/SOL009_resp.yaml#/components/responses/422
        "500":
          $ref: ../components/SOL009_resp.yaml#/components/responses/500
        "503":
          $ref: ../components/SOL009_resp.yaml#/components/responses/503
        "504":
          $ref: ../components/SOL009_resp.yaml#/components/responses/504

components:
  responses:
    Notification.Post.204:
      description: >
        204 NO CONTENT

        Shall be returned when the notification has been delivered successfully.
      headers:
        WWW-Authenticate:
          description: >
            Challenge if the corresponding HTTP request has not provided
            authorization, or error details if the corresponding HTTP
            request has provided an invalid authorization token.
          schema:
            type: string
        Version:
          description: >
            Version of the API used in the response.
          schema:
            type: string

    Notification.Get.204:
      description: >
        204 NO CONTENT

        Shall be returned to indicate that the notification endpoint has been 
        tested successfully.

        The response body shall be empty.
      headers:
        WWW-Authenticate:
          description: >
            Challenge if the corresponding HTTP request has not provided
            authorization, or error details if the corresponding HTTP
            request has provided an invalid authorization token.
          schema:
            type: string
        Version:
          description: >
            Version of the API used in the response.
          schema:
            type: string

  requestBodies:
    ConfigurationAnfInformationNotification:
      description: >
        A notification about configuration and information data changes of the 
        NFV-MANO functional entity, or state changes of the NFV-MANO functional 
        entity and its managed objects.
      content:
        application/json:
          schema: 
            oneOf:
              - $ref: "./components/NFVManoConfigurationAndInformationManagementNotification_def.yaml#/components/schemas/InformationChangedNotification"
              - $ref: "./components/NFVManoConfigurationAndInformationManagementNotification_def.yaml#/components/schemas/ChangeStateNotification"
      required: true