Initial commit of A1
[ric-plt/a1.git] / a1 / openapi.yaml
diff --git a/a1/openapi.yaml b/a1/openapi.yaml
new file mode 100644 (file)
index 0000000..aa02cc6
--- /dev/null
@@ -0,0 +1,77 @@
+openapi: 3.0.0
+info:
+  version: 0.8.0
+  title: RIC A1
+paths:
+  '/ric/policies/{policyname}':
+    parameters:
+      - name: policyname
+        in: path
+        description: the name of the policy to retrieve or replace
+        required: true
+        schema:
+          type: string
+    put:
+      description: >
+          Replace the current operation of policyname with the new parameters (replaces the current policy with the new one specified here).
+
+
+          Until there are standard policy definitions that are defined OUTSIDE of the scope of xapps, this API will be *very underspecified*.
+          This is a known gap, do not despair.
+          The PUT body is specified, *currently* in the xapp manifest that implements this policy; the caller should refer to the message_receives_payload_schema field to make this request.
+          The return content is also specified as above (in the xapp manifest) in the message_sends_payload_schema field.
+
+
+          Eventually, we need concrete policy defintions that are decoupled from xapp, and then this API description will become more fully specified.
+      tags:
+        - A1 Mediator
+      operationId: a1.controller.put_handler
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: object
+
+
+      responses:
+        '200':
+          description: >
+            The downstream component responsible for implementing this policy replied with a good response. Check the manifest for response details.
+        '400':
+          description: >
+            Bad PUT body for this policyname
+        '404':
+          description: >
+            there is no policy with this name
+        '502':
+          description: >
+            The xapp that implements this policy replied, but the reply was a "failure", OR there was no status indicating success or failure.
+            This returns an object containing the reason, and the return payload.
+          content:
+            application/json:
+              schema:
+                type: object
+                properties:
+                  reason:
+                    type: string
+                    enum: [
+                        "NO STATUS",
+                        "BAD STATUS",
+                        "NOT JSON"
+                    ]
+                  return_payload:
+                    type: object
+
+        '504':
+          description: >
+            the downstream component responsible for handling this policy did not respond (in time)
+
+    get:
+      description: Get the current state/value of policyname
+      tags:
+        - A1 Mediator
+      operationId: a1.controller.get_handler
+      responses:
+        '501':
+          description: >
+            "future GET support has been pondered, but this is not currently implemented"U