NSInstanceUsageNotification.yaml 24 KB
Newer Older
openapi: 3.0.2
info:
  version: 1.0.0-impl:etsi.org:ETSI_NFV_OpenAPI:1
  title: SOL011 - NS Instance Usage Notification Interface
  description: >
    SOL011 - NS Instance Usage 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/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 011 V3.3.1
  url: https://docbox.etsi.org/ISG/NFV/Open/Drafts/SOL011ed331_Or-Or_Stage_3/NFV-SOL011ed331v020.zip

security:
  - OauthSecurity:
      - all
servers:
  - url: http://0.0.0.0/nsiun/v1
  - url: https://0.0.0.0/nsiun/v1

paths:
  "/api_versions":
    $ref: '../endpoints/SOL011_endpoints.yaml#/endpoints/api_versions'

  "/subscriptions":
    description: >-
      This resource represents subscriptions. The client can use this resource to subscribe to notifications 
      related to NS instance usage, and to query its subscriptions.
    post:
      description: >-
        The POST method creates a new subscription.
      parameters:
        - $ref: "../components/SOL011_params.yaml#/components/parameters/Version"
        - $ref: "../components/SOL011_params.yaml#/components/parameters/Accept"
        - $ref: "../components/SOL011_params.yaml#/components/parameters/ContentType"
        - $ref: "../components/SOL011_params.yaml#/components/parameters/Authorization"
      requestBody:
        $ref: "#/components/requestBodies/NsInstanceUsageSubscriptionRequest"
      responses:
        201:
          $ref: '#/components/responses/Subscriptions.Post.201'
        303:
          $ref: '#/components/responses/Subscriptions.Post.303'
        400:
          $ref: ../components/SOL011_resp.yaml#/components/responses/400
        401:
          $ref: ../components/SOL011_resp.yaml#/components/responses/401
        403:
          $ref: ../components/SOL011_resp.yaml#/components/responses/403
        404:
          $ref: ../components/SOL011_resp.yaml#/components/responses/404
        405:
          $ref: ../components/SOL011_resp.yaml#/components/responses/405
        406:
          $ref: ../components/SOL011_resp.yaml#/components/responses/406
        422:
          $ref: ../components/SOL011_resp.yaml#/components/responses/422
        500:
          $ref: ../components/SOL011_resp.yaml#/components/responses/500
        503:
          $ref: ../components/SOL011_resp.yaml#/components/responses/503
        504:
          $ref: ../components/SOL011_resp.yaml#/components/responses/504
    get:
      description: >-
        The GET method queries the list of active subscriptions of the functional block that invokes the method.
        It can be used e.g. for resynchronization after error situations.
      parameters:
        - $ref: "../components/SOL011_params.yaml#/components/parameters/Version"
        - $ref: "../components/SOL011_params.yaml#/components/parameters/Accept"
        - $ref: "../components/SOL011_params.yaml#/components/parameters/Authorization"
        - $ref: "../components/SOL011_params.yaml#/components/parameters/filter"
        - $ref: "../components/SOL011_params.yaml#/components/parameters/nextpage_opaque_marker"
      responses:
        201:
          $ref: "#/components/responses/Subscriptions.Get.200"
        400:
          $ref: ../components/SOL011_resp.yaml#/components/responses/400
        401:
          $ref: ../components/SOL011_resp.yaml#/components/responses/401
        403:
          $ref: ../components/SOL011_resp.yaml#/components/responses/403
        404:
          $ref: ../components/SOL011_resp.yaml#/components/responses/404
        405:
          $ref: ../components/SOL011_resp.yaml#/components/responses/405
        406:
          $ref: ../components/SOL011_resp.yaml#/components/responses/406
        422:
          $ref: ../components/SOL011_resp.yaml#/components/responses/422
        500:
          $ref: ../components/SOL011_resp.yaml#/components/responses/500
        503:
          $ref: ../components/SOL011_resp.yaml#/components/responses/503
        504:
          $ref: ../components/SOL011_resp.yaml#/components/responses/504

  "/subscriptions/{subscriptionId}":
    description: >-
      This resource represents an individual subscription. The client can use this resource to read and to 
      terminate a subscription to notifications related to NS instance usage.
Giacomo Bernini's avatar
Giacomo Bernini committed
    parameters:
      - $ref: "#/components/parameters/subscriptionId"
    get:
      description: >-
        The GET method retrieves information about a subscription by reading an "individual subscription" resource.
      parameters:
        - $ref: "../components/SOL011_params.yaml#/components/parameters/Version"
        - $ref: "../components/SOL011_params.yaml#/components/parameters/Accept"
        - $ref: "../components/SOL011_params.yaml#/components/parameters/ContentType"
        - $ref: "../components/SOL011_params.yaml#/components/parameters/Authorization"
      responses:
        200:
          $ref: '#/components/responses/Subscription.Get.200'
        400:
          $ref: ../components/SOL011_resp.yaml#/components/responses/400
        401:
          $ref: ../components/SOL011_resp.yaml#/components/responses/401
        403:
          $ref: ../components/SOL011_resp.yaml#/components/responses/403
        404:
          $ref: ../components/SOL011_resp.yaml#/components/responses/404
        405:
          $ref: ../components/SOL011_resp.yaml#/components/responses/405
        406:
          $ref: ../components/SOL011_resp.yaml#/components/responses/406
        422:
          $ref: ../components/SOL011_resp.yaml#/components/responses/422
        500:
          $ref: ../components/SOL011_resp.yaml#/components/responses/500
        503:
          $ref: ../components/SOL011_resp.yaml#/components/responses/503
        504:
          $ref: ../components/SOL011_resp.yaml#/components/responses/504
    delete:
      description: >-
        The DELETE method terminates an individual subscription.
      parameters:
        - $ref: "../components/SOL011_params.yaml#/components/parameters/Version"
        - $ref: "../components/SOL011_params.yaml#/components/parameters/Accept"
        - $ref: "../components/SOL011_params.yaml#/components/parameters/ContentType"
        - $ref: "../components/SOL011_params.yaml#/components/parameters/Authorization"
      responses:
          $ref: '#/components/responses/Subscription.Delete.204'
        400:
          $ref: ../components/SOL011_resp.yaml#/components/responses/400
        401:
          $ref: ../components/SOL011_resp.yaml#/components/responses/401
        403:
          $ref: ../components/SOL011_resp.yaml#/components/responses/403
        404:
          $ref: ../components/SOL011_resp.yaml#/components/responses/404
        405:
          $ref: ../components/SOL011_resp.yaml#/components/responses/405
        406:
          $ref: ../components/SOL011_resp.yaml#/components/responses/406
        422:
          $ref: ../components/SOL011_resp.yaml#/components/responses/422
        500:
          $ref: ../components/SOL011_resp.yaml#/components/responses/500
        503:
          $ref: ../components/SOL011_resp.yaml#/components/responses/503
        504:
          $ref: ../components/SOL011_resp.yaml#/components/responses/504

  "/URI-is-provided-by-the-client-when-creating-the-subscription-NSInstanceUsageNotification":
    description: >
      This resource represents a notification endpoint. The NFVO-C can use this resource to send 
      notifications related to NS instance usage to a subscribed NFVO-N, which has provided the 
      URI of this resource during the subscription process
    post:
      description: >
        The POST method delivers a notification from the NFVO-C to the NFVO-N.
      parameters:
        - $ref: "../components/SOL011_params.yaml#/components/parameters/Version"
        - $ref: "../components/SOL011_params.yaml#/components/parameters/ContentType"
        - $ref: "../components/SOL011_params.yaml#/components/parameters/Accept"
        - $ref: "../components/SOL011_params.yaml#/components/parameters/Authorization"
      requestBody:
        $ref: "#/components/requestBodies/NsInstanceUsageNotification"
      responses:
        204: 
          $ref: "#/components/responses/Notification.Post.204"
        400:
          $ref: ../components/SOL011_resp.yaml#/components/responses/400
        401:
          $ref: ../components/SOL011_resp.yaml#/components/responses/401
        403:
          $ref: ../components/SOL011_resp.yaml#/components/responses/403
        404:
          $ref: ../components/SOL011_resp.yaml#/components/responses/404
        405:
          $ref: ../components/SOL011_resp.yaml#/components/responses/405
        406:
          $ref: ../components/SOL011_resp.yaml#/components/responses/406
        422:
          $ref: ../components/SOL011_resp.yaml#/components/responses/422
        500:
          $ref: ../components/SOL011_resp.yaml#/components/responses/500
        503:
          $ref: ../components/SOL011_resp.yaml#/components/responses/503
        504:
          $ref: ../components/SOL011_resp.yaml#/components/responses/504
    get:
      description: >
        The GET method allows the server to test the notification endpoint that is provided 
        by the client, e.g., during the subscription process.
      parameters:
        - $ref: "../components/SOL011_params.yaml#/components/parameters/Version"
        - $ref: "../components/SOL011_params.yaml#/components/parameters/Accept"
        - $ref: "../components/SOL011_params.yaml#/components/parameters/Authorization"
      responses:
        204: 
          $ref: "#/components/responses/Notification.Get.204"
        400:
          $ref: ../components/SOL011_resp.yaml#/components/responses/400
        401:
          $ref: ../components/SOL011_resp.yaml#/components/responses/401
        403:
          $ref: ../components/SOL011_resp.yaml#/components/responses/403
        404:
          $ref: ../components/SOL011_resp.yaml#/components/responses/404
        405:
          $ref: ../components/SOL011_resp.yaml#/components/responses/405
        406:
          $ref: ../components/SOL011_resp.yaml#/components/responses/406
        422:
          $ref: ../components/SOL011_resp.yaml#/components/responses/422
        500:
          $ref: ../components/SOL011_resp.yaml#/components/responses/500
        503:
          $ref: ../components/SOL011_resp.yaml#/components/responses/503
        504:
          $ref: ../components/SOL011_resp.yaml#/components/responses/504

components:
Giacomo Bernini's avatar
Giacomo Bernini committed
  parameters:
    subscriptionId:
      name: subscriptionId
      in: path
      description: >-
        Identifier of the subscription
      required: true
      schema:
        $ref: '../components/SOL011_schemas.yaml#/components/schemas/Identifier'

  requestBodies:
    NsInstanceUsageSubscriptionRequest:
      description: 
        Details of the subscription to be created, as defined in clause 8.6.2.2.
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/NsInstanceUsageSubscriptionRequest"

    NsInstanceUsageNotification:
      description: 
        A notification about the change of usage of an NS instance as part of 
        a composite NS managed by the server.
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/NsInstanceUsageNotification"

  responses:
    Subscriptions.Post.201:
      description: >-
        Shall be returned when the subscription has been created successfully.
        The response body shall contain a representation of the created 
        "individual subscription" resource.
        The HTTP response shall include a "Location" HTTP header that points to 
        the created "individual subscription" resource.
      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
        Location:
          description: >
            URI of the "Individual subscription" resource just created.
          schema:
            type: string
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/NsInstanceUsageSubscription'
    
    Subscriptions.Post.303:
      description: >-
        Shall be returned if a subscription with the same callbackURI and the 
        same filter already exists and the policy of the NFVO-C is to not create 
        redundant subscriptions.
        The HTTP response shall include a "Location" HTTP header that contains 
        the resource URI of the existing "individual subscription" resource.
        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
        Location:
          description: >
            URI of the "Individual subscription" resource just created.
          schema:
            type: string

    Subscriptions.Get.200:
      description: >-
        Shall be returned when the list of subscriptions has been queried successfully.
        The response body shall contain in an array the representations of all active 
        subscriptions of the functional block that invokes the method, i.e. zero or more 
        representations of NS instance usage notification subscriptions as defined in 
        clause 8.6.2.3.
        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 NFVO-C 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:
        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
      content:
        application/json:
          schema:
            type: array
            items:
              $ref: "#/components/schemas/NsInstanceUsageSubscription"

    Subscription.Get.200:
      description: >-
        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:
        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
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/NsInstanceUsageSubscription'

    Subscription.Delete.204:
      description: >-
        Shall be returned when the "individual subscription" resource has been 
        deleted 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
      
    Notification.Post.204:
      description: >-
        Shall be returned when the notification was 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: >-
        Shall be returned when the notification was 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

  schemas:
    NsInstanceUsageSubscriptionRequest:
      description: >-
        This type represents a subscription request related to notifications about NS 
        instance usage. It shall comply with the provisions defined in table 8.6.2.2-1.
      type: object
      required:
        - callbackUri
      properties:
        filter:
          description: >-
            Filter settings for this subscription, to define the subset of all notifications 
            this subscription relates to. A particular notification is sent to the subscriber 
            if the filter matches, or if there is no filter.
          $ref: "#/components/schemas/NsInstanceUsageNotificationsFilter"
        callbackUri:
          description: >-
            The URI of the endpoint to send the notification to.
          $ref: "../components/SOL011_schemas.yaml#/components/schemas/Uri"
        authentication:
          description: >-
            Authentication parameters to configure the use of Authorization when sending 
            notifications corresponding to this subscription, as defined in clause 8.3.4 
            of ETSI GS NFV-SOL 013.
            
            This attribute shall only be present if the subscriber requires authorization 
            of notifications.
          $ref: "../components/SOL011_schemas.yaml#/components/schemas/SubscriptionAuthentication"

    NsInstanceUsageSubscription:
      description: >-
        This type represents a subscription related to notifications about NS instance usage. 
        It shall comply with the provisions defined in table 8.6.2.3-1.
      type: object
      required:
        - id
        - callbackUri
        - _links
      properties:
        id:
          description: >-
            Identifier that identifies the subscription.
          $ref: "../components/SOL011_schemas.yaml#/components/schemas/Identifier"
        filter:
          description: >-
            Filter settings for this subscription, to define the subset of all notifications 
            this subscription relates to. A particular notification is sent to the subscriber 
            if the filter matches, or if there is no filter.
          $ref: "#/components/schemas/NsInstanceUsageNotificationsFilter"
        callbackUri:
          description: >-
            The URI of the endpoint to send the notification to.
          $ref: "../components/SOL011_schemas.yaml#/components/schemas/Uri"
        _links:
          description: >-
            Links to resources related to this resource.
          type: object
          required:
            - self
          properties:
            self: 
              description: >-
                URI of this resource.
              $ref: "../components/SOL011_schemas.yaml#/components/schemas/Link"
    
    NsInstanceUsageNotification:
      description: >-
        This type represents an NS instance usage notification, which indicates the start 
        or end of usage of an NS instance as a part of a composite NS managed by the NFVO-C. 
        It shall comply with the provisions defined in table 8.6.2.4-1.
      type: object
      required:
        - id
        - notificationType
        - subscriptionId
        - timeStamp
        - nsInstanceId
        - status
        - _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/SOL011_schemas.yaml#/components/schemas/Identifier"
        notificationType:
          description: >-
            Discriminator for the different notification types. Shall be set to 
            "NsInstanceUsageNotification" for this notification type.
          type: string
        subscriptionId:
          description: >-
            Identifier of the subscription that this notification relates to.
          $ref: "../components/SOL011_schemas.yaml#/components/schemas/Identifier"
        timeStamp:
          description: >-
            Date and time of the generation of the notification.
          $ref: "../components/SOL011_schemas.yaml#/components/schemas/DateTime"
        nsInstanceId:
          description: >-
            Identifier of the NS instance affected.
          $ref: "../components/SOL011_schemas.yaml#/components/schemas/Identifier"
        status:
          description: >-
            Indicates whether this notification reports about the start of the usage of 
            an NS instance or about the end of the usage of an NS instance.
          $ref: "#/components/schemas/NsInstanceUsageStatusType"
        _links:
          description: >-
            Links to resources related to this notification.
          $ref: "../components/SOL011_schemas.yaml#/components/schemas/NotificationLink"

    NsInstanceUsageNotificationsFilter:
      description: >-
        This type represents a subscription filter related to notifications about NS 
        instance usage. It shall comply with the provisions defined in table 8.6.3.1-1. 
      type: object
      properties:
        notificationTypes:
          description: >-
            Match particular notification types. 
            
            Permitted values:
            - NsInstanceUsageNotification

            NOTE: The permitted values of the "notificationTypes" attribute are spelled 
            exactly as the names of the notification types to facilitate automated code 
            generation systems.
          type: array
          items:
            type: string
            enum:
            - NsInstanceUsageNotification
        nsInstanceId:
          description: >-
            If present, match NS instances with an instance identifier listed in this attribute.
          type: array
          items:
            $ref: "../components/SOL011_schemas.yaml#/components/schemas/Identifier"
        status:
          description: >-
            If present, match a particular status of usage of an NS instance.
          $ref: "#/components/schemas/NsInstanceUsageStatusType"
    
    NsInstanceUsageStatusType:
      description: >-
        The enumeration NsInstanceUsageStatusType shall comply with the provisions defined 
        in table 8.6.4.3-1.
      type: string
      enum:
        - START
        - END