.. This work is licensed under a Creative Commons Attribution 4.0 International License.
.. SPDX-License-Identifier: CC-BY-4.0
-.. Copyright (C) 2020 Nordix
+.. Copyright (C) 2021 Nordix
.. _simulator-api:
Returns the status of the simulator.
**URL path:**
- /
+ /
**Parameters:**
None.
**Responses:**
200:
- Simulator is living.
+ OK
**Examples:**
200: ::
- Simulator is living (OSC_2.1.0 responds OK)
+ OK
Supported Interfaces
--------------------
200: ::
- 1.1.x-alpha.2 OSC_2.1.0 STD_1.1.3
+ Current interface: STD_2.0.0 All supported A1 interface yamls in this container: ['OSC_2.1.0', 'STD_1.1.3', 'STD_2.0.0']
Counters
--------
-The simulator keeps counts of different things that can be accessed.
+The simulator keeps count of different things that can be accessed.
/counter
~~~~~~~~
GET
+++
-Get a counter. Counter-name can be one of the following: 'num_instances', 'num_types' or 'interface'.
+Get a counter. Counter-name can be one of the following: 'num_instances', 'num_types', 'interface', 'remote_hosts' or 'datadelivery'.
**URL path:**
10
-Version Specific Functions
-==========================
-
-The methods available to control the simulator depends on the version of the A1 API the simulator is simulating.
-OSC_2.1.0
----------
+Reset simulator
+---------------
-This section describes the available administrative functions for the OSC_2.1.0 version of A1.
-
-To see the A1 functions for this version, see `OSC_2.1.0 API`_.
-
-.. _OSC_2.1.0 API: https://gerrit.o-ran-sc.org/r/gitweb?p=sim/a1-interface.git;a=blob;f=near-rt-ric-simulator/api/OSC_2.1.0/openapi.yaml
+There are two ways to reset the simulator, delete all instances or make a complete reset which resets the simulator to its original state.
/deleteinstances
~~~~~~~~~~~~~~~~
**Examples:**
- **Call**: ::
+**Call**: ::
curl -X POST "http://localhost:8085/deleteall"
All policy instances and types deleted.
-/policytype
-~~~~~~~~~~~
-
-PUT
-+++
-
-Create a policy type.
-
-**URL path:**
-
-/policytype?id=<policy-type-id>
-
-**Parameters:**
-
-id: (*Required*)
-
-The ID of the policy type.
-
-**Body:** (*Required*)
-
-A JSON object containing the schema for the type.
-
-**Responses:**
-
-200:
-
-Policy type <policy-type-id> is OK.
-
-201:
-
-Policy type <policy-type-id> is OK.
-
-**Examples:**
-
-**Call**: ::
-
- curl -X PUT "http://localhost:8085/policytype?id=Policy%201&ric=ric1&service=Service%201&type=STD_PolicyModelUnconstrained_0.2.0"
- -H "Content-Type: application/json"
- -d '{
- "$schema": "http://json-schema.org/draft-07/schema#",
- "title": "STD_PolicyModelUnconstrained_0.2.0",
- "description": "Standard model of a policy with unconstrained scope id combinations",
- "type": "object",
- "properties": {
- "scope": {
- "type": "object",
- "properties": {
- "ueId": {"type": "string"},
- "groupId": {"type": "string"},
- "sliceId": {"type": "string"},
- "qosId": {"type": "string"},
- "cellId": {"type": "string"}
- },
- "minProperties": 1,
- "additionalProperties": false
- },
- "qosObjectives": {
- "type": "object",
- "properties": {
- "gfbr": {"type": "number"},
- "mfbr": {"type": "number"},
- "priorityLevel": {"type": "number"},
- "pdb": {"type": "number"}
- },
- "additionalProperties": false
- },
- "qoeObjectives": {
- "type": "object",
- "properties": {
- "qoeScore": {"type": "number"},
- "initialBuffering": {"type": "number"},
- "reBuffFreq": {"type": "number"},
- "stallRatio": {"type": "number"}
- },
- "additionalProperties": false
- },
- "resources": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "cellIdList": {
- "type": "array",
- "minItems": 1,
- "uniqueItems": true,
- "items": {
- "type": "string"
- }
- },
- "preference": {
- "type": "string",
- "enum": [
- "SHALL",
- "PREFER",
- "AVOID",
- "FORBID"
- ]
- },
- "primary": {"type": "boolean"}
- },
- "additionalProperties": false,
- "required": ["cellIdList", "preference"]
- }
- }
- },
- "minProperties": 2,
- "additionalProperties": false,
- "required": ["scope"]
- }'
-
-**Result**:
-
-201: ::
-
- Policy type STD_PolicyModelUnconstrained_0.2.0 is OK
+200 ::
+ All policy instances deleted (Only for STD_1.1.3 since it has no types)
-DELETE
-++++++
-
-Delete a policy type.
-
-**URL path:**
-
-/policytype?id=<policy-type-id>
-
-**Parameters:**
-
-id: (*Required*)
-
-The ID of the policy type.
-
-**Responses:**
-
-204:
-
-Policy type <policy-type-id> is OK.
-
-**Examples:**
-
-**Call**: ::
-
- curl -X DELETE "http://localhost:8085/policytype?id=Policy%201&ric=ric1&service=Service%201&type=STD_PolicyModelUnconstrained_0.2.0"
-
-**Result**:
-
-204: ::
-
- Policy type STD_PolicyModelUnconstrained_0.2.0 is OK
-
-/policytypes
-~~~~~~~~~~~~
-
-GET
-+++
-
-Get a list of policy types.
-
-**URL path:**
-
-/policytypes
-
-**Parameters:**
-
-None.
-
-**Responses:**
-
-200:
-
-A list of policy types.
-
-**Examples:**
-
-**Call**: ::
-
- curl -X GET "http://localhost:8085/policytypes"
-
-**Result**:
-
-200: ::
-
- STD_PolicyModelUnconstrained_0.2.0
+Response manipulation
+---------------------
+It is possible to manipulate the response of all operations on the A1 interface (admin interface is not affected)
/forceresponse
~~~~~~~~~~~~~~
POST
++++
-Force a specific response code for an A1 operation.
+Force a specific response code for one (the next) A1 operation. After that response, the reponse code will go back to normal.
**URL path:**
-/forceresponse?responsecode=<http-response-code>
+/forceresponse?code=<http-response-code>
**Parameters:**
-responsecode: (*Required*)
+code: (*Required*)
The HTTP response code to return.
**Call**: ::
- curl -X POST "http://localhost:8085/forceresponse?responsecode=400"
+ curl -X POST "http://localhost:8085/forceresponse?code=400"
**Result**:
POST
++++
-Force delayed response of all A1 operations.
+Force delayed response of all A1 responses. The setting will remain until the delay is set to '0'
**URL path:**
Force delay: 2 sec set for all A1 responses
-/status
-~~~~~~~
-PUT
-+++
+Configure logging
+-----------------
+Detailed logging of the http headers and payload are activated by default. However, it is possible to turn this logging on or off.
+The 'off' state will only log ip, url and respose code.
-Set status and optional reason, delete and time stamp.
+/payload_logging/
+~~~~~~~~~~~~~~~~~
+
+POST
+++++
+Configure detailed logging on or off
**URL path:**
-/status?policyid=<policyid>&status=<status>&deleted=<value>&created_at=<time-stamp>
+/payload_logging/<state>
**Parameters:**
-policyid: (*Required*)
-
-The ID of a policy.
-
-status: (*Required*)
-
-The status of a policy.
-
-deleted: (*Optional*)
+state: (*Required*)
-True or false for real values, but accepts anything for error testing.
-
-created_at: (*Optional*)
-
-Time stamp for the status.
+The state, 'on' or 'off'.
**Responses:**
200:
-Status set to <status> for policy <policy-id>
+Force delay: <expected delay> sec set for all A1 responses
**Examples:**
**Call**: ::
- curl -X PUT "http://localhost:8085/policyid=Policy1&status?status=Accepted
+ curl -X POST "http://localhost:8085/payload_logging/on"
**Result**:
200: ::
- Status set to Accepted for policy Policy1.
+ Payload and header logging set to: on
-A1 Standard 1.1.3
------------------
-This section describes the available administrative functions for the A1 Standard 1.1.3 version of A1.
+Version Specific Functions
+==========================
-To see the A1 functions for this version, see `A1 Standard 1.1.3 API`_.
+The methods available to control the simulator depends on the version of the A1 API the simulator is simulating.
-.. _A1 Standard 1.1.3 API: https://gerrit.o-ran-sc.org/r/gitweb?p=sim/a1-interface.git;a=blob;f=near-rt-ric-simulator/api/STD_1.1.3/STD_A1.yaml
+OSC_2.1.0
+---------
-/deleteinstances
-~~~~~~~~~~~~~~~~
+This section describes the available administrative functions for the OSC_2.1.0 version of A1.
-POST
-++++
+To see the A1 functions for this version, see `OSC_2.1.0 API`_.
-Delete all policy instances.
+.. _OSC_2.1.0 API: https://gerrit.o-ran-sc.org/r/gitweb?p=sim/a1-interface.git;a=blob;f=near-rt-ric-simulator/api/OSC_2.1.0/openapi.yaml
+
+
+
+/policytype
+~~~~~~~~~~~
+
+PUT
++++
+
+Create a policy type.
**URL path:**
-/deleteinstances
+/policytype?id=<policy-type-id>
**Parameters:**
-None.
+id: (*Required*)
+
+The ID of the policy type.
+
+**Body:** (*Required*)
+
+A JSON object containing the schema for the type.
**Responses:**
200:
-All policy instances deleted.
+Policy type <policy-type-id> is OK.
+
+201:
+
+Policy type <policy-type-id> is OK.
**Examples:**
**Call**: ::
- curl -X POST "http://localhost:8085/deleteinstances"
+ curl -X PUT "http://localhost:8085/policytype?id=1"
+ -H "Content-Type: application/json"
+ -d '{
+ "name": "pt1",
+ "description": "pt1 policy type",
+ "policy_type_id": 1,
+ "create_schema": {
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "title": "STD_QoSNudging_0.2.0",
+ "description": "QoS policy type",
+ "type": "object",
+ "properties": {
+ "scope": {
+ "type": "object",
+ "properties": {
+ "ueId": {
+ "type": "string"
+ },
+ "qosId": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "ueId",
+ "qosId"
+ ]
+ },
+ "statement": {
+ "type": "object",
+ "properties": {
+ "priorityLevel": {
+ "type": "number"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "priorityLevel"
+ ]
+ }
+ }
+ }
+ }'
**Result**:
-200: ::
-
- All policy instances deleted.
+201: ::
-/deleteall
-~~~~~~~~~~
+ Policy type 1 is OK
-POST
-++++
+DELETE
+++++++
-Full reset.
+Delete a policy type.
**URL path:**
-/deleteinstances
+/policytype?id=<policy-type-id>
**Parameters:**
-None.
+id: (*Required*)
+
+The ID of the policy type.
**Responses:**
-200:
+204:
-All policy instances deleted.
+Policy type <policy-type-id> is OK.
**Examples:**
**Call**: ::
- curl -X POST "http://localhost:8085/deleteall"
+ curl -X DELETE "http://localhost:8085/policytype?id=1"
**Result**:
-200: ::
+204
- All policy instances deleted.
-/forceresponse
-~~~~~~~~~~~~~~
-POST
-++++
+/policytypes
+~~~~~~~~~~~~
+
+GET
++++
-Force a specific response code for an A1 operation.
+Get a list of policy types.
**URL path:**
-/forceresponse?responsecode=<http-response-code>
+/policytypes
**Parameters:**
-responsecode: (*Required*)
-
-The HTTP response code to return.
+None.
**Responses:**
200:
-Force response code: <expected code> set for one single A1 response
+A list of policy types.
**Examples:**
**Call**: ::
- curl -X POST "http://localhost:8085/forceresponse?responsecode=400"
+ curl -X GET "http://localhost:8085/policytypes"
**Result**:
200: ::
- Force response code: 400 set for one single A1 response
+ ["1"]
-/forcedelay
-~~~~~~~~~~~
-POST
-++++
+/status
+~~~~~~~
-Force delayed response of all A1 operations.
+PUT
++++
+
+Set status and optional reason, delete and time stamp.
**URL path:**
-/forcedelay?delay=<delay-time-seconds>
+/status?policyid=<policyid>&status=<status>&deleted=<value>&created_at=<time-stamp>
**Parameters:**
-delay: (*Required*)
+policyid: (*Required*)
-The time in seconds to delay all responses.
+The ID of a policy.
+
+status: (*Required*)
+
+The status of a policy.
+
+deleted: (*Optional*)
+
+True or false for real values, but accepts anything for error testing.
+
+created_at: (*Optional*)
+
+Time stamp for the status.
**Responses:**
200:
-Force delay: <expected delay> sec set for all A1 responses
+Status set to <status> for policy <policy-id>
**Examples:**
**Call**: ::
- curl -X POST "http://localhost:8085/forcedelay?delay=2"
+ curl -X PUT "http://localhost:8085/status?policyid=1&status=Accepted"
**Result**:
200: ::
- Force delay: 2 sec set for all A1 responses
+ Status set to Accepted for policy Policy1.
+
+A1 Standard 1.1.3
+-----------------
+
+This section describes the available administrative functions for the A1 Standard 1.1.3 version of A1.
+
+To see the A1 functions for this version, see `A1 Standard 1.1.3 API`_.
+
+.. _A1 Standard 1.1.3 API: https://gerrit.o-ran-sc.org/r/gitweb?p=sim/a1-interface.git;a=blob;f=near-rt-ric-simulator/api/STD_1.1.3/STD_A1.yaml
+
/status
~~~~~~~
**Call**: ::
- curl -X PUT "http://localhost:8085/status?policyid=Policy1&status=Accepted
+ curl -X PUT "http://localhost:8085/status?policyid=Policy1&status=Accepted"
**Result**:
200
-1.1.x-alpha.2
--------------
-This section describes the available administrative functions for the 1.1.x-alpha.2 version of A1.
+A1 Standard 2.0.0
+-----------------
-To see the A1 functions for this version, see `1.1.x-alpha.2 API`_.
+This section describes the available administrative functions for the A1 Standard 2.0.0 version of A1.
-.. _1.1.x-alpha.2 API: https://gerrit.o-ran-sc.org/r/gitweb?p=sim/a1-interface.git;a=blob;f=near-rt-ric-simulator/api/1.1.x-alpha.2/a1-openapi.yaml
+To see the A1 functions for this version, see `A1 Standard 2.0.0 API`_.
-/deleteinstances
-~~~~~~~~~~~~~~~~
+.. _A1 Standard 2.0.0 API: https://gerrit.o-ran-sc.org/r/gitweb?p=sim/a1-interface.git;a=blob;f=near-rt-ric-simulator/api/STD_2.0.0/ORAN_A1-p_V2.0.0_api.yaml
-DELETE
-++++++
-Delete all policy instances.
+/policytype
+~~~~~~~~~~~
+
+PUT
++++
+
+Create or update a policy type.
**URL path:**
-/deleteinstances
+/policytype?id={policy-type-id}
**Parameters:**
-None.
+policy-type-id: (*Required*)
+
+The ID of the policy type.
+
+**Body:** (*Required*)
+
+A JSON object containing the schema for the type.
**Responses:**
200:
-All policy instances deleted.
+The policy type <policy-type-id> is ok
+
+201:
+
+The policy type <policy-type-id> is ok
**Examples:**
**Call**: ::
- curl -X DELETE "http://localhost:8085/deleteinstances"
+ curl -X PUT "http://localhost:8085/policytype?id=STD_PolicyModelUnconstrained_0.2.0"
+ -H "Content-Type: application/json"
+ -d '{
+ "policySchema": {
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "title": "STD_1_0.2.0",
+ "description": "STD 1 policy type",
+ "type": "object",
+ "properties": {
+ "scope": {
+ "type": "object",
+ "properties": {
+ "ueId": {
+ "type": "string"
+ },
+ "qosId": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "ueId",
+ "qosId"
+ ]
+ },
+ "statement": {
+ "type": "object",
+ "properties": {
+ "priorityLevel": {
+ "type": "number"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "priorityLevel"
+ ]
+ }
+ }
+ },
+ "statusSchema": {
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "title": "STD_1_0.2.0",
+ "description": "STD 1 policy type status",
+ "type": "object",
+ "properties": {
+ "enforceStatus": {
+ "type": "string"
+ },
+ "enforceReason": {
+ "type": "string"
+ },
+ "additionalProperties": false,
+ "required": [
+ "enforceStatus"
+ ]
+ }
+ }
+ }'
**Result**:
200: ::
- All policy instances deleted.
+ Policy type STD_PolicyModelUnconstrained_0.2.0 is OK
-/deletetypes
-~~~~~~~~~~~~
+201: ::
+
+ Policy type STD_PolicyModelUnconstrained_0.2.0 is OK
DELETE
++++++
-Delete all policy types.
+Delete a policy type.
**URL path:**
-/deletetypes
+/policytype?id={policy-type-id}
**Parameters:**
**Responses:**
-200:
+204
-All policy types deleted.
**Examples:**
**Call**: ::
- curl -X DELETE "http://localhost:8085/deletetypes"
+ curl -X DELETE "http://localhost:8085/policytype?id=STD_PolicyModelUnconstrained_0.2.0"
**Result**:
-200: ::
+204
+
- All policy types deleted.
/policytypes
~~~~~~~~~~~~
-PUT
+GET
+++
-Create or update a policy type.
+Get a list of policy types.
**URL path:**
-/policytypes/{policy-type-id}
+/policytypes
**Parameters:**
None.
-**Body:** (*Required*)
-
-A JSON object containing the schema for the type.
-
**Responses:**
200:
-The policy type was either created or updated for policy type id: <policy-type-id>
+A list of policy types.
**Examples:**
**Call**: ::
- curl -X PUT "http://localhost:8085/policytype/Policy%201&ric=ric1&service=Service%201&type=STD_PolicyModelUnconstrained_0.2.0"
- -H "Content-Type: application/json"
- -d '{
- "$schema": "http://json-schema.org/draft-07/schema#",
- "title": "STD_PolicyModelUnconstrained_0.2.0",
- "description": "Standard model of a policy with unconstrained scope id combinations",
- "type": "object",
- "properties": {
- "scope": {
- "type": "object",
- "properties": {
- "ueId": {"type": "string"},
- "groupId": {"type": "string"},
- "sliceId": {"type": "string"},
- "qosId": {"type": "string"},
- "cellId": {"type": "string"}
- },
- "minProperties": 1,
- "additionalProperties": false
- },
- "qosObjectives": {
- "type": "object",
- "properties": {
- "gfbr": {"type": "number"},
- "mfbr": {"type": "number"},
- "priorityLevel": {"type": "number"},
- "pdb": {"type": "number"}
- },
- "additionalProperties": false
- },
- "qoeObjectives": {
- "type": "object",
- "properties": {
- "qoeScore": {"type": "number"},
- "initialBuffering": {"type": "number"},
- "reBuffFreq": {"type": "number"},
- "stallRatio": {"type": "number"}
- },
- "additionalProperties": false
- },
- "resources": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "cellIdList": {
- "type": "array",
- "minItems": 1,
- "uniqueItems": true,
- "items": {
- "type": "string"
- }
- },
- "preference": {
- "type": "string",
- "enum": [
- "SHALL",
- "PREFER",
- "AVOID",
- "FORBID"
- ]
- },
- "primary": {"type": "boolean"}
- },
- "additionalProperties": false,
- "required": ["cellIdList", "preference"]
- }
- }
- },
- "minProperties": 2,
- "additionalProperties": false,
- "required": ["scope"]
- }'
+ curl -X GET "http://localhost:8085/policytypes"
**Result**:
200: ::
- The policy type was either created or updated for policy type id: STD_PolicyModelUnconstrained_0.2.0
-
-DELETE
-++++++
-
-Delete a policy type.
-
-**URL path:**
-
-/policytypes/{policy-type-id}
-
-**Parameters:**
-
-None.
-
-**Responses:**
-
-200:
-
-policy type successfully deleted for policy type id: <policy-type-id>
-
-**Examples:**
-
-**Call**: ::
-
- curl -X DELETE "http://localhost:8085/policytype?id=Policy%201&ric=ric1&service=Service%201&type=STD_PolicyModelUnconstrained_0.2.0"
-
-**Result**:
-
-200: ::
+ ["STD_PolicyModelUnconstrained_0.2.0"]
- policy type successfully deleted for policy type id: STD_PolicyModelUnconstrained_0.2.0
/{policyId}/{enforceStatus}
~~~~~~~~~~~~~~~~~~~~~~~~~~~
**URL path:**
-/{policyId}/{enforceStatus}
+/status?policyid={policyId}&status={status}&reason={reason}
**Parameters:**
**Call**: ::
- curl -X PUT "http://localhost:8085/Policy1/ENFORCED
+ curl -X PUT "http://localhost:8085/status?policyid=Policy1&status=ENFORCED"
**Result**:
/{policyId}/{enforceStatus}/{enforceReason}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-PUT
+/sendstatus
+~~~~~~~~~~~
+
+POST
++++
-Send a status to a policy instance with both enforceStatus and enforceReason.
+Send status for policy.
**URL path:**
-/{policyId}/{enforceStatus}/{enforceReason}
+/sendstatus?policyid=<policy-id>
**Parameters:**
-None.
+policyid: (*Required*)
+
+The ID of the policy to send status for.
**Responses:**
200:
-Status updated for policy: <policyId>
+Is a JSON with the response of the actual post request to the callback server, whatever that is.
**Examples:**
**Call**: ::
- curl -X PUT "http://localhost:8085/Policy1/NOT_ENFORCED/100"
+ curl -X POST "http://localhost:8085/sendstatus?policyid=Policy2"
**Result**:
-200: ::
-
- Status updated for policy: Policy1
+200