{ "openapi": "3.0.0", "info": { "version": "0.1.0", "title": "OsmoS1GW REST interface" }, "paths": { "/metrics-list": { "get": { "summary": "Get a list of metrics", "operationId": "MetricsList", "parameters": [ { "name": "type", "in": "query", "description": "Metric type", "required": false, "schema": { "type": "string", "enum": [ "all", "counter", "gauge" ], "default": "all" } }, { "name": "path", "in": "query", "description": "Metrics path", "required": false, "schema": { "type": "string", "example": "s1ap.proxy" } } ], "responses": { "200": { "description": "A list of metrics", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MetricsList" } } } }, "404": { "description": "No matching metrics found" } } } }, "/pfcp/assoc": { "get": { "summary": "Get the PFCP association state", "operationId": "PfcpAssocState", "responses": { "200": { "description": "PFCP association state", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PfcpAssocState" } } } } } }, "post": { "summary": "Initiate the PFCP Association Setup procedure", "operationId": "PfcpAssocSetup", "responses": { "200": { "$ref": "#/components/responses/OperationResult" } } }, "delete": { "summary": "Initiate the PFCP Association Release procedure", "operationId": "PfcpAssocRelease", "responses": { "200": { "$ref": "#/components/responses/OperationResult" } } } }, "/pfcp/heartbeat": { "post": { "summary": "Send a PFCP Heartbeat Request to the peer", "operationId": "PfcpHeartbeat", "responses": { "200": { "$ref": "#/components/responses/OperationResult" } } } }, "/enb-list": { "get": { "summary": "Get a list of eNB connections", "operationId": "EnbList", "responses": { "200": { "description": "A list of eNB connections", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EnbList" } } } } } } }, "/enb/{EnbId}": { "get": { "summary": "Get information about a specific eNB", "operationId": "EnbInfo", "parameters": [ { "$ref": "#/components/parameters/EnbId" } ], "responses": { "200": { "description": "Successful outcome (eNB info)", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EnbItem" } } } }, "404": { "description": "Unsuccessful outcome (eNB not found)" } } }, "delete": { "summary": "Force disconnect an eNB", "operationId": "EnbDelete", "parameters": [ { "$ref": "#/components/parameters/EnbId" } ], "responses": { "200": { "description": "Successful outcome (eNB disconnected)" }, "404": { "description": "Unsuccessful outcome (eNB not found)" } } } }, "/enb/{EnbId}/erab-list": { "get": { "summary": "Get E-RAB list for a specific eNB", "operationId": "EnbErabList", "parameters": [ { "$ref": "#/components/parameters/EnbId" } ], "responses": { "200": { "description": "Successful outcome (E-RAB list)", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErabList" } } } }, "404": { "description": "Unsuccessful outcome (eNB not found)" } } } }, "/erab-list": { "get": { "summary": "Get E-RAB list for all eNBs", "operationId": "ErabList", "responses": { "200": { "description": "A list of E-RABs", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErabList" } } } } } } }, "/erab/{ErabId}": { "get": { "summary": "Get information about a specific E-RAB", "operationId": "ErabInfo", "parameters": [ { "$ref": "#/components/parameters/ErabId" } ], "responses": { "200": { "description": "Successful outcome (E-RAB info)", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErabItem" } } } }, "404": { "description": "Unsuccessful outcome (E-RAB not found)" } } }, "delete": { "summary": "Terminate an E-RAB FSM process", "operationId": "ErabDelete", "parameters": [ { "$ref": "#/components/parameters/ErabId" } ], "responses": { "200": { "description": "Successful outcome (E-RAB FSM terminated)" }, "404": { "description": "Unsuccessful outcome (E-RAB not found)" } } } } }, "components": { "responses": { "OperationResult": { "description": "Generic operation result response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OperationResult" } } } } }, "parameters": { "EnbId": { "name": "EnbId", "in": "path", "description": "eNB identifier (selector)", "required": true, "schema": { "oneOf": [ { "type": "string", "pattern": "^handle:[0-9]+$", "description": "Unique identifier in the eNB registry", "example": "handle:42" }, { "type": "string", "pattern": "^pid:[0-9]+\\.[0-9]+\\.[0-9]+$", "description": "Process ID", "example": "pid:0.33.1" }, { "type": "string", "pattern": "^genbid:[0-9]{3}-[0-9]{2,3}-[0-9]+$", "description": "Global-eNB-ID (MCC-MNC-eNBId)", "example": "genbid:999-70-1337" }, { "type": "string", "pattern": "^(enb|mme)-sctp-aid:[0-9]+$", "description": "eNB/MME SCTP association identifier", "example": "enb-aid:42" }, { "type": "string", "pattern": "^enb-conn:[0-9:.]+-[0-9]+$", "description": "eNB connection address/port", "example": "enb-conn:192.168.1.1-34650" } ] } }, "ErabId": { "name": "ErabId", "in": "path", "description": "E-RAB identifier (selector)", "required": true, "schema": { "oneOf": [ { "type": "string", "pattern": "^pid:[0-9]+\\.[0-9]+\\.[0-9]+$", "description": "Process ID", "example": "pid:0.33.1" } ] } } }, "schemas": { "OperationResult": { "type": "object", "required": [ "success" ], "properties": { "success": { "type": "boolean", "description": "Indicates whether the operation was successful" }, "message": { "type": "string", "nullable": true, "description": "Human-readable explanation of the result" } } }, "Pid": { "type": "string", "pattern": "^<[0-9]+\\.[0-9]+\\.[0-9]+>$", "description": "Process ID" }, "MetricsList": { "type": "array", "items": { "$ref": "#/components/schemas/MetricsItem" } }, "MetricsItem": { "type": "object", "required": [ "type", "name", "value" ], "properties": { "type": { "type": "string", "enum": [ "counter", "gauge" ] }, "name": { "type": "string" }, "value": { "type": "integer" } } }, "PfcpAssocState": { "type": "object", "required": [ "state", "laddr", "raddr" ], "properties": { "state": { "type": "string", "enum": [ "connecting", "connected" ], "description": "Current association state" }, "laddr": { "type": "string", "description": "Local (bind) IP address" }, "raddr": { "type": "string", "description": "Remote (connect) IP address" }, "lrts": { "type": "integer", "description": "Local Recovery TimeStamp" }, "rrts": { "type": "integer", "description": "Remote Recovery TimeStamp" } } }, "EnbList": { "type": "array", "items": { "$ref": "#/components/schemas/EnbItem" } }, "EnbItem": { "type": "object", "required": [ "handle", "pid", "state", "uptime", "erab_count" ], "properties": { "handle": { "type": "integer", "description": "Unique number in the eNB registry" }, "pid": { "$ref": "#/components/schemas/Pid" }, "state": { "type": "string", "enum": [ "connecting", "connected", "s1setup" ], "description": "Connection state" }, "uptime": { "type": "integer", "description": "Uptime (in seconds)" }, "erab_count": { "type": "integer", "description": "Total number of E-RABs" }, "genb_id": { "type": "string", "pattern": "^[0-9]{3}-[0-9]{2,3}-[0-9]+$", "example": "001-01-1337", "description": "Global-eNB-ID" }, "enb_saddr": { "type": "string", "description": "Source (remote) address of the eNB" }, "mme_daddr": { "type": "string", "description": "Destination (remote) address of the MME" }, "enb_sport": { "type": "integer", "description": "Source (remote) port of the eNB-S1GW connection" }, "mme_sport": { "type": "integer", "description": "Source (local) port of the S1GW-MME connection" }, "mme_dport": { "type": "integer", "description": "Destination (remote) port of the S1GW-MME connection" }, "enb_sctp_aid": { "type": "integer", "description": "SCTP association identifier of the eNB-S1GW connection" }, "mme_sctp_aid": { "type": "integer", "description": "SCTP association identifier of the S1GW-MME connection" } } }, "ErabList": { "type": "array", "items": { "$ref": "#/components/schemas/ErabItem" } }, "FTEID": { "type": "object", "required": [ "teid", "tla" ], "properties": { "teid": { "type": "integer", "description": "GTP-U TEID" }, "tla": { "type": "string", "description": "GTP-U TLA (Transport Layer Address)" } } }, "ErabItem": { "type": "object", "required": [ "mme_ue_id", "erab_id", "state", "pid" ], "properties": { "mme_ue_id": { "type": "integer", "description": "MME-UE-S1AP-ID" }, "erab_id": { "type": "integer", "description": "E-RAB-ID" }, "state": { "type": "string", "description": "E-RAB FSM state", "example": "erab_wait_release_rsp" }, "pid": { "type": "string", "pattern": "^<[0-9]+\\.[0-9]+\\.[0-9]+>$", "description": "E-RAB FSM process ID" }, "pfcp_lseid": { "type": "integer", "description": "PFCP SEID (local)" }, "pfcp_rseid": { "type": "integer", "description": "PFCP SEID (remote)" }, "f_teid_u2c": { "$ref": "#/components/schemas/FTEID", "description": "GTP-U F-TEID for UPF -> Core" }, "f_teid_c2u": { "$ref": "#/components/schemas/FTEID", "description": "GTP-U F-TEID for UPF <- Core" }, "f_teid_a2u": { "$ref": "#/components/schemas/FTEID", "description": "GTP-U F-TEID for UPF <- Access" }, "f_teid_u2a": { "$ref": "#/components/schemas/FTEID", "description": "GTP-U F-TEID for UPF -> Access" } } } } } }