openapi: 3.0.2
info:
  version: 1.3.0-impl:etsi.org:ETSI_NFV_OpenAPI:1
  title: SOL009 - NFV-MANO Log Management Notification Operation
  description: >
    SOL009 - NFV-MANO Log Management Notification Operation

    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/bugzilla/buglist.cgi?component=Nfv-Openapis&list_id=61&product=NFV&resolution=
  license:
    name: ETSI Forge copyright notice
    url: https://forge.etsi.org/etsi-forge-copyright-notice.txt
externalDocs:
  description: ETSI GS NFV-SOL 009 V3.5.1
  url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/009/03.05.01_60/gs_NFV-SOL009v030501p.pdf

security:
  - OauthSecurity:
      - all

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-AlarmNotification:
    description: >-
      This resource represents a notification endpoint for NFV-MANO log management.
      The API producer can use this resource to send notifications related to log management events 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 regarding a log management event from the API producer to the API
        consumer. The API consumer shall have previously created an "Individual subscription" resource with a
        matching filter. See clause 8.5.9.3.1.
      parameters:
        - $ref: "../components/SOL009_params.yaml#/components/parameters/Version"
        - $ref: "../components/SOL009_params.yaml#/components/parameters/Authorization"
      requestBody:
        $ref: "#/components/requestBodies/LogReportAvailableNotification"
      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: >-
        The GET method allows the API producer to test the notification endpoint that is provided by the API
        consumer, e.g. during subscription. See clause 8.5.9.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:
  requestBodies:
    LogReportAvailableNotification:
      description: >-
        Notification about the availability of a log report.
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/LogReportAvailableNotification"

  responses:
    notification.post.204:
      description: >-
        Shall be returned when the notification has been delivered successfully.
      headers:
        Content-Type:
          description: The MIME type of the body of the response.
          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.
          schema:
            type: string
        Version:
          description: >
            Version of the API used in the response.
          schema:
            type: string

    notification.get.204:
      description: >-
        Shall be returned to indicate that the notification endpoint has been tested successfully.
        The response body shall be empty.
      headers:
        Content-Type:
          description: The MIME type of the body of the response.
          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.
          schema:
            type: string
        Version:
          description: >
            Version of the API used in the response.
          schema:
            type: string

  schemas:
    LogReportAvailableNotification:
      description: >-
        This notification informs the receiver that the log report of the NFV-MANO functional entity is available.
        It shall comply with the provisions defined in table 8.6.2.4-1.
        The notification shall be triggered by the NFV-MANO functional entity when log information has been collected
        by the logging job and the log report is available.
      type: object
      required:
        - id
        - notificationType
        - subscriptionId
        - timeStamp
        - objectInstanceId
        - _links
      properties:
        id:
          description: >-
            Identifier of this notification. If a notification is sent multiple times due to multiple subscriptions,
            the "id" attribute of all these notifications shall have the same value.
          $ref: '../components/SOL009_schemas.yaml#/components/schemas/Identifier'
        notificationType:
          description: >-
            Discriminator for the different notification types.
            Shall be set to "LogReportAvailableNotification" for this notification type.
          type: string
        subscriptionId:
          description: >-
            Identifier of the subscription that this notification relates to.
          $ref: '../components/SOL009_schemas.yaml#/components/schemas/Identifier'
        timeStamp:
          description: >-
            Date and time of the generation of the notification.
          $ref: '../components/SOL009_schemas.yaml#/components/schemas/DateTime'
        objectInstanceId:
          description: >-
            Identifier that identifies the object instance for which the log report is available.
            This attribute shall contain the identifier of the logged object according to their type.
          $ref: "../components/SOL009_schemas.yaml#/components/schemas/ManoManagedObjectReference"
        _links:
          description: >-
            Links to resources related to this notification.
          type: object
          required:
            - subscription
            - logReports
          properties:
            subscription:
              description: >-
                Link to the related subscription.
              $ref: '../components/SOL009_schemas.yaml#/components/schemas/NotificationLink'
            objectInstance:
              description: >-
                Link to the resource representing the measured object instance to which the notified change applies.
                Shall be present if the measured object instance information is accessible as a resource.
              $ref: '../components/SOL009_schemas.yaml#/components/schemas/NotificationLink'
            LoggingJob:
              description: >-
                Link to the resource that represents the logging job for which the log report is available.
              $ref: '../components/SOL009_schemas.yaml#/components/schemas/NotificationLink'
            logReports:
              description: >-
                Link from which the available log report can be obtained. Due to the relationship of the logging
                job compilation and the logging information availability reporting, more than one logReport
                notification link can be provided.
              type: array
              items:
                $ref: '../components/SOL009_schemas.yaml#/components/schemas/NotificationLink'
