openapi: 3.0.2

info:
  title: SOL002 - VNF Fault Management interface
  description: |
    SOL002 - VNF Fault Management 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/bugzilla/buglist.cgi?component=Nfv-Openapis
  contact:
    name: NFV-SOL WG
  license:
    name: ETSI Forge copyright notice
    url: https://forge.etsi.org/etsi-forge-copyright-notice.txt
  version: 1.3.0-impl:etsi.org:ETSI_NFV_OpenAPI:1

externalDocs:
  description: ETSI GS NFV-SOL 002 V3.3.1
  url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/002/02.07.01_60/gs_nfv-sol002v020701p.pdf

security:
  - OauthSecurity:
    - all

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

paths:
  /api_versions:
    $ref: '../../endpoints/SOL002SOL003_endpoints.yaml#/endpoints/api-versions'

  /alarms:
    parameters:
      - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Version
      - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization
    get:
      description: |
        The client can use this method to retrieve information about the alarm list.
      parameters:
        - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept
        - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/ContentType
        - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/filter
        - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/nextpage_opaque_marker
      responses:
        "200":
          $ref: '#/components/responses/Alarms.Get'
        "400":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/400
        "401":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/401
        "403":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/403
        "404":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/404
        "405":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/405
        "406":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/406
        "416":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/416
        "422":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/422
        "429":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/429
        "500":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/500
        "503":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/503
        "504":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/504

  /alarms/{alarmId}:
    parameters:
      - $ref: '#/components/parameters/AlarmId'
      - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Version
      - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization
    get:
      description: |
        The client can use this method to read an individual alarm.
      parameters:
        - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept
        - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/ContentType
      responses:
        "200":
          $ref: '#/components/responses/IndividualAlarm.Get'
        "400":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/400
        "401":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/401
        "403":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/403
        "404":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/404
        "405":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/405
        "406":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/406
        "416":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/416
        "422":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/422
        "429":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/429
        "500":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/500
        "503":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/503
        "504":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/504

    patch:
      description: |
        This method modifies an individual alarm resource.
      parameters:
        - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept
        - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/ContentType
      requestBody:
        $ref: '#/components/requestBodies/IndividualAlarmRequest'
      responses:
        "200":
          $ref: '#/components/responses/IndividualAlarm.Patch'
        "400":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/400
        "401":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/401
        "403":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/403
        "404":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/404
        "405":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/405
        "406":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/406
        "409":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/409
        "412":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/412
        "416":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/416
        "422":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/422
        "429":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/429
        "500":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/500
        "503":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/503
        "504":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/504

  /alarms/{alarmId}/escalate:
    parameters:
      - $ref: '#/components/parameters/AlarmId'
      - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Version
      - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization
    post:
      description: |
        The POST method enables the consumer to escalate the perceived severity of an alarm that is represented by an
        individual alarm resource. As the result of successfully executing this method, a new "Individual  subscription"
        resource as defined in clause 7.4.5 shall have been created.  This method shall not trigger any notification.
      requestBody:
        $ref: '#/components/requestBodies/IndividualAlarmEscalateRequest'
      responses:
        "200":
          $ref: '#/components/responses/IndividualAlarmEscalate.Post'
        "400":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/400
        "401":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/401
        "403":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/403
        "404":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/404
        "405":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/405
        "406":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/406
        "416":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/416
        "422":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/422
        "429":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/429
        "500":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/500
        "503":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/503
        "504":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/504

  /subscriptions:
    parameters:
      - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Version
      - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization
    get:
      description: |
        The client can use this method to retrieve the list of active subscriptions for VNF alarms subscribed by the
        client. It can be used e.g. for resynchronization after error situations.
      parameters:
        - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept
        - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/ContentType
        - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/filter
        - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/nextpage_opaque_marker
      responses:
        "200":
          $ref: '#/components/responses/Subscriptions.Get'
        "400":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/400
        "401":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/401
        "403":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/403
        "404":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/404
        "405":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/405
        "406":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/406
        "416":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/416
        "422":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/422
        "429":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/429
        "500":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/500
        "503":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/503
        "504":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/504

    post:
      description: |
        The POST method creates a new subscription.
      parameters:
        - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept
        - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/ContentType
      requestBody:
        $ref: '#/components/requestBodies/FmSubscriptionRequest'
      responses:
        "201":
          $ref: '#/components/responses/Subscriptions.Post'
        "303":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/303
        "400":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/400
        "401":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/401
        "403":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/403
        "404":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/404
        "405":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/405
        "406":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/406
        "416":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/416
        "422":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/422
        "429":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/429
        "500":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/500
        "503":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/503
        "504":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/504

  /subscriptions/{subscriptionId}:
    parameters:
      - $ref: '#/components/parameters/SubscriptionId'
      - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Version
      - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization
    get:
      description: |
        The client can use this method for reading an individual subscription for VNF alarms subscribed by the client.
      parameters:
        - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept
        - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/ContentType
      responses:
        "200":
          $ref: '#/components/responses/IndividualSubscription.Get'
        "400":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/400
        "401":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/401
        "403":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/403
        "404":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/404
        "405":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/405
        "406":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/406
        "416":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/416
        "422":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/422
        "429":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/429
        "500":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/500
        "503":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/503
        "504":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/504

    delete:
      description: |
        This method terminates an individual subscription. As the result
        of successfully executing this method, the "Individual  subscription"
        resource shall not exist any longer. This means that no  notifications for
        that subscription shall be sent to the  formerly-subscribed API consumer.
        NOTE: Due to race conditions, some notifications might still be  received
        by the formerly-subscribed API consumer for a certain time  period after
        the deletion.
      responses:
        "204":
          $ref: '#/components/responses/IndividualSubscription.Delete'
        "400":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/400
        "401":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/401
        "403":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/403
        "404":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/404
        "405":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/405
        "406":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/406
        "416":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/416
        "422":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/422
        "429":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/429
        "500":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/500
        "503":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/503
        "504":
          $ref: ../../responses/SOL002SOL003_resp.yaml#/responses/504

components:
  parameters:
    AlarmId:
      name: alarmId
      in: path
      description: |
        Identifier of the alarm. This identifier can be retrieved from the "id" attribute of the "alarm" attribute
        in the AlarmNotification or AlarmClearedNotification. It can also be retrieved from the "id" attribute of
        the applicable array element in the payload body of the response to a GET request to the "Alarms" resource.
      required: true
      style: simple
      explode: false
      schema:
        type: string

    SubscriptionId:
      name: subscriptionId
      in: path
      description: |
        Identifier of this subscription. This identifier can be retrieved from the resource referenced by the "Location"
        HTTP header in the response to a POST request creating a new subscription resource. It can also be retrieved
        from the "id" attribute in the payload body of that response.
      required: true
      style: simple
      explode: false
      schema:
        type: string

  requestBodies:
    IndividualAlarmRequest:
      description: The parameter for the alarm modification
      content:
        application/json:
          schema:
            $ref: ../../definitions/SOL002SOL003VNFFaultManagement_def.yaml#/definitions/AlarmModifications
      required: true

    IndividualAlarmEscalateRequest:
      description: The proposed "escalated perceived severity" value
      content:
        application/json:
          schema:
            $ref: ./definitions/SOL002VNFFaultManagement_def.yaml#/definitions/PerceivedSeverityRequest
      required: false

    FmSubscriptionRequest:
      description: The VNF creation parameters
      content:
        application/json:
          schema:
            $ref: ../../definitions/SOL002SOL003VNFFaultManagement_def.yaml#/definitions/FmSubscriptionRequest
      required: true

  responses:
    Alarms.Get:
      description: |
        200 OK
        Shall be returned when information about zero or more alarms was queried successfully. The response body shall
        contain in an array the representations of zero or more alarms as defined in clause 7.5.2.4. If the "filter"
        URI parameter was supplied in the request, the data in the response body  shall have been transformed according
        to the rules specified in clause 5.2.2 of  ETSI GS NFV-SOL 013. If the VNFM supports alternative 2 (paging)
        according to clause 5.4.2.1 of  ETSI GS NFV-SOL 013for this resource, inclusion of the Link HTTP header in this
        response  shall follow the provisions in clause 5.4.2.3 of ETSI GS NFV-SOL 013.
      headers:
        Version:
          description: The used API version.
          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
        Link:
          description: |
            Reference to other resources. Used for paging in the present document, see clause 4.7.2.1.
          style: simple
          explode: false
          schema:
            type: string
        Content-Type:
          description: The MIME type of the body of the response.
          style: simple
          explode: false
          schema:
            type: string
      content:
        application/json:
          schema:
            $ref: ./definitions/SOL002VNFFaultManagement_def.yaml#/definitions/Alarm

    IndividualAlarm.Get:
      description: |
        200 OK
        Shall be returned when information about an individual alarm read  successfully. The response body shall contain
        a representation of the individual alarm.
      headers:
        Version:
          description: The used API version.
          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-Type:
          description: The MIME type of the body of the response.
          style: simple
          explode: false
          schema:
            type: string
      content:
        application/json:
          schema:
            $ref: ./definitions/SOL002VNFFaultManagement_def.yaml#/definitions/Alarm

    IndividualAlarm.Patch:
      description: |
        200 OK
        Shall be returned when the request was accepted and completed.  The response body shall contain attribute
        modifications for  an "Individual alarm" resource.
      headers:
        Version:
          description: The used API version.
          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-Type:
          description: The MIME type of the body of the response.
          style: simple
          explode: false
          schema:
            type: string
      content:
        application/json:
          schema:
            $ref: ../../definitions/SOL002SOL003VNFFaultManagement_def.yaml#/definitions/AlarmModifications

    IndividualAlarmEscalate.Post:
      description: |
        204 No Content
        Shall be returned when the VNFM has received the proposed "escalated  perceived severity" value successfully.
        The response body shall be empty.
      headers:
        Version:
          description: The used API version.
          style: simple
          explode: false
          schema:
            type: string
      content: {}

    Subscriptions.Get:
      description: |
        200 OK
        The list of subscriptions has been queried successfully. The response body shall contain the representations of
        all active subscriptions of the functional block that invokes the method. If the "filter" URI parameter was
        supplied in the request, the data  in the response body shall have been transformed according to the  rules
        specified in clause 5.2.2 of ETSI GS NFV-SOL 013. If the VNFM supports alternative 2 (paging) according to
        clause 5.4.2.1 of ETSI GS NFV-SOL 013 for this resource, inclusion of the  Link HTTP header in this response
        shall follow the provisions in  clause 5.4.2.3 of ETSI GS NFV-SOL 013.
      headers:
        Version:
          description: The used API version.
          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
        Link:
          description: |
            Reference to other resources. Used for paging in the present document, see clause 4.7.2.1.
          style: simple
          explode: false
          schema:
            type: string
        Content-Type:
          description: The MIME type of the body of the response.
          style: simple
          explode: false
          schema:
            type: string
      content:
        application/json:
          schema:
            $ref: ../../definitions/SOL002SOL003VNFFaultManagement_def.yaml#/definitions/FmSubscription

    Subscriptions.Post:
      description: |
        201 CREATED
        The subscription was created successfully. The response body shall contain a representation of the created
        subscription resource. The HTTP response shall include a "Location:" HTTP header that points to the created
        subscription resource.
      headers:
        Version:
          description: The used API version.
          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-Type:
          description: The MIME type of the body of the response.
          style: simple
          explode: false
          schema:
            type: string
        Location:
          description: |
            The resource URI of the created subscription resource.
          style: simple
          explode: false
          schema:
            type: string
            format: url
      content:
        application/json:
          schema:
            $ref: ../../definitions/SOL002SOL003VNFFaultManagement_def.yaml#/definitions/FmSubscription

    IndividualSubscription.Get:
      description: |
        200 OK
        Shall be returned when information about an individual subscription  has been read successfully. The response body shall contain a representation of the "Individual  subscription" resource.
      headers:
        Version:
          description: The used API version.
          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-Type:
          description: The MIME type of the body of the response.
          style: simple
          explode: false
          schema:
            type: string
      content:
        application/json:
          schema:
            $ref: ../../definitions/SOL002SOL003VNFFaultManagement_def.yaml#/definitions/FmSubscription

    IndividualSubscription.Delete:
      description: |
        204 NO CONTENT
        Shall be returned when the "Individual subscription" resource has  been deleted successfully.
        The response body shall be empty.
      headers:
        Version:
          description: The used API version.
          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: {}