From 47cc7f99fdac1a122510e8d307207302ade7c6e2 Mon Sep 17 00:00:00 2001 From: Eric Murray Date: Mon, 5 Jan 2026 13:43:41 +0000 Subject: [PATCH 01/10] Clarify application server identifier requirements Updated the description of application server identifiers and clarified the requirements for domain name resolution. --- code/API_definitions/quality-on-demand.yaml | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/code/API_definitions/quality-on-demand.yaml b/code/API_definitions/quality-on-demand.yaml index d92fca1d3e..08bdbe1eaa 100644 --- a/code/API_definitions/quality-on-demand.yaml +++ b/code/API_definitions/quality-on-demand.yaml @@ -31,7 +31,7 @@ info: Note: Network Access Identifier is defined for future use and will not be supported with this version of the API. * **Identifier for the application server**: - IPv4 and/or IPv6 address of the application server (application backend) + The domain name and/or IPv4 address(es) and/or IPv6 address(es) used by the application server (application backend). Domain names shall be expanded to a list of IP addresses using the network operator's own DNS service, and the QoS profile will apply to all IP addresses specified. * **App-Flow (between the application client and application server)**: The precise application data flow the developer wants to prioritize and have stable latency or throughput for. This flow is in the current API version determined by the identified device and the application server. And it can be further elaborated with details such as ports or port-ranges. Future version of the API might allow more detailed flow identification features. @@ -876,12 +876,20 @@ components: description: | A server hosting backend applications to deliver some business logic to clients. - The developer can choose to provide the below specified device identifiers: + The developer must provide one or more of the following application server identifiers: + * `domainName` * `ipv4Address` * `ipv6Address` + + If more than one identifier is provided, the QoS profile shall apply to all application servers identified. + + If the developer specifies a domain name, the API provider shall resolve that domain name to a list of IP addresses using the DNS service that the network operator provides for devices connected to their network. The QoS profile shall apply to all traffic using these IP addresses, which may include traffic for a different domain name that shares one or more of these IP addresses. Note that if the device itself uses a different DNS service, there is no guarantee that the QoS profile will apply to the IP addresses returned by that service for the specified domain name. + type: object properties: + domainName: + $ref: "#/components/schemas/ApplicationServerDomainName" ipv4Address: $ref: "#/components/schemas/ApplicationServerIpv4Address" ipv6Address: @@ -940,6 +948,13 @@ components: format: ipv6 example: 2001:db8:85a3:8d3:1319:8a2e:370:7344 + ApplicationServerDomainName: + type: string + format: hostname + example: "example.com" + description: | + The domain name used by the application server. The domain name must be resolvable using the DNS service provided by the network operator for devices connected to their network. It is expected that the domain name will usually be a fully qualified domain name (FQDN). + ApplicationServerIpv4Address: type: string example: "198.51.100.0/24" From b08326ca6f192434c2eabdc197dd2004a276689f Mon Sep 17 00:00:00 2001 From: Eric Murray Date: Mon, 5 Jan 2026 13:51:37 +0000 Subject: [PATCH 02/10] Clean up blank lines in quality-on-demand.yaml Removed unnecessary blank lines in the YAML file. --- code/API_definitions/quality-on-demand.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/API_definitions/quality-on-demand.yaml b/code/API_definitions/quality-on-demand.yaml index 08bdbe1eaa..a7581a1205 100644 --- a/code/API_definitions/quality-on-demand.yaml +++ b/code/API_definitions/quality-on-demand.yaml @@ -881,11 +881,11 @@ components: * `domainName` * `ipv4Address` * `ipv6Address` - + If more than one identifier is provided, the QoS profile shall apply to all application servers identified. If the developer specifies a domain name, the API provider shall resolve that domain name to a list of IP addresses using the DNS service that the network operator provides for devices connected to their network. The QoS profile shall apply to all traffic using these IP addresses, which may include traffic for a different domain name that shares one or more of these IP addresses. Note that if the device itself uses a different DNS service, there is no guarantee that the QoS profile will apply to the IP addresses returned by that service for the specified domain name. - + type: object properties: domainName: From 7f379a6500a48f2b9cc3311d985bbf1dfbdff4e1 Mon Sep 17 00:00:00 2001 From: Eric Murray Date: Thu, 22 Jan 2026 14:20:36 +0000 Subject: [PATCH 03/10] Apply suggestion from @tlohmar Co-authored-by: tlohmar --- code/API_definitions/quality-on-demand.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/API_definitions/quality-on-demand.yaml b/code/API_definitions/quality-on-demand.yaml index a7581a1205..2b1bb6cae8 100644 --- a/code/API_definitions/quality-on-demand.yaml +++ b/code/API_definitions/quality-on-demand.yaml @@ -884,7 +884,7 @@ components: If more than one identifier is provided, the QoS profile shall apply to all application servers identified. - If the developer specifies a domain name, the API provider shall resolve that domain name to a list of IP addresses using the DNS service that the network operator provides for devices connected to their network. The QoS profile shall apply to all traffic using these IP addresses, which may include traffic for a different domain name that shares one or more of these IP addresses. Note that if the device itself uses a different DNS service, there is no guarantee that the QoS profile will apply to the IP addresses returned by that service for the specified domain name. + If the API consumer specifies a domain name, the API provider shall resolve that domain name to a list of IP addresses using the DNS service that the network operator provides for devices connected to their network. The QoS profile shall apply to all traffic using these IP addresses, which may include traffic for a different domain name that shares one or more of these IP addresses. Note that if the application client on the device uses a different DNS service, there is no guarantee that the QoS profile will apply to the IP addresses returned by that service for the specified domain name. type: object properties: From 490a83d0360fb913ef7208341ed7c4b790bf2361 Mon Sep 17 00:00:00 2001 From: Eric Murray Date: Thu, 5 Feb 2026 16:21:57 +0000 Subject: [PATCH 04/10] Enhance API definitions with ipAddresses support Added 'ipAddresses' property to application server identifiers and defined 'ApplicationServerIPAddressList' schema. --- code/API_definitions/quality-on-demand.yaml | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/code/API_definitions/quality-on-demand.yaml b/code/API_definitions/quality-on-demand.yaml index 2b1bb6cae8..603dd3c86c 100644 --- a/code/API_definitions/quality-on-demand.yaml +++ b/code/API_definitions/quality-on-demand.yaml @@ -879,8 +879,13 @@ components: The developer must provide one or more of the following application server identifiers: * `domainName` + - The domain name that the device may use to connect to the application server + * `ipAddresses` + - A list of IPv4 and/or IPv6 addresses that may be used by the application server * `ipv4Address` + - An IPv4 subnet * `ipv6Address` + - An IPv6 subnet If more than one identifier is provided, the QoS profile shall apply to all application servers identified. @@ -890,12 +895,26 @@ components: properties: domainName: $ref: "#/components/schemas/ApplicationServerDomainName" + ipAddresses: + $ref: "#/components/schemas/ApplicationServerIPAddressList" ipv4Address: $ref: "#/components/schemas/ApplicationServerIpv4Address" ipv6Address: $ref: "#/components/schemas/ApplicationServerIpv6Address" minProperties: 1 + ApplicationServerIPAddressList: + description: A list of IPv4 and/or IPv6 addresses that may be used by the application server + type: array + items: + description: An IP address that may be used by the application server + type: string + oneOf: + - format: ipv4 + - format: ipv6 + minItems: 1 + maxItems: 16 + NetworkAccessIdentifier: description: A public identifier addressing a subscription in a mobile network. In 3GPP terminology, it corresponds to the GPSI formatted with the External Identifier ({Local Identifier}@{Domain Identifier}). Unlike the telephone number, the network access identifier is not subjected to portability ruling in force, and is individually managed by each operator. type: string From 6b8f3a9689181aca557acfd4a4401d812eb94262 Mon Sep 17 00:00:00 2001 From: Eric Murray Date: Thu, 5 Feb 2026 16:25:19 +0000 Subject: [PATCH 05/10] Format YAML for ApplicationServerIPAddressList --- code/API_definitions/quality-on-demand.yaml | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/code/API_definitions/quality-on-demand.yaml b/code/API_definitions/quality-on-demand.yaml index 603dd3c86c..a3b40fc787 100644 --- a/code/API_definitions/quality-on-demand.yaml +++ b/code/API_definitions/quality-on-demand.yaml @@ -904,16 +904,16 @@ components: minProperties: 1 ApplicationServerIPAddressList: - description: A list of IPv4 and/or IPv6 addresses that may be used by the application server - type: array - items: - description: An IP address that may be used by the application server - type: string - oneOf: - - format: ipv4 - - format: ipv6 - minItems: 1 - maxItems: 16 + description: A list of IPv4 and/or IPv6 addresses that may be used by the application server + type: array + items: + description: An IP address that may be used by the application server + type: string + oneOf: + - format: ipv4 + - format: ipv6 + minItems: 1 + maxItems: 16 NetworkAccessIdentifier: description: A public identifier addressing a subscription in a mobile network. In 3GPP terminology, it corresponds to the GPSI formatted with the External Identifier ({Local Identifier}@{Domain Identifier}). Unlike the telephone number, the network access identifier is not subjected to portability ruling in force, and is individually managed by each operator. From a852df2439045f2310dca2a2b4157b26ff10d41f Mon Sep 17 00:00:00 2001 From: Eric Murray Date: Thu, 5 Feb 2026 16:28:01 +0000 Subject: [PATCH 06/10] Add uniqueItems constraint to IP address list --- code/API_definitions/quality-on-demand.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/code/API_definitions/quality-on-demand.yaml b/code/API_definitions/quality-on-demand.yaml index a3b40fc787..c41c8867f4 100644 --- a/code/API_definitions/quality-on-demand.yaml +++ b/code/API_definitions/quality-on-demand.yaml @@ -912,6 +912,7 @@ components: oneOf: - format: ipv4 - format: ipv6 + uniqueItems: true minItems: 1 maxItems: 16 From 7baae1bc950e3ed917ac0287fa71ad3542d34c15 Mon Sep 17 00:00:00 2001 From: Eric Murray Date: Thu, 5 Feb 2026 16:32:17 +0000 Subject: [PATCH 07/10] Update code/API_definitions/quality-on-demand.yaml Co-authored-by: tlohmar --- code/API_definitions/quality-on-demand.yaml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/code/API_definitions/quality-on-demand.yaml b/code/API_definitions/quality-on-demand.yaml index c41c8867f4..4c7392d216 100644 --- a/code/API_definitions/quality-on-demand.yaml +++ b/code/API_definitions/quality-on-demand.yaml @@ -31,7 +31,11 @@ info: Note: Network Access Identifier is defined for future use and will not be supported with this version of the API. * **Identifier for the application server**: - The domain name and/or IPv4 address(es) and/or IPv6 address(es) used by the application server (application backend). Domain names shall be expanded to a list of IP addresses using the network operator's own DNS service, and the QoS profile will apply to all IP addresses specified. + The domain name and/or IPv4 address(es) and/or IPv6 address(es) used by the application server (application backend). Domain names shall be expanded to a list of IP addresses using the network operator's own DNS service, and the QoS profile will apply to all IP packets with these IP addresses as source or destination address. + + The application service provider should ensure, that the application clients use the network operator's own DNS service for resolving the application servers IP addresses. The application client should use the same application server IP address(es) as the network for a correction functioning of the feature. + + Note that application data flows of WebRTC (e.g. speech flow) cannot be described using FQDNs, as the IP addresses of the peer (e.g. a TURN server) is typically not based on a DNS resolution. * **App-Flow (between the application client and application server)**: The precise application data flow the developer wants to prioritize and have stable latency or throughput for. This flow is in the current API version determined by the identified device and the application server. And it can be further elaborated with details such as ports or port-ranges. Future version of the API might allow more detailed flow identification features. From 45e8582b9412fbb30e60dffa2a8eee279e7f6116 Mon Sep 17 00:00:00 2001 From: Eric Murray Date: Thu, 5 Feb 2026 16:35:08 +0000 Subject: [PATCH 08/10] Update quality-on-demand.yaml by removing redundant notes Removed unnecessary notes regarding DNS and WebRTC IP address handling. --- code/API_definitions/quality-on-demand.yaml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/code/API_definitions/quality-on-demand.yaml b/code/API_definitions/quality-on-demand.yaml index 4c7392d216..61404994d2 100644 --- a/code/API_definitions/quality-on-demand.yaml +++ b/code/API_definitions/quality-on-demand.yaml @@ -32,10 +32,8 @@ info: * **Identifier for the application server**: The domain name and/or IPv4 address(es) and/or IPv6 address(es) used by the application server (application backend). Domain names shall be expanded to a list of IP addresses using the network operator's own DNS service, and the QoS profile will apply to all IP packets with these IP addresses as source or destination address. - + The application service provider should ensure, that the application clients use the network operator's own DNS service for resolving the application servers IP addresses. The application client should use the same application server IP address(es) as the network for a correction functioning of the feature. - - Note that application data flows of WebRTC (e.g. speech flow) cannot be described using FQDNs, as the IP addresses of the peer (e.g. a TURN server) is typically not based on a DNS resolution. * **App-Flow (between the application client and application server)**: The precise application data flow the developer wants to prioritize and have stable latency or throughput for. This flow is in the current API version determined by the identified device and the application server. And it can be further elaborated with details such as ports or port-ranges. Future version of the API might allow more detailed flow identification features. From 554862062ec7e02f9b4fb82785bb1d553463accc Mon Sep 17 00:00:00 2001 From: Eric Murray Date: Mon, 30 Mar 2026 14:24:57 +0100 Subject: [PATCH 09/10] Apply suggestion from @tlohmar Co-authored-by: tlohmar --- code/API_definitions/quality-on-demand.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/API_definitions/quality-on-demand.yaml b/code/API_definitions/quality-on-demand.yaml index 61404994d2..a4d8ae7b04 100644 --- a/code/API_definitions/quality-on-demand.yaml +++ b/code/API_definitions/quality-on-demand.yaml @@ -878,7 +878,7 @@ components: description: | A server hosting backend applications to deliver some business logic to clients. - The developer must provide one or more of the following application server identifiers: + The API consumer must provide one or more of the following application server identifiers: * `domainName` - The domain name that the device may use to connect to the application server From 3026dbd5afff9d0736e13e10dbf1716f1708b3f3 Mon Sep 17 00:00:00 2001 From: Eric Murray Date: Wed, 15 Apr 2026 10:02:28 +0100 Subject: [PATCH 10/10] Change oneOf to anyOf for IP address format anyOf is more efficient for validation, as no string can be compliant with both ipv4 and ipv6 formats --- code/API_definitions/quality-on-demand.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/API_definitions/quality-on-demand.yaml b/code/API_definitions/quality-on-demand.yaml index 5b2de07246..ed3ce5a0e1 100644 --- a/code/API_definitions/quality-on-demand.yaml +++ b/code/API_definitions/quality-on-demand.yaml @@ -916,7 +916,7 @@ components: items: description: An IP address that may be used by the application server type: string - oneOf: + anyOf: - format: ipv4 - format: ipv6 uniqueItems: true