blob: f2b17cbd1b726088bbb6935332a35cf5e345f26a [file] [log] [blame]
Tommy Carpenter42493982019-11-06 07:27:16 -05001.. This work is licensed under a Creative Commons Attribution 4.0 International License.
2.. SPDX-License-Identifier: CC-BY-4.0
3
Tommy Carpenter42493982019-11-06 07:27:16 -05004API
Tommy Carpenterdd29e4d2019-11-19 09:35:23 -05005====
Tommy Carpenter42493982019-11-06 07:27:16 -05006
7You can see the API (OpenAPI3 spec) at ``a1/openapi.yml``. You can also
8see the pretty version if you run the container at
9``http://localhost:10000/ui/``.
Tommy Carpenterdd29e4d2019-11-19 09:35:23 -050010
11Policy Overview
12===============
13There are two "object types" associated with policy: policy types and policy instances.
14
15Policy types define the name, description, and most importantly the schema of all instances of that type. Think of policy types as defining a JSON schema for the messages sent from A1 to xapps.
16
17Xapps do not receive policy types from A1; types are used only by A1 to validate instance creation requests. However, xapps must register to receive instances of type ids in their xapp descriptor.
18
19Xapp developers can also create new policy types, though the exact process of where these are stored is still TBD. For practical purposes, when the RIC is running, A1s API needs to be invoked to load the policy types before instances can be created.
20
21Policy instances are concrete instantiations of a policy type. They give concrete values of a policy. There may be many instances of a single type. Whenever a policy instance is created in A1, messages are sent over RMR to all xapps registered for that policy type; see below.
22
23Xapps can "sign up" for multiple policy types using their xapp descriptor.
24
25Xapps are expected to handle multiple simultaneous instances of each type that they are registered for.
26
27Xapps supporting A1
28
29
30Integrating Xapps with A1
31=========================
32
33A1 to Xapps
34-----------
35When A1 sends a message to xapps, the schema for messages from A1 to the xapp is defined here: https://gerrit.o-ran-sc.org/r/gitweb?p=ric-plt/a1.git;a=blob;f=a1/openapi.yaml;h=fed4b77546264cc8a390504dae725ca15060d81a;hb=97f5cc3e3d42e1525af61560d01c4a824b0b2ad9#l324
36
37All policy instance requests get sent from A1 using message type 20010
38
39Xapps to A1
40-----------
41There are three scenarios in which Xapps are to send a message to A1:
42
431. When an xapp receives a CREATE or UPDATE message for a policy instance. Xapps must respond to these requests by sending a message of type 20011 to A1. The schema for that message is here: https://gerrit.o-ran-sc.org/r/gitweb?p=ric-plt/a1.git;a=blob;f=a1/openapi.yaml;h=fed4b77546264cc8a390504dae725ca15060d81a;hb=97f5cc3e3d42e1525af61560d01c4a824b0b2ad9#l358
442. Since policy instances can "deprecate" other instances, there are times when xapps need to asyncronously tell A1 that a policy is no longer active. Same message type and schema. The only difference between case 1 and 2 is that case 1 is a "reply" and case 2 is "unsolicited".
453. Xapps can request A1 to re-send all instances of a type using a query, message 20012. When A1 receives this (TBD HERE, STILL BE WORKED OUT)