From 898362c709a045492f580b9be358fd34a5bdce4a Mon Sep 17 00:00:00 2001
From: Eric Murray <77291605+eric-murray@users.noreply.github.com>
Date: Wed, 19 Apr 2023 23:40:01 +0100
Subject: [PATCH 01/16] Update qod-api.yaml
---
code/API_definitions/qod-api.yaml | 60 +++++++++++++++++++++++++++----
1 file changed, 53 insertions(+), 7 deletions(-)
diff --git a/code/API_definitions/qod-api.yaml b/code/API_definitions/qod-api.yaml
index 1bf2180471..b41b75645b 100644
--- a/code/API_definitions/qod-api.yaml
+++ b/code/API_definitions/qod-api.yaml
@@ -81,11 +81,11 @@ paths:
code: INVALID_ARGUMENT
message: "Expected property is missing: device.ipv4Address or device.ipv6Address"
DevicePortsRequired:
- summary: devicePorts is required
+ summary: devicePublicPorts is required
value:
status: 400
code: INVALID_ARGUMENT
- message: "Expected property is missing: devicePorts"
+ message: "Expected property is missing: devicePublicPorts"
QoSProfileRequired:
summary: qosProfile is required
value:
@@ -97,7 +97,7 @@ paths:
value:
status: 400
code: INVALID_ARGUMENT
- message: "Ranges not allowed: devicePorts"
+ message: "Ranges not allowed: devicePublicPorts"
"401":
$ref: "#/components/responses/Generic401"
"403":
@@ -223,6 +223,7 @@ components:
type: string
format: uuid
description: Session ID in UUID format
+
SessionInfo:
description: Session related information.
allOf:
@@ -253,6 +254,7 @@ components:
type: array
items:
$ref: "#/components/schemas/Message"
+
CreateSession:
description: Data type with attributes required for creating a session
type: object
@@ -274,7 +276,7 @@ components:
$ref: "#/components/schemas/Device"
applicationServer:
$ref: "#/components/schemas/ApplicationServer"
- devicePorts:
+ deviceAllocatedPorts:
$ref: "#/components/schemas/PortsSpec"
applicationServerPorts:
$ref: "#/components/schemas/PortsSpec"
@@ -293,10 +295,12 @@ components:
- device
- applicationServer
- qosProfile
+
Port:
type: integer
minimum: 0
maximum: 65535
+
PortsSpec:
type: object
minProperties: 1
@@ -328,6 +332,7 @@ components:
- 5070
description: |
Ports may be specified as a list of ranges or single ports.
+
QosProfile:
type: string
enum:
@@ -401,10 +406,11 @@ components:
networkAccessIdentifier:
$ref: "#/components/schemas/NetworkAccessIdentifier"
ipv4Address:
- $ref: "#/components/schemas/Ipv4Address"
+ $ref: "#/components/schemas/DeviceIpv4Addr"
ipv6Address:
$ref: "#/components/schemas/Ipv6Address"
- description: Device identifier
+ description: One or more parameters allocated to the device that allow it to be identified
+
ApplicationServer:
type: object
minProperties: 1
@@ -414,14 +420,50 @@ components:
ipv6Address:
$ref: "#/components/schemas/Ipv6Address"
description: Application server identifier
+
NetworkAccessIdentifier:
type: string
example: "123456789@domain.com"
+
PhoneNumber:
type: string
pattern: '^\+?[0-9]{5,15}$'
example: "123456789"
- description: Subscriber number in E.164 format (starting with country code). Optionally prefixed with '+'.
+ description: Subscriber number (MSISDN) in E.164 format, starting with country code and ptionally prefixed with '+'.
+
+ DeviceIpv4Addr:
+ type: object
+ properties:
+ publicAddress:
+ $ref: "#/components/schemas/SingleIpv4Addr"
+ privateAddress:
+ $ref: "#/components/schemas/SingleIpv4Addr"
+ publicPort:
+ $ref: "#/components/schemas/Port"
+ oneOf:
+ - required: [publicAddress, privateAddress]
+ - required: [publicAddress, publicPort]
+ example:
+ {
+ "publicAddress": "84.125.93.10",
+ "publicPort" : 59765
+ }
+ description: |
+ The device should be identified by either the public (observered) IP address and port as seen by the application server, or the private (local) and any public (observed) IP addresses in use by the device (this information can be obtained by various means, for example from some DNS servers).
+
+ If the allocated and observed IP addresses are the same (i.e. NAT is not in use) then the same address should be specified for both publicAddress and privateAddress.
+
+ If NAT64 is in use, the device should be idetified by its publicAddress and publicPort, or separately by its allocated IPv6 address (field ipv6Address of the Device object)
+
+ In all cases, publicAddress must be specified, along with at least one of either privateAddress or publicPort, dependent upon which is known. In general, mobile devices cannot be identified by their public IPv4 address alone.
+
+ SingleIpv4Addr:
+ type: string
+ format: ipv4
+ description: A single IPv4 address with no subnet mask
+ example: "84.125.93.10"
+ pattern: '^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])$'
+
Ipv4Address:
type: string
format: ipv4
@@ -432,6 +474,7 @@ components:
- address - an IPv4 number in dotted-quad form 1.2.3.4. Only this exact IP number will match the flow control rule.
- address/mask - an IP number as above with a mask width of the form 1.2.3.4/24.
In this case, all IP numbers from 1.2.3.0 to 1.2.3.255 will match. The bit width MUST be valid for the IP version.
+
Ipv6Address:
type: string
format: ipv6
@@ -447,6 +490,7 @@ components:
- address/mask - an IP v6 number with a mask:
- 2001:db8:85a3:8d3::0/64
- 2001:db8:85a3:8d3::/64
+
Message:
type: object
properties:
@@ -460,6 +504,7 @@ components:
required:
- severity
- description
+
QosStatus:
type: string
enum:
@@ -470,6 +515,7 @@ components:
* `REQUESTED` - QoS has been requested by creating a session
* `AVAILABLE` - The requested QoS has been provided by the network
* `UNAVAILABLE` - The requested QoS cannot be provided by the network due to some reason
+
ErrorInfo:
type: object
required:
From 0968d7950b5bf85ecbf3926d45cfaa6750ddf34b Mon Sep 17 00:00:00 2001
From: Eric Murray <77291605+eric-murray@users.noreply.github.com>
Date: Wed, 19 Apr 2023 23:41:59 +0100
Subject: [PATCH 02/16] Update qod-api.yaml
---
code/API_definitions/qod-api.yaml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/code/API_definitions/qod-api.yaml b/code/API_definitions/qod-api.yaml
index b41b75645b..086f38f546 100644
--- a/code/API_definitions/qod-api.yaml
+++ b/code/API_definitions/qod-api.yaml
@@ -85,7 +85,7 @@ paths:
value:
status: 400
code: INVALID_ARGUMENT
- message: "Expected property is missing: devicePublicPorts"
+ message: "Expected property is missing: deviceAllocatedPorts"
QoSProfileRequired:
summary: qosProfile is required
value:
@@ -97,7 +97,7 @@ paths:
value:
status: 400
code: INVALID_ARGUMENT
- message: "Ranges not allowed: devicePublicPorts"
+ message: "Ranges not allowed: deviceAllocatedPorts"
"401":
$ref: "#/components/responses/Generic401"
"403":
From d539627d7aa8c7c3200f79bac0a584c7e5296c5e Mon Sep 17 00:00:00 2001
From: Eric Murray <77291605+eric-murray@users.noreply.github.com>
Date: Wed, 19 Apr 2023 23:42:46 +0100
Subject: [PATCH 03/16] Update qod-api.yaml
---
code/API_definitions/qod-api.yaml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/code/API_definitions/qod-api.yaml b/code/API_definitions/qod-api.yaml
index 086f38f546..4a1bcb718c 100644
--- a/code/API_definitions/qod-api.yaml
+++ b/code/API_definitions/qod-api.yaml
@@ -81,7 +81,7 @@ paths:
code: INVALID_ARGUMENT
message: "Expected property is missing: device.ipv4Address or device.ipv6Address"
DevicePortsRequired:
- summary: devicePublicPorts is required
+ summary: deviceAllocatedPorts is required
value:
status: 400
code: INVALID_ARGUMENT
From 286c5b0df3757ae476707be27b89b8ac481fbbff Mon Sep 17 00:00:00 2001
From: Eric Murray <77291605+eric-murray@users.noreply.github.com>
Date: Thu, 20 Apr 2023 11:25:53 +0100
Subject: [PATCH 04/16] Update qod-api.yaml
- Schema objects DeviceIpv4Addr and SingleIpv4Addr defined
- Device property ipv4Address now of type DeviceIpv4Addr
- CreateSession property devicePorts renamed deviceAllocatedPorts
- Updated error message definitions
- Minor format changes
---
code/API_definitions/qod-api.yaml | 50 +++++++++++++++++++------------
1 file changed, 31 insertions(+), 19 deletions(-)
diff --git a/code/API_definitions/qod-api.yaml b/code/API_definitions/qod-api.yaml
index 4a1bcb718c..1f028cd453 100644
--- a/code/API_definitions/qod-api.yaml
+++ b/code/API_definitions/qod-api.yaml
@@ -57,47 +57,59 @@ paths:
$ref: "#/components/schemas/ErrorInfo"
examples:
Generic400:
- summary: Schema validation failed
+ summary: Some parameter combinations or parameter values provided are not schema compliant
value:
status: 400
code: INVALID_ARGUMENT
message: "Schema validation failed at ..."
- PhoneNumberRequired:
- summary: Phone number is required as part of device
+ DeviceMissing:
+ summary: Device must be specified
value:
status: 400
code: INVALID_ARGUMENT
- message: "Expected property is missing: device.phoneNumber"
- Ipv4AddressRequired:
- summary: ipv4Address is required as part of device
+ message: "Expected property is missing: device"
+ InsufficientProperties:
+ summary: Device must be identified by at least one parameter
value:
status: 400
code: INVALID_ARGUMENT
- message: "Expected property is missing: device.ipv4Address"
- IpAddressRequired:
- summary: Some IP address is required as part of device
+ message: "Insufficient properties specified: device"
+ InconsistentProperties:
+ summary: Device parameters provided identify different devices
value:
status: 400
code: INVALID_ARGUMENT
- message: "Expected property is missing: device.ipv4Address or device.ipv6Address"
- DevicePortsRequired:
- summary: deviceAllocatedPorts is required
+ message: "Multiple inconsistent parameters specified: device"
+ CabnnotIdentifiedDevice:
+ summary: No device can be identified from provided parameters
value:
status: 400
code: INVALID_ARGUMENT
- message: "Expected property is missing: deviceAllocatedPorts"
- QoSProfileRequired:
- summary: qosProfile is required
+ message: "Unable to identify device from specified parameters: device"
+ InvalidDeviceOublicPortsRanges:
+ summary: Invalid port specified for device public port
+ value:
+ status: 400
+ code: OUT_OF_RANGE
+ message: "Invalid port range specified: device.ipv4Address.publicPort"
+ ApplicationServerMissing:
+ summary: Application server must be specified
value:
status: 400
code: INVALID_ARGUMENT
- message: "Expected property is missing: qosProfile"
- DevicePortsRangesNotAllowed:
- summary: Ranges at devicePorts are not allowed
+ message: "Expected property is missing: applicationServer"
+ QoSProfileMissing:
+ summary: Required QoS profile must be specified
value:
status: 400
code: INVALID_ARGUMENT
- message: "Ranges not allowed: deviceAllocatedPorts"
+ message: "Expected property is missing: qosProfile"
+ InvalidDeviceAllocatedPortsRanges:
+ summary: Invalid port ranges specified for deviceAllocatedPorts
+ value:
+ status: 400
+ code: OUT_OF_RANGE
+ message: "Invalid port ranges specified: deviceAllocatedPorts"
"401":
$ref: "#/components/responses/Generic401"
"403":
From 0ae46ba75c14c22a77e1d8f2e16ac768b4ac6e81 Mon Sep 17 00:00:00 2001
From: Eric Murray <77291605+eric-murray@users.noreply.github.com>
Date: Thu, 20 Apr 2023 11:48:59 +0100
Subject: [PATCH 05/16] Update qod-api.yaml
Fix error message InvalidDevicePublicPortValue
---
code/API_definitions/qod-api.yaml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/code/API_definitions/qod-api.yaml b/code/API_definitions/qod-api.yaml
index 1f028cd453..bd2f479f32 100644
--- a/code/API_definitions/qod-api.yaml
+++ b/code/API_definitions/qod-api.yaml
@@ -86,12 +86,12 @@ paths:
status: 400
code: INVALID_ARGUMENT
message: "Unable to identify device from specified parameters: device"
- InvalidDeviceOublicPortsRanges:
+ InvalidDevicePublicPortValue:
summary: Invalid port specified for device public port
value:
status: 400
code: OUT_OF_RANGE
- message: "Invalid port range specified: device.ipv4Address.publicPort"
+ message: "Invalid port value specified: device.ipv4Address.publicPort"
ApplicationServerMissing:
summary: Application server must be specified
value:
From cced4522ae738443bb14a0f7137562bceb200a4a Mon Sep 17 00:00:00 2001
From: Eric Murray <77291605+eric-murray@users.noreply.github.com>
Date: Thu, 20 Apr 2023 12:07:13 +0100
Subject: [PATCH 06/16] Update QoD_API.md
Updated documentation for change in identifying devices by IPv4 address
---
documentation/API_documentation/QoD_API.md | 34 +++++++++++++---------
1 file changed, 20 insertions(+), 14 deletions(-)
diff --git a/documentation/API_documentation/QoD_API.md b/documentation/API_documentation/QoD_API.md
index 44c72c536e..2b3bb95638 100644
--- a/documentation/API_documentation/QoD_API.md
+++ b/documentation/API_documentation/QoD_API.md
@@ -27,7 +27,7 @@ Security access keys such as OAuth 2.0 client credentials used by client applica
Latency or throughput requirements of the application mapped to relevant QoS profile class.
**Identifier for the device**
-At least one identifier for the device (user equipment) out of four options: IPv4 address, IPv6 address, Phone number, or Network Access Identifier [[5]](#5) assigned by the mobile network operator for the device.
+At least one identifier for the device (user equipment) out of four options: IPv4 address (either public IP address and port, or public and private IP address), IPv6 address, Phone number, or Network Access Identifier [[5]](#5) assigned by the mobile network operator for the device.
**Identifier for the application server**
IPv4 and/or IPv6 address of the application server (application backend)
@@ -117,12 +117,12 @@ Following table defines API endpoints of exposed REST based for QoD management o
The identifier for the device (user equipment). The developer can choose to provide the below specified device identifiers:
- - ipv4Address: IPv4 address (supports mask) e.g. 192.168.0.1/24
- - ipv6Address: IPv6 address (supports mask) e.g. 2001:db8:85a3:8d3:1319:8a2e:370:7344
- - phoneNumber (including country code and optionally could be prefixed by "+" sign) e.g. 004912345678923
- - networkAccessIdentifier [5] assigned by the mobile network operator (MNO) for the device. e.g. 123456789@domain.com
+ - ipv4Address: Either public IPv4 address and port e.g. 84.125.93.10:59765, or public and private IPv4 addresses e.g. 192.168.0.1 & 84.125.93.10. The public IPv4 address alone is generally insufficient to identify the device. Subnet masks are not necessary or supported.
+ - ipv6Address: IPv6 address (supports mask) e.g. 2001:db8:85a3:8d3:1319:8a2e:370:7344
+ - phoneNumber: The device phone number, including country code and optionally prefixed by a "+" sign, e.g. 004912345678923
+ - networkAccessIdentifier [5] assigned by the mobile network operator (MNO) for the device. e.g. 123456789@domain.com
- NOTE: the MNO might support only a subset of these options. The API invoker can provide multiple identifiers to be compatible across different MNOs. In this case the identifiers MUST belong to the same device
+ NOTE: The MNO might support only a subset of these options. The API invoker can provide multiple identifiers to be compatible across different MNOs. In this case the identifiers MUST identify the same device
|
@@ -136,8 +136,8 @@ Following table defines API endpoints of exposed REST based for QoD management o
- devicePorts (optional) |
- A list of single ports or port ranges on the device, e.g. "devicePorts": {"ranges": [{"from": 5010,"to": 5020}],"ports": [5060,5070]} |
+ deviceAllocatedPorts (optional) |
+ A list of single source ports or source port ranges used directly by the device (i.e. not the public or NATed port(s)), e.g. "deviceAllocatedPorts": {"ranges": [{"from": 5010,"to": 5020}],"ports": [5060,5070]} |
applicationServerPorts (optional) |
@@ -176,6 +176,9 @@ Following table defines API endpoints of exposed REST based for QoD management o
400: Invalid input |
+
+ 400: Out of range |
+
401: Un-authorized |
@@ -317,12 +320,15 @@ Following table provides an overview of common error names, codes, and messages
| No | Error Name | Error Code | Error Message |
| --- | ---------- | ---------- | ------------- |
-|1 |400 | INVALID_INPUT | "Expected property is missing: device.msisdn" |
-|2 |400 | INVALID_INPUT | "Expected property is missing: device.ipv4Address" |
-|3 |400 | INVALID_INPUT | "Expected property is missing: device.ipv4Address or device.ipv6Address" |
-|4 |400 | INVALID_INPUT | "Expected property is missing: devicePorts" |
-|5 |400 | INVALID_INPUT | "Expected property is missing: qosProfile" |
-|6 |400 | INVALID_INPUT | "Ranges not allowed: devicePorts" |
+|1 |400 | INVALID_ARGUMENT | "Schema validation failed at ..." |
+|2 |400 | INVALID_ARGUMENT | "Expected property is missing: device" |
+|3 |400 | INVALID_ARGUMENT | "Insufficient properties specified: device" |
+|4 |400 | INVALID_ARGUMENT | "Multiple inconsistent parameters specified: device" |
+|5 |400 | INVALID_ARGUMENT | "Unable to identify device from specified parameters: device" |
+|6 |400 | INVALID_ARGUMENT | "Expected property is missing: applicationServer" |
+|7 |400 | INVALID_ARGUMENT | "Expected property is missing: qosProfile" |
+|8 |400 | OUT_OF_RANGE | "Invalid port value specified: device.ipv4Address.publicPort" |
+|9 |400 | OUT_OF_RANGE | "Invalid port ranges specified: deviceAllocatedPorts" |
|7 |401 | UNAUTHORIZED | "No authorization to invoke operation" |
|8 |403 | FORBIDDEN | "Operation not allowed" |
|9 |404 | NOT_FOUND | "Session Id does not exist" |
From 510ebd836cc562f032740f00cf619a7027bfdbaa Mon Sep 17 00:00:00 2001
From: Eric Murray <77291605+eric-murray@users.noreply.github.com>
Date: Thu, 20 Apr 2023 12:08:36 +0100
Subject: [PATCH 07/16] Update QoD_API.md
Fixed error table numbering
---
documentation/API_documentation/QoD_API.md | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/documentation/API_documentation/QoD_API.md b/documentation/API_documentation/QoD_API.md
index 2b3bb95638..b4010e381d 100644
--- a/documentation/API_documentation/QoD_API.md
+++ b/documentation/API_documentation/QoD_API.md
@@ -329,13 +329,13 @@ Following table provides an overview of common error names, codes, and messages
|7 |400 | INVALID_ARGUMENT | "Expected property is missing: qosProfile" |
|8 |400 | OUT_OF_RANGE | "Invalid port value specified: device.ipv4Address.publicPort" |
|9 |400 | OUT_OF_RANGE | "Invalid port ranges specified: deviceAllocatedPorts" |
-|7 |401 | UNAUTHORIZED | "No authorization to invoke operation" |
-|8 |403 | FORBIDDEN | "Operation not allowed" |
-|9 |404 | NOT_FOUND | "Session Id does not exist" |
-|10 |409 | CONFLICT | "Another session is created for the same device" |
-|11 |500 | INTERNAL | "Session could not be created" |
-|12 |501 | NOT_IMPLEMENTED | "Service not implemented for the specified user device" |
-|13 |503 | SERVICE_UNAVAILABLE | "Service unavailable" |
+|10 |401 | UNAUTHORIZED | "No authorization to invoke operation" |
+|11 |403 | FORBIDDEN | "Operation not allowed" |
+|12 |404 | NOT_FOUND | "Session Id does not exist" |
+|13 |409 | CONFLICT | "Another session is created for the same device" |
+|14 |500 | INTERNAL | "Session could not be created" |
+|15 |501 | NOT_IMPLEMENTED | "Service not implemented for the specified user device" |
+|16 |503 | SERVICE_UNAVAILABLE | "Service unavailable" |
### 4.5 Policies
From a48d6152f61827964143012599ee4e3ea2a941fc Mon Sep 17 00:00:00 2001
From: Eric Murray <77291605+eric-murray@users.noreply.github.com>
Date: Fri, 21 Apr 2023 14:31:49 +0100
Subject: [PATCH 08/16] Update code/API_definitions/qod-api.yaml
Co-authored-by: Jose Luis Urien
---
code/API_definitions/qod-api.yaml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/code/API_definitions/qod-api.yaml b/code/API_definitions/qod-api.yaml
index bd2f479f32..a3eca2c9ac 100644
--- a/code/API_definitions/qod-api.yaml
+++ b/code/API_definitions/qod-api.yaml
@@ -461,7 +461,7 @@ components:
"publicPort" : 59765
}
description: |
- The device should be identified by either the public (observered) IP address and port as seen by the application server, or the private (local) and any public (observed) IP addresses in use by the device (this information can be obtained by various means, for example from some DNS servers).
+ The device should be identified by either the public (observed) IP address and port as seen by the application server, or the private (local) and any public (observed) IP addresses in use by the device (this information can be obtained by various means, for example from some DNS servers).
If the allocated and observed IP addresses are the same (i.e. NAT is not in use) then the same address should be specified for both publicAddress and privateAddress.
From 3882c4430fc4f98ad979d2acb1b3243977e5bc3c Mon Sep 17 00:00:00 2001
From: Eric Murray <77291605+eric-murray@users.noreply.github.com>
Date: Mon, 24 Apr 2023 12:48:38 +0100
Subject: [PATCH 09/16] Update qod-api.yaml
Replace oneOf with anyOf in DeviceIpv4Addr
---
code/API_definitions/qod-api.yaml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/code/API_definitions/qod-api.yaml b/code/API_definitions/qod-api.yaml
index a3eca2c9ac..0c39646ccc 100644
--- a/code/API_definitions/qod-api.yaml
+++ b/code/API_definitions/qod-api.yaml
@@ -452,7 +452,7 @@ components:
$ref: "#/components/schemas/SingleIpv4Addr"
publicPort:
$ref: "#/components/schemas/Port"
- oneOf:
+ anyOf:
- required: [publicAddress, privateAddress]
- required: [publicAddress, publicPort]
example:
@@ -465,7 +465,7 @@ components:
If the allocated and observed IP addresses are the same (i.e. NAT is not in use) then the same address should be specified for both publicAddress and privateAddress.
- If NAT64 is in use, the device should be idetified by its publicAddress and publicPort, or separately by its allocated IPv6 address (field ipv6Address of the Device object)
+ If NAT64 is in use, the device should be identified by its publicAddress and publicPort, or separately by its allocated IPv6 address (field ipv6Address of the Device object)
In all cases, publicAddress must be specified, along with at least one of either privateAddress or publicPort, dependent upon which is known. In general, mobile devices cannot be identified by their public IPv4 address alone.
From 6c5362078830cece2346aed425a68fc7e792b5c2 Mon Sep 17 00:00:00 2001
From: Eric Murray <77291605+eric-murray@users.noreply.github.com>
Date: Fri, 5 May 2023 16:14:05 +0100
Subject: [PATCH 10/16] Update qod-api.yaml
- reverted deviceAllocatedPorts to devicePorts, but added description of modified usage
- removed `format: ipv4` from SingleIpv4Addr
---
code/API_definitions/qod-api.yaml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/code/API_definitions/qod-api.yaml b/code/API_definitions/qod-api.yaml
index 0c39646ccc..ebe6f7764e 100644
--- a/code/API_definitions/qod-api.yaml
+++ b/code/API_definitions/qod-api.yaml
@@ -288,8 +288,9 @@ components:
$ref: "#/components/schemas/Device"
applicationServer:
$ref: "#/components/schemas/ApplicationServer"
- deviceAllocatedPorts:
+ devicePorts:
$ref: "#/components/schemas/PortsSpec"
+ description: The ports used locally by the device for flows to which the requested QoS profile should apply. If omitted, then the qosProfile will apply to all flows between the device and the specified application server address and ports.
applicationServerPorts:
$ref: "#/components/schemas/PortsSpec"
qosProfile:
@@ -471,7 +472,6 @@ components:
SingleIpv4Addr:
type: string
- format: ipv4
description: A single IPv4 address with no subnet mask
example: "84.125.93.10"
pattern: '^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])$'
From a011dea0c911635fe8ae715fcf5a2711198b5818 Mon Sep 17 00:00:00 2001
From: Eric Murray <77291605+eric-murray@users.noreply.github.com>
Date: Fri, 5 May 2023 16:28:45 +0100
Subject: [PATCH 11/16] Update QoD_API.md
- Update documentation for devicePorts
---
documentation/API_documentation/QoD_API.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/documentation/API_documentation/QoD_API.md b/documentation/API_documentation/QoD_API.md
index b4010e381d..ca68d6ae56 100644
--- a/documentation/API_documentation/QoD_API.md
+++ b/documentation/API_documentation/QoD_API.md
@@ -136,8 +136,8 @@ Following table defines API endpoints of exposed REST based for QoD management o
- deviceAllocatedPorts (optional) |
- A list of single source ports or source port ranges used directly by the device (i.e. not the public or NATed port(s)), e.g. "deviceAllocatedPorts": {"ranges": [{"from": 5010,"to": 5020}],"ports": [5060,5070]} |
+ devicePorts (optional) |
+ The ports used locally by the device for flows to which the requested QoS profile should apply. If omitted, then the qosProfile will apply to all flows between the device and the specified application server address and ports. e.g. "devicePorts": {"ranges": [{"from": 5010,"to": 5020}],"ports": [5060,5070]} |
applicationServerPorts (optional) |
From f76b89c4fdcb58bf2cc2a9761e90f141a98ec068 Mon Sep 17 00:00:00 2001
From: Eric Murray <77291605+eric-murray@users.noreply.github.com>
Date: Fri, 5 May 2023 16:36:32 +0100
Subject: [PATCH 12/16] Update qod-api.yaml
- Fix InvalidDevicePortsRanges error decription
---
code/API_definitions/qod-api.yaml | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/code/API_definitions/qod-api.yaml b/code/API_definitions/qod-api.yaml
index ebe6f7764e..fbc708310c 100644
--- a/code/API_definitions/qod-api.yaml
+++ b/code/API_definitions/qod-api.yaml
@@ -104,12 +104,12 @@ paths:
status: 400
code: INVALID_ARGUMENT
message: "Expected property is missing: qosProfile"
- InvalidDeviceAllocatedPortsRanges:
- summary: Invalid port ranges specified for deviceAllocatedPorts
+ InvalidDevicePortsRanges:
+ summary: Invalid port ranges specified for devicePorts
value:
status: 400
code: OUT_OF_RANGE
- message: "Invalid port ranges specified: deviceAllocatedPorts"
+ message: "Invalid port ranges specified: devicePorts"
"401":
$ref: "#/components/responses/Generic401"
"403":
From 3a7027a8deeb4356c07de7990d74b74ba4df0e1b Mon Sep 17 00:00:00 2001
From: Eric Murray <77291605+eric-murray@users.noreply.github.com>
Date: Fri, 5 May 2023 16:37:33 +0100
Subject: [PATCH 13/16] Update QoD_API.md
- Fix error #9 description
---
documentation/API_documentation/QoD_API.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/documentation/API_documentation/QoD_API.md b/documentation/API_documentation/QoD_API.md
index ca68d6ae56..559c3fa9a5 100644
--- a/documentation/API_documentation/QoD_API.md
+++ b/documentation/API_documentation/QoD_API.md
@@ -328,7 +328,7 @@ Following table provides an overview of common error names, codes, and messages
|6 |400 | INVALID_ARGUMENT | "Expected property is missing: applicationServer" |
|7 |400 | INVALID_ARGUMENT | "Expected property is missing: qosProfile" |
|8 |400 | OUT_OF_RANGE | "Invalid port value specified: device.ipv4Address.publicPort" |
-|9 |400 | OUT_OF_RANGE | "Invalid port ranges specified: deviceAllocatedPorts" |
+|9 |400 | OUT_OF_RANGE | "Invalid port ranges specified: devicePorts" |
|10 |401 | UNAUTHORIZED | "No authorization to invoke operation" |
|11 |403 | FORBIDDEN | "Operation not allowed" |
|12 |404 | NOT_FOUND | "Session Id does not exist" |
From 0525029d5286060d796df2adb4a6fd397f8563c6 Mon Sep 17 00:00:00 2001
From: Eric Murray <77291605+eric-murray@users.noreply.github.com>
Date: Fri, 5 May 2023 16:40:14 +0100
Subject: [PATCH 14/16] Update qod-api.yaml
- Fix CannotIdentifyDevice error
---
code/API_definitions/qod-api.yaml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/code/API_definitions/qod-api.yaml b/code/API_definitions/qod-api.yaml
index fbc708310c..8c0a83052c 100644
--- a/code/API_definitions/qod-api.yaml
+++ b/code/API_definitions/qod-api.yaml
@@ -80,7 +80,7 @@ paths:
status: 400
code: INVALID_ARGUMENT
message: "Multiple inconsistent parameters specified: device"
- CabnnotIdentifiedDevice:
+ CannotIdentifyDevice:
summary: No device can be identified from provided parameters
value:
status: 400
From a21097906e599813d516a7440f2a69f5f4c583b1 Mon Sep 17 00:00:00 2001
From: Eric Murray <77291605+eric-murray@users.noreply.github.com>
Date: Tue, 9 May 2023 09:57:49 +0100
Subject: [PATCH 15/16] Update qod-api.yaml
- Renamed InsufficientProperties to InsufficientDeviceProperties
- Renamed InconsistentProperties to InconsistentDeviceProperties
- Fixed typo in PhoneNumber object description
---
code/API_definitions/qod-api.yaml | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/code/API_definitions/qod-api.yaml b/code/API_definitions/qod-api.yaml
index 8c0a83052c..eeb8572a9c 100644
--- a/code/API_definitions/qod-api.yaml
+++ b/code/API_definitions/qod-api.yaml
@@ -68,13 +68,13 @@ paths:
status: 400
code: INVALID_ARGUMENT
message: "Expected property is missing: device"
- InsufficientProperties:
+ InsufficientDeviceProperties:
summary: Device must be identified by at least one parameter
value:
status: 400
code: INVALID_ARGUMENT
message: "Insufficient properties specified: device"
- InconsistentProperties:
+ InconsistentDeviceProperties:
summary: Device parameters provided identify different devices
value:
status: 400
@@ -442,7 +442,7 @@ components:
type: string
pattern: '^\+?[0-9]{5,15}$'
example: "123456789"
- description: Subscriber number (MSISDN) in E.164 format, starting with country code and ptionally prefixed with '+'.
+ description: Subscriber number (MSISDN) in E.164 format, starting with country code and optionally prefixed with '+'.
DeviceIpv4Addr:
type: object
From 2ff4b60f1e84a86dd2f9ecaddd24a36364af2b08 Mon Sep 17 00:00:00 2001
From: Eric Murray <77291605+eric-murray@users.noreply.github.com>
Date: Thu, 11 May 2023 09:57:23 +0100
Subject: [PATCH 16/16] Update documentation/API_documentation/QoD_API.md
Co-authored-by: Ramesh Shanmugasundaram - Spry Fox Networks <90850565+sfnuser@users.noreply.github.com>
---
documentation/API_documentation/QoD_API.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/documentation/API_documentation/QoD_API.md b/documentation/API_documentation/QoD_API.md
index 559c3fa9a5..f756fb7a3b 100644
--- a/documentation/API_documentation/QoD_API.md
+++ b/documentation/API_documentation/QoD_API.md
@@ -117,7 +117,7 @@ Following table defines API endpoints of exposed REST based for QoD management o
The identifier for the device (user equipment). The developer can choose to provide the below specified device identifiers:
- - ipv4Address: Either public IPv4 address and port e.g. 84.125.93.10:59765, or public and private IPv4 addresses e.g. 192.168.0.1 & 84.125.93.10. The public IPv4 address alone is generally insufficient to identify the device. Subnet masks are not necessary or supported.
+ - ipv4Address: Either public IPv4 address and port e.g. 84.125.93.10:59765, or public and private IPv4 addresses e.g. 84.125.93.10 & 192.168.0.1. The public IPv4 address alone is generally insufficient to identify the device. Subnet masks are not necessary or supported.
- ipv6Address: IPv6 address (supports mask) e.g. 2001:db8:85a3:8d3:1319:8a2e:370:7344
- phoneNumber: The device phone number, including country code and optionally prefixed by a "+" sign, e.g. 004912345678923
- networkAccessIdentifier [5] assigned by the mobile network operator (MNO) for the device. e.g. 123456789@domain.com
|