{ "swagger": "2.0", "info": { "description": "An initial attempt to describe the MEC Bandwidth Management API using OpenAPI", "version": "0.3.3", "title": "Bandwidth Management API", "termsOfService": "TBD", "contact": { "name": "TBD", "url": "TBD" }, "license": { "name": "ETSI MEC", "url": "TBD" } }, "externalDocs": { "description": "ETSI MEC015 V0.3.3 Bandwidth Management API", "url": "https://docbox.etsi.org/ISG/MEC/70-Draft/0015BandMngtAPI" }, "host": "127.0.0.1:8081", "basePath": "/bwm/v1", "schemes": [ "http", "https" ], "consumes": [ "application/json" ], "produces": [ "application/json" ], "security": [ { "OauthSecurity": [ "all" ] } ], "securityDefinitions": { "OauthSecurity": { "type": "oauth2", "flow": "application", "tokenUrl": "https://oauth.exampleAPI/token", "scopes": { "all": "Single oauth2 scope for API" } } }, "parameters": { "Body.BwInfo": { "name": "bwInfo", "in": "body", "description": "BwInfo with updated information is included as entity body of the request", "required": true, "schema": { "$ref": "#/definitions/BwInfo" } }, "Body.BwInfoDeltas": { "name": "bwInfoDeltas", "in": "body", "description": "Description of the changes to instruct the server how to modify the resource representation. ", "required": true, "schema": { "$ref": "#/definitions/BwInfoDeltas" } }, "Path.AllocationId": { "name": "allocationId", "in": "path", "description": "Represents a bandwidth allocation instance", "required": true, "type": "string" }, "Query.AppInstanceId": { "name": "app_instance_id", "in": "query", "description": "A mobile edge application instance may use multiple app_instance_ids as an input parameter to query the bandwidth allocation of a list of mobile edge application instances. ", "required": false, "type": "array", "items": { "type": "string" } }, "Query.AppName": { "name": "app_name", "in": "query", "description": "A mobile edge application instance may use multiple ser_names as an input parameter to query the bandwidth allocation of a list of mobile edge application instances. ", "required": false, "type": "array", "items": { "type": "string" } }, "Query.SessionId": { "name": "session_id", "in": "query", "description": "A mobile edge application instance may use session_id as an input parameter to query the bandwitdth allocation of a list of sessions. ", "required": false, "type": "array", "items": { "type": "string" } } }, "paths": { "/bw_allocations": { "get": { "description": "This method retrieves information about a list of bandwidthAllocation resources", "produces": [ "application/json" ], "parameters": [ { "$ref": "#/parameters/Query.AppInstanceId" }, { "$ref": "#/parameters/Query.AppName" }, { "$ref": "#/parameters/Query.SessionId" } ], "responses": { "200": { "description": "Upon success, a response body containing an array of the bandwidthAllocations is returned.", "schema": { "required": [ "bwInfo" ], "properties": { "bwInfo": { "$ref": "#/definitions/BwInfo" } } } }, "400": { "description": "It is used to indicate that incorrect parameters were passed to the request. In the returned ProblemDetails structure, the \"detail\" attribute should convey more information about the error.", "schema": { "properties": { "ProblemDetails": { "$ref": "#/definitions/ProblemDetails" } } } }, "403": { "description": "The operation is not allowed given the current status of the resource. More information should be provided in the \"detail\" attribute of the \"ProblemDetails\" structure.", "schema": { "required": [ "ProblemDetails" ], "properties": { "ProblemDetails": { "$ref": "#/definitions/ProblemDetails" } } } }, "404": { "description": "It is used when a client provided a URI that cannot be mapped to a valid resource URI. In the returned ProblemDetails structure, the \"detail\" attribute should convey more information about the error.", "schema": { "properties": { "ProblemDetails": { "$ref": "#/definitions/ProblemDetails" } } } } } }, "post": { "description": "This method is used to create a bandwidthAllocation resource.", "produces": [ "application/json" ], "parameters": [ { "$ref": "#/parameters/Body.BwInfo" } ], "responses": { "201": { "description": "Upon success, the HTTP response shall include a \"Location\" HTTP header that contains the resource URI of the created resource.", "schema": { "required": [ "bwInfo" ], "properties": { "bwInfo": { "$ref": "#/definitions/BwInfo" } } } }, "400": { "description": "It is used to indicate that incorrect parameters were passed to the request. In the returned ProblemDetails structure, the \"detail\" attribute should convey more information about the error.", "schema": { "properties": { "ProblemDetails": { "$ref": "#/definitions/ProblemDetails" } } } }, "403": { "description": "The operation is not allowed given the current status of the resource. More information should be provided in the \"detail\" attribute of the \"ProblemDetails\" structure.", "schema": { "required": [ "ProblemDetails" ], "properties": { "ProblemDetails": { "$ref": "#/definitions/ProblemDetails" } } } }, "404": { "description": "TIt is used when a client provided a URI that cannot be mapped to a valid resource URI. In the returned ProblemDetails structure, the \"detail\" attribute should convey more information about the error.", "schema": { "properties": { "ProblemDetails": { "$ref": "#/definitions/ProblemDetails" } } } } } } }, "/bw_allocations/{allocationId}": { "get": { "description": "This method retrieves information about a a bandwidthAllocation resource. ", "produces": [ "application/json" ], "parameters": [ { "$ref": "#/parameters/Path.AllocationId" } ], "responses": { "200": { "description": "It is used to indicate nonspecific success. The response body contains a representation of the resource.", "schema": { "required": [ "bwInfo" ], "properties": { "bwInfo": { "$ref": "#/definitions/BwInfo" } } } }, "400": { "description": "It is used to indicate that incorrect parameters were passed to the request. In the returned ProblemDetails structure, the \"detail\" attribute should convey more information about the error.", "schema": { "properties": { "ProblemDetails": { "$ref": "#/definitions/ProblemDetails" } } } }, "403": { "description": "The operation is not allowed given the current status of the resource. More information shall be provided in the \"detail\" attribute of the \"ProblemDetails\" structure. required:\n - ProblemDetails\nproperties:\n ProblemDetails:\n $ref: '#/definitions/ProblemDetails'" }, "404": { "description": "It is used when a client provided a URI that cannot be mapped to a valid resource URI. In the returned ProblemDetails structure, the \"detail\" attribute should convey more information about the error.", "schema": { "properties": { "ProblemDetails": { "$ref": "#/definitions/ProblemDetails" } } } } } }, "put": { "description": "This method updates the information about a bandwidthAllocation resource. ", "produces": [ "application/json" ], "parameters": [ { "$ref": "#/parameters/Path.AllocationId" }, { "$ref": "#/parameters/Body.BwInfo" } ], "responses": { "200": { "description": "Upon success, a response body containing data type describing the updated BwInfo is returned.", "schema": { "required": [ "bwInfo" ], "properties": { "bwInfo": { "$ref": "#/definitions/BwInfo" } } } }, "400": { "description": "It is used to indicate that incorrect parameters were passed to the request. In the returned ProblemDetails structure, the \"detail\" attribute should convey more information about the error.", "schema": { "properties": { "ProblemDetails": { "$ref": "#/definitions/ProblemDetails" } } } }, "403": { "description": "The operation is not allowed given the current status of the resource. More information shall be provided in the \"detail\" attribute of the \"ProblemDetails\" structure.", "schema": { "required": [ "ProblemDetails" ], "properties": { "ProblemDetails": { "$ref": "#/definitions/ProblemDetails" } } } }, "404": { "description": "It is used when a client provided a URI that cannot be mapped to a valid resource URI. In the returned ProblemDetails structure, the \"detail\" attribute should convey more information about the error.", "schema": { "properties": { "ProblemDetails": { "$ref": "#/definitions/ProblemDetails" } } } }, "412": { "description": "It is used when a condition has failed during conditional requests, e.g. when using ETags to avoid write conflicts. In the returned ProblemDetails structure, the \"detail\" attribute should convey more information about the error.", "schema": { "properties": { "ProblemDetails": { "$ref": "#/definitions/ProblemDetails" } } } } } }, "patch": { "description": "This method updates the information about a bandwidthAllocation resource. ", "produces": [ "application/json" ], "parameters": [ { "$ref": "#/parameters/Path.AllocationId" }, { "$ref": "#/parameters/Body.BwInfoDeltas" } ], "responses": { "200": { "description": "Upon success, a response body containing data type describing the updated BwInfo is returned.", "schema": { "required": [ "bwInfo" ], "properties": { "bwInfo": { "$ref": "#/definitions/BwInfo" } } } }, "400": { "description": "It is used to indicate that incorrect parameters were passed to the request. In the returned ProblemDetails structure, the \"detail\" attribute should convey more information about the error.", "schema": { "properties": { "ProblemDetails": { "$ref": "#/definitions/ProblemDetails" } } } }, "403": { "description": "The operation is not allowed given the current status of the resource. More information shall be provided in the \"detail\" attribute of the \"ProblemDetails\" structure.", "schema": { "required": [ "ProblemDetails" ], "properties": { "ProblemDetails": { "$ref": "#/definitions/ProblemDetails" } } } }, "404": { "description": "It is used when a client provided a URI that cannot be mapped to a valid resource URI. In the returned ProblemDetails structure, the \"detail\" attribute should convey more information about the error.", "schema": { "properties": { "ProblemDetails": { "$ref": "#/definitions/ProblemDetails" } } } }, "412": { "description": "It is used when a condition has failed during conditional requests, e.g. when using ETags to avoid write conflicts. In the returned ProblemDetails structure, the \"detail\" attribute should convey more information about the error.", "schema": { "properties": { "ProblemDetails": { "$ref": "#/definitions/ProblemDetails" } } } } } }, "delete": { "description": "DELETE method is typically used in \"Unregister from Bandwidth Management Service \" procedure", "produces": [ "application/json" ], "parameters": [ { "$ref": "#/parameters/Path.AllocationId" } ], "responses": { "204": { "description": "No Content" }, "403": { "description": "The operation is not allowed given the current status of the resource. More information shall be provided in the \"detail\" attribute of the \"ProblemDetails\" structure.", "schema": { "required": [ "ProblemDetails" ], "properties": { "ProblemDetails": { "$ref": "#/definitions/ProblemDetails" } } } }, "404": { "description": "It is used when a client provided a URI that cannot be mapped to a valid resource URI. In the returned ProblemDetails structure, the \"detail\" attribute should convey more information about the error.", "schema": { "properties": { "ProblemDetails": { "$ref": "#/definitions/ProblemDetails" } } } } } } } }, "definitions": { "ProblemDetails": { "type": "object", "properties": { "type": { "$ref": "#/definitions/Problem.type" }, "title": { "$ref": "#/definitions/Problem.title" }, "status": { "$ref": "#/definitions/Problem.status" }, "detail": { "$ref": "#/definitions/Problem.detail" }, "instance": { "$ref": "#/definitions/Problem.instance" } } }, "Problem.type": { "type": "string", "format": "uri", "description": "A URI reference according to IETF RFC 3986 that identifies the problem type" }, "Problem.title": { "type": "string", "description": "A short, human-readable summary of the problem type" }, "Problem.status": { "type": "integer", "format": "uint32", "description": "The HTTP status code for this occurrence of the problem" }, "Problem.detail": { "type": "string", "description": "A human-readable explanation specific to this occurrence of the problem" }, "Problem.instance": { "type": "string", "format": "uri", "description": "A URI reference that identifies the specific occurrence of the problem" }, "BwInfo": { "description": "information of bandwidth resource", "type": "object", "required": [ "appInsId", "requestType", "fixedAllocation", "allocationDirection" ], "properties": { "timeStamp": { "$ref": "#/definitions/TimeStamp" }, "appInsId": { "$ref": "#/definitions/AppInsId" }, "requestType": { "$ref": "#/definitions/RequestType" }, "sessionFilter": { "$ref": "#/definitions/SessionFilter" }, "fixedBWPriority": { "$ref": "#/definitions/FixedBWPriority" }, "fixedAllocation": { "$ref": "#/definitions/FixedAllocation" }, "allocationDirection": { "$ref": "#/definitions/AllocationDirection" } } }, "BwInfoDeltas": { "description": "Conform to JSON merge patch format and processing rules specified IETF RFC 7396 [8], this type represents the attributes whose value are allowed to be updated with HTTP PATCH method in content format JSON", "type": "object", "properties": { "appInsId": { "$ref": "#/definitions/AppInsId" }, "requestType": { "$ref": "#/definitions/RequestType" }, "sessionFilter": { "$ref": "#/definitions/SessionFilter" }, "fixedBWPriority": { "$ref": "#/definitions/FixedBWPriority" }, "fixedAllocation": { "$ref": "#/definitions/FixedAllocation" }, "allocationDirection": { "$ref": "#/definitions/AllocationDirection" } } }, "TimeStamp": { "type": "object", "required": [ "seconds", "nanoSeconds" ], "properties": { "seconds": { "$ref": "#/definitions/Seconds" }, "nanoSeconds": { "$ref": "#/definitions/NanoSeconds" } } }, "AppInsId": { "description": "application instance identifier", "type": "string" }, "RequestType": { "type": "string", "enum": [ "APPLICATION_SPECIFIC_BW_ALLOCATION", "SESSION_SPECIFIC_BW_ALLOCATION" ] }, "SessionFilter": { "description": "Session filtering criteria, applicable whenWhen requestType is from type session specific:set as SESSION_SPECIFIC_BW_ALLOCATION Session filtering criteria. Any filtering criteria should suite shall define a single session only. In case multiple sessions match sessionFilterof suitable multiple sessions the request should shall be rejected", "type": "array", "items": { "type": "object", "properties": { "sourceIp": { "$ref": "#/definitions/SourceIp" }, "sourcePort": { "$ref": "#/definitions/SourcePort" }, "dstAddress": { "$ref": "#/definitions/DstAddress" }, "dstPort": { "$ref": "#/definitions/DstPort" }, "protocol": { "$ref": "#/definitions/Protocol" } } } }, "FixedBWPriority": { "description": "Indicates the allocation priority when dealing with several applications or sessions in parallel. Values are not defined in the present document", "type": "string", "enum": [ "not defined in the present document" ] }, "FixedAllocation": { "description": "Size of requested fixed BW allocation in [bps]", "type": "string" }, "AllocationDirection": { "description": "The direction of the requested BW allocation", "type": "string", "enum": [ "00 = Downlink (towards the UE)", "01 = Uplink (towards the application/session)", "10 = symmetrical" ] }, "Seconds": { "description": "The seconds part of the Time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC", "type": "integer", "format": "uint32" }, "NanoSeconds": { "description": "Time in nanoseconds in Unix-time since January 1, 1970, 00:00:00 UTC", "type": "integer", "format": "uint32" }, "SourceIp": { "description": "Source address identity of session (including range)", "type": "string" }, "SourcePort": { "description": "Source port identity of session ", "type": "array", "items": { "type": "string" } }, "DstAddress": { "description": "Destination address identity of session (including range)", "type": "string" }, "DstPort": { "description": "Destination port identity of session ", "type": "array", "items": { "type": "string" } }, "Protocol": { "description": "Protocol number", "type": "string" } } }