Newer
Older
openapi: 3.0.2
info:
version: 1.0.0-impl:etsi.org:ETSI_NFV_OpenAPI:1
title: SOL012 - Policy Management Interface
description: >
SOL012 - Policy Management 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/rep/nfv/SOL012/issues
license:
name: ETSI Forge copyright notice
url: https://forge.etsi.org/etsi-forge-copyright-notice.txt
externalDocs:
description: ETSI GS NFV-SOL 012 v3.7.1
url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/012/03.07.01_60/gs_NFV-SOL012v030701p.pdf
security:
- OauthSecurity:
- all
servers:
- url: http://127.0.0.1/nfvpolicy/v1
- url: https://127.0.0.1/nfvpolicy/v1
paths:
"/api_versions":
$ref: '../endpoints/SOL012_endpoints.yaml#/endpoints/api_versions'
"/policies":
description: >-
This resource represents policies. The API consumer can use this resource to create a policy, and to query multiple policies.
post:
description: >-
The POST method creates a new individual policy resource.
This method shall follow the provisions specified in the tables 5.5.3.3.1-1 and 5.5.3.3.1-2 for URI query parameters,
request and response data structures, and response codes.
As the result of successfully executing this method, a new "individual policy" resource as defined in clause
5.5.4 shall have been created, and the value of the "activationStatus" attribute in the representation of that
resource shall be "DEACTIVATED". A notification of type PolicyChangeNotification shall be triggered as part of
successfully executing this method as defined in clause 5.6.2.7.
parameters:
- $ref: "../components/SOL012_params.yaml#/components/parameters/Version"
- $ref: "../components/SOL012_params.yaml#/components/parameters/Accept"
- $ref: "../components/SOL012_params.yaml#/components/parameters/ContentType"
- $ref: "../components/SOL012_params.yaml#/components/parameters/Authorization"
requestBody:
responses:
"201":
$ref: '#/components/responses/Policy.Post.201'
"400":
"401":
"403":
"404":
"405":
"406":
"422":
"500":
"503":
"504":
description: >-
The GET method queries information about multiple policies.
This method shall follow the provisions specified in the tables 5.5.3.3.2-1 and 5.5.3.3.2-2
for URI query parameters, request and response data structures, and response codes.
parameters:
- $ref: "#/components/parameters/filter.Policies"
- $ref: "#/components/parameters/nextpage_opaque_marker.Policies"
- $ref: "../components/SOL012_params.yaml#/components/parameters/Version"
- $ref: "../components/SOL012_params.yaml#/components/parameters/Accept"
- $ref: "../components/SOL012_params.yaml#/components/parameters/Authorization"
responses:
"200":
$ref: '#/components/responses/Policy.Get.200'
"400":
$ref: '#/components/responses/Policy.Get.400'
"401":
"403":
"404":
"405":
"406":
"422":
"500":
"503":
"504":
"/policies/{policyId}":
description: >
This resource represents an individual policy. The API consumer can use this resource to modify an individual
policy, to read information about the policy and delete the policy.
parameters:
- $ref: '#/components/parameters/policyId'
get:
description: >
The GET method retrieves information about a policy by reading an individual policy resource.
This method shall follow the provisions specified in the tables 5.5.4.3.2-1 and 5.5.4.3.2-2 for URI
query parameters, request and response data structures, and response codes.
parameters:
- $ref: "../components/SOL012_params.yaml#/components/parameters/Accept"
- $ref: "../components/SOL012_params.yaml#/components/parameters/Authorization"
responses:
"200":
$ref: '#/components/responses/IndividualPolicy.Get.200'
"400":
"401":
"403":
"404":
"405":
"406":
"422":
"500":
"503":
"504":
patch:
description: >
The PATCH method modifies a policy.
This method shall follow the provisions specified in the tables 5.5.4.3.4-1 and 5.5.4.3.4-2 for URI
query parameters, request and response data structures, and response codes.
Modification of a policy includes three functionalities: activating/deactivating the policy,
changing the associations of the policy, and changing the selected version of the policy.
The three functionalities may be combined flexibly in one request unless there's conflict with
the state of the policy.
parameters:
- $ref: "../components/SOL012_params.yaml#/components/parameters/Accept"
- $ref: "../components/SOL012_params.yaml#/components/parameters/ContentType"
- $ref: "../components/SOL012_params.yaml#/components/parameters/Authorization"
requestBody:
responses:
"200":
$ref: '#/components/responses/PolicyModifications.Patch.200'
"400":
"401":
"403":
"404":
"405":
"406":
"409":
$ref: '#/components/responses/PolicyModifications.Patch.409'
"422":
"500":
"503":
"504":
delete:
description: >
The DELETE method deletes an individual policy.
This method shall follow the provisions specified in the tables 5.5.4.3.5-1 and 5.5.4.3.5-2 for URI
query parameters, request and response data structures, and response codes.
As the result of successfully executing this method, the "individual policy" resource shall not exist
any longer. A notification of type "PolicyChangeNotification" shall be triggered as part of successfully
executing this method as defined in clause 5.6.2.7.
parameters:
- $ref: "../components/SOL012_params.yaml#/components/parameters/Authorization"
responses:
"204":
$ref: '#/components/responses/Policy.Delete.204'
"400":
"401":
"403":
"404":
"405":
"406":
"409":
$ref: '#/components/responses/Policy.Delete.409'
"422":
"500":
"503":
"504":
"/policies/{policyId}/selected_versions":
description: >
This resource represents the selected version of an individual policy. The API consumer can use this resource
to read the content of the selected version of the policy.
The selected version is the version to be used when activating the policy and is then enforced as long as the
policy is in ACTIVATED state.
parameters:
- $ref: '#/components/parameters/policyId'
get:
description: >
The GET method fetches the content of the selected version of an individual policy.
This method shall follow the provisions specified in the tables 5.5.5.3.2-1 and 5.5.5.3.2-2 for URI query
parameters, request and response data structures, and response codes.
parameters:
- $ref: "../components/SOL012_params.yaml#/components/parameters/Accept"
- $ref: "../components/SOL012_params.yaml#/components/parameters/Authorization"
responses:
"200":
$ref: '#/components/responses/PolicySelectedVersion.Get.200'
"400":
"401":
"403":
"404":
$ref: '#/components/responses/PolicySelectedVersion.Get.404'
"405":
"406":
"422":
"500":
"503":
"504":
"/policies/{policyId}/versions/{version}":
description: >
This resource represents a particular version of an individual policy. The API consumer can use this resource
to transfer the content, read the content and delete a particular version of a policy.
parameters:
- $ref: '#/components/parameters/policyId'
- $ref: '#/components/parameters/version'
get:
description: >
The GET method fetches the content of a particular version of an individual policy.
This method shall follow the provisions specified in the tables 5.5.6.3.2-1 and 5.5.6.3.2-2 for URI
query parameters, request and response data structures, and response codes.
parameters:
- $ref: "../components/SOL012_params.yaml#/components/parameters/Accept"
- $ref: "../components/SOL012_params.yaml#/components/parameters/Authorization"
responses:
"200":
$ref: '#/components/responses/IndividualPolicyVersion.Get.200'
"400":
"401":
"403":
"404":
"405":
"406":
"422":
"500":
"503":
"504":
put:
description: >
The PUT method transfers the content of a particular version of an individual policy.
This method shall follow the provisions specified in the tables 5.5.6.3.3-1 and 5.5.6.3.3-2 for
URI query parameters, request and response data structures, and response codes.
parameters:
- $ref: "../components/SOL012_params.yaml#/components/parameters/Accept"
- $ref: "../components/SOL012_params.yaml#/components/parameters/ContentType"
- $ref: "../components/SOL012_params.yaml#/components/parameters/Authorization"
responses:
"201":
$ref: '#/components/responses/PolicyVersionTransfer.Put.201'
"400":
"401":
"403":
"404":
"405":
"406":
"409":
$ref: '#/components/responses/PolicyVersionTransfer.Put.409'
"422":
"500":
"503":
"504":
delete:
description: >
The DELETE method deletes a particular version of an individual policy.
This method shall follow the provisions specified in the tables 5.5.6.3.5-1 and 5.5.6.3.5-2 for URI query
parameters, request and response data structures, and response codes.
As the result of successfully executing this method, the "particular version of an individual policy" resource
shall be deleted. It's not allowed to delete the selected version of the individual policy.
A notification of type "PolicyChangeNotification" shall be triggered as part of successfully executing this
method as defined in clause 5.6.2.8.
responses:
$ref: '#/components/responses/PolicyVersion.Delete.204'
$ref: '#/components/responses/PolicyVersion.Delete.409'
"/subscriptions":
description: >-
This resource represents subscriptions. The API consumer can use this resource to subscribe to notifications
related to policy changes and any detected policy conflicts, and to query its subscriptions.
post:
description: >-
The POST method creates a new subscription.
This method shall follow the provisions specified in the tables 5.5.7.3.1-1 and 5.5.7.3.1-2 for URI query parameters,
request and response data structures, and response codes.
As the result of successfully executing this method, a new "Individual subscription" resource as defined in clause 5.5.6
shall have been created. This method shall not trigger any notification.
parameters:
- $ref: "../components/SOL012_params.yaml#/components/parameters/Version"
- $ref: "../components/SOL012_params.yaml#/components/parameters/Accept"
- $ref: "../components/SOL012_params.yaml#/components/parameters/ContentType"
- $ref: "../components/SOL012_params.yaml#/components/parameters/Authorization"
requestBody:
$ref: '#/components/requestBodies/PolicySubscriptionRequest'
responses:
"201":
$ref: '#/components/responses/Subscriptions.Post.201'
$ref: '#/components/responses/Subscriptions.Post.303'
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.
This method shall follow the provisions specified in the tables 5.5.7.3.2-1 and 5.5.7.3.2-2 for
URI query parameters, request and response data structures, and response codes.
parameters:
- $ref: "../components/SOL012_params.yaml#/components/parameters/Version"
- $ref: "../components/SOL012_params.yaml#/components/parameters/Accept"
- $ref: "../components/SOL012_params.yaml#/components/parameters/Authorization"
- $ref: "#/components/parameters/filter.Subscriptions"
- $ref: "#/components/parameters/nextpage_opaque_marker.Subscriptions"
responses:
"200":
$ref: '#/components/responses/Subscriptions.Get.200'
$ref: '#/components/responses/Subscriptions.Get.400'
"/subscriptions/{subscriptionId}":
description: >-
This resource represents an individual subscription. The API consumer can use this resource to read and to
terminate a subscription to notifications related to policy management.
parameters:
- $ref: '#/components/parameters/subscriptionId'
get:
description: >-
The GET method retrieves information about a subscription by reading an "Individual subscription" resource.
This method shall follow the provisions specified in the tables 5.5.8.3.2-1 and 5.5.8.3.2-2 for URI query
parameters, request and response data structures, and response codes.
parameters:
- $ref: "../components/SOL012_params.yaml#/components/parameters/Version"
- $ref: "../components/SOL012_params.yaml#/components/parameters/Accept"
- $ref: "../components/SOL012_params.yaml#/components/parameters/Authorization"
responses:
"200":
$ref: '#/components/responses/IndividualSubscription.Get.200'
delete:
description: >-
The DELETE method terminates an individual subscription. This method shall follow the provisions specified
in the tables 5.5.8.3.5-1 and 5.5.8.3.5-2 for URI query parameters, request and response data structures,
and response codes.
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.
parameters:
- $ref: "../components/SOL012_params.yaml#/components/parameters/Version"
- $ref: "../components/SOL012_params.yaml#/components/parameters/Authorization"
responses:
"204":
$ref: '#/components/responses/IndividualSubscription.Delete.204'
components:
parameters:
policyId:
name: policyId
description: >
Identifier of the policy. This identifier can be retrieved from the resource referenced by the "Location" HTTP
header in the response to a POST request creating a new "individual policy" resource. It can also be retrieved
from the "id" attribute in the payload body of that response.
in: path
required: true
schema:
$ref: '../definitions/SOL012_def.yaml#/definitions/schemas/Identifier'
version:
name: version
description: >
Version of the policy. This URI variable is provided by the API consumer in a PUT request creating the new
particular version of an individual policy resource. It can be retrieved from the "versions" attribute in the
payload body of the response to a GET request to the “individual policy” resource.
in: path
required: true
schema:
type: string
subscriptionId:
name: subscriptionId
description: >
Identifier of the 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 "Individual subscription" resource.
It can also be retrieved from the "id" attribute in the payload body of that response.
in: path
required: true
schema:
$ref: '../definitions/SOL012_def.yaml#/definitions/schemas/Identifier'
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
filter.Policies:
name: filter
description: >
Attribute-based filtering expression according to clause 5.2 of ETSI
GS NFV-SOL 013 [7].
The API producer shall support receiving this parameter as part of
the URI query string. The API consumer may supply this
parameter.
All attribute names that appear in the Policy and in data types
referenced from it shall be supported by the API producer in the
filter expression.
in: query
required: false
schema:
type: string
nextpage_opaque_marker.Policies:
name: nextpage_opaque_marker
description: >
Marker to obtain the next page of a paged response. Shall be
supported by the API producer if it supports alternative 2 (paging)
according to clause 5.4.2.1 of ETSI GS NFV-SOL 013 [7] for this
resource.
in: query
required: false
schema:
type: string
filter.Subscriptions:
name: filter
description: >
Attribute-based filtering expression according to clause 5.2 of ETSI
GS NFV-SOL 013 [7].
The API producer shall support receiving this parameter as part of the
URI query string. The API consumer may supply this parameter.
All attribute names that appear in the PolicySubscription and in data types
referenced from it shall be supported by the API producer in the filter
expression.
in: query
required: false
schema:
type: string
nextpage_opaque_marker.Subscriptions:
name: nextpage_opaque_marker
description: >
Marker to obtain the next page of a paged response. Shall be supported
by the API producer if the API producer supports alternative 2 (paging)
according to clause 5.4.2.1 of ETSI GS NFV-SOL 013 [7] for this
resource.
in: query
required: false
schema:
type: string
responses:
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
description: >
201 Created
Shall be returned when a policy has been created successfully.
The response body shall contain a representation of the individual policy, as defined in clause 5.6.2.3.
The HTTP response shall include a "Location" HTTP header that contains the resource URI of the created policy.
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: >
The resource URI of the created resource.
schema:
type: string
format: url
content:
application/json:
schema:
$ref: "definitions/PolicyManagement_def.yaml#/definitions/schemas/Policy"
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
description: >
Shall be returned when information about zero or more policies has been queried successfully.
The response body shall contain in an array the representations of zero or more policies, as defined
in clause 5.6.2.3.
If the "filter" URI parameter was supplied in the request and is supported, the data in the response body
shall have been transformed according to the rules specified in clauses 5.2.2 and 5.3.2 of
ETSI GS NFV-SOL 013 [6], respectively.
If the API producer supports alternative 2 (paging) according to clause 5.4.2.1 of ETSI GS NFV-SOL 013 [6]
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 [6].
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
Link:
description: >
Reference to other resources. Link HTTP header in this response
shall follow the provisions in clause 5.4.2.3 of ETSI GS NFV-SOL 013.
schema:
type: string
minimum: 0
maximum: 1
content:
application/json:
schema:
type: array
items:
$ref: "definitions/PolicyManagement_def.yaml#/definitions/schemas/Policy"
description: >
Shall be returned upon the following error: Invalid attribute-based filtering expression.
The response body shall contain a ProblemDetails structure, in which the "detail" attribute
should convey more information about the error.
Shall be returned upon the following error: Response too big.
If the API producer supports alternative 1 (error) according to clause 5.4.2.1 of ETSI GS NFV-SOL 013 [6]
for this resource, this error response shall follow the provisions in clause 5.4.2.2 of ETSI GS NFV-SOL 013 [6].
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: "../definitions/SOL012_def.yaml#/definitions/schemas/ProblemDetails"
description: >
Shall be returned when information about an individual policy has been read successfully.
The response body shall contain a representation of the policy, as defined in clause 5.6.2.3.
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: "definitions/PolicyManagement_def.yaml#/definitions/schemas/Policy"
description: >
200 OK
Shall be returned when the modifications have been processed successfully.
The response body shall contain a representation of modifications of the policy, as defined in clause 5.6.2.4.
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: "../definitions/SOL012_def.yaml#/definitions/schemas/PolicyModifications"
description: >
409 Conflict
Shall be returned upon the following error: The operation cannot be executed currently, due to a conflict
with the state of the resource.
Typical reasons are attempts to:
• modify a policy in CREATED state;
• activate a policy in ACTIVATED state;
• deactivate a policy in DEACTIVATED state.
The response body shall contain a ProblemDetails structure, in which the "detail" attribute shall
convey more information about the error.
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: "../definitions/SOL012_def.yaml#/definitions/schemas/ProblemDetails"
description: >
204 No Content
Shall be returned when the individual policy 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
description: >
409 Conflict
Shall be returned upon the following error: The operation cannot be executed currently, due to a
conflict with the state of the resource.
Typically, this is due to the fact that the policy is in ACTIVATED state.
The response body shall contain a ProblemDetails structure, in which the "detail" attribute shall
convey more information about the error.
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: "../definitions/SOL012_def.yaml#/definitions/schemas/ProblemDetails"
description: >
200 OK
Shall be returned when the content of the selected version of an individual policy has been read successfully.
The response body shall include a copy of the policy content.
The "Content-Type" HTTP header shall be set according to the type of the policy content.
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-Type:
description: >
The "Content-Type" HTTP header shall be set according to the type of the policy content
content:
application/*:
schema:
type: object
additionalProperties: true
description: >
404 Not Found
Shall be returned upon the following error: The API producer did not find a current representation for the
target resource or is not willing to disclose that one exists.
The general cause for this error and its handling is specified in clause 6.4 of ETSI GS NFV-SOL 013 [6],
including rules for the presence of the response body.
Specifically in case of this resource, the response code 404 shall also be returned if the policy is in
CREATED state.
In this case, the response body shall be present, and shall contain a ProblemDetails structure, in which
the "detail" attribute shall convey more information about the error.
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: "../definitions/SOL012_def.yaml#/definitions/schemas/ProblemDetails"
description: >
200 OK
Shall be returned when the content of a particular version of an individual policy has been read successfully.
The response body shall include a copy of the policy content.
The "Content-Type" HTTP header shall be set according to the type of the policy content.
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-Type:
description: >
The "Content-Type" HTTP header shall be set according to the type of the policy content
content:
application/*:
schema:
type: object
additionalProperties: true
description: >
201 Created
Shall be returned when the policy content has been transferred 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
description: >
409 Conflict
Shall be returned upon the following error: The operation cannot be executed currently,
due to a conflict with an existing resource.
Typically, this is due to the fact that the particular version has already been transferred to the API producer.
The response body shall contain a ProblemDetails structure, in which the "detail" attribute shall convey more
information about the error.
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: "../definitions/SOL012_def.yaml#/definitions/schemas/ProblemDetails"
description: >
204 No Content
Shall be returned when a particular version of an individual policy 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