39af6c896c368ea9645677b1413304d47b6c2418
[sim/a1-interface.git] / near-rt-ric-simulator / api / OSC_2.1.0 / openapi.yaml
1 # ==================================================================================
2 #       Copyright (c) 2019-2020 Nokia
3 #       Copyright (c) 2018-2020 AT&T Intellectual Property.
4 #       Copyright (c) 2020-2023 Nordix Foundation, Modifications
5 #
6 #   Licensed under the Apache License, Version 2.0 (the "License");
7 #   you may not use this file except in compliance with the License.
8 #   You may obtain a copy of the License at
9 #
10 #          http://www.apache.org/licenses/LICENSE-2.0
11 #
12 #   Unless required by applicable law or agreed to in writing, software
13 #   distributed under the License is distributed on an "AS IS" BASIS,
14 #   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 #   See the License for the specific language governing permissions and
16 #   limitations under the License.
17 # ==================================================================================
18 openapi: 3.0.1
19 info:
20   title: RIC A1
21   version: 2.1.0
22 servers:
23 - url: /
24 paths:
25   /a1-p/healthcheck:
26     get:
27       tags:
28       - A1 Mediator
29       description: |
30         Perform a healthcheck on a1
31       operationId: a1_controller_get_healthcheck
32       responses:
33         200:
34           description: |
35             A1 is healthy. Anything other than a 200 should be considered a1 as failing
36           content: {}
37   /a1-p/policytypes:
38     get:
39       tags:
40       - A1 Mediator
41       description: Get a list of all registered policy type ids
42       operationId: a1_controller_get_all_policy_types
43       responses:
44         200:
45           description: list of all registered policy type ids
46           content:
47             application/json:
48               schema:
49                 type: array
50                 items:
51                   $ref: '#/components/schemas/policy_type_id'
52               example:
53               - 20000
54               - 20020
55         503:
56           description: Potentially transient backend database error. Client should
57             attempt to retry later.
58           content: {}
59   /a1-p/policytypes/{policy_type_id}:
60     get:
61       tags:
62       - A1 Mediator
63       description: |
64         Get this policy type
65       operationId: a1_controller_get_policy_type
66       parameters:
67       - name: policy_type_id
68         in: path
69         description: |
70           represents a policy type identifier. Currently this is restricted to an integer range.
71         required: true
72         schema:
73           maximum: 2147483647
74           minimum: 1
75           type: integer
76       responses:
77         200:
78           description: policy type successfully found
79           content:
80             application/json:
81               schema:
82                 $ref: '#/components/schemas/policy_type_schema'
83         404:
84           description: |
85             policy type not found
86           content: {}
87         503:
88           description: Potentially transient backend database error. Client should
89             attempt to retry later.
90           content: {}
91     put:
92       tags:
93       - A1 Mediator
94       description: |
95         Create a new policy type . Replace is not currently allowed; to replace, for now do a DELETE and then a PUT again.
96       operationId: a1_controller_create_policy_type
97       parameters:
98       - name: policy_type_id
99         in: path
100         description: |
101           represents a policy type identifier. Currently this is restricted to an integer range.
102         required: true
103         schema:
104           maximum: 2147483647
105           minimum: 1
106           type: integer
107       requestBody:
108         content:
109           application/json:
110             schema:
111               $ref: '#/components/schemas/policy_type_schema'
112         required: false
113       responses:
114         201:
115           description: policy type successfully created
116           content: {}
117         400:
118           description: illegal ID, or object already existed
119           content: {}
120         503:
121           description: Potentially transient backend database error. Client should
122             attempt to retry later.
123           content: {}
124       x-codegen-request-body-name: body
125     delete:
126       tags:
127       - A1 Mediator
128       description: |
129         Delete this policy type. Can only be performed if there are no instances of this type
130       operationId: a1_controller_delete_policy_type
131       parameters:
132       - name: policy_type_id
133         in: path
134         description: |
135           represents a policy type identifier. Currently this is restricted to an integer range.
136         required: true
137         schema:
138           maximum: 2147483647
139           minimum: 1
140           type: integer
141       responses:
142         204:
143           description: |
144             policy type successfully deleted
145           content: {}
146         400:
147           description: |
148             Policy type cannot be deleted because there are instances All instances must be removed before a policy type can be deleted
149           content: {}
150         404:
151           description: |
152             policy type not found
153           content: {}
154         503:
155           description: Potentially transient backend database error. Client should
156             attempt to retry later.
157           content: {}
158   /a1-p/policytypes/{policy_type_id}/policies:
159     get:
160       tags:
161       - A1 Mediator
162       description: get a list of all policy instance ids for this policy type id
163       operationId: a1_controller_get_all_instances_for_type
164       parameters:
165       - name: policy_type_id
166         in: path
167         description: |
168           represents a policy type identifier. Currently this is restricted to an integer range.
169         required: true
170         schema:
171           maximum: 2147483647
172           minimum: 1
173           type: integer
174       responses:
175         200:
176           description: list of all policy instance ids for this policy type id
177           content:
178             application/json:
179               schema:
180                 type: array
181                 items:
182                   $ref: '#/components/schemas/policy_instance_id'
183               example:
184               - 3d2157af-6a8f-4a7c-810f-38c2f824bf12
185               - 06911bfc-c127-444a-8eb1-1bffad27cc3d
186         503:
187           description: Potentially transient backend database error. Client should
188             attempt to retry later.
189           content: {}
190   /a1-p/policytypes/{policy_type_id}/policies/{policy_instance_id}:
191     get:
192       tags:
193       - A1 Mediator
194       description: |
195         Retrieve the policy instance
196       operationId: a1_controller_get_policy_instance
197       parameters:
198       - name: policy_type_id
199         in: path
200         description: |
201           represents a policy type identifier. Currently this is restricted to an integer range.
202         required: true
203         schema:
204           maximum: 2147483647
205           minimum: 1
206           type: integer
207       - name: policy_instance_id
208         in: path
209         description: |
210           represents a policy instance identifier. UUIDs are advisable but can be any string
211         required: true
212         schema:
213           type: string
214       - name: notificationDestination
215         in: query
216         description: |
217           URL send by non-RT RIC. This where non-RT RIC expects status updates on the policy creation
218         schema:
219           type: string
220       responses:
221         200:
222           description: |
223             The policy instance. the schema of this object is defined by the create_schema field of the policy type
224           content:
225             application/json:
226               schema:
227                 type: object
228         404:
229           description: |
230             there is no policy instance with this policy_instance_id or there is no policy type with this policy_type_id
231           content: {}
232         503:
233           description: Potentially transient backend database error. Client should
234             attempt to retry later.
235           content: {}
236     put:
237       tags:
238       - A1 Mediator
239       description: |
240         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.
241       operationId: a1_controller_create_or_replace_policy_instance
242       parameters:
243       - name: policy_type_id
244         in: path
245         description: |
246           represents a policy type identifier. Currently this is restricted to an integer range.
247         required: true
248         schema:
249           maximum: 2147483647
250           minimum: 1
251           type: integer
252       - name: policy_instance_id
253         in: path
254         description: |
255           represents a policy instance identifier. UUIDs are advisable but can be any string
256         required: true
257         schema:
258           type: string
259       - name: notificationDestination
260         in: query
261         description: |
262           URL send by non-RT RIC. This where non-RT RIC expects status updates on the policy creation
263         schema:
264           type: string
265       requestBody:
266         content:
267           application/json:
268             schema:
269               type: object
270               description: |
271                 the schema of this object is defined by the create_schema field of the policy type
272         required: false
273       responses:
274         202:
275           description: |
276             Policy instance creation initiated
277           content: {}
278         400:
279           description: |
280             Bad PUT body for this policy instance
281           content: {}
282         404:
283           description: |
284             There is no policy type with this policy_type_id
285           content: {}
286         503:
287           description: Potentially transient backend database error. Client should
288             attempt to retry later.
289           content: {}
290       x-codegen-request-body-name: body
291     delete:
292       tags:
293       - A1 Mediator
294       description: |
295         Delete this policy instance
296       operationId: a1_controller_delete_policy_instance
297       parameters:
298       - name: policy_type_id
299         in: path
300         description: |
301           represents a policy type identifier. Currently this is restricted to an integer range.
302         required: true
303         schema:
304           maximum: 2147483647
305           minimum: 1
306           type: integer
307       - name: policy_instance_id
308         in: path
309         description: |
310           represents a policy instance identifier. UUIDs are advisable but can be any string
311         required: true
312         schema:
313           type: string
314       - name: notificationDestination
315         in: query
316         description: |
317           URL send by non-RT RIC. This where non-RT RIC expects status updates on the policy creation
318         schema:
319           type: string
320       responses:
321         202:
322           description: |
323             policy instance deletion initiated
324           content: {}
325         404:
326           description: |
327             there is no policy instance with this policy_instance_id or there is no policy type with this policy_type_id
328           content: {}
329         503:
330           description: Potentially transient backend database error. Client should
331             attempt to retry later.
332           content: {}
333   /a1-p/policytypes/{policy_type_id}/policies/{policy_instance_id}/status:
334     get:
335       tags:
336       - A1 Mediator
337       description: |
338         Retrieve the policy instance status across all handlers of the policy If this endpoint returns successfully (200), 
339         it is either ENFORCED or NOT_ENFORCED. ENFORCED is returned if at least one policy handler in the RIC is implementing 
340         the policy. 
341         NOT_ENFORCED is returned otherwise If a policy instance is successfully deleted, this endpoint will return a 404 (not a 200).
342       operationId: a1_controller_get_policy_instance_status
343       parameters:
344       - name: policy_type_id
345         in: path
346         description: |
347           represents a policy type identifier. Currently this is restricted to an integer range.
348         required: true
349         schema:
350           maximum: 2147483647
351           minimum: 1
352           type: integer
353       - name: policy_instance_id
354         in: path
355         description: |
356           represents a policy instance identifier. UUIDs are advisable but can be any string
357         required: true
358         schema:
359           type: string
360       responses:
361         200:
362           description: |
363             successfully retrieved the status
364           content:
365             application/json:
366               schema:
367                 type: object
368                 properties:
369                   enforceStatus:
370                     type: string
371                     enum:
372                     - ENFORCED
373                     - NOT_ENFORCED
374                   enforceReason:
375                     type: string
376                     enum:
377                     - SCOPE_NOT_APPLICABLE
378                     - STATEMENT_NOT_APPLICABLE
379                     - OTHER_REASON
380         404:
381           description: |
382             there is no policy instance with this policy_instance_id or there is no policy type with this policy_type_id
383           content: {}
384         503:
385           description: Potentially transient backend database error. Client should
386             attempt to retry later.
387           content: {}
388   /data-delivery:
389     post:
390       tags:
391       - A1 EI Data Delivery
392       description: |
393         Deliver data produced by data producer.
394       operationId: a1_controller_data_delivery
395       requestBody:
396         content:
397           application/json:
398             schema:
399               type: object
400               description: |
401                 object to represent data object
402         required: false
403       responses:
404         200:
405           description: |
406             successfully delivered data from data producer
407           content: {}
408         404:
409           description: |
410             no job id defined for this data delivery
411           content: {}
412       x-codegen-request-body-name: body
413 components:
414   schemas:
415     policy_type_schema:
416       required:
417       - create_schema
418       - description
419       - name
420       - policy_type_id
421       type: object
422       properties:
423         name:
424           type: string
425           description: name of the policy type
426         description:
427           type: string
428           description: description of the policy type
429         policy_type_id:
430           type: integer
431           description: the integer of the policy type
432         create_schema:
433           type: object
434           properties: {}
435           description: |
436             jsonschema (following http://json-schema.org/draft-07/schema) of the CREATE payload to be sent to handlers of this policy
437     policy_type_id:
438       maximum: 2147483647
439       minimum: 1
440       type: integer
441       description: |
442         represents a policy type identifier. Currently this is restricted to an integer range.
443     policy_instance_id:
444       type: string
445       description: |
446         represents a policy instance identifier. UUIDs are advisable but can be any string
447       example: 3d2157af-6a8f-4a7c-810f-38c2f824bf12
448 x-components: {}