+++ /dev/null
-openapi: 3.0.0
-info:
- title: 'A1-P Policy Management Service'
- version: 1.1.x-alpha.2
- description: |
- API for Policy Management Service.
- © 2019, O-RAN Alliance.
- All rights reserved.
-externalDocs:
- description: 'ORAN-WG2.A1.AP-v01.01 A1 interface: Application protocol'
- url: 'https://www.o-ran.org/specifications'
-servers:
- - url: '{apiRoot}/A1-P/v1'
- variables:
- apiRoot:
- default: 'https://example.com'
- description: 'apiRoot as defined in clause 4.2.1 in ORAN-WG2.A1.AP'
-paths:
- '/policies':
- get:
- operationId: a1.get_all_policy_identities
- description: 'Get all policy identities'
- tags:
- - All Policy Identities
- parameters:
- - name: policyTypeId
- in: query
- required: false
- schema:
- "$ref": "#/components/schemas/PolicyTypeId"
- responses:
- 200:
- description: 'Array of all policy identities'
- content:
- application/json:
- schema:
- type: array
- items:
- "$ref": "#/components/schemas/PolicyId"
- minItems: 0
- 429:
- "$ref": "#/components/responses/429-TooManyRequests"
- 503:
- "$ref": "#/components/responses/503-ServiceUnavailable"
-
- '/policies/{policyId}':
- parameters:
- - name: policyId
- in: path
- required: true
- schema:
- "$ref": "#/components/schemas/PolicyId"
- put:
- operationId: a1.put_policy
- description: 'Create, or update, a policy'
- tags:
- - Individual Policy Object
- parameters:
- - name: policyTypeId
- in: query
- required: false
- schema:
- "$ref": "#/components/schemas/PolicyTypeId"
- requestBody:
- content:
- application/json:
- schema:
- "$ref": "#/components/schemas/PolicyObject"
- responses:
- 200:
- description: 'The policy was updated'
- content:
- application/json:
- schema:
- "$ref": "#/components/schemas/PolicyObject"
- 201:
- description: 'The policy was created'
- content:
- application/json:
- schema:
- "$ref": "#/components/schemas/PolicyObject"
- headers:
- Location:
- description: 'Contains the URI of the created policy'
- required: true
- schema:
- type: string
- 400:
- "$ref": "#/components/responses/400-BadRequest"
- 429:
- "$ref": "#/components/responses/429-TooManyRequests"
- 503:
- "$ref": "#/components/responses/503-ServiceUnavailable"
- 507:
- "$ref": "#/components/responses/507-InsufficientStorage"
- get:
- operationId: a1.get_policy
- description: 'Query a policy'
- tags:
- - Individual Policy Object
- responses:
- 200:
- description: 'The requested policy'
- content:
- application/json:
- schema:
- "$ref": "#/components/schemas/PolicyObject"
- 404:
- "$ref": "#/components/responses/404-NotFound"
- 429:
- "$ref": "#/components/responses/429-TooManyRequests"
- 503:
- "$ref": "#/components/responses/503-ServiceUnavailable"
- delete:
- operationId: a1.delete_policy
- description: 'Delete a policy'
- tags:
- - Individual Policy Object
- responses:
- 204:
- description: 'The policy was deleted'
- 404:
- "$ref": "#/components/responses/404-NotFound"
- 429:
- "$ref": "#/components/responses/429-TooManyRequests"
- 503:
- "$ref": "#/components/responses/503-ServiceUnavailable"
-
- '/policystatus/{policyId}':
- parameters:
- - name: policyId
- in: path
- required: true
- schema:
- "$ref": "#/components/schemas/PolicyId"
- get:
- operationId: a1.get_policy_status
- description: 'Query a policy status'
- tags:
- - Individual Policy Status Object
- responses:
- 200:
- description: 'The requested policy status'
- content:
- application/json:
- schema:
- "$ref": "#/components/schemas/PolicyStatusObject"
- 404:
- "$ref": "#/components/responses/404-NotFound"
- 429:
- "$ref": "#/components/responses/429-TooManyRequests"
- 503:
- "$ref": "#/components/responses/503-ServiceUnavailable"
-
- '/policytypes':
- get:
- operationId: a1.get_all_policytypes_identities
- description: 'Get all policy type identities'
- tags:
- - All Policy Type Identities
- responses:
- 200:
- description: 'Array of all policy type identities'
- content:
- application/json:
- schema:
- type: array
- items:
- "$ref": "#/components/schemas/PolicyTypeId"
- minItems: 0
- 429:
- "$ref": "#/components/responses/429-TooManyRequests"
- 503:
- "$ref": "#/components/responses/503-ServiceUnavailable"
-
- '/policytypes/{policyTypeId}':
- parameters:
- - name: policyTypeId
- in: path
- required: true
- schema:
- "$ref": "#/components/schemas/PolicyTypeId"
- get:
- operationId: a1.get_policytypes
- description: 'Get the schemas for a policy type'
- tags:
- - Individual Policy Type
- responses:
- 200:
- description: 'The policy type schemas'
- content:
- application/json:
- schema:
- "$ref": "#/components/schemas/PolicyTypeObject"
- 404:
- "$ref": "#/components/responses/404-NotFound"
- 429:
- "$ref": "#/components/responses/429-TooManyRequests"
- 503:
- "$ref": "#/components/responses/503-ServiceUnavailable"
-
-components:
- schemas:
- #
- # Representation objects
- #
- PolicyObject:
- description: 'A generic policy object that can be used to transport any policy. Additionally, a policy shall be valid according to the schema of its specific policy type.'
- type: object
-
- PolicyStatusObject:
- description: 'A generic policy status object that can be used to transport any policy status. Additionally, a policy status shall be valid according to the schema of its specific policy type.'
- type: object
-
- PolicyTypeObject:
- description: 'A definition of a policy type, i.e. the schemas for a policy respectively its status'
- type: object
- properties:
- policySchema:
- "$ref": "#/components/schemas/JsonSchema"
- statusSchema:
- "$ref": "#/components/schemas/JsonSchema"
- required:
- - policySchema
-
- ProblemDetails:
- description: 'A problem detail to carry details in a HTTP response according to RFC 7807 extended with A1 specific attributes'
- type: object
- properties:
- type:
- type: string
- title:
- type: string
- status:
- type: number
- detail:
- type: string
- instance:
- type: string
- cause:
- type: string
- invalidParams:
- type: array
- items:
- "$ref": "#/components/schemas/InvalidParam"
- minItems: 1
-
- #
- # Structured data types
- #
- InvalidParam:
- description: 'Used in a ProblemDetails to indicate a specific invalid parameter'
- type: object
- properties:
- param:
- type: string
- reason:
- type: string
- required:
- - param
-
- #
- # Simple data types
- #
- JsonSchema:
- description: 'A JSON schema following http://json-schema.org/draft-07/schema'
- type: object
-
- PolicyId:
- description: 'Policy identifier assigned by the A1-P Consumer when a policy is created'
- type: string
-
- PolicyTypeId:
- description: 'Policy type identifier assigned by the A1-P Provider'
- type: string
-
- responses:
- 400-BadRequest:
- description: 'Object in payload not properly formulated or not related to the method'
- content:
- application/problem+json:
- schema:
- "$ref": "#/components/schemas/ProblemDetails"
-
- 404-NotFound:
- description: 'No resource found at the URI'
- content:
- application/problem+json:
- schema:
- "$ref": "#/components/schemas/ProblemDetails"
-
- 405-MethodNotAllowed:
- description: 'Method not allowed for the URI'
- content:
- application/problem+json:
- schema:
- "$ref": "#/components/schemas/ProblemDetails"
-
- 429-TooManyRequests:
- description: 'Too many requests have been sent in a given amount of time'
- content:
- application/problem+json:
- schema:
- "$ref": "#/components/schemas/ProblemDetails"
-
- 503-ServiceUnavailable:
- description: 'The provider is currently unable to handle the request due to a temporary overload'
- content:
- application/problem+json:
- schema:
- "$ref": "#/components/schemas/ProblemDetails"
-
- 507-InsufficientStorage:
- description: 'The method could not be performed on the resource because the provider is unable to store the representation needed to successfully complete the request'
- content:
- application/problem+json:
- schema:
- "$ref": "#/components/schemas/ProblemDetails"