openapi: 3.0.2

info:
  title: SOL002 - VNF Performance Management Notification interface
  description: |
    SOL002 - VNF Performance 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 and has not been approved by the
    ETSI NFV ISG. In case of discrepancies the published ETSI Group Specification takes precedence.
    Please report bugs to https://forge.etsi.org/rep/nfv/SOL002-SOL003/issues
  contact:
    name: NFV-SOL WG
  license:
    name: ETSI Forge copyright notice
    url: https://forge.etsi.org/etsi-forge-copyright-notice.txt
  version: 2.1.0-impl:etsi.org:ETSI_NFV_OpenAPI:1

externalDocs:
  description: ETSI GS NFV-SOL 002 V3.5.1
  url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/002/03.05.01_60/gs_NFV-SOL002v030501p.pdf

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

paths:
  '/URI_is_provided_by_the_client_when_creating_the_subscription-PerformanceInformationAvailableNotification':
    parameters:
      - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Version
      - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization
    get:
      description: |
        The GET method allows the server to test the notification endpoint that is provided by the client,
        e.g. during subscription. See clause 6.4.9.3.2.
      responses:
        "204":
          $ref: '#/components/responses/VNFPMNotification.Get'
        "400":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400
        "401":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/401
        "403":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/403
        "405":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/405
        "406":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/406
        "500":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/500
        "503":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/503

    post:
      description: |
        The POST method delivers a notification regarding a performance management event from API producer to an API
        consumer. See clause 6.4.9.3.1.
      parameters:
        - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/ContentType
      requestBody:
        $ref: '#/components/requestBodies/PerformanceInformationAvailableNotification'
      responses:
        "204":
          $ref: '#/components/responses/VNFPMNotification.Post'
        "400":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400
        "401":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/401
        "403":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/403
        "405":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/405
        "406":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/406
        "500":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/500
        "503":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/503

  /URI_is_provided_by_the_client_when_creating_the_subscription-ThresholdCrossedNotification:
    parameters:
      - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Version
      - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization
    get:
      description: |
        The GET method allows the server to test the notification endpoint that is provided by the client,
        e.g. during subscription. See clause 6.4.9.3.2.
      responses:
        "204":
          $ref: '#/components/responses/VNFPMNotification.Get'
        "400":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400
        "401":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/401
        "403":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/403
        "405":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/405
        "406":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/406
        "500":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/500
        "503":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/503

    post:
      description: |
        The POST method delivers a notification regarding a performance management event from API producer to an API
        consumer. See clause 6.4.9.3.1.
      parameters:
        - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/ContentType
      requestBody:
        $ref: '#/components/requestBodies/ThresholdCrossedNotification'
      responses:
        "204":
          $ref: '#/components/responses/VNFPMNotification.Post'
        "400":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400
        "401":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/401
        "403":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/403
        "405":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/405
        "406":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/406
        "500":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/500
        "503":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/503

components:
  requestBodies:
    PerformanceInformationAvailableNotification:
      description: |
        Notification about performance information availability.
      content:
        application/json:
          schema:
            $ref: ../../definitions/SOL002SOL003VNFPerformanceManagement_def.yaml#/definitions/PerformanceInformationAvailableNotification
      required: true

    ThresholdCrossedNotification:
      description: |
        Notification about crossed threshold.
      content:
        application/json:
          schema:
            $ref: ../../definitions/SOL002SOL003VNFPerformanceManagement_def.yaml#/definitions/ThresholdCrossedNotification
      required: true

  responses:
    VNFPMNotification.Get:
      description: |
        201 NO CONTENT
        Shall be returned to indicate the notification endpoint has been  tested successfully. The response body
        shall be empty.
      headers:
        Version:
          description: |
            Version of the API used in the response.
          style: simple
          explode: false
          schema:
            type: string
        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.
          style: simple
          explode: false
          schema:
            type: string
      content: {}

    VNFPMNotification.Post:
      description: |
        204 NO CONTENT
        Shall be returned when the notification has been delivered successfully. The response body shall be empty.
      headers:
        Version:
          description: |
            Version of the API used in the response.
          style: simple
          explode: false
          schema:
            type: string
        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.
          style: simple
          explode: false
          schema:
            type: string
      content: {}