{
    "components": {"schemas": {
        "error_information": {
            "description": "Problem as defined in https://tools.ietf.org/html/rfc7807",
            "type": "object",
            "properties": {
                "detail": {
                    "description": " A human-readable explanation specific to this occurrence of the problem.",
                    "type": "string",
                    "example": "Policy type not found"
                },
                "status": {
                    "format": "int32",
                    "description": "The HTTP status code generated by the origin server for this occurrence of the problem. ",
                    "type": "integer",
                    "example": 404
                }
            }
        },
        "void": {
            "description": "Void/empty",
            "type": "object"
        },
        "status_info_v2": {
            "type": "object",
            "properties": {"status": {
                "description": "status text",
                "type": "string"
            }}
        },
        "authorization_result": {
            "description": "Result of authorization",
            "type": "object",
            "required": ["result"],
            "properties": {"result": {
                "description": "If true, the access is granted",
                "type": "boolean"
            }}
        },
        "ric_info_v2": {
            "description": "Information for a Near-RT RIC",
            "type": "object",
            "properties": {
                "ric_id": {
                    "description": "identity of the Near-RT RIC",
                    "type": "string"
                },
                "managed_element_ids": {
                    "description": "O1 identities for managed entities",
                    "type": "array",
                    "items": {
                        "description": "O1 identities for managed entities",
                        "type": "string"
                    }
                },
                "state": {
                    "description": "Represents the states for a Near-RT RIC",
                    "type": "string",
                    "enum": [
                        "UNAVAILABLE",
                        "AVAILABLE",
                        "SYNCHRONIZING",
                        "CONSISTENCY_CHECK"
                    ]
                },
                "policytype_ids": {
                    "description": "supported policy types",
                    "type": "array",
                    "items": {
                        "description": "supported policy types",
                        "type": "string"
                    }
                }
            }
        },
        "service_registration_info_v2": {
            "description": "Information for one service",
            "type": "object",
            "required": ["service_id"],
            "properties": {
                "callback_url": {
                    "description": "callback for notifying of Near-RT RIC state changes",
                    "type": "string"
                },
                "service_id": {
                    "description": "identity of the service",
                    "type": "string"
                },
                "keep_alive_interval_seconds": {
                    "format": "int64",
                    "description": "keep alive interval for the service. This is used to enable optional heartbeat supervision of the service. If set (> 0) the registered service should regularly invoke a 'keepalive' REST call. When a service fails to invoke this 'keepalive' call within the configured time, the service is considered unavailable. An unavailable service will be automatically deregistered and its policies will be deleted. Value 0 means timeout supervision is disabled.",
                    "type": "integer"
                }
            }
        },
        "policy_info_list_v2": {
            "description": "List of policy information",
            "type": "object",
            "properties": {"policies": {
                "description": "List of policy information",
                "type": "array",
                "items": {"$ref": "#/components/schemas/policy_info_v2"}
            }}
        },
        "policy_status_info_v2": {
            "description": "Status for one A1-P Policy",
            "type": "object",
            "properties": {
                "last_modified": {
                    "description": "timestamp, last modification time",
                    "type": "string"
                },
                "status": {
                    "description": "the Policy status",
                    "type": "object"
                }
            }
        },
        "service_status_v2": {
            "description": "List of service information",
            "type": "object",
            "properties": {
                "callback_url": {
                    "description": "callback for notifying of RIC synchronization",
                    "type": "string"
                },
                "service_id": {
                    "description": "identity of the service",
                    "type": "string"
                },
                "keep_alive_interval_seconds": {
                    "format": "int64",
                    "description": "policy keep alive timeout",
                    "type": "integer"
                },
                "time_since_last_activity_seconds": {
                    "format": "int64",
                    "description": "time since last invocation by the service",
                    "type": "integer"
                }
            }
        },
        "ric_info_list_v2": {
            "description": "List of Near-RT RIC information",
            "type": "object",
            "properties": {"rics": {
                "description": "List of Near-RT RIC information",
                "type": "array",
                "items": {"$ref": "#/components/schemas/ric_info_v2"}
            }}
        },
        "policytype_v2": {
            "description": "Policy type",
            "type": "object",
            "properties": {"policy_schema": {
                "description": "Policy type json schema. The schema is a json object following http://json-schema.org/draft-07/schema",
                "type": "object"
            }}
        },
        "input": {
            "description": "input",
            "type": "object",
            "required": [
                "access_type",
                "auth_token",
                "policy_type_id"
            ],
            "properties": {
                "access_type": {
                    "description": "Access type",
                    "type": "string",
                    "enum": [
                        "READ",
                        "WRITE",
                        "DELETE"
                    ]
                },
                "auth_token": {
                    "description": "Authorization token",
                    "type": "string"
                },
                "policy_type_id": {
                    "description": "Policy type identifier",
                    "type": "string"
                }
            }
        },
        "policy_authorization": {
            "description": "Authorization request for A1 policy requests",
            "type": "object",
            "required": ["input"],
            "properties": {"input": {"$ref": "#/components/schemas/input"}}
        },
        "policytype_id_list_v2": {
            "description": "Information about policy types",
            "type": "object",
            "properties": {"policytype_ids": {
                "description": "Policy type identities",
                "type": "array",
                "items": {
                    "description": "Policy type identities",
                    "type": "string"
                }
            }}
        },
        "policy_info_v2": {
            "description": "Information for one A1-P Policy",
            "type": "object",
            "required": [
                "policy_data",
                "policy_id",
                "policytype_id",
                "ric_id"
            ],
            "properties": {
                "ric_id": {
                    "description": "identity of the target Near-RT RIC",
                    "type": "string"
                },
                "policy_id": {
                    "description": "identity of the policy",
                    "type": "string"
                },
                "transient": {
                    "default": false,
                    "description": "if true, the policy is deleted at RIC restart. If false, its value is maintained by this service until explicitly deleted. Default false.",
                    "type": "boolean",
                    "example": false
                },
                "service_id": {
                    "description": "the identity of the service owning the policy. This can be used to group the policies (it is possible to get all policies associated to a service). Note that the service does not need to be registered.",
                    "type": "string"
                },
                "policy_data": {
                    "description": "the configuration of the policy",
                    "type": "object"
                },
                "status_notification_uri": {
                    "description": "Callback URI for policy status updates",
                    "type": "string"
                },
                "policytype_id": {
                    "description": "identity of the policy type",
                    "type": "string"
                }
            }
        },
        "policy_id_list_v2": {
            "description": "A list of policy identities",
            "type": "object",
            "properties": {"policy_ids": {
                "description": "Policy identities",
                "type": "array",
                "items": {
                    "description": "Policy identities",
                    "type": "string"
                }
            }}
        },
        "service_list_v2": {
            "description": "List of service information",
            "type": "object",
            "properties": {"service_list": {
                "description": "List of service information",
                "type": "array",
                "items": {"$ref": "#/components/schemas/service_status_v2"}
            }}
        },
        "service_callback_info_v2": {
            "description": "Information transferred as in Service callbacks (callback_url)",
            "type": "object",
            "required": [
                "event_type",
                "ric_id"
            ],
            "properties": {
                "ric_id": {
                    "description": "identity of a Near-RT RIC",
                    "type": "string"
                },
                "event_type": {
                    "description": "values:\nAVAILABLE: the  Near-RT RIC has become available for A1 Policy management",
                    "type": "string",
                    "enum": ["AVAILABLE"]
                }
            }
        },
        "Link": {
            "type": "object",
            "properties": {
                "templated": {"type": "boolean"},
                "href": {"type": "string"}
            }
        }
    }},
    "openapi": "3.0.1",
    "paths": {
        "/a1-policy/v2/policy-instances": {"get": {
            "summary": "Query for A1 policy instances",
            "description": "Returns a list of A1 policies matching given search criteria. <br>If several query parameters are defined, the policies matching all conditions are returned.",
            "operationId": "getPolicyInstances",
            "responses": {
                "200": {
                    "description": "Policies",
                    "content": {"application/json": {"schema": {"$ref": "#/components/schemas/policy_info_list_v2"}}}
                },
                "404": {
                    "description": "Near-RT RIC, policy type or service not found",
                    "content": {"application/json": {"schema": {"$ref": "#/components/schemas/error_information"}}}
                }
            },
            "parameters": [
                {
                    "schema": {"type": "string"},
                    "in": "query",
                    "name": "policytype_id",
                    "description": "Select policies with a given type identity.",
                    "required": false
                },
                {
                    "schema": {"type": "string"},
                    "in": "query",
                    "name": "ric_id",
                    "description": "Select policies for a given Near-RT RIC identity.",
                    "required": false
                },
                {
                    "schema": {"type": "string"},
                    "in": "query",
                    "name": "service_id",
                    "description": "Select policies owned by a given service.",
                    "required": false
                },
                {
                    "schema": {"type": "string"},
                    "in": "query",
                    "name": "type_name",
                    "description": "Select policies of a given type name (type identity has the format <typename_version>)",
                    "required": false
                }
            ],
            "tags": ["A1 Policy Management"]
        }},
        "/example-authz-check": {"post": {
            "summary": "Request for access authorization.",
            "requestBody": {
                "content": {"application/json": {"schema": {"$ref": "#/components/schemas/policy_authorization"}}},
                "required": true
            },
            "description": "The authorization function decides if access is granted.",
            "operationId": "performAccessControl",
            "responses": {"200": {
                "description": "OK",
                "content": {"application/json": {"schema": {"$ref": "#/components/schemas/authorization_result"}}}
            }},
            "tags": ["Authorization API"]
        }},
        "/actuator/threaddump": {"get": {
            "summary": "Actuator web endpoint 'threaddump'",
            "operationId": "threaddump",
            "responses": {"200": {
                "description": "OK",
                "content": {
                    "text/plain;charset=UTF-8": {"schema": {"type": "object"}},
                    "application/vnd.spring-boot.actuator.v3+json": {"schema": {"type": "object"}},
                    "application/json": {"schema": {"type": "object"}},
                    "application/vnd.spring-boot.actuator.v2+json": {"schema": {"type": "object"}}
                }
            }},
            "tags": ["Actuator"]
        }},
        "/a1-policy/v2/status": {"get": {
            "summary": "Returns status and statistics of this service",
            "operationId": "getStatus",
            "responses": {"200": {
                "description": "Service is living",
                "content": {"application/json": {"schema": {"$ref": "#/components/schemas/status_info_v2"}}}
            }},
            "tags": ["Health Check"]
        }},
        "/actuator/loggers": {"get": {
            "summary": "Actuator web endpoint 'loggers'",
            "operationId": "loggers",
            "responses": {"200": {
                "description": "OK",
                "content": {
                    "application/vnd.spring-boot.actuator.v3+json": {"schema": {"type": "object"}},
                    "application/json": {"schema": {"type": "object"}},
                    "application/vnd.spring-boot.actuator.v2+json": {"schema": {"type": "object"}}
                }
            }},
            "tags": ["Actuator"]
        }},
        "/actuator/health/**": {"get": {
            "summary": "Actuator web endpoint 'health-path'",
            "operationId": "health-path",
            "responses": {"200": {
                "description": "OK",
                "content": {
                    "application/vnd.spring-boot.actuator.v3+json": {"schema": {"type": "object"}},
                    "application/json": {"schema": {"type": "object"}},
                    "application/vnd.spring-boot.actuator.v2+json": {"schema": {"type": "object"}}
                }
            }},
            "tags": ["Actuator"]
        }},
        "/a1-policy/v2/rics/ric": {"get": {
            "summary": "Returns info for one Near-RT RIC",
            "description": "Either a Near-RT RIC identity or a Managed Element identity can be specified.<br>The intention with Managed Element identity is the ID used in O1 for accessing the traffical element (such as the ID of CU).",
            "operationId": "getRic",
            "responses": {
                "200": {
                    "description": "Near-RT RIC is found",
                    "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ric_info_v2"}}}
                },
                "404": {
                    "description": "Near-RT RIC is not found",
                    "content": {"application/json": {"schema": {"$ref": "#/components/schemas/error_information"}}}
                }
            },
            "parameters": [
                {
                    "schema": {"type": "string"},
                    "in": "query",
                    "name": "managed_element_id",
                    "description": "The identity of a Managed Element. If given, the Near-RT RIC managing the ME is returned.",
                    "required": false
                },
                {
                    "schema": {"type": "string"},
                    "in": "query",
                    "name": "ric_id",
                    "description": "The identity of a Near-RT RIC to get information for.",
                    "required": false
                }
            ],
            "tags": ["NearRT-RIC Repository"]
        }},
        "/actuator/shutdown": {"post": {
            "summary": "Actuator web endpoint 'shutdown'",
            "operationId": "shutdown",
            "responses": {"200": {
                "description": "OK",
                "content": {
                    "application/vnd.spring-boot.actuator.v3+json": {"schema": {"type": "object"}},
                    "application/json": {"schema": {"type": "object"}},
                    "application/vnd.spring-boot.actuator.v2+json": {"schema": {"type": "object"}}
                }
            }},
            "tags": ["Actuator"]
        }},
        "/a1-policy/v2/policy-types": {"get": {
            "summary": "Query policy type identities",
            "operationId": "getPolicyTypes",
            "responses": {
                "200": {
                    "description": "Policy type IDs",
                    "content": {"application/json": {"schema": {"$ref": "#/components/schemas/policytype_id_list_v2"}}}
                },
                "404": {
                    "description": "Near-RT RIC is not found",
                    "content": {"application/json": {"schema": {"$ref": "#/components/schemas/error_information"}}}
                }
            },
            "parameters": [
                {
                    "schema": {"type": "string"},
                    "in": "query",
                    "name": "ric_id",
                    "description": "Select types for the given Near-RT RIC identity.",
                    "required": false
                },
                {
                    "schema": {"type": "string"},
                    "in": "query",
                    "name": "type_name",
                    "description": "Select types with the given type name (type identity has the format <typename_version>)",
                    "required": false
                },
                {
                    "schema": {"type": "string"},
                    "in": "query",
                    "name": "compatible_with_version",
                    "description": "Select types that are compatible with the given version. This parameter is only applicable in conjunction with type_name. As an example version 1.9.1 is compatible with 1.0.0 but not the other way around. Matching types will be returned sorted in ascending order.",
                    "required": false
                }
            ],
            "tags": ["A1 Policy Management"]
        }},
        "/a1-policy/v2/policies/{policy_id}": {
            "get": {
                "summary": "Returns a policy",
                "operationId": "getPolicy",
                "responses": {
                    "200": {
                        "description": "Policy found",
                        "content": {"application/json": {"schema": {"$ref": "#/components/schemas/policy_info_v2"}}}
                    },
                    "404": {
                        "description": "Policy is not found",
                        "content": {"application/json": {"schema": {"$ref": "#/components/schemas/error_information"}}}
                    }
                },
                "parameters": [{
                    "schema": {"type": "string"},
                    "in": "path",
                    "name": "policy_id",
                    "required": true
                }],
                "tags": ["A1 Policy Management"]
            },
            "delete": {
                "summary": "Delete a policy",
                "operationId": "deletePolicy",
                "responses": {
                    "200": {
                        "description": "Not used",
                        "content": {"*/*": {"schema": {"$ref": "#/components/schemas/void"}}}
                    },
                    "423": {
                        "description": "Near-RT RIC is not operational",
                        "content": {"*/*": {"schema": {"$ref": "#/components/schemas/error_information"}}}
                    },
                    "204": {
                        "description": "Policy deleted",
                        "content": {"*/*": {"schema": {"$ref": "#/components/schemas/void"}}}
                    },
                    "404": {
                        "description": "Policy is not found",
                        "content": {"*/*": {"schema": {"$ref": "#/components/schemas/error_information"}}}
                    }
                },
                "parameters": [{
                    "schema": {"type": "string"},
                    "in": "path",
                    "name": "policy_id",
                    "required": true
                }],
                "tags": ["A1 Policy Management"]
            }
        },
        "/actuator/metrics/{requiredMetricName}": {"get": {
            "summary": "Actuator web endpoint 'metrics-requiredMetricName'",
            "operationId": "metrics-requiredMetricName",
            "responses": {"200": {
                "description": "OK",
                "content": {
                    "application/vnd.spring-boot.actuator.v3+json": {"schema": {"type": "object"}},
                    "application/json": {"schema": {"type": "object"}},
                    "application/vnd.spring-boot.actuator.v2+json": {"schema": {"type": "object"}}
                }
            }},
            "parameters": [{
                "schema": {"type": "string"},
                "in": "path",
                "name": "requiredMetricName",
                "required": true
            }],
            "tags": ["Actuator"]
        }},
        "/a1-policy/v2/configuration": {
            "get": {
                "summary": "Returns the contents of the application configuration file",
                "operationId": "getConfiguration",
                "responses": {
                    "200": {
                        "description": "Configuration",
                        "content": {"application/json": {"schema": {"type": "object"}}}
                    },
                    "404": {
                        "description": "File is not found or readable",
                        "content": {"application/json": {"schema": {"$ref": "#/components/schemas/error_information"}}}
                    }
                },
                "tags": ["Management of configuration"]
            },
            "put": {
                "summary": "Replace the current configuration file with the given configuration",
                "requestBody": {
                    "content": {"application/json": {"schema": {"type": "object"}}},
                    "required": true
                },
                "operationId": "putConfiguration",
                "responses": {
                    "200": {
                        "description": "Configuration updated",
                        "content": {"*/*": {"schema": {"$ref": "#/components/schemas/void"}}}
                    },
                    "400": {
                        "description": "Invalid configuration provided",
                        "content": {"*/*": {"schema": {"$ref": "#/components/schemas/error_information"}}}
                    },
                    "500": {
                        "description": "Something went wrong when replacing the configuration. Try again.",
                        "content": {"*/*": {"schema": {"$ref": "#/components/schemas/error_information"}}}
                    }
                },
                "tags": ["Management of configuration"]
            }
        },
        "/actuator": {"get": {
            "summary": "Actuator root web endpoint",
            "operationId": "links",
            "responses": {"200": {
                "description": "OK",
                "content": {
                    "application/vnd.spring-boot.actuator.v3+json": {"schema": {
                        "additionalProperties": {
                            "additionalProperties": {"$ref": "#/components/schemas/Link"},
                            "type": "object"
                        },
                        "type": "object"
                    }},
                    "application/json": {"schema": {
                        "additionalProperties": {
                            "additionalProperties": {"$ref": "#/components/schemas/Link"},
                            "type": "object"
                        },
                        "type": "object"
                    }},
                    "application/vnd.spring-boot.actuator.v2+json": {"schema": {
                        "additionalProperties": {
                            "additionalProperties": {"$ref": "#/components/schemas/Link"},
                            "type": "object"
                        },
                        "type": "object"
                    }}
                }
            }},
            "tags": ["Actuator"]
        }},
        "/actuator/loggers/{name}": {
            "post": {
                "summary": "Actuator web endpoint 'loggers-name'",
                "requestBody": {"content": {"application/json": {"schema": {
                    "type": "string",
                    "enum": [
                        "TRACE",
                        "DEBUG",
                        "INFO",
                        "WARN",
                        "ERROR",
                        "FATAL",
                        "OFF"
                    ]
                }}}},
                "operationId": "loggers-name_2",
                "responses": {"200": {
                    "description": "OK",
                    "content": {"*/*": {"schema": {"type": "object"}}}
                }},
                "parameters": [{
                    "schema": {"type": "string"},
                    "in": "path",
                    "name": "name",
                    "required": true
                }],
                "tags": ["Actuator"]
            },
            "get": {
                "summary": "Actuator web endpoint 'loggers-name'",
                "operationId": "loggers-name",
                "responses": {"200": {
                    "description": "OK",
                    "content": {
                        "application/vnd.spring-boot.actuator.v3+json": {"schema": {"type": "object"}},
                        "application/json": {"schema": {"type": "object"}},
                        "application/vnd.spring-boot.actuator.v2+json": {"schema": {"type": "object"}}
                    }
                }},
                "parameters": [{
                    "schema": {"type": "string"},
                    "in": "path",
                    "name": "name",
                    "required": true
                }],
                "tags": ["Actuator"]
            }
        },
        "/a1-policy/v2/services/{service_id}/keepalive": {"put": {
            "summary": "Heartbeat indicates that the service is running",
            "description": "A registered service should invoke this operation regularly to indicate that it is still alive. If a registered service fails to invoke this operation before the end of a timeout period the service will be deregistered and all its A1 policies wil be removed. (This timeout can be set or disabled when each service is initially registered)",
            "operationId": "keepAliveService",
            "responses": {
                "200": {
                    "description": "Service supervision timer refreshed, OK",
                    "content": {"*/*": {"schema": {"type": "object"}}}
                },
                "404": {
                    "description": "The service is not found, needs re-registration",
                    "content": {"*/*": {"schema": {"$ref": "#/components/schemas/error_information"}}}
                }
            },
            "parameters": [{
                "schema": {"type": "string"},
                "in": "path",
                "name": "service_id",
                "required": true
            }],
            "tags": ["Service Registry and Supervision"]
        }},
        "/actuator/metrics": {"get": {
            "summary": "Actuator web endpoint 'metrics'",
            "operationId": "metrics",
            "responses": {"200": {
                "description": "OK",
                "content": {
                    "application/vnd.spring-boot.actuator.v3+json": {"schema": {"type": "object"}},
                    "application/json": {"schema": {"type": "object"}},
                    "application/vnd.spring-boot.actuator.v2+json": {"schema": {"type": "object"}}
                }
            }},
            "tags": ["Actuator"]
        }},
        "/a1-policy/v2/rics": {"get": {
            "summary": "Query Near-RT RIC information",
            "description": "The call returns all Near-RT RICs that supports a given policy type identity",
            "operationId": "getRics",
            "responses": {
                "200": {
                    "description": "OK",
                    "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ric_info_list_v2"}}}
                },
                "404": {
                    "description": "Policy type is not found",
                    "content": {"application/json": {"schema": {"$ref": "#/components/schemas/error_information"}}}
                }
            },
            "parameters": [{
                "schema": {"type": "string"},
                "in": "query",
                "name": "policytype_id",
                "description": "The identity of a policy type. If given, all Near-RT RICs supporting the policy type are returned",
                "required": false
            }],
            "tags": ["NearRT-RIC Repository"]
        }},
        "/a1-policy/v2/services": {
            "get": {
                "summary": "Returns service information",
                "description": "Either information about a registered service with given identity or all registered services are returned.",
                "operationId": "getServices",
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {"application/json": {"schema": {"$ref": "#/components/schemas/service_list_v2"}}}
                    },
                    "404": {
                        "description": "Service is not found",
                        "content": {"application/json": {"schema": {"$ref": "#/components/schemas/error_information"}}}
                    }
                },
                "parameters": [{
                    "schema": {"type": "string"},
                    "in": "query",
                    "name": "service_id",
                    "description": "The identity of the service",
                    "required": false
                }],
                "tags": ["Service Registry and Supervision"]
            },
            "put": {
                "summary": "Register a service",
                "requestBody": {
                    "content": {"application/json": {"schema": {"$ref": "#/components/schemas/service_registration_info_v2"}}},
                    "required": true
                },
                "description": "Registering a service is needed to:<ul><li>Get callbacks about available NearRT RICs.<\/li><li>Activate supervision of the service. If a service is inactive, its policies will automatically be deleted.<\/li><\/ul>Policies can be created even if the service is not registerred. This is a feature which it is optional to use.",
                "operationId": "putService",
                "responses": {
                    "200": {
                        "description": "Service updated",
                        "content": {"*/*": {"schema": {"type": "object"}}}
                    },
                    "201": {
                        "description": "Service created",
                        "content": {"*/*": {"schema": {"type": "object"}}}
                    },
                    "400": {
                        "description": "The ServiceRegistrationInfo is not accepted",
                        "content": {"*/*": {"schema": {"$ref": "#/components/schemas/error_information"}}}
                    }
                },
                "tags": ["Service Registry and Supervision"]
            }
        },
        "/actuator/info": {"get": {
            "summary": "Actuator web endpoint 'info'",
            "operationId": "info",
            "responses": {"200": {
                "description": "OK",
                "content": {
                    "application/vnd.spring-boot.actuator.v3+json": {"schema": {"type": "object"}},
                    "application/json": {"schema": {"type": "object"}},
                    "application/vnd.spring-boot.actuator.v2+json": {"schema": {"type": "object"}}
                }
            }},
            "tags": ["Actuator"]
        }},
        "/status": {"get": {
            "summary": "Returns status and statistics of this service",
            "operationId": "getStatusV1",
            "responses": {"200": {
                "description": "Service is living",
                "content": {"*/*": {"schema": {"type": "string"}}}
            }},
            "tags": ["Health Check"]
        }},
        "/a1-policy/v2/policy-types/{policytype_id}": {"get": {
            "summary": "Returns a policy type definition",
            "operationId": "getPolicyType",
            "responses": {
                "200": {
                    "description": "Policy type",
                    "content": {"*/*": {"schema": {"$ref": "#/components/schemas/policytype_v2"}}}
                },
                "404": {
                    "description": "Policy type is not found",
                    "content": {"*/*": {"schema": {"$ref": "#/components/schemas/error_information"}}}
                }
            },
            "parameters": [{
                "schema": {"type": "string"},
                "in": "path",
                "name": "policytype_id",
                "required": true
            }],
            "tags": ["A1 Policy Management"]
        }},
        "/actuator/logfile": {"get": {
            "summary": "Actuator web endpoint 'logfile'",
            "operationId": "logfile",
            "responses": {"200": {
                "description": "OK",
                "content": {"text/plain;charset=UTF-8": {"schema": {"type": "object"}}}
            }},
            "tags": ["Actuator"]
        }},
        "/actuator/health": {"get": {
            "summary": "Actuator web endpoint 'health'",
            "operationId": "health",
            "responses": {"200": {
                "description": "OK",
                "content": {
                    "application/vnd.spring-boot.actuator.v3+json": {"schema": {"type": "object"}},
                    "application/json": {"schema": {"type": "object"}},
                    "application/vnd.spring-boot.actuator.v2+json": {"schema": {"type": "object"}}
                }
            }},
            "tags": ["Actuator"]
        }},
        "/a1-policy/v2/policies": {
            "get": {
                "summary": "Query policy identities",
                "description": "Returns a list of A1 policies matching given search criteria. <br>If several query parameters are defined, the policies matching all conditions are returned.",
                "operationId": "getPolicyIds",
                "responses": {
                    "200": {
                        "description": "Policy identities",
                        "content": {"application/json": {"schema": {"$ref": "#/components/schemas/policy_id_list_v2"}}}
                    },
                    "404": {
                        "description": "Near-RT RIC or type not found",
                        "content": {"application/json": {"schema": {"$ref": "#/components/schemas/error_information"}}}
                    }
                },
                "parameters": [
                    {
                        "schema": {"type": "string"},
                        "in": "query",
                        "name": "policytype_id",
                        "description": "Select policies of a given policy type identity.",
                        "required": false
                    },
                    {
                        "schema": {"type": "string"},
                        "in": "query",
                        "name": "ric_id",
                        "description": "Select policies of a given Near-RT RIC identity.",
                        "required": false
                    },
                    {
                        "schema": {"type": "string"},
                        "in": "query",
                        "name": "service_id",
                        "description": "Select policies owned by a given service.",
                        "required": false
                    },
                    {
                        "schema": {"type": "string"},
                        "in": "query",
                        "name": "type_name",
                        "description": "Select policies of types with the given type name (type identity has the format <typename_version>)",
                        "required": false
                    }
                ],
                "tags": ["A1 Policy Management"]
            },
            "put": {
                "summary": "Create or update a policy",
                "requestBody": {
                    "content": {"application/json": {"schema": {"$ref": "#/components/schemas/policy_info_v2"}}},
                    "required": true
                },
                "operationId": "putPolicy",
                "responses": {
                    "200": {
                        "description": "Policy updated",
                        "content": {"application/json": {"schema": {"$ref": "#/components/schemas/void"}}}
                    },
                    "201": {
                        "description": "Policy created",
                        "content": {"application/json": {"schema": {"$ref": "#/components/schemas/void"}}}
                    },
                    "423": {
                        "description": "Near-RT RIC is not operational",
                        "content": {"application/json": {"schema": {"$ref": "#/components/schemas/error_information"}}}
                    },
                    "404": {
                        "description": "Near-RT RIC or policy type is not found",
                        "content": {"application/json": {"schema": {"$ref": "#/components/schemas/error_information"}}}
                    }
                },
                "tags": ["A1 Policy Management"]
            }
        },
        "/r-app/near-rt-ric-status": {"post": {
            "summary": "Callback for Near-RT RIC status",
            "requestBody": {
                "content": {"application/json": {"schema": {"$ref": "#/components/schemas/service_callback_info_v2"}}},
                "required": true
            },
            "description": "The URL to this call is registered at Service registration.",
            "operationId": "serviceCallback",
            "responses": {"200": {
                "description": "OK",
                "content": {"application/json": {"schema": {"$ref": "#/components/schemas/void"}}}
            }},
            "tags": ["Service callbacks"]
        }},
        "/a1-policy/v2/services/{service_id}": {"delete": {
            "summary": "Unregister a service",
            "operationId": "deleteService",
            "responses": {
                "200": {
                    "description": "Not used",
                    "content": {"*/*": {"schema": {"$ref": "#/components/schemas/void"}}}
                },
                "204": {
                    "description": "Service unregistered",
                    "content": {"*/*": {"schema": {"type": "object"}}}
                },
                "404": {
                    "description": "Service not found",
                    "content": {"*/*": {"schema": {"$ref": "#/components/schemas/error_information"}}}
                }
            },
            "parameters": [{
                "schema": {"type": "string"},
                "in": "path",
                "name": "service_id",
                "required": true
            }],
            "tags": ["Service Registry and Supervision"]
        }},
        "/actuator/heapdump": {"get": {
            "summary": "Actuator web endpoint 'heapdump'",
            "operationId": "heapdump",
            "responses": {"200": {
                "description": "OK",
                "content": {"application/octet-stream": {"schema": {"type": "object"}}}
            }},
            "tags": ["Actuator"]
        }},
        "/a1-policy/v2/policies/{policy_id}/status": {"get": {
            "summary": "Returns a policy status",
            "operationId": "getPolicyStatus",
            "responses": {
                "200": {
                    "description": "Policy status",
                    "content": {"application/json": {"schema": {"$ref": "#/components/schemas/policy_status_info_v2"}}}
                },
                "404": {
                    "description": "Policy is not found",
                    "content": {"application/json": {"schema": {"$ref": "#/components/schemas/error_information"}}}
                }
            },
            "parameters": [{
                "schema": {"type": "string"},
                "in": "path",
                "name": "policy_id",
                "required": true
            }],
            "tags": ["A1 Policy Management"]
        }}
    },
    "info": {
        "license": {
            "name": "Copyright (C) 2020-2023 Nordix Foundation. Licensed under the Apache License.",
            "url": "http://www.apache.org/licenses/LICENSE-2.0"
        },
        "description": "<h2>General<\/h2><p>The O-RAN Non-RT RIC Policy Management Service provides a REST API for management of A1 policies. <br/>The main tasks of the service are:<\/p><ul><li>A1 Policy creation, modification and deletion.<\/li><li>Monitoring and maintaining consistency of the SMO view of A1 policies and the Near-RT RICs<\/li><li>Maintaining a view of supported Near-RT RIC policy types<\/li><li>Supervision of using services (R-APPs). When a service is unavailable, its policies are removed.<\/li><\/ul><h2>APIs provided or defined by the service<\/h2><h3>A1 Policy Management<\/h3><p>This is an API for management of A1 Policies.<\/p><ul><li>A1 Policy retrieval, creation, modification and deletion.<\/li><li>Retrieval of supported A1 Policy types for a Near-RT RIC<\/li><li>Retrieval of status for existing A1 policies<\/li><\/ul><h3>Management of configuration<\/h3><p>API for updating and retrieval of the component configuration. Note that there other ways to maintain the configuration.<\/p><h3>Service callbacks<\/h3><p>These are endpoints that are invoked by this service. The callbacks are registered in this service at service registration.<\/p><h3>NearRT-RIC Repository<\/h3><p>This is an API that provides support for looking up a NearRT-RIC. Each A1 policy is targeted for one Near-RT RIC.<\/p><h3>Health Check<\/h3><p>API used for supervision of the PMS component.<\/p><h3>Service Registry and Supervision<\/h3><p>API used for registering services that uses PMS. Each A1 policy is optionally owned by a service. PMS can supervise each registered service by a heart-beat supervision and will automatically remove policies for unavailable services. Note that a service does not need to be registered in order to create A1 Policies. This is a feature that is optional to use.<\/p><h3>Authorization API<\/h3><p>API used for access control of A1 Policy access. If configured, an external authorization provider is requested to grant access to the A1 Policy type.<\/p><h3>Spring Boot Actuator<\/h3><p>Provides generic functions  used to monitor and manage the Spring web application.<\/p>",
        "title": "A1 Policy Management Service",
        "version": "1.2.0"
    },
    "tags": [
        {
            "name": "Authorization API",
            "description": "API used for authorization of information A1 policy access (this is provided by an authorization producer such as OPA).\nNote that this API is called by PMS, it is not provided.\n"
        },
        {
            "name": "Actuator",
            "description": "Monitor and interact",
            "externalDocs": {
                "description": "Spring Boot Actuator Web API Documentation",
                "url": "https://docs.spring.io/spring-boot/docs/current/actuator-api/html/"
            }
        }
    ]
}