--- /dev/null
+# ==================================================================================
+# Copyright (c) 2019-2020 Nokia
+# Copyright (c) 2018-2020 AT&T Intellectual Property.
+# Copyright (c) 2020 Nordix Foundation, Modifications
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ==================================================================================
+openapi: 3.0.0
+info:
+ version: 2.1.0
+ title: RIC A1
+paths:
+ '/a1-p/healthcheck':
+ get:
+ description: >
+ Perform a healthcheck on a1
+ tags:
+ - A1 Mediator
+ operationId: a1.get_healthcheck
+ responses:
+ 200:
+ description: >
+ A1 is healthy.
+ Anything other than a 200 should be considered a1 as failing
+
+ '/a1-p/policytypes':
+ get:
+ description: "Get a list of all registered policy type ids"
+ tags:
+ - A1 Mediator
+ operationId: a1.get_all_policy_types
+ responses:
+ 200:
+ description: "list of all registered policy type ids"
+ content:
+ application/json:
+ schema:
+ type: array
+ items:
+ "$ref": "#/components/schemas/policy_type_id"
+ example: [20000, 20020]
+ 503:
+ description: "Potentially transient backend database error. Client should attempt to retry later."
+
+ '/a1-p/policytypes/{policy_type_id}':
+ parameters:
+ - name: policy_type_id
+ in: path
+ required: true
+ schema:
+ "$ref": "#/components/schemas/policy_type_id"
+ get:
+ description: >
+ Get this policy type
+ tags:
+ - A1 Mediator
+ operationId: a1.get_policy_type
+ responses:
+ '200':
+ description: "policy type successfully found"
+ content:
+ application/json:
+ schema:
+ "$ref": "#/components/schemas/policy_type_schema"
+ '404':
+ description: >
+ policy type not found
+ '503':
+ description: "Potentially transient backend database error. Client should attempt to retry later."
+ delete:
+ description: >
+ Delete this policy type. Can only be performed if there are no instances of this type
+ tags:
+ - A1 Mediator
+ operationId: a1.delete_policy_type
+ responses:
+ '204':
+ description: >
+ policy type successfully deleted
+ '400':
+ description: >
+ Policy type cannot be deleted because there are instances
+ All instances must be removed before a policy type can be deleted
+ '404':
+ description: >
+ policy type not found
+ '503':
+ description: "Potentially transient backend database error. Client should attempt to retry later."
+ put:
+ description: >
+ Create a new policy type .
+ Replace is not currently allowed; to replace, for now do a DELETE and then a PUT again.
+
+ tags:
+ - A1 Mediator
+ operationId: a1.create_policy_type
+ requestBody:
+ content:
+ application/json:
+ schema:
+ "$ref": "#/components/schemas/policy_type_schema"
+ example:
+ name: admission_control_policy
+ description: various parameters to control admission of dual connection
+ policy_type_id: 20000
+ create_schema:
+ $schema: 'http://json-schema.org/draft-07/schema#'
+ type: object
+ properties:
+ enforce:
+ type: boolean
+ default: true
+ window_length:
+ type: integer
+ default: 1
+ minimum: 1
+ maximum: 60
+ description: Sliding window length (in minutes)
+ blocking_rate:
+ type: number
+ default: 10
+ minimum: 1
+ maximum: 100
+ description: '% Connections to block'
+ trigger_threshold:
+ type: integer
+ default: 10
+ minimum: 1
+ description: Minimum number of events in window to trigger blocking
+ additionalProperties: false
+
+ responses:
+ '201':
+ description: "policy type successfully created"
+ '400':
+ description: "illegal ID, or object already existed"
+ '503':
+ description: "Potentially transient backend database error. Client should attempt to retry later."
+
+ '/a1-p/policytypes/{policy_type_id}/policies':
+ parameters:
+ - name: policy_type_id
+ in: path
+ required: true
+ schema:
+ "$ref": "#/components/schemas/policy_type_id"
+ get:
+ description: "get a list of all policy instance ids for this policy type id"
+ tags:
+ - A1 Mediator
+ operationId: a1.get_all_policy_identities
+ responses:
+ 200:
+ description: "list of all policy instance ids for this policy type id"
+ content:
+ application/json:
+ schema:
+ type: array
+ items:
+ "$ref": "#/components/schemas/policy_instance_id"
+ example: ["3d2157af-6a8f-4a7c-810f-38c2f824bf12", "06911bfc-c127-444a-8eb1-1bffad27cc3d"]
+ '503':
+ description: "Potentially transient backend database error. Client should attempt to retry later."
+
+
+ '/a1-p/policytypes/{policy_type_id}/policies/{policy_instance_id}':
+ parameters:
+ - name: policy_type_id
+ in: path
+ required: true
+ schema:
+ "$ref": "#/components/schemas/policy_type_id"
+
+ - name: policy_instance_id
+ in: path
+ required: true
+ schema:
+ "$ref": "#/components/schemas/policy_instance_id"
+
+ get:
+ description: >
+ Retrieve the policy instance
+
+ tags:
+ - A1 Mediator
+ operationId: a1.get_policy_instance
+ responses:
+ '200':
+ description: >
+ The policy instance.
+ the schema of this object is defined by the create_schema field of the policy type
+ content:
+ application/json:
+ schema:
+ type: object
+ '404':
+ description: >
+ there is no policy instance with this policy_instance_id or there is no policy type with this policy_type_id
+ '503':
+ description: "Potentially transient backend database error. Client should attempt to retry later."
+
+ delete:
+ description: >
+ Delete this policy instance
+
+ tags:
+ - A1 Mediator
+ operationId: a1.delete_policy_instance
+ responses:
+ '202':
+ description: >
+ policy instance deletion initiated
+ '404':
+ description: >
+ there is no policy instance with this policy_instance_id or there is no policy type with this policy_type_id
+ '503':
+ description: "Potentially transient backend database error. Client should attempt to retry later."
+
+ put:
+ description: >
+ Create or replace a policy instance of type policy_type_id.
+ The schema of the PUT body is defined by the create_schema field of the policy type.
+
+ tags:
+ - A1 Mediator
+ operationId: a1.create_or_replace_policy_instance
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: object
+ description: >
+ the schema of this object is defined by the create_schema field of the policy type
+ example:
+ enforce: true
+ window_length: 10
+ blocking_rate: 20
+ trigger_threshold: 10
+
+ responses:
+ '202':
+ description: >
+ Policy instance creation initiated
+ '400':
+ description: >
+ Bad PUT body for this policy instance
+ '404':
+ description: >
+ There is no policy type with this policy_type_id
+ '503':
+ description: "Potentially transient backend database error. Client should attempt to retry later."
+
+ '/a1-p/policytypes/{policy_type_id}/policies/{policy_instance_id}/status':
+ parameters:
+ - name: policy_type_id
+ in: path
+ required: true
+ schema:
+ "$ref": "#/components/schemas/policy_type_id"
+
+ - name: policy_instance_id
+ in: path
+ required: true
+ schema:
+ "$ref": "#/components/schemas/policy_instance_id"
+
+ get:
+ description: >
+ Retrieve the policy instance status across all handlers of the policy
+ If this endpoint returns successfully (200), it is either IN EFFECT or NOT IN EFFECT.
+ IN EFFECT is returned if at least one policy handler in the RIC is implementing the policy
+ NOT IN EFFECT is returned otherwise
+ If a policy instance is successfully deleted, this endpoint will return a 404 (not a 200)
+ tags:
+ - A1 Mediator
+ operationId: a1.get_policy_instance_status
+ responses:
+ '200':
+ description: >
+ successfully retrieved the status
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ instance_status:
+ type: string
+ enum:
+ - IN EFFECT
+ - NOT IN EFFECT
+ has_been_deleted:
+ type: boolean
+ created_at:
+ type: string
+ format: date-time
+
+ '404':
+ description: >
+ there is no policy instance with this policy_instance_id or there is no policy type with this policy_type_id
+ '503':
+ description: "Potentially transient backend database error. Client should attempt to retry later."
+
+components:
+ schemas:
+ policy_type_schema:
+ type: object
+ required:
+ - name
+ - description
+ - policy_type_id
+ - create_schema
+ additionalProperties: false
+ properties:
+ name:
+ type: string
+ description: name of the policy type
+ description:
+ type: string
+ description: description of the policy type
+ policy_type_id:
+ description: the integer of the policy type
+ type: integer
+ create_schema:
+ type: object
+ description: >
+ jsonschema (following http://json-schema.org/draft-07/schema) of the CREATE payload to be sent to handlers of this policy
+
+ policy_type_id:
+ description: >
+ represents a policy type identifier. Currently this is restricted to an integer range.
+ type: integer
+ minimum: 1
+ maximum: 2147483647
+
+ policy_instance_id:
+ description: >
+ represents a policy instance identifier. UUIDs are advisable but can be any string
+ type: string
+ example: "3d2157af-6a8f-4a7c-810f-38c2f824bf12"