diff --git a/src/SOL002/VNFIndicator/VNFIndicator.yaml b/src/SOL002/VNFIndicator/VNFIndicator.yaml new file mode 100644 index 0000000000000000000000000000000000000000..82c7cc872ac09c41c35f401867006009abe8d4a0 --- /dev/null +++ b/src/SOL002/VNFIndicator/VNFIndicator.yaml @@ -0,0 +1,445 @@ +swagger: "2.0" + +info: + version: "2.3.1" + title: "VNF Indicator interface" + description: "VNF Indicator interface of ETSI NFV SOL002" + termsOfService: "http://etsi.org" + contact: + name: "NFV-SOL WG" + license: + name: "ETSI Forge copyright notice" + url: https://forge.etsi.org/etsi-forge-copyright-notice.txt + + +basePath: /vnfind/v1 + +schemes: + - http + - https + +consumes: + - application/json + +produces: + - application/json + + +paths: + + /indicators: + get: + summary: Query multiple indicators + description: Get a list of indicators. Support of attribute based filtering via query parameters. +# parameters: +# - name: id.eq +# in: query +# description: Attribute based filtering for indicator identifer as specified in VNFD. +# type: array +# items: +# type: string +# - name: name.eq +# in: query +# description: Attribute based filtering for indicator name as specified in VNFD. +# type: array +# items: +# type: string +# - name: value.eq +# in: query +# description: Attribute based filtering for indicator value equality. +# type: array +# items: +# type: string +# - name: value.neq +# in: query +# description: Attribute based filtering for indicator value unequality. +# type: array +# items: +# type: string +# - name: value.gt +# in: query +# description: Attribute based filtering for indicator value greater than. +# type: array +# items: +# type: string +# - name: value.gte +# in: query +# description: Attribute based filtering for indicator value greater then or equal. +# type: array +# items: +# type: string +# - name: value.lt +# in: query +# description: Attribute based filtering for indicator value less than. +# type: array +# items: +# type: string +# - name: value.lte +# in: query +# description: Attribute based filtering for indicator value less than or equal. +# type: array +# items: +# type: string +# - name: vnfInstanceId.eq +# in: query +# description: Attribute based filtering for indicators belonging to specified VNF instance. +# type: array +# items: +# type: string + responses: + 200: + description: > + The list of VNF indicators was queried successfully. + The response body shall contain the representations of all VNF indicators that match + the attribute-based filtering parameters. + schema: + type: array + items: + $ref: 'definitions/VnfIndicator_def.yaml#/definitions/VnfIndicator' + 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/VNFIndicator_resp.yaml#/responses/409' } + 416: { $ref: '../../responses/SOL002SOL003_resp.yaml#/responses/416' } + 422: { $ref: '../../responses/SOL002SOL003_resp.yaml#/responses/422' } + 500: { $ref: '../../responses/SOL002SOL003_resp.yaml#/responses/500' } + 503: { $ref: '../../responses/SOL002SOL003_resp.yaml#/responses/503' } + + + /indicators/{vnfInstanceId}: + parameters: + - name: vnfInstanceId + in: path + description: > + Identifier of the VNF instance to which the VNF indicators applies. + NOTE: This identifier can be retrieved from the resource referenced by the "Location" HTTP header in the response to a + POST request creating a new VNF instance resource. It can also be retrieved from the "id" attribute in the payload body + of that response. + type: string + required: true + get: + summary: Query multiple indicators related to a VNF instance. + description: > + Get a list of indicators related to a specific VNF instance. Support of attribute based filtering via query parameters. +# parameters: +# - name: id.eq +# in: query +# description: Attribute based filtering for indicator identifer as specified in VNFD. +# type: array +# items: +# type: string +# - name: name.eq +# in: query +# description: Attribute based filtering for indicator name as specified in VNFD. +# type: array +# items: +# type: string +# - name: value.eq +# in: query +# description: Attribute based filtering for indicator value equality. +# type: array +# items: +# type: string +# - name: value.neq +# in: query +# description: Attribute based filtering for indicator value unequality. +# type: array +# items: +# type: string +# - name: value.gt +# in: query +# description: Attribute based filtering for indicator value greater than. +# type: array +# items: +# type: string +# - name: value.gte +# in: query +# description: Attribute based filtering for indicator value greater then or equal. +# type: array +# items: +# type: string +# - name: value.lt +# in: query +# description: Attribute based filtering for indicator value less than. +# type: array +# items: +# type: string +# - name: value.lte +# in: query +# description: Attribute based filtering for indicator value less than or equal. +# type: array +# items: +# type: string + responses: + 200: + description: > + The list of VNF indicators was queried successfully. + The response body shall contain the representations of all VNF indicators that match + the attribute-based filtering parameters. + schema: + type: array + items: + $ref: 'definitions/VnfIndicator_def.yaml#/definitions/VnfIndicator' + 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/VNFIndicator_resp.yaml#/responses/409' } + 416: { $ref: '../../responses/SOL002SOL003_resp.yaml#/responses/416' } + 422: { $ref: '../../responses/SOL002SOL003_resp.yaml#/responses/422' } + 500: { $ref: '../../responses/SOL002SOL003_resp.yaml#/responses/500' } + 503: { $ref: '../../responses/SOL002SOL003_resp.yaml#/responses/503' } + + + /indicators/{vnfInstanceId}/{indicatorId}: + parameters: + - name: vnfInstanceId + in: path + description: > + Identifier of the VNF instance to which the VNF indicators applies. + NOTE: This identifier can be retrieved from the resource referenced by the "Location" HTTP header in the response to a + POST request creating a new VNF instance resource. It can also be retrieved from the "id" attribute in the payload body + of that response. + type: string + required: true + - name: indicatorId + in: path + description: > + Identifier of the VNF indicator. +# LEH NOTE from SOL002 is strange + type: string + required: true + get: + summary: Query multiple indicators related to a VNF instance. + description: > + Get a list of indicators related to a specific VNF instance. Support of attribute based filtering via query parameters. + NOTE: This identifier can be retrieved from the resource referenced by the "Location" HTTP header in the response to a + POST request creating a new VNF instance resource. It can also be retrieved from the "id" attribute in the payload body + of that response. + responses: + 200: + description: > + The list of VNF indicators was queried successfully. + The response body shall contain the representations of all VNF indicators that match + the attribute-based filtering parameters. + schema: + $ref: 'definitions/VnfIndicator_def.yaml#/definitions/VnfIndicator' + 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/VNFIndicator_resp.yaml#/responses/409' } + 416: { $ref: '../../responses/SOL002SOL003_resp.yaml#/responses/416' } + 422: { $ref: '../../responses/SOL002SOL003_resp.yaml#/responses/422' } + 500: { $ref: '../../responses/SOL002SOL003_resp.yaml#/responses/500' } + 503: { $ref: '../../responses/SOL002SOL003_resp.yaml#/responses/503' } + + + /subscriptions: + post: + summary: Create a new subscription + description: Create a new subscription + parameters: + - name: subscription + in: body + description: Subscription data. + required: true + schema: + $ref: 'definitions/VnfIndicatorSubscriptionRequest_def.yaml#/definitions/VnfIndicatorSubscriptionRequest' + responses: + 201: + description: > + The subscription was created successfully. + The response body shall contain a representation of the created subscription resource. + schema: + $ref: 'definitions/VnfIndicatorSubscription_def.yaml#/definitions/VnfIndicatorSubscription' + headers: + Location: + description: > + Pointer to the created subscription resource. + type: string + format: URI + 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/VNFIndicator_resp.yaml#/responses/409' } + 416: { $ref: '../../responses/SOL002SOL003_resp.yaml#/responses/416' } + 422: { $ref: '../../responses/SOL002SOL003_resp.yaml#/responses/422' } + 500: { $ref: '../../responses/SOL002SOL003_resp.yaml#/responses/500' } + 503: { $ref: '../../responses/SOL002SOL003_resp.yaml#/responses/503' } + get: + summary: Query subscriptions. + 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: +# - name: id.eq +# in: query +# description: > +# Attribute based filtering for subscription identifiers. +# type: array +# items: +# type: string +# - name: callbackUri.eq +# in: query +# description: > +# Attribute based filtering for the subscription's call back URIs. +# type: array +# items: +# type: string +# - name: filter.indicatorIds.cont +# in: query +# description: > +# Attribute based filtering for indicator identifiers. +# type: array +# items: +# type: string +# - name: filter.vnfInstanceSubscriptionFilter.vnfdIds.cont +# in: query +# description: > +# Attribute based filtering for VNFD identifiers. +# type: array +# items: +# type: string +# - name: filter.vnfInstanceSubscriptionFilter.vnfProductsFromProviders.vnfProvider.eq +# in: query +# description: > +# Attribute based filtering for VNF providers. +# type: array +# items: +# type: string +# - name: filter.vnfInstanceSubscriptionFilter.vnfProductsFromProviders.vnfProducts.vnfProductName.eq +# in: query +# description: > +# Attribute based filtering for VNF product name. +# type: array +# items: +# type: string +# - name: filter.vnfInstanceSubscriptionFilter.vnfProductsFromProviders.vnfProducts.versions.vnfSoftwareVersion.cont +# in: query +# description: > +# Attribute based filtering for VNF software versions. +# type: array +# items: +# type: string +# - name: filter.vnfInstanceSubscriptionFilter.vnfProductsFromProviders.vnfProducts.versions.vnfdVersion.cont +# in: query +# description: > +# Attribute based filtering for VNFD versions. +# type: array +# items: +# type: string +# - name: filter.vnfInstanceSubscriptionFilter.vnfInstanceIds.cont +# in: query +# description: > +# Attribute based filtering for VNF instance identifiers. +# type: array +# items: +# type: string +# - name: filter.vnfInstanceSubscriptionFilter.vnfInstanceNames.cont +# in: query +# description: > +# Attribute based filtering for VNF instance names. +# type: array +# items: +# type: string + responses: + 200: + description: > + The list of subscriptions was queried successfully. The response body shall contain + the representations of all active subscriptions of the functional block that invokes + the method which match the attribute filter. + schema: + type: array + items: + $ref: 'definitions/VnfIndicatorSubscription_def.yaml#/definitions/VnfIndicatorSubscription' + 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/VNFIndicator_resp.yaml#/responses/409' } + 416: { $ref: '../../responses/SOL002SOL003_resp.yaml#/responses/416' } + 422: { $ref: '../../responses/SOL002SOL003_resp.yaml#/responses/422' } + 500: { $ref: '../../responses/SOL002SOL003_resp.yaml#/responses/500' } + 503: { $ref: '../../responses/SOL002SOL003_resp.yaml#/responses/503' } + + + /subscriptions/{subscriptionId}: + get: + summary: Query subscriptions. + description: > + This resource represents an individual subscription. The client can use this resource to + read and to terminate a subscription to notifications related to VNF indicator value changes. + parameters: + - name: subscriptionId + description: > + Identifier of this subscription. + NOTE: + 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. + in: path + type: string + required: true + responses: + 200: + description: > + The subscriptions was queried successfully. The response body shall contain + the representation of the requested subscription. + schema: + $ref: 'definitions/VnfIndicatorSubscription_def.yaml#/definitions/VnfIndicatorSubscription' + 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/VNFIndicator_resp.yaml#/responses/409' } + 416: { $ref: '../../responses/SOL002SOL003_resp.yaml#/responses/416' } + 422: { $ref: '../../responses/SOL002SOL003_resp.yaml#/responses/422' } + 500: { $ref: '../../responses/SOL002SOL003_resp.yaml#/responses/500' } + 503: { $ref: '../../responses/SOL002SOL003_resp.yaml#/responses/503' } + delete: + summary: Delete a subscription + description: Terminate an individual subscription. + parameters: + - name: subscriptionId + description: > + Identifier of this subscription. + NOTE: + 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. + in: path + type: string + required: true + responses: + 204: + description: > + The subscription was deleted successfully. + The response body shall be empty. + 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/VNFIndicator_resp.yaml#/responses/409' } + 416: { $ref: '../../responses/SOL002SOL003_resp.yaml#/responses/416' } + 422: { $ref: '../../responses/SOL002SOL003_resp.yaml#/responses/422' } + 500: { $ref: '../../responses/SOL002SOL003_resp.yaml#/responses/500' } + 503: { $ref: '../../responses/SOL002SOL003_resp.yaml#/responses/503' } + + diff --git a/src/SOL002/VNFIndicator/definitions/SubscriptionAuthentication_def.yaml b/src/SOL002/VNFIndicator/definitions/SubscriptionAuthentication_def.yaml new file mode 100644 index 0000000000000000000000000000000000000000..cf8eb818337dd0519c63aaef6df727d2cb51bf9a --- /dev/null +++ b/src/SOL002/VNFIndicator/definitions/SubscriptionAuthentication_def.yaml @@ -0,0 +1,77 @@ +definitions: + + SubscriptionAuthentication: + description: > + If an API consumer requires the API producer to authorize for sending notifications to that API consumer, + it shall include in the subscription request data according to the following structure. + type: object + required: + - authType + properties: + authType: + description: > + Defines the type of Authentication/Authorization to use when sending a notification. + Permitted values: + * BASIC + * In every POST request that sends a notification, use HTTP Basic authentication with + the client credentials. + * The API producer shall pass its client credentials in every POST request that sends a + notification, as defined in IETF RFC 7617. + * NOTE: The clientId and clientPassword passed in a subscription shall not be the same as the + clientId and clientPassword that are used to obtain authorization for API requests. + Client credentials may differ between subscriptions. The value of clientPassword should be + generated by a random process. + * OAUTH2_CLIENT_CREDENTIALS + * In every POST request that sends a notification, use an + OAuth 2.0 Bearer token, obtained using the client credentials grant type. + * The API producer shall, prior to sending any notification, obtain an access token from + the token endpoint using the OAuth 2.0 client credentials grant type as defined in + IETF RFC 6749. The API consumer should include expiry information with the token response. + * The API producer shall include that access token as a Bearer token in every POST request + that sends a notification (according to IETF RFC 6750). + * If the access token is expired, the API consumer shall reject the notification. In that case, + the API producer shall obtain a new access token, and repeat sending the notification. + * If the token expiry time is known to the API producer, it may obtain proactively a new access token. + type: string + enum: + - BASIC + - OAUTH2_CLIENT_CREDENTIALS + paramsBasic: + description: > + Parameters for authentication/authorization using BASIC. Shall be present if authType is "BASIC" and + the contained information has not been provisioned out of band. Shall be absent otherwise. + type: object + properties: + userName: + description: > + Username to be used in HTTP Basic authentication. Shall be present if it has not been provisioned + out of band. + type: string + password: + description: > + Password to be used in HTTP Basic authentication. Shall be present if it has not been provisioned + out of band. + type: string + paramsOauth2Client Credentials: + description: > + Parameters for authentication/authorization using OAUTH2_CLIENT_CREDENTIALS. Shall be present if + authType is "OAUTH2_CLIENT_CREDENTIALS" and the contained information has not been provisioned + out of band. Shall be absent otherwise. + type: object + properties: + clientId: + description: > + Client identifier to be used in the access token request of the OAuth 2.0 client credentials + grant type. Shall be present if it has not been provisioned out of band. See NOTE. + type: string + clientPassword: + description: > + Client password to be used in the access token request of the OAuth 2.0 client credentials + grant type. Shall be present if it has not been provisioned out of band. See NOTE. + type: string + tokenEndpoint: + description: > + The token endpoint from which the access token can be obtained. Shall be present if it has + not been provisioned out of band. + type: string + format: URI diff --git a/src/SOL002/VNFIndicator/definitions/VnfIndicatorNotificationsFilter_def.yaml b/src/SOL002/VNFIndicator/definitions/VnfIndicatorNotificationsFilter_def.yaml new file mode 100644 index 0000000000000000000000000000000000000000..6a8b9a434556ae52621aeb47998f94200e9ceb76 --- /dev/null +++ b/src/SOL002/VNFIndicator/definitions/VnfIndicatorNotificationsFilter_def.yaml @@ -0,0 +1,24 @@ +definitions: + + VnfIndicatorNotificationsFilter: + description: > + This type represents a subscription filter related to notifications about VNF indicator value changes. + At a particular nesting level in the filter structure, the following applies: + All attributes shall match in order for the filter to match (logical "and" between different filter attributes). + If an attribute is an array, the attribute shall match if at least one of the values in the array matches + (logical "or" between the values of one filter attribute). + type: object + properties: + vnfInstanceSubscriptionFilter: + description: > + Filter criteria to select VNF instances about which to notify. This attribute shall not be included + when the VNFM sends a subscription request to a particular VNF instance. + $ref: 'VnfInstanceSubscriptionFilter_def.yaml#/definitions/VnfInstanceSubscriptionFilter' + indicatorIds: + description: > + Match particular VNF indicator identifiers. + type: array + items: + $ref: '../../../definitions/SOL002SOL003_def.yaml#/definitions/IdentifierInVnfd' + + diff --git a/src/SOL002/VNFIndicator/definitions/VnfIndicatorSubscriptionRequest_def.yaml b/src/SOL002/VNFIndicator/definitions/VnfIndicatorSubscriptionRequest_def.yaml new file mode 100644 index 0000000000000000000000000000000000000000..15826b3876ca1e73ec30740e65dff16d463e5198 --- /dev/null +++ b/src/SOL002/VNFIndicator/definitions/VnfIndicatorSubscriptionRequest_def.yaml @@ -0,0 +1,27 @@ +definitions: + + VnfIndicatorSubscriptionRequest: + description: > + This type represents a subscription request related to VNF indicator value change notifications. + 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: 'VnfIndicatorNotificationsFilter_def.yaml#/definitions/VnfIndicatorNotificationsFilter' + callbackUri: + description: > + The URI of the endpoint to send the notification to. + type: string + format: URI + authentication: + description: > + Authentication parameters to configure the use of Authorization when sending notifications corresponding + to this subscription. This attribute shall only be present if the subscriber requires authorization of + notifications. + $ref: 'SubscriptionAuthentication_def.yaml#/definitions/SubscriptionAuthentication' + \ No newline at end of file diff --git a/src/SOL002/VNFIndicator/definitions/VnfIndicatorSubscription_def.yaml b/src/SOL002/VNFIndicator/definitions/VnfIndicatorSubscription_def.yaml new file mode 100644 index 0000000000000000000000000000000000000000..b22ef1fce2b6c6d791f298ab45a0260353d11d50 --- /dev/null +++ b/src/SOL002/VNFIndicator/definitions/VnfIndicatorSubscription_def.yaml @@ -0,0 +1,37 @@ +definitions: + + VnfIndicatorSubscription: + description: > + This type represents a subscription related to notifications about VNF indicator value changes. + type: object + required: + - callbackUri + - id + - _links + properties: + id: + description: > + Identifier of this subscription resource. + $ref: '../../../definitions/SOL002SOL003_def.yaml#/definitions/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: 'VnfIndicatorNotificationsFilter_def.yaml#/definitions/VnfIndicatorNotificationsFilter' + callbackUri: + description: > + The URI of the endpoint to send the notification to. + type: string + format: URI + _links: + description: > + Links to resources related to this resource. + type: object + required: + - self + properties: + self: + description: > + URI of this resource. + $ref: '../../../definitions/SOL002SOL003_def.yaml#/definitions/Link' diff --git a/src/SOL002/VNFIndicator/definitions/VnfIndicator_def.yaml b/src/SOL002/VNFIndicator/definitions/VnfIndicator_def.yaml new file mode 100644 index 0000000000000000000000000000000000000000..3348fab1edc24bf180136ac9407a4f99a862a225 --- /dev/null +++ b/src/SOL002/VNFIndicator/definitions/VnfIndicator_def.yaml @@ -0,0 +1,31 @@ +definitions: + + VnfIndicator: + type: object + required: + - id + - value + - vnfInstanceId + - _links + properties: + id: + $ref: '../../../definitions/SOL002SOL003_def.yaml#/definitions/IdentifierInVnfd' + name: + type: string + value: + type: object + vnfInstanceId: + $ref: '../../../definitions/SOL002SOL003_def.yaml#/definitions/Identifier' + _links: + description: > + Links to resources related to this resource. + type: object + required: + - self + properties: + self: + description: URI of this resource. + $ref: '../../../definitions/SOL002SOL003_def.yaml#/definitions/Link' + vnfInstance: + description: Link to the VNF instance that the operation applies to. + $ref: '../../../definitions/SOL002SOL003_def.yaml#/definitions/Link' diff --git a/src/SOL002/VNFIndicator/definitions/VnfInstanceSubscriptionFilter_def.yaml b/src/SOL002/VNFIndicator/definitions/VnfInstanceSubscriptionFilter_def.yaml new file mode 100644 index 0000000000000000000000000000000000000000..19981aaf4a51c98768c06502df93a9faf4acf2f4 --- /dev/null +++ b/src/SOL002/VNFIndicator/definitions/VnfInstanceSubscriptionFilter_def.yaml @@ -0,0 +1,83 @@ +definitions: + + VnfInstanceSubscriptionFilter: + description: > + This type represents subscription filter criteria to match VNF instances. + * NOTE 1: + The attributes "vnfdIds" and "vnfProductsFromProviders" are alternatives to reference to + VNF instances that are based on certain VNFDs in a filter. They should not be used both + in the same filter instance, but one alternative should be chosen. + * NOTE 2: + The attributes "vnfInstanceIds" and "vnfInstanceNames" are alternatives to reference to + particular VNF instances in a filter. They should not be used both in the same filter instance, + but one alternative should be chosen. + type: object + properties: + vnfdIds: + description: > + If present, match VNF instances that were created based on a VNFD identified by one of the + vnfdId values listed in this attribute. See NOTE 1. + type: array + items: + $ref: '../../../definitions/SOL002SOL003_def.yaml#/definitions/Identifier' + vnfProductsFromProviders: + description: > + If present, match VNF instances that belong to VNF products from certain providers. See NOTE 1. + type: array + items: + type: object + required: + - vnfProvider + properties: + vnfProvider: + description: > + Name of the VNF provider to match. + type: string + vnfProducts: + description: > + If present, match VNF instances that belong to VNF products with certain product names, + from one particular provider. + type: array + items: + type: object + required: + - vnfProductName + properties: + vnfProductName: + description: > + Name of the VNF product to match. + type: string + versions: + description: > + If present, match VNF instances that belong to VNF products with certain versions + and a certain product name, from one particular provider. + type: array + items: + type: object + required: + - vnfSoftwareVersions + properties: + vnfSoftwareVersions: + description: > + Software version to match. + $ref: '../../../definitions/SOL002SOL003_def.yaml#/definitions/Version' + vnfdVersions: + description: > + If present, match VNF instances that belong to VNF products with certain VNFD versions, + a certain software version and a certain product name, from one particular provider. + type: array + items: + $ref: '../../../definitions/SOL002SOL003_def.yaml#/definitions/Version' + vnfInstanceIds: + description: > + If present, match VNF instances with an instance identifier listed in this attribute. See NOTE 2. + type: array + items: + $ref: '../../../definitions/SOL002SOL003_def.yaml#/definitions/Identifier' + vnfInstanceNames: + description: > + If present, match VNF instances with a VNF Instance Name listed in this attribute. See NOTE 2 + type: array + items: + type: string + diff --git a/src/SOL002/VNFIndicator/responses/VNFIndicator_resp.yaml b/src/SOL002/VNFIndicator/responses/VNFIndicator_resp.yaml new file mode 100644 index 0000000000000000000000000000000000000000..58fb74f1b6ecc3b67d02f491ffd23a37f66262ce --- /dev/null +++ b/src/SOL002/VNFIndicator/responses/VNFIndicator_resp.yaml @@ -0,0 +1,22 @@ +responses: + 409: + description: > + Another request is in progress that prohibits the fulfilment of + the current request, or the current resource state is inconsistent + with the request. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + 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. + type: string + maximum: 1 + minimum: 0 + schema: + $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" diff --git a/src/SOL002/VNFIndicatorNotification/VNFIndicatorNotification.yaml b/src/SOL002/VNFIndicatorNotification/VNFIndicatorNotification.yaml new file mode 100644 index 0000000000000000000000000000000000000000..c04d6a94bffbc42051db06e415c6195a2b4f85f9 --- /dev/null +++ b/src/SOL002/VNFIndicatorNotification/VNFIndicatorNotification.yaml @@ -0,0 +1,86 @@ +swagger: "2.0" + +info: + version: "2.3.1" + title: "VNF Indicator Notification Endpoint interface" + description: "VNF Indicator Notification Endpoint interface of ETSI NFV SOL002" + termsOfService: "http://etsi.org" + contact: + name: "NFV-SOL WG" + license: + name: "ETSI Forge copyright notice" + url: https://forge.etsi.org/etsi-forge-copyright-notice.txt + + +basePath: /callback/v1 + +schemes: + - http + - https + +consumes: + - application/json + +produces: + - application/json + + +paths: + + + + /notificationendpoint: + post: + summary: Notification endpoint + description: > + The API producer can use this resource to send notifications related to VNF indicator + value changes to a subscribed API consumer, which has provided the URI of this resource + during the subscription process. + The POST method delivers a notification from the server to the client. + parameters: + - name: vnfIndicatorValueChangeNotification + in: body + description: > + A notification about VNF indicator value changes. + required: true + schema: + $ref: 'definitions/VnfIndicatorValueChangeNotification_def.yaml#/definitions/VnfIndicatorValueChangeNotification' + responses: + 204: + description: > + The notification was delivered successfully. The response body shall be empty. + 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/VNFIndicatorNotification_resp.yaml#/responses/409' } + 416: { $ref: '../../responses/SOL002SOL003_resp.yaml#/responses/416' } + 422: { $ref: '../../responses/SOL002SOL003_resp.yaml#/responses/422' } + 500: { $ref: '../../responses/SOL002SOL003_resp.yaml#/responses/500' } + 503: { $ref: '../../responses/SOL002SOL003_resp.yaml#/responses/503' } + get: + summary: Test notification endpoint. + description: > + The GET method allows the server to test the notification endpoint that is provided + by the client, e.g. during subscription. + responses: + 204: + description: > + The notification endpoint was tested successfully. The response body shall be empty. + 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/VNFIndicatorNotification_resp.yaml#/responses/409' } + 416: { $ref: '../../responses/SOL002SOL003_resp.yaml#/responses/416' } + 422: { $ref: '../../responses/SOL002SOL003_resp.yaml#/responses/422' } + 500: { $ref: '../../responses/SOL002SOL003_resp.yaml#/responses/500' } + 503: { $ref: '../../responses/SOL002SOL003_resp.yaml#/responses/503' } + + + + diff --git a/src/SOL002/VNFIndicatorNotification/definitions/VnfIndicatorValueChangeNotification_def.yaml b/src/SOL002/VNFIndicatorNotification/definitions/VnfIndicatorValueChangeNotification_def.yaml new file mode 100644 index 0000000000000000000000000000000000000000..d4ab65d0a5044d6042faabd92e02f8517540306e --- /dev/null +++ b/src/SOL002/VNFIndicatorNotification/definitions/VnfIndicatorValueChangeNotification_def.yaml @@ -0,0 +1,68 @@ +definitions: + + VnfIndicatorValueChangeNotification: + description: > + This type represents a VNF indicator value change notification. + type: object + required: + - id + - notificationType + - subscriptionId + - timeStamp + - vnfIndicatorId + - value + - vnfInstanceId + - _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: '../../../definitions/SOL002SOL003_def.yaml#/definitions/Identifier' + notificationType: + description: > + Discriminator for the different notification types. + Shall be set to "VnfIndicatorValueChangeNotification" for this notification type. + type: string + subscriptionId: + description: > + Identifier of the subscription that this notification relates to. + $ref: '../../../definitions/SOL002SOL003_def.yaml#/definitions/Identifier' + timeStamp: + description: > + Date-time of the generation of the notification. + $ref: '../../../definitions/SOL002SOL003_def.yaml#/definitions/DateTime' + vnfIndicatorId: + description: > + Identifier of the VNF indicator whose value has changed. + $ref: '../../../definitions/SOL002SOL003_def.yaml#/definitions/IdentifierInVnfd' + name: + description: > + Human readable name of the VNF indicator. Shall be present if defined in the VNFD. + type: string + value: + description: > + Provides the value of the VNF indicator. The value format is defined in the VNFD. + type: object + vnfInstanceId: + description: > + Identifier of the VNF instance which provides the indicator value. + $ref: '../../../definitions/SOL002SOL003_def.yaml#/definitions/Identifier' + _links: + description: > + Links to resources related to this resource. + type: object + required: + - vnfInstance + - subscription + properties: + # LEH this must be reported as strong candidate for removal. + vnfInstance: + description: > + Link to the related VNF instance resource. + $ref: '../../../definitions/SOL002SOL003_def.yaml#/definitions/Link' + subscription: + description: > + Link to the related subscription. + $ref: '../../../definitions/SOL002SOL003_def.yaml#/definitions/Link' diff --git a/src/SOL002/VNFIndicatorNotification/responses/VNFIndicatorNotification_resp.yaml b/src/SOL002/VNFIndicatorNotification/responses/VNFIndicatorNotification_resp.yaml new file mode 100644 index 0000000000000000000000000000000000000000..58fb74f1b6ecc3b67d02f491ffd23a37f66262ce --- /dev/null +++ b/src/SOL002/VNFIndicatorNotification/responses/VNFIndicatorNotification_resp.yaml @@ -0,0 +1,22 @@ +responses: + 409: + description: > + Another request is in progress that prohibits the fulfilment of + the current request, or the current resource state is inconsistent + with the request. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + 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. + type: string + maximum: 1 + minimum: 0 + schema: + $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails"