From edf267d806f1f268fd24bda385a1b75adaccb2ed Mon Sep 17 00:00:00 2001 From: Richard Bradbury Date: Fri, 2 May 2025 12:42:31 +0100 Subject: [PATCH 01/17] 26510-CR0021 [S4aI250075] Generic CMCD reporting envelope. --- ..._Maf_SessionHandling_MetricsReporting.yaml | 69 ++++++++++++++++++- 1 file changed, 68 insertions(+), 1 deletion(-) mode change 100644 => 100755 TS26510_Maf_SessionHandling_MetricsReporting.yaml diff --git a/TS26510_Maf_SessionHandling_MetricsReporting.yaml b/TS26510_Maf_SessionHandling_MetricsReporting.yaml old mode 100644 new mode 100755 index 60e367b4..8356b6e9 --- a/TS26510_Maf_SessionHandling_MetricsReporting.yaml +++ b/TS26510_Maf_SessionHandling_MetricsReporting.yaml @@ -12,7 +12,7 @@ tags: description: 'Media Delivery: Metrics Reporting API' externalDocs: - description: 'TS 26.510 V18.4.0; Media Delivery; Interactions and APIs for media session handling' + description: 'TS 26.510 V19.0.0; Media Delivery; Interactions and APIs for media session handling' url: 'https://www.3gpp.org/ftp/Specs/archive/26_series/26.510/' servers: @@ -55,6 +55,10 @@ paths: schema: type: string format: xml + application/3gpp-media-delivery-metrics-report+json: + schema: + $ref: '#/components/schemas/MetricsReport' + format: json application/*: schema: type: string @@ -98,3 +102,66 @@ components: tokenUrl: '{tokenUrl}' scopes: metrics-report_submit: Submit a metrics report + + schemas: + MetricsReport: + description: 'A timestamped report of QoE metrics pertaining to one or more media delivery session' + type: object + required: + - reportTimestamp + - sessions + properties: + reportTimestamp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + sessions: + type: array + items: + $ref: '#/components/schemas/MetricsSession' + minItems: 0 + + MetricsSession: + description: 'A set of metrics samples pertaining to a particular media delivery session' + type: object + required: + - sessionId + - clientId + - provisioingSessionId + properties: + sessionId: + $ref: 'TS26510_CommonData.yaml#/components/schemas/MediaDeliverySessionId' + clientId: + type: string + provisioningSessionId: + $ref: 'TS26510_CommonData.yaml#/components/schemas/ResourceId' + samples: + type: array + items: + $ref: '#/components/schemas/MetricsSample' + minItems: 0 + + MetricsSample: + description: 'An abstract timestamped sample of one or more metrics' + type: object + required: + - sampleTimestamp + anyOf: + - required: [cmcdSessionData] + - required: [cmcdObjectData] + - required: [cmcdRequestData] + - required: [cmcdStatusData] + properties: + sampleTimestamp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + sliceInfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + dataNetworkName: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + # Properties for conveying CMCD samples - see clause 11.4.3.3 of TS 26.512 + cmcdSessionData: + $ref: 'TS26512_ClientData.yaml#/components/schemas/CmcdSessionData' + cmcdObjectData: + $ref: 'TS26512_ClientData.yaml#/components/schemas/CmcdObjectData' + cmcdRequestData: + $ref: 'TS26512_ClientData.yaml#/components/schemas/CmcdRequestData' + cmcdStatusData: + $ref: 'TS26512_ClientData.yaml#/components/schemas/CmcdStatusData' -- GitLab From 8ca3fc900fe86422e92ca711c97a51e655adf331 Mon Sep 17 00:00:00 2001 From: Richard Bradbury Date: Fri, 2 May 2025 12:44:13 +0100 Subject: [PATCH 02/17] 26512-CR0089 [S4aI250076] Configuration for CMCD reporting (M3) and CMCD event exposure (R5/R6). --- TS26512_ClientData.yaml | 115 ++++++++++++++++++ TS26512_Mas_Configuration_ContentHosting.yaml | 7 +- ...2_Mas_Configuration_ContentPublishing.yaml | 7 +- 3 files changed, 125 insertions(+), 4 deletions(-) create mode 100755 TS26512_ClientData.yaml diff --git a/TS26512_ClientData.yaml b/TS26512_ClientData.yaml new file mode 100755 index 00000000..185c7528 --- /dev/null +++ b/TS26512_ClientData.yaml @@ -0,0 +1,115 @@ +openapi: 3.0.0 +info: + title: '5G Media Streaming: Client data syntax for QoE metrics reporting' + version: 1.0.0-alpha + description: | + 5GMS client data syntax for QoE metrics reporting + © 2025, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +tags: + - name: '5GMS client data syntax for QoE metrics reporting' + description: '5G Media Streaming: Client data syntax for QoE metrics reporting envelope' + +externalDocs: + description: 'TS 26.512 V19.0.0; 5G Media Streaming (5GMS); Protocols' + url: 'https://www.3gpp.org/ftp/Specs/archive/26_series/26.512/' + +paths: {} + +components: + schemas: + ########################################## + # Common Media Client Data per CTA-5004 V1 + ########################################## + CmcdSessionData: + description: 'An object containing session-scope CMCD keys' + type: object + requried: + - sid + properties: + v: + description: 'CMCD version' + type: integer + minimum: 1 + sid: + description: 'Session identifier' + type: string + cid: + description: 'Content identifier' + type: string + st: + description: 'Stream type' + $ref: '#/components/schemas/CmcdStreamType' + sf: + description: 'Streaming format' + $ref: '#/components/schemas/CmcdStreamingFormat' + pr: + description: 'Playback rate' + type: number + + CmcdObjectData: + description: 'An object containing object-scope CMCD keys' + type: object + properties: + ot: + description: 'Object type' + $ref: '#/components/schemas/CmcdObjectType' + d: + description: 'Object duration (milliseconds)' + type: integer + br: + description: 'Encoded bit rate (kilobits per second)' + type: integer + tb: + description: 'Top bit rate (kilobits per second)' + type: integer + + CmcdRequestData: + description: 'An object containing request-scope CMCD keys' + type: object + properties: + su: + description: 'Start-up' + type: boolean + mtp: + description: 'Measured throughput (kilobits per second)' + type: integer + dl: + description: 'Deadline (milliseconds)' + type: integer + bl: + description: 'Buffer length (milliseconds)' + type: integer + nor: + description: 'Next object request' + $ref: 'TS26510_CommonData.yaml#/components/schemas/RelativeUrl' + nrr: + description: 'Next range request' + type: string + + CmcdStatusData: + description: 'An object containing status-scope CMCD keys' + type: object + properties: + rtp: + description: 'Requested maximum throughput (kilobits per second)' + type: integer + bs: + description: 'Buffer starvation' + type: boolean + + CmcdStreamType: + description: 'Stream type' + type: string + enum: [v, l] + + CmcdStreamingFormat: + description: 'Streaming format' + type: string + enum: [d, h, s, o] + + CmcdObjectType: + description: 'Media type of object' + type: string + enum: [m, a, v, av, i, c, tt, k, o] \ No newline at end of file diff --git a/TS26512_Mas_Configuration_ContentHosting.yaml b/TS26512_Mas_Configuration_ContentHosting.yaml index 5e739394..cde9ef51 100644 --- a/TS26512_Mas_Configuration_ContentHosting.yaml +++ b/TS26512_Mas_Configuration_ContentHosting.yaml @@ -1,7 +1,7 @@ openapi: 3.0.0 info: title: Mas_Configuration_ContentHosting - version: 1.0.2 + version: 1.1.0 description: | 5GMS AS Configuration API: Content Hosting © 2025, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). @@ -12,7 +12,7 @@ tags: description: '5G Media Streaming: Application Server Configuration (M3) APIs: Content Hosting' externalDocs: - description: 'TS 26.512 V18.6.0; 5G Media Streaming (5GMS); Protocols' + description: 'TS 26.512 V19.0.0; 5G Media Streaming (5GMS); Protocols' url: 'https://www.3gpp.org/ftp/Specs/archive/26_series/26.512/' servers: @@ -352,11 +352,14 @@ components: description: "A representation of a Content Hosting Configuration resource used to configure a Media AS." required: - name + - externalServiceId - ingestConfiguration - distributionConfigurations properties: name: type: string + externalServiceId: + type: string ingestConfiguration: $ref: 'TS26510_Maf_Provisioning_ContentHosting.yaml#/components/schemas/IngestConfiguration' distributionConfigurations: diff --git a/TS26512_Mas_Configuration_ContentPublishing.yaml b/TS26512_Mas_Configuration_ContentPublishing.yaml index e5e85490..b1d9c3ea 100644 --- a/TS26512_Mas_Configuration_ContentPublishing.yaml +++ b/TS26512_Mas_Configuration_ContentPublishing.yaml @@ -1,7 +1,7 @@ openapi: 3.0.0 info: title: Mas_Configuration_ContentPublishing - version: 1.0.2 + version: 1.1.0 description: | 5GMS AS Configuration API: Content Publishing © 2025, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). @@ -12,7 +12,7 @@ tags: description: '5G Media Streaming: Application Server Configuration (M3) APIs: Content Publishing' externalDocs: - description: 'TS 26.512 V18.6.0; 5G Media Streaming (5GMS); Protocols' + description: 'TS 26.512 V19.0.0; 5G Media Streaming (5GMS); Protocols' url: 'https://www.3gpp.org/ftp/Specs/archive/26_series/26.512/' servers: @@ -352,11 +352,14 @@ components: description: "A representation of a Content Publishing Configuration resource used to configure a Media AS." required: - name + - externalServiceId - contributionConfigurations - egestConfiguration properties: name: type: string + externalServiceId: + type: string contributionConfigurations: type: array items: -- GitLab From 485f82f701ea31ca3330a68b9f6804c570877aaf Mon Sep 17 00:00:00 2001 From: Richard Bradbury Date: Wed, 7 May 2025 20:00:11 +0100 Subject: [PATCH 03/17] Attempt to fix syntax error failure due to ambiguous MIME type declarations. --- TS26510_Maf_SessionHandling_MetricsReporting.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/TS26510_Maf_SessionHandling_MetricsReporting.yaml b/TS26510_Maf_SessionHandling_MetricsReporting.yaml index 8356b6e9..ce8ba9a9 100755 --- a/TS26510_Maf_SessionHandling_MetricsReporting.yaml +++ b/TS26510_Maf_SessionHandling_MetricsReporting.yaml @@ -59,9 +59,9 @@ paths: schema: $ref: '#/components/schemas/MetricsReport' format: json - application/*: - schema: - type: string +# application/*: +# schema: +# type: string responses: '202': # Accepted: The request is well-formed but the message body has not yet been fully processed description: 'Metrics Report Accepted' -- GitLab From 03239359b692eaf6fc9dd42c5ff05162b404b764 Mon Sep 17 00:00:00 2001 From: Richard Bradbury Date: Wed, 7 May 2025 20:05:56 +0100 Subject: [PATCH 04/17] Fix MIME type declaration. --- TS26510_Maf_SessionHandling_MetricsReporting.yaml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/TS26510_Maf_SessionHandling_MetricsReporting.yaml b/TS26510_Maf_SessionHandling_MetricsReporting.yaml index ce8ba9a9..41159579 100755 --- a/TS26510_Maf_SessionHandling_MetricsReporting.yaml +++ b/TS26510_Maf_SessionHandling_MetricsReporting.yaml @@ -58,10 +58,9 @@ paths: application/3gpp-media-delivery-metrics-report+json: schema: $ref: '#/components/schemas/MetricsReport' - format: json -# application/*: -# schema: -# type: string + application/*: + schema: + type: string responses: '202': # Accepted: The request is well-formed but the message body has not yet been fully processed description: 'Metrics Report Accepted' -- GitLab From 2902a30217fb3e85be8d60c151cf7920009f5366 Mon Sep 17 00:00:00 2001 From: Richard Bradbury Date: Wed, 7 May 2025 20:20:09 +0100 Subject: [PATCH 05/17] Fixed spelling mistake and descriptions of $ref'd data types. --- TS26512_ClientData.yaml | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/TS26512_ClientData.yaml b/TS26512_ClientData.yaml index 185c7528..88567e9b 100755 --- a/TS26512_ClientData.yaml +++ b/TS26512_ClientData.yaml @@ -25,7 +25,7 @@ components: CmcdSessionData: description: 'An object containing session-scope CMCD keys' type: object - requried: + required: - sid properties: v: @@ -39,11 +39,13 @@ components: description: 'Content identifier' type: string st: - description: 'Stream type' - $ref: '#/components/schemas/CmcdStreamType' + allOf: + - description: 'Stream type' + - $ref: '#/components/schemas/CmcdStreamType' sf: - description: 'Streaming format' - $ref: '#/components/schemas/CmcdStreamingFormat' + allOf: + - description: 'Streaming format' + - $ref: '#/components/schemas/CmcdStreamingFormat' pr: description: 'Playback rate' type: number @@ -53,8 +55,9 @@ components: type: object properties: ot: - description: 'Object type' - $ref: '#/components/schemas/CmcdObjectType' + allOf: + - description: 'Object type' + - $ref: '#/components/schemas/CmcdObjectType' d: description: 'Object duration (milliseconds)' type: integer @@ -82,8 +85,9 @@ components: description: 'Buffer length (milliseconds)' type: integer nor: - description: 'Next object request' - $ref: 'TS26510_CommonData.yaml#/components/schemas/RelativeUrl' + allOf: + - description: 'Next object request' + - $ref: 'TS26510_CommonData.yaml#/components/schemas/RelativeUrl' nrr: description: 'Next range request' type: string -- GitLab From 47ded9ed7dbb630933a36d7540a007cb47c32d76 Mon Sep 17 00:00:00 2001 From: Richard Bradbury Date: Thu, 8 May 2025 11:53:44 +0100 Subject: [PATCH 06/17] Moved CMCD-specific data types from TS 26.510 into sub-envelope purely in TS 26.512. --- ..._Maf_SessionHandling_MetricsReporting.yaml | 18 +++++----------- TS26512_ClientData.yaml | 21 +++++++++++++++++-- 2 files changed, 24 insertions(+), 15 deletions(-) diff --git a/TS26510_Maf_SessionHandling_MetricsReporting.yaml b/TS26510_Maf_SessionHandling_MetricsReporting.yaml index 41159579..1ca9fa99 100755 --- a/TS26510_Maf_SessionHandling_MetricsReporting.yaml +++ b/TS26510_Maf_SessionHandling_MetricsReporting.yaml @@ -144,10 +144,7 @@ components: required: - sampleTimestamp anyOf: - - required: [cmcdSessionData] - - required: [cmcdObjectData] - - required: [cmcdRequestData] - - required: [cmcdStatusData] + - required: [mediaStreamingClientData] properties: sampleTimestamp: $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' @@ -155,12 +152,7 @@ components: $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' dataNetworkName: $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' - # Properties for conveying CMCD samples - see clause 11.4.3.3 of TS 26.512 - cmcdSessionData: - $ref: 'TS26512_ClientData.yaml#/components/schemas/CmcdSessionData' - cmcdObjectData: - $ref: 'TS26512_ClientData.yaml#/components/schemas/CmcdObjectData' - cmcdRequestData: - $ref: 'TS26512_ClientData.yaml#/components/schemas/CmcdRequestData' - cmcdStatusData: - $ref: 'TS26512_ClientData.yaml#/components/schemas/CmcdStatusData' + mediaStreamingClientData: + allOf: + $ref: 'TS26512_ClientData.yaml#/components/schemas/ClientData' + description: 'Client data for the 5G Media Streaming System. See clause 11.4.3.3 of TS 26.512.' diff --git a/TS26512_ClientData.yaml b/TS26512_ClientData.yaml index 88567e9b..9f588e09 100755 --- a/TS26512_ClientData.yaml +++ b/TS26512_ClientData.yaml @@ -1,7 +1,7 @@ openapi: 3.0.0 info: title: '5G Media Streaming: Client data syntax for QoE metrics reporting' - version: 1.0.0-alpha + version: 1.0.0 description: | 5GMS client data syntax for QoE metrics reporting © 2025, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). @@ -9,7 +9,7 @@ info: tags: - name: '5GMS client data syntax for QoE metrics reporting' - description: '5G Media Streaming: Client data syntax for QoE metrics reporting envelope' + description: '5G Media Streaming: Client data syntax for use in QoE metrics reporting envelope' externalDocs: description: 'TS 26.512 V19.0.0; 5G Media Streaming (5GMS); Protocols' @@ -19,6 +19,23 @@ paths: {} components: schemas: + ClientData: + description: 'Envelope for client data pertaining to the 5G Media Streaming System.' + type: object + anyOf: + - required: [cmcdSessionData] + - required: [cmcdObjectData] + - required: [cmcdRequestData] + - required: [cmcdStatusData] + cmcdSessionData: + $ref: 'TS26512_ClientData.yaml#/components/schemas/CmcdSessionData' + cmcdObjectData: + $ref: 'TS26512_ClientData.yaml#/components/schemas/CmcdObjectData' + cmcdRequestData: + $ref: 'TS26512_ClientData.yaml#/components/schemas/CmcdRequestData' + cmcdStatusData: + $ref: 'TS26512_ClientData.yaml#/components/schemas/CmcdStatusData' + ########################################## # Common Media Client Data per CTA-5004 V1 ########################################## -- GitLab From 4377366e978970e45a8a6ba18050b21a84eccb48 Mon Sep 17 00:00:00 2001 From: Richard Bradbury Date: Thu, 8 May 2025 12:20:12 +0100 Subject: [PATCH 07/17] Syntax bugfixes. --- ...10_Maf_SessionHandling_MetricsReporting.yaml | 4 ++-- TS26512_ClientData.yaml | 17 +++++++++-------- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/TS26510_Maf_SessionHandling_MetricsReporting.yaml b/TS26510_Maf_SessionHandling_MetricsReporting.yaml index 1ca9fa99..01d0c2d8 100755 --- a/TS26510_Maf_SessionHandling_MetricsReporting.yaml +++ b/TS26510_Maf_SessionHandling_MetricsReporting.yaml @@ -154,5 +154,5 @@ components: $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' mediaStreamingClientData: allOf: - $ref: 'TS26512_ClientData.yaml#/components/schemas/ClientData' - description: 'Client data for the 5G Media Streaming System. See clause 11.4.3.3 of TS 26.512.' + - $ref: 'TS26512_ClientData.yaml#/components/schemas/ClientData' + - description: 'Client data for the 5G Media Streaming System. See clause 11.4.3.3 of TS 26.512.' diff --git a/TS26512_ClientData.yaml b/TS26512_ClientData.yaml index 9f588e09..4bbc90e8 100755 --- a/TS26512_ClientData.yaml +++ b/TS26512_ClientData.yaml @@ -27,14 +27,15 @@ components: - required: [cmcdObjectData] - required: [cmcdRequestData] - required: [cmcdStatusData] - cmcdSessionData: - $ref: 'TS26512_ClientData.yaml#/components/schemas/CmcdSessionData' - cmcdObjectData: - $ref: 'TS26512_ClientData.yaml#/components/schemas/CmcdObjectData' - cmcdRequestData: - $ref: 'TS26512_ClientData.yaml#/components/schemas/CmcdRequestData' - cmcdStatusData: - $ref: 'TS26512_ClientData.yaml#/components/schemas/CmcdStatusData' + properties: + cmcdSessionData: + $ref: 'TS26512_ClientData.yaml#/components/schemas/CmcdSessionData' + cmcdObjectData: + $ref: 'TS26512_ClientData.yaml#/components/schemas/CmcdObjectData' + cmcdRequestData: + $ref: 'TS26512_ClientData.yaml#/components/schemas/CmcdRequestData' + cmcdStatusData: + $ref: 'TS26512_ClientData.yaml#/components/schemas/CmcdStatusData' ########################################## # Common Media Client Data per CTA-5004 V1 -- GitLab From c1a2573e4b9fe97a1ca5cc2fe7f41c291ddbbbbc Mon Sep 17 00:00:00 2001 From: Richard Bradbury Date: Thu, 8 May 2025 14:43:43 +0100 Subject: [PATCH 08/17] Design changes from 26512-CR0089r1 [S4-250759]: - Rename data types and property names ...Data to ...Info. - Add ClientData.requestUrl property. --- TS26512_ClientData.yaml | 36 ++++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/TS26512_ClientData.yaml b/TS26512_ClientData.yaml index 4bbc90e8..751ae043 100755 --- a/TS26512_ClientData.yaml +++ b/TS26512_ClientData.yaml @@ -22,25 +22,29 @@ components: ClientData: description: 'Envelope for client data pertaining to the 5G Media Streaming System.' type: object + required: + - requestUrl anyOf: - - required: [cmcdSessionData] - - required: [cmcdObjectData] - - required: [cmcdRequestData] - - required: [cmcdStatusData] + - required: [cmcdSessionInfo] + - required: [cmcdObjectInfo] + - required: [cmcdRequestInfo] + - required: [cmcdStatusInfo] properties: - cmcdSessionData: - $ref: 'TS26512_ClientData.yaml#/components/schemas/CmcdSessionData' - cmcdObjectData: - $ref: 'TS26512_ClientData.yaml#/components/schemas/CmcdObjectData' - cmcdRequestData: - $ref: 'TS26512_ClientData.yaml#/components/schemas/CmcdRequestData' - cmcdStatusData: - $ref: 'TS26512_ClientData.yaml#/components/schemas/CmcdStatusData' + requestUrl: + $ref: 'TS26510_CommonData.yaml#/components/schemas/AbsoluteUrl' + cmcdSessionInfo: + $ref: '#/components/schemas/CmcdSessionInfo' + cmcdObjectInfo: + $ref: '#/components/schemas/CmcdObjectInfo' + cmcdRequestInfo: + $ref: '#/components/schemas/CmcdRequestInfo' + cmcdStatusInfo: + $ref: '#/components/schemas/CmcdStatusInfo' ########################################## # Common Media Client Data per CTA-5004 V1 ########################################## - CmcdSessionData: + CmcdSessionInfo: description: 'An object containing session-scope CMCD keys' type: object required: @@ -68,7 +72,7 @@ components: description: 'Playback rate' type: number - CmcdObjectData: + CmcdObjectInfo: description: 'An object containing object-scope CMCD keys' type: object properties: @@ -86,7 +90,7 @@ components: description: 'Top bit rate (kilobits per second)' type: integer - CmcdRequestData: + CmcdRequestInfo: description: 'An object containing request-scope CMCD keys' type: object properties: @@ -110,7 +114,7 @@ components: description: 'Next range request' type: string - CmcdStatusData: + CmcdStatusInfo: description: 'An object containing status-scope CMCD keys' type: object properties: -- GitLab From 84cfb1341668f93666b766233119f0f16c4848f2 Mon Sep 17 00:00:00 2001 From: Richard Bradbury Date: Thu, 8 May 2025 14:45:41 +0100 Subject: [PATCH 09/17] Add newline to end of file. --- TS26512_ClientData.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TS26512_ClientData.yaml b/TS26512_ClientData.yaml index 751ae043..8d0a1999 100755 --- a/TS26512_ClientData.yaml +++ b/TS26512_ClientData.yaml @@ -138,4 +138,4 @@ components: CmcdObjectType: description: 'Media type of object' type: string - enum: [m, a, v, av, i, c, tt, k, o] \ No newline at end of file + enum: [m, a, v, av, i, c, tt, k, o] -- GitLab From 438b433f55bd50dc392425d4ca5feb2a4ad31b73 Mon Sep 17 00:00:00 2001 From: Richard Bradbury Date: Thu, 8 May 2025 15:40:50 +0100 Subject: [PATCH 10/17] Fixed typo in data type description. --- TS26510_Maf_SessionHandling_MetricsReporting.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TS26510_Maf_SessionHandling_MetricsReporting.yaml b/TS26510_Maf_SessionHandling_MetricsReporting.yaml index 01d0c2d8..24de8a81 100755 --- a/TS26510_Maf_SessionHandling_MetricsReporting.yaml +++ b/TS26510_Maf_SessionHandling_MetricsReporting.yaml @@ -104,7 +104,7 @@ components: schemas: MetricsReport: - description: 'A timestamped report of QoE metrics pertaining to one or more media delivery session' + description: 'A timestamped report of QoE metrics pertaining to one or more media delivery sessions' type: object required: - reportTimestamp -- GitLab From f965fcd76b084024cbb8041dcc210725c6c72a58 Mon Sep 17 00:00:00 2001 From: Richard Bradbury Date: Fri, 2 May 2025 12:42:31 +0100 Subject: [PATCH 11/17] Rebased against REL-19 after SA#108 and resolved merge conflicts. --- TS26510_Maf_SessionHandling_MetricsReporting.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/TS26510_Maf_SessionHandling_MetricsReporting.yaml b/TS26510_Maf_SessionHandling_MetricsReporting.yaml index 24de8a81..c8e32355 100755 --- a/TS26510_Maf_SessionHandling_MetricsReporting.yaml +++ b/TS26510_Maf_SessionHandling_MetricsReporting.yaml @@ -58,6 +58,7 @@ paths: application/3gpp-media-delivery-metrics-report+json: schema: $ref: '#/components/schemas/MetricsReport' + format: json application/*: schema: type: string -- GitLab From 7a4a45b0bda76d4e034fc8858699ea876b78849d Mon Sep 17 00:00:00 2001 From: Richard Bradbury Date: Fri, 11 Jul 2025 16:33:49 +0100 Subject: [PATCH 12/17] 26510-CR0021r3 [S4-251226]: Bump API version number. --- TS26510_Maf_SessionHandling_MetricsReporting.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TS26510_Maf_SessionHandling_MetricsReporting.yaml b/TS26510_Maf_SessionHandling_MetricsReporting.yaml index c8e32355..b7c53871 100755 --- a/TS26510_Maf_SessionHandling_MetricsReporting.yaml +++ b/TS26510_Maf_SessionHandling_MetricsReporting.yaml @@ -1,7 +1,7 @@ openapi: 3.0.0 info: title: Maf_SessionHandling_MetricsReporting - version: 1.0.1 + version: 1.0.2 description: | Media Delivery: Metrics Reporting API © 2025, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). -- GitLab From 5c856d40bedc2d794deae02be8d7be1d5b3ceff0 Mon Sep 17 00:00:00 2001 From: Richard Bradbury Date: Mon, 14 Jul 2025 11:15:22 +0100 Subject: [PATCH 13/17] Documented new externalServiceId property. --- TS26512_Mas_Configuration_ContentHosting.yaml | 1 + ..._Mas_Configuration_ContentHosting.yaml.bak | 369 ++++++++++++++++++ ...2_Mas_Configuration_ContentPublishing.yaml | 1 + ...s_Configuration_ContentPublishing.yaml.bak | 369 ++++++++++++++++++ 4 files changed, 740 insertions(+) create mode 100755 TS26512_Mas_Configuration_ContentHosting.yaml.bak create mode 100755 TS26512_Mas_Configuration_ContentPublishing.yaml.bak diff --git a/TS26512_Mas_Configuration_ContentHosting.yaml b/TS26512_Mas_Configuration_ContentHosting.yaml index cde9ef51..48894d15 100644 --- a/TS26512_Mas_Configuration_ContentHosting.yaml +++ b/TS26512_Mas_Configuration_ContentHosting.yaml @@ -360,6 +360,7 @@ components: type: string externalServiceId: type: string + description: 'External service identifier of the parent Provisioning Session for use in retrieving Service Access Information at reference point M3.' ingestConfiguration: $ref: 'TS26510_Maf_Provisioning_ContentHosting.yaml#/components/schemas/IngestConfiguration' distributionConfigurations: diff --git a/TS26512_Mas_Configuration_ContentHosting.yaml.bak b/TS26512_Mas_Configuration_ContentHosting.yaml.bak new file mode 100755 index 00000000..cde9ef51 --- /dev/null +++ b/TS26512_Mas_Configuration_ContentHosting.yaml.bak @@ -0,0 +1,369 @@ +openapi: 3.0.0 +info: + title: Mas_Configuration_ContentHosting + version: 1.1.0 + description: | + 5GMS AS Configuration API: Content Hosting + © 2025, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +tags: + - name: Mas_Configuration_ContentHosting + description: '5G Media Streaming: Application Server Configuration (M3) APIs: Content Hosting' + +externalDocs: + description: 'TS 26.512 V19.0.0; 5G Media Streaming (5GMS); Protocols' + url: 'https://www.3gpp.org/ftp/Specs/archive/26_series/26.512/' + +servers: + - url: '{apiRoot}/3gpp-mas-configuration/v3' + variables: + apiRoot: + default: https://example.com + description: See 3GPP TS 26.512 clause 6.1.2. + +security: + - {} + - OAuth2: [] + +paths: + /content-hosting-configurations: + summary: "Content Hosting Configuration collection" + get: + operationId: enumerateContentHostingConfigurations + summary: "Retrieve a list of Content Hosting Configuration resource identifiers currently registered with the 5GMS AS" + security: + - OAuth2: + - content-hosting-configuration_enumerate + responses: + '200': # OK + description: "Success" + content: + application/json: + schema: + type: array + items: + $ref: 'TS26510_CommonData.yaml#/components/schemas/ResourceId' + '400': # Bad Request: The syntax of the HTTP request is malformed in a way not covered by one of the following more specific client errors + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': # Unauthorized + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '413': # Payload Too Large: No request body allowed for this operation + $ref: 'TS29571_CommonData.yaml#/components/responses/413' + '500': # Internal Server Error + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': # Service Unavailable + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /content-hosting-configurations/{afResourceId}: + summary: "Operations to manipulate a single Content Hosting Configuration resource" + description: "Individual resources in the collection are addressed using an afResourceId nominated by the 5GMS AF which is unique in this collection at a given 5GMS AS instance." + parameters: + - name: afResourceId + in: path + required: true + schema: + $ref: 'TS26510_CommonData.yaml#/components/schemas/ResourceId' + description: 'The resource identifier of an existing Provisioning Session.' + post: + operationId: createContentHostingConfiguration + summary: 'Create and upload the Content Hosting Configuration for the specified Provisioning Session' + security: + - OAuth2: + - content-hosting-configuration_create + requestBody: + description: 'A JSON representation of a Content Hosting Configuration' + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationServerContentHostingConfiguration' + responses: + '201': # Created + description: 'Content Hosting Configuration Created' + headers: + Location: + description: 'URL of the newly created Content Hosting Configuration (which may be redirected from the request URL).' + required: true + schema: + $ref: 'TS26510_CommonData.yaml#/components/schemas/AbsoluteUrl' + '400': # Bad Request: The syntax of the HTTP request is malformed in a way not covered by one of the following more specific client errors + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': # Unauthorized + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '409': # Conflict: Resource already exists + $ref: 'TS29571_CommonData.yaml#/components/responses/409' + '410': # Gone: This resource has previously been destroyed + $ref: 'TS29571_CommonData.yaml#/components/responses/410' + '411': # Length Required + $ref: 'TS29571_CommonData.yaml#/components/responses/411' + '413': # Payload Too Large + $ref: 'TS29571_CommonData.yaml#/components/responses/413' + '414': # URI Too Long + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '415': # Unsupported Media Type + $ref: 'TS29571_CommonData.yaml#/components/responses/415' + '500': # Internal Server Error + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': # Service Unavailable + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + # get (Retrieval of individual Content Hosting Configuration resources is not permitted at reference point M3.) + put: + operationId: replaceContentHostingConfiguration + summary: 'Replace an existing Content Hosting Configuration for the specified Provisioning Session' + security: + - OAuth2: + - content-hosting-configuration_replace + requestBody: + description: 'A JSON representation of a Content Hosting Configuration' + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationServerContentHostingConfiguration' + responses: + '200': # OK + description: 'Content Hosting Configuration Replaced' + '204': # No Content + description: 'Content Hosting Configuration Unchanged' + '400': # Bad Request: The syntax of the HTTP request is malformed in a way not covered by one of the following more specific client errors + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': # Unauthorized + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '404': # Not Found + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '410': # Gone: This resource has previously been destroyed + $ref: 'TS29571_CommonData.yaml#/components/responses/410' + '411': # Length Required + $ref: 'TS29571_CommonData.yaml#/components/responses/411' + '413': # Payload Too Large + $ref: 'TS29571_CommonData.yaml#/components/responses/413' + '414': # URI Too long + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '415': # Unsupported Media Type + $ref: 'TS29571_CommonData.yaml#/components/responses/415' + '500': # Internal Server Error + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': # Service Unavailable + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + delete: + operationId: destroyContentHostingConfiguration + summary: 'Destroy the specified Content Hosting Configuration' + security: + - OAuth2: + - content-hosting-configuration_destroy + responses: + '204': # No Content + description: 'Content Hosting Configuration Destroyed' + '400': # Bad Request: The syntax of the HTTP request is malformed in a way not covered by one of the following more specific client errors + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': # Unauthorized + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '404': # Not Found + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '410': # Gone: This resource has previously been destroyed + $ref: 'TS29571_CommonData.yaml#/components/responses/410' + '413': # Payload Too Large: No request body allowed for this operation + $ref: 'TS29571_CommonData.yaml#/components/responses/413' + '414': # URI too long + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '500': # Internal Server Error + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': # Service Unavailable + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /content-hosting-configurations/{afResourceId}/active: + parameters: + - name: afResourceId + in: path + required: true + schema: + $ref: 'TS26510_CommonData.yaml#/components/schemas/ResourceId' + description: 'Individual resources in the collection are addressed using an afResourceId nominated by the 5GMS AF which is unique in this collection at a given 5GMS AS instance.' + post: + operationId: modifyContentHostingConfigurationState + summary: 'Activate or deactivate the specified Content Hosting Configuration' + security: + - OAuth2: + - content-hosting-configuration_modify-state + requestBody: + description: 'The desired state of the target Content Hosting Configuration' + required: true + content: + application/json: + schema: + description: 'The desired state of the target Content Hosting Configuration: true for active; false for inactive.' + type: boolean + responses: + '204': # No Content + description: 'No Content' + '400': # Bad Request: The syntax of the HTTP request is malformed in a way not covered by one of the following more specific client errors + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': # Unauthorized + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '404': # Not Found + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '410': # Gone: This resource has previously been destroyed + $ref: 'TS29571_CommonData.yaml#/components/responses/410' + '413': # Payload too large + $ref: 'TS29571_CommonData.yaml#/components/responses/413' + '415': # Unsupported Media Type + $ref: 'TS29571_CommonData.yaml#/components/responses/415' + '414': # URI too long + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '500': # Internal Server Error + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': # Service Unavailable + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + get: + operationId: interrogateContentHostingConfigurationState + summary: 'Interrogate the current state of the specified Content Hosting Configuration' + security: + - OAuth2: + - content-hosting-configuration_interrogate-state + responses: + '200': # OK + description: 'Success' + content: + application/json: + schema: + description: 'The current state of the target Content Hosting Configuration: true for active; false for inactive.' + type: boolean + '400': # Bad Request: The syntax of the HTTP request is malformed in a way not covered by one of the following more specific client errors + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': # Unauthorized + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '404': # Not Found + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '410': # Gone: This resource has previously been destroyed + $ref: 'TS29571_CommonData.yaml#/components/responses/410' + '413': # Payload Too Large: No request body allowed for this operation + $ref: 'TS29571_CommonData.yaml#/components/responses/413' + '415': # Unsupported Media Type + $ref: 'TS29571_CommonData.yaml#/components/responses/415' + '414': # URI too long + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '500': # Internal Server Error + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': # Service Unavailable + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /content-hosting-configurations/{afResourceId}/purge: + parameters: + - name: afResourceId + in: path + required: true + schema: + $ref: 'TS26510_CommonData.yaml#/components/schemas/ResourceId' + description: 'Individual resources in the collection are addressed using an afResourceId nominated by the 5GMS AF which is unique in this collection at a given 5GMS AS instance.' + post: + operationId: purgeContentHostingCache + summary: 'Purge the content of the cache for the specified Content Hosting Configuration' + security: + - OAuth2: + - content-hosting-configuration_purge-cache + requestBody: + description: 'The regular expression pattern for resources to purge from the cache' + required: true + content: + application/x-www-form-urlencoded: + schema: + properties: + pattern: + description: 'Keyword' + type: string + value: + description: 'The regular expression' + type: string + responses: + '204': # No Content + description: 'Content Purged' + '400': # Bad Request: The syntax of the HTTP request is malformed in a way not covered by one of the following more specific client errors + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': # Unauthorized + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '404': # Not Found + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '410': # Gone: This resource has previously been destroyed + $ref: 'TS29571_CommonData.yaml#/components/responses/410' + '411': # Length Required + $ref: 'TS29571_CommonData.yaml#/components/responses/411' + '413': # Payload too large + $ref: 'TS29571_CommonData.yaml#/components/responses/413' + '414': # URI too long + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '415': # Unsupported Media Type + $ref: 'TS29571_CommonData.yaml#/components/responses/415' + '500': # Internal Server Error + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': # Service Unavailable + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + OAuth2: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: + content-hosting-configuration_enumerate: Enumerate the current set of Content Hosting Configuration resources + content-hosting-configuration_create: Create a Content Hosting Configuration resource + content-hosting-configuration_replace: Replace a Content Hosting Configuration resource + content-hosting-configuration_destroy: Destroy a Content Hosting Configuration resource + content-hosting-configuration_modify-state: Modify the state of a Content Hosting Configuration resource + content-hosting-configuration_interrogate-state: Interrogate the state of a Content Hosting Configuration resource + content-hosting-configuration_purge-cache: Purge the cache associated with a Content Hosting Configuration resource + + schemas: + ApplicationServerDistributionConfiguration: + description: 'A content distribution configuration used to configure a Media AS.' + allOf: + - $ref: 'TS26510_Maf_Provisioning_ContentHosting.yaml#/components/schemas/BaseDistributionConfiguration' + - type: object + required: + - canonicalDomainName + - baseURL + properties: + canonicalDomainName: + type: string + description: 'Default Fully-Qualified Domain Name assigned by the Media AF for use at reference point M4.' + baseURL: + allOf: + - $ref: 'TS26510_CommonData.yaml#/components/schemas/AbsoluteUrl' + + # Schema for the resource itself + ApplicationServerContentHostingConfiguration: + type: object + description: "A representation of a Content Hosting Configuration resource used to configure a Media AS." + required: + - name + - externalServiceId + - ingestConfiguration + - distributionConfigurations + properties: + name: + type: string + externalServiceId: + type: string + ingestConfiguration: + $ref: 'TS26510_Maf_Provisioning_ContentHosting.yaml#/components/schemas/IngestConfiguration' + distributionConfigurations: + type: array + items: + $ref: '#/components/schemas/ApplicationServerDistributionConfiguration' + minItems: 1 diff --git a/TS26512_Mas_Configuration_ContentPublishing.yaml b/TS26512_Mas_Configuration_ContentPublishing.yaml index b1d9c3ea..322ea584 100644 --- a/TS26512_Mas_Configuration_ContentPublishing.yaml +++ b/TS26512_Mas_Configuration_ContentPublishing.yaml @@ -360,6 +360,7 @@ components: type: string externalServiceId: type: string + description: 'External service identifier of the parent Provisioning Session for use in retrieving Service Access Information at reference point M3.' contributionConfigurations: type: array items: diff --git a/TS26512_Mas_Configuration_ContentPublishing.yaml.bak b/TS26512_Mas_Configuration_ContentPublishing.yaml.bak new file mode 100755 index 00000000..b1d9c3ea --- /dev/null +++ b/TS26512_Mas_Configuration_ContentPublishing.yaml.bak @@ -0,0 +1,369 @@ +openapi: 3.0.0 +info: + title: Mas_Configuration_ContentPublishing + version: 1.1.0 + description: | + 5GMS AS Configuration API: Content Publishing + © 2025, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +tags: + - name: Mas_Configuration_ContentPublishing + description: '5G Media Streaming: Application Server Configuration (M3) APIs: Content Publishing' + +externalDocs: + description: 'TS 26.512 V19.0.0; 5G Media Streaming (5GMS); Protocols' + url: 'https://www.3gpp.org/ftp/Specs/archive/26_series/26.512/' + +servers: + - url: '{apiRoot}/3gpp-mas-configuration/v3' + variables: + apiRoot: + default: https://example.com + description: See 3GPP TS 29.512 clause 6.1.2. + +security: + - {} + - OAuth2: [] + +paths: + /content-publishing-configurations: + summary: "Content Publishing Configuration collection" + get: + operationId: enumerateContentPublishingConfigurations + summary: "Retrieve a list of Content Publishing Configuration resource identifiers currently registered with the 5GMS AS" + security: + - OAuth2: + - content-publishing-configuration_enumerate + responses: + '200': # OK + description: "Success" + content: + application/json: + schema: + type: array + items: + $ref: 'TS26510_CommonData.yaml#/components/schemas/ResourceId' + '400': # Bad Request: The syntax of the HTTP request is malformed in a way not covered by one of the following more specific client errors + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': # Unauthorized + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '413': # Payload Too Large: No request body allowed for this operation + $ref: 'TS29571_CommonData.yaml#/components/responses/413' + '500': # Internal Server Error + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': # Service Unavailable + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /content-publishing-configurations/{afResourceId}: + summary: "Operations to manipulate a single Content Publishing Configuration resource" + description: "Individual resources in the collection are addressed using an afResourceId nominated by the 5GMS AF which is unique in this collection at a given 5GMS AS instance." + parameters: + - name: afResourceId + in: path + required: true + schema: + $ref: 'TS26510_CommonData.yaml#/components/schemas/ResourceId' + description: 'The resource identifier of an existing Provisioning Session.' + post: + operationId: createContentPublishingConfiguration + summary: 'Create and upload the Content Publishing Configuration for the specified Provisioning Session' + security: + - OAuth2: + - content-publishing-configuration_create + requestBody: + description: 'A JSON representation of a Content Publishing Configuration' + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationServerContentPublishingConfiguration' + responses: + '201': # Created + description: 'Content Publishing Configuration Created' + headers: + Location: + description: 'URL of the newly created Content Publishing Configuration (which may be redirected from the request URL).' + required: true + schema: + $ref: 'TS26510_CommonData.yaml#/components/schemas/AbsoluteUrl' + '400': # Bad Request: The syntax of the HTTP request is malformed in a way not covered by one of the following more specific client errors + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': # Unauthorized + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '409': # Conflict: Resource already exists + $ref: 'TS29571_CommonData.yaml#/components/responses/409' + '410': # Gone: This resource has previously been destroyed + $ref: 'TS29571_CommonData.yaml#/components/responses/410' + '411': # Length Required + $ref: 'TS29571_CommonData.yaml#/components/responses/411' + '413': # Payload Too Large + $ref: 'TS29571_CommonData.yaml#/components/responses/413' + '414': # URI Too Long + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '415': # Unsupported Media Type + $ref: 'TS29571_CommonData.yaml#/components/responses/415' + '500': # Internal Server Error + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': # Service Unavailable + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + # get (Retrieval of individual Content Publishing Configuration resources is not permitted at reference point M3.) + put: + operationId: replaceContentPublishingConfiguration + summary: 'Replace an existing Content Publishing Configuration for the specified Provisioning Session' + security: + - OAuth2: + - content-publishing-configuration_replace + requestBody: + description: 'A JSON representation of a Content Publishing Configuration' + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationServerContentPublishingConfiguration' + responses: + '200': # OK + description: 'Content Publishing Configuration Replaced' + '204': # No Content + description: 'Content Publishing Configuration Unchanged' + '400': # Bad Request: The syntax of the HTTP request is malformed in a way not covered by one of the following more specific client errors + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': # Unauthorized + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '404': # Not Found + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '410': # Gone: This resource has previously been destroyed + $ref: 'TS29571_CommonData.yaml#/components/responses/410' + '411': # Length Required + $ref: 'TS29571_CommonData.yaml#/components/responses/411' + '413': # Payload Too Large + $ref: 'TS29571_CommonData.yaml#/components/responses/413' + '414': # URI Too long + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '415': # Unsupported Media Type + $ref: 'TS29571_CommonData.yaml#/components/responses/415' + '500': # Internal Server Error + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': # Service Unavailable + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + delete: + operationId: destroyContentPublishingConfiguration + summary: 'Destroy the specified Content Publishing Configuration' + security: + - OAuth2: + - content-publishing-configuration_destroy + responses: + '204': # No Content + description: 'Content Publishing Configuration Destroyed' + '400': # Bad Request: The syntax of the HTTP request is malformed in a way not covered by one of the following more specific client errors + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': # Unauthorized + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '404': # Not Found + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '410': # Gone: This resource has previously been destroyed + $ref: 'TS29571_CommonData.yaml#/components/responses/410' + '413': # Payload Too Large: No request body allowed for this operation + $ref: 'TS29571_CommonData.yaml#/components/responses/413' + '414': # URI too long + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '500': # Internal Server Error + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': # Service Unavailable + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /content-publishing-configurations/{afResourceId}/active: + parameters: + - name: afResourceId + in: path + required: true + schema: + $ref: 'TS26510_CommonData.yaml#/components/schemas/ResourceId' + description: 'Individual resources in the collection are addressed using an afResourceId nominated by the 5GMS AF which is unique in this collection at a given 5GMS AS instance.' + post: + operationId: modifyContentPublishingConfigurationState + summary: 'Activate or deactivate the specified Content Publishing Configuration' + security: + - OAuth2: + - content-publishing-configuration_modify-state + requestBody: + description: 'The desired state of the target Content Publishing Configuration' + required: true + content: + application/json: + schema: + description: 'The desired state of the target Content Publishing Configuration: true for active; false for inactive.' + type: boolean + responses: + '204': # No Content + description: 'No Content' + '400': # Bad Request: The syntax of the HTTP request is malformed in a way not covered by one of the following more specific client errors + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': # Unauthorized + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '404': # Not Found + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '410': # Gone: This resource has previously been destroyed + $ref: 'TS29571_CommonData.yaml#/components/responses/410' + '413': # Payload too large + $ref: 'TS29571_CommonData.yaml#/components/responses/413' + '415': # Unsupported Media Type + $ref: 'TS29571_CommonData.yaml#/components/responses/415' + '414': # URI too long + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '500': # Internal Server Error + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': # Service Unavailable + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + get: + operationId: interrogateContentPublishingConfigurationState + summary: 'Interrogate the current state of the specified Content Publishing Configuration' + security: + - OAuth2: + - content-publishing-configuration_interrogate-state + responses: + '200': # OK + description: 'Success' + content: + application/json: + schema: + description: 'The current state of the target Content Publishing Configuration: true for active; false for inactive.' + type: boolean + '400': # Bad Request: The syntax of the HTTP request is malformed in a way not covered by one of the following more specific client errors + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': # Unauthorized + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '404': # Not Found + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '410': # Gone: This resource has previously been destroyed + $ref: 'TS29571_CommonData.yaml#/components/responses/410' + '413': # Payload Too Large: No request body allowed for this operation + $ref: 'TS29571_CommonData.yaml#/components/responses/413' + '415': # Unsupported Media Type + $ref: 'TS29571_CommonData.yaml#/components/responses/415' + '414': # URI too long + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '500': # Internal Server Error + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': # Service Unavailable + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /content-publishing-configurations/{afResourceId}/purge: + parameters: + - name: afResourceId + in: path + required: true + schema: + $ref: 'TS26510_CommonData.yaml#/components/schemas/ResourceId' + description: 'Individual resources in the collection are addressed using an afResourceId nominated by the 5GMS AF which is unique in this collection at a given 5GMS AS instance.' + post: + operationId: purgeContentPublishingCache + summary: 'Purge the content of the cache for the specified Content Publishing Configuration' + security: + - OAuth2: + - content-publishing-configuration_purge-cache + requestBody: + description: 'The regular expression pattern for resources to purge from the cache' + required: true + content: + application/x-www-form-urlencoded: + schema: + properties: + pattern: + description: 'Keyword' + type: string + value: + description: 'The regular expression' + type: string + responses: + '204': # No Content + description: 'Content Purged' + '400': # Bad Request: The syntax of the HTTP request is malformed in a way not covered by one of the following more specific client errors + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': # Unauthorized + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '404': # Not Found + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '410': # Gone: This resource has previously been destroyed + $ref: 'TS29571_CommonData.yaml#/components/responses/410' + '411': # Length Required + $ref: 'TS29571_CommonData.yaml#/components/responses/411' + '413': # Payload too large + $ref: 'TS29571_CommonData.yaml#/components/responses/413' + '414': # URI too long + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '415': # Unsupported Media Type + $ref: 'TS29571_CommonData.yaml#/components/responses/415' + '500': # Internal Server Error + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': # Service Unavailable + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + OAuth2: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: + content-publishing-configuration_enumerate: Enumerate the current set of Content Publishing Configuration resources + content-publishing-configuration_create: Create a Content Publishing Configuration resource + content-publishing-configuration_replace: Replace a Content Publishing Configuration resource + content-publishing-configuration_destroy: Destroy a Content Publishing Configuration resource + content-publishing-configuration_modify-state: Modify the state of a Content Publishing Configuration resource + content-publishing-configuration_interrogate-state: Interrogate the state of a Content Publishing Configuration resource + content-publishing-configuration_purge-cache: Purge the cache associated with a Content Publishing Configuration resource + + schemas: + ApplicationServerContributionConfiguration: + description: 'A content contribution configuration used to configure a Media AS.' + allOf: + - $ref: 'TS26510_Maf_Provisioning_ContentPublishing.yaml#/components/schemas/BaseContributionConfiguration' + - type: object + required: + - canonicalDomainName + - baseURL + properties: + canonicalDomainName: + type: string + description: 'Default Fully-Qualified Domain Name assigned by the Media AF for use at reference point M4.' + baseURL: + allOf: + - $ref: 'TS26510_CommonData.yaml#/components/schemas/AbsoluteUrl' + + # Schema for the resource itself + ApplicationServerContentPublishingConfiguration: + type: object + description: "A representation of a Content Publishing Configuration resource used to configure a Media AS." + required: + - name + - externalServiceId + - contributionConfigurations + - egestConfiguration + properties: + name: + type: string + externalServiceId: + type: string + contributionConfigurations: + type: array + items: + $ref: '#/components/schemas/ApplicationServerContributionConfiguration' + minItems: 1 + egestConfiguration: + $ref: 'TS26510_Maf_Provisioning_ContentPublishing.yaml#/components/schemas/EgestConfiguration' -- GitLab From 37424e509340f85a35b8f7ac04d8a39e820708bc Mon Sep 17 00:00:00 2001 From: Richard Bradbury Date: Mon, 14 Jul 2025 11:15:59 +0100 Subject: [PATCH 14/17] Renamed data type ClientData to MediaStreamingClientData for reasons of future extensibility of client data to other systems. --- TS26510_Maf_SessionHandling_MetricsReporting.yaml | 2 +- TS26512_ClientData.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/TS26510_Maf_SessionHandling_MetricsReporting.yaml b/TS26510_Maf_SessionHandling_MetricsReporting.yaml index b7c53871..82ede776 100755 --- a/TS26510_Maf_SessionHandling_MetricsReporting.yaml +++ b/TS26510_Maf_SessionHandling_MetricsReporting.yaml @@ -155,5 +155,5 @@ components: $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' mediaStreamingClientData: allOf: - - $ref: 'TS26512_ClientData.yaml#/components/schemas/ClientData' + - $ref: 'TS26512_ClientData.yaml#/components/schemas/MediaStreamingClientData' - description: 'Client data for the 5G Media Streaming System. See clause 11.4.3.3 of TS 26.512.' diff --git a/TS26512_ClientData.yaml b/TS26512_ClientData.yaml index 8d0a1999..26a21074 100755 --- a/TS26512_ClientData.yaml +++ b/TS26512_ClientData.yaml @@ -19,7 +19,7 @@ paths: {} components: schemas: - ClientData: + MediaStreamingClientData: description: 'Envelope for client data pertaining to the 5G Media Streaming System.' type: object required: -- GitLab From 50c85a84e0741c99e377028fb99001a2e854a231 Mon Sep 17 00:00:00 2001 From: Richard Bradbury Date: Mon, 14 Jul 2025 12:21:56 +0100 Subject: [PATCH 15/17] Added contentId to MetricsSession data type to convey the 5GMS notion of content identifier, which may differ from the content identifier signalled in the DASH-MPD client data reporting configuration. --- TS26510_Maf_SessionHandling_MetricsReporting.yaml | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/TS26510_Maf_SessionHandling_MetricsReporting.yaml b/TS26510_Maf_SessionHandling_MetricsReporting.yaml index 82ede776..58e2f26f 100755 --- a/TS26510_Maf_SessionHandling_MetricsReporting.yaml +++ b/TS26510_Maf_SessionHandling_MetricsReporting.yaml @@ -123,16 +123,19 @@ components: description: 'A set of metrics samples pertaining to a particular media delivery session' type: object required: - - sessionId - clientId - provisioingSessionId + - sessionId properties: - sessionId: - $ref: 'TS26510_CommonData.yaml#/components/schemas/MediaDeliverySessionId' clientId: type: string provisioningSessionId: $ref: 'TS26510_CommonData.yaml#/components/schemas/ResourceId' + sessionId: + $ref: 'TS26510_CommonData.yaml#/components/schemas/MediaDeliverySessionId' + contentId: + type: string + description: 'Identifying the content currently being consumed in the media delivery session.' samples: type: array items: -- GitLab From 4d6c01dff70f0e88899cd4f4067a7f1a06ebed08 Mon Sep 17 00:00:00 2001 From: Richard Bradbury Date: Thu, 17 Jul 2025 08:34:59 +0100 Subject: [PATCH 16/17] Removing backup files. --- ..._Mas_Configuration_ContentHosting.yaml.bak | 369 ------------------ ...s_Configuration_ContentPublishing.yaml.bak | 369 ------------------ 2 files changed, 738 deletions(-) delete mode 100755 TS26512_Mas_Configuration_ContentHosting.yaml.bak delete mode 100755 TS26512_Mas_Configuration_ContentPublishing.yaml.bak diff --git a/TS26512_Mas_Configuration_ContentHosting.yaml.bak b/TS26512_Mas_Configuration_ContentHosting.yaml.bak deleted file mode 100755 index cde9ef51..00000000 --- a/TS26512_Mas_Configuration_ContentHosting.yaml.bak +++ /dev/null @@ -1,369 +0,0 @@ -openapi: 3.0.0 -info: - title: Mas_Configuration_ContentHosting - version: 1.1.0 - description: | - 5GMS AS Configuration API: Content Hosting - © 2025, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). - All rights reserved. - -tags: - - name: Mas_Configuration_ContentHosting - description: '5G Media Streaming: Application Server Configuration (M3) APIs: Content Hosting' - -externalDocs: - description: 'TS 26.512 V19.0.0; 5G Media Streaming (5GMS); Protocols' - url: 'https://www.3gpp.org/ftp/Specs/archive/26_series/26.512/' - -servers: - - url: '{apiRoot}/3gpp-mas-configuration/v3' - variables: - apiRoot: - default: https://example.com - description: See 3GPP TS 26.512 clause 6.1.2. - -security: - - {} - - OAuth2: [] - -paths: - /content-hosting-configurations: - summary: "Content Hosting Configuration collection" - get: - operationId: enumerateContentHostingConfigurations - summary: "Retrieve a list of Content Hosting Configuration resource identifiers currently registered with the 5GMS AS" - security: - - OAuth2: - - content-hosting-configuration_enumerate - responses: - '200': # OK - description: "Success" - content: - application/json: - schema: - type: array - items: - $ref: 'TS26510_CommonData.yaml#/components/schemas/ResourceId' - '400': # Bad Request: The syntax of the HTTP request is malformed in a way not covered by one of the following more specific client errors - $ref: 'TS29571_CommonData.yaml#/components/responses/400' - '401': # Unauthorized - $ref: 'TS29571_CommonData.yaml#/components/responses/401' - '413': # Payload Too Large: No request body allowed for this operation - $ref: 'TS29571_CommonData.yaml#/components/responses/413' - '500': # Internal Server Error - $ref: 'TS29571_CommonData.yaml#/components/responses/500' - '503': # Service Unavailable - $ref: 'TS29571_CommonData.yaml#/components/responses/503' - default: - $ref: 'TS29571_CommonData.yaml#/components/responses/default' - - /content-hosting-configurations/{afResourceId}: - summary: "Operations to manipulate a single Content Hosting Configuration resource" - description: "Individual resources in the collection are addressed using an afResourceId nominated by the 5GMS AF which is unique in this collection at a given 5GMS AS instance." - parameters: - - name: afResourceId - in: path - required: true - schema: - $ref: 'TS26510_CommonData.yaml#/components/schemas/ResourceId' - description: 'The resource identifier of an existing Provisioning Session.' - post: - operationId: createContentHostingConfiguration - summary: 'Create and upload the Content Hosting Configuration for the specified Provisioning Session' - security: - - OAuth2: - - content-hosting-configuration_create - requestBody: - description: 'A JSON representation of a Content Hosting Configuration' - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/ApplicationServerContentHostingConfiguration' - responses: - '201': # Created - description: 'Content Hosting Configuration Created' - headers: - Location: - description: 'URL of the newly created Content Hosting Configuration (which may be redirected from the request URL).' - required: true - schema: - $ref: 'TS26510_CommonData.yaml#/components/schemas/AbsoluteUrl' - '400': # Bad Request: The syntax of the HTTP request is malformed in a way not covered by one of the following more specific client errors - $ref: 'TS29571_CommonData.yaml#/components/responses/400' - '401': # Unauthorized - $ref: 'TS29571_CommonData.yaml#/components/responses/401' - '409': # Conflict: Resource already exists - $ref: 'TS29571_CommonData.yaml#/components/responses/409' - '410': # Gone: This resource has previously been destroyed - $ref: 'TS29571_CommonData.yaml#/components/responses/410' - '411': # Length Required - $ref: 'TS29571_CommonData.yaml#/components/responses/411' - '413': # Payload Too Large - $ref: 'TS29571_CommonData.yaml#/components/responses/413' - '414': # URI Too Long - $ref: 'TS29571_CommonData.yaml#/components/responses/414' - '415': # Unsupported Media Type - $ref: 'TS29571_CommonData.yaml#/components/responses/415' - '500': # Internal Server Error - $ref: 'TS29571_CommonData.yaml#/components/responses/500' - '503': # Service Unavailable - $ref: 'TS29571_CommonData.yaml#/components/responses/503' - default: - $ref: 'TS29571_CommonData.yaml#/components/responses/default' - # get (Retrieval of individual Content Hosting Configuration resources is not permitted at reference point M3.) - put: - operationId: replaceContentHostingConfiguration - summary: 'Replace an existing Content Hosting Configuration for the specified Provisioning Session' - security: - - OAuth2: - - content-hosting-configuration_replace - requestBody: - description: 'A JSON representation of a Content Hosting Configuration' - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/ApplicationServerContentHostingConfiguration' - responses: - '200': # OK - description: 'Content Hosting Configuration Replaced' - '204': # No Content - description: 'Content Hosting Configuration Unchanged' - '400': # Bad Request: The syntax of the HTTP request is malformed in a way not covered by one of the following more specific client errors - $ref: 'TS29571_CommonData.yaml#/components/responses/400' - '401': # Unauthorized - $ref: 'TS29571_CommonData.yaml#/components/responses/401' - '404': # Not Found - $ref: 'TS29571_CommonData.yaml#/components/responses/404' - '410': # Gone: This resource has previously been destroyed - $ref: 'TS29571_CommonData.yaml#/components/responses/410' - '411': # Length Required - $ref: 'TS29571_CommonData.yaml#/components/responses/411' - '413': # Payload Too Large - $ref: 'TS29571_CommonData.yaml#/components/responses/413' - '414': # URI Too long - $ref: 'TS29571_CommonData.yaml#/components/responses/414' - '415': # Unsupported Media Type - $ref: 'TS29571_CommonData.yaml#/components/responses/415' - '500': # Internal Server Error - $ref: 'TS29571_CommonData.yaml#/components/responses/500' - '503': # Service Unavailable - $ref: 'TS29571_CommonData.yaml#/components/responses/503' - default: - $ref: 'TS29571_CommonData.yaml#/components/responses/default' - delete: - operationId: destroyContentHostingConfiguration - summary: 'Destroy the specified Content Hosting Configuration' - security: - - OAuth2: - - content-hosting-configuration_destroy - responses: - '204': # No Content - description: 'Content Hosting Configuration Destroyed' - '400': # Bad Request: The syntax of the HTTP request is malformed in a way not covered by one of the following more specific client errors - $ref: 'TS29571_CommonData.yaml#/components/responses/400' - '401': # Unauthorized - $ref: 'TS29571_CommonData.yaml#/components/responses/401' - '404': # Not Found - $ref: 'TS29571_CommonData.yaml#/components/responses/404' - '410': # Gone: This resource has previously been destroyed - $ref: 'TS29571_CommonData.yaml#/components/responses/410' - '413': # Payload Too Large: No request body allowed for this operation - $ref: 'TS29571_CommonData.yaml#/components/responses/413' - '414': # URI too long - $ref: 'TS29571_CommonData.yaml#/components/responses/414' - '500': # Internal Server Error - $ref: 'TS29571_CommonData.yaml#/components/responses/500' - '503': # Service Unavailable - $ref: 'TS29571_CommonData.yaml#/components/responses/503' - default: - $ref: 'TS29571_CommonData.yaml#/components/responses/default' - - /content-hosting-configurations/{afResourceId}/active: - parameters: - - name: afResourceId - in: path - required: true - schema: - $ref: 'TS26510_CommonData.yaml#/components/schemas/ResourceId' - description: 'Individual resources in the collection are addressed using an afResourceId nominated by the 5GMS AF which is unique in this collection at a given 5GMS AS instance.' - post: - operationId: modifyContentHostingConfigurationState - summary: 'Activate or deactivate the specified Content Hosting Configuration' - security: - - OAuth2: - - content-hosting-configuration_modify-state - requestBody: - description: 'The desired state of the target Content Hosting Configuration' - required: true - content: - application/json: - schema: - description: 'The desired state of the target Content Hosting Configuration: true for active; false for inactive.' - type: boolean - responses: - '204': # No Content - description: 'No Content' - '400': # Bad Request: The syntax of the HTTP request is malformed in a way not covered by one of the following more specific client errors - $ref: 'TS29571_CommonData.yaml#/components/responses/400' - '401': # Unauthorized - $ref: 'TS29571_CommonData.yaml#/components/responses/401' - '404': # Not Found - $ref: 'TS29571_CommonData.yaml#/components/responses/404' - '410': # Gone: This resource has previously been destroyed - $ref: 'TS29571_CommonData.yaml#/components/responses/410' - '413': # Payload too large - $ref: 'TS29571_CommonData.yaml#/components/responses/413' - '415': # Unsupported Media Type - $ref: 'TS29571_CommonData.yaml#/components/responses/415' - '414': # URI too long - $ref: 'TS29571_CommonData.yaml#/components/responses/414' - '500': # Internal Server Error - $ref: 'TS29571_CommonData.yaml#/components/responses/500' - '503': # Service Unavailable - $ref: 'TS29571_CommonData.yaml#/components/responses/503' - default: - $ref: 'TS29571_CommonData.yaml#/components/responses/default' - get: - operationId: interrogateContentHostingConfigurationState - summary: 'Interrogate the current state of the specified Content Hosting Configuration' - security: - - OAuth2: - - content-hosting-configuration_interrogate-state - responses: - '200': # OK - description: 'Success' - content: - application/json: - schema: - description: 'The current state of the target Content Hosting Configuration: true for active; false for inactive.' - type: boolean - '400': # Bad Request: The syntax of the HTTP request is malformed in a way not covered by one of the following more specific client errors - $ref: 'TS29571_CommonData.yaml#/components/responses/400' - '401': # Unauthorized - $ref: 'TS29571_CommonData.yaml#/components/responses/401' - '404': # Not Found - $ref: 'TS29571_CommonData.yaml#/components/responses/404' - '410': # Gone: This resource has previously been destroyed - $ref: 'TS29571_CommonData.yaml#/components/responses/410' - '413': # Payload Too Large: No request body allowed for this operation - $ref: 'TS29571_CommonData.yaml#/components/responses/413' - '415': # Unsupported Media Type - $ref: 'TS29571_CommonData.yaml#/components/responses/415' - '414': # URI too long - $ref: 'TS29571_CommonData.yaml#/components/responses/414' - '500': # Internal Server Error - $ref: 'TS29571_CommonData.yaml#/components/responses/500' - '503': # Service Unavailable - $ref: 'TS29571_CommonData.yaml#/components/responses/503' - default: - $ref: 'TS29571_CommonData.yaml#/components/responses/default' - - /content-hosting-configurations/{afResourceId}/purge: - parameters: - - name: afResourceId - in: path - required: true - schema: - $ref: 'TS26510_CommonData.yaml#/components/schemas/ResourceId' - description: 'Individual resources in the collection are addressed using an afResourceId nominated by the 5GMS AF which is unique in this collection at a given 5GMS AS instance.' - post: - operationId: purgeContentHostingCache - summary: 'Purge the content of the cache for the specified Content Hosting Configuration' - security: - - OAuth2: - - content-hosting-configuration_purge-cache - requestBody: - description: 'The regular expression pattern for resources to purge from the cache' - required: true - content: - application/x-www-form-urlencoded: - schema: - properties: - pattern: - description: 'Keyword' - type: string - value: - description: 'The regular expression' - type: string - responses: - '204': # No Content - description: 'Content Purged' - '400': # Bad Request: The syntax of the HTTP request is malformed in a way not covered by one of the following more specific client errors - $ref: 'TS29571_CommonData.yaml#/components/responses/400' - '401': # Unauthorized - $ref: 'TS29571_CommonData.yaml#/components/responses/401' - '404': # Not Found - $ref: 'TS29571_CommonData.yaml#/components/responses/404' - '410': # Gone: This resource has previously been destroyed - $ref: 'TS29571_CommonData.yaml#/components/responses/410' - '411': # Length Required - $ref: 'TS29571_CommonData.yaml#/components/responses/411' - '413': # Payload too large - $ref: 'TS29571_CommonData.yaml#/components/responses/413' - '414': # URI too long - $ref: 'TS29571_CommonData.yaml#/components/responses/414' - '415': # Unsupported Media Type - $ref: 'TS29571_CommonData.yaml#/components/responses/415' - '500': # Internal Server Error - $ref: 'TS29571_CommonData.yaml#/components/responses/500' - '503': # Service Unavailable - $ref: 'TS29571_CommonData.yaml#/components/responses/503' - default: - $ref: 'TS29571_CommonData.yaml#/components/responses/default' - -components: - securitySchemes: - OAuth2: - type: oauth2 - flows: - clientCredentials: - tokenUrl: '{tokenUrl}' - scopes: - content-hosting-configuration_enumerate: Enumerate the current set of Content Hosting Configuration resources - content-hosting-configuration_create: Create a Content Hosting Configuration resource - content-hosting-configuration_replace: Replace a Content Hosting Configuration resource - content-hosting-configuration_destroy: Destroy a Content Hosting Configuration resource - content-hosting-configuration_modify-state: Modify the state of a Content Hosting Configuration resource - content-hosting-configuration_interrogate-state: Interrogate the state of a Content Hosting Configuration resource - content-hosting-configuration_purge-cache: Purge the cache associated with a Content Hosting Configuration resource - - schemas: - ApplicationServerDistributionConfiguration: - description: 'A content distribution configuration used to configure a Media AS.' - allOf: - - $ref: 'TS26510_Maf_Provisioning_ContentHosting.yaml#/components/schemas/BaseDistributionConfiguration' - - type: object - required: - - canonicalDomainName - - baseURL - properties: - canonicalDomainName: - type: string - description: 'Default Fully-Qualified Domain Name assigned by the Media AF for use at reference point M4.' - baseURL: - allOf: - - $ref: 'TS26510_CommonData.yaml#/components/schemas/AbsoluteUrl' - - # Schema for the resource itself - ApplicationServerContentHostingConfiguration: - type: object - description: "A representation of a Content Hosting Configuration resource used to configure a Media AS." - required: - - name - - externalServiceId - - ingestConfiguration - - distributionConfigurations - properties: - name: - type: string - externalServiceId: - type: string - ingestConfiguration: - $ref: 'TS26510_Maf_Provisioning_ContentHosting.yaml#/components/schemas/IngestConfiguration' - distributionConfigurations: - type: array - items: - $ref: '#/components/schemas/ApplicationServerDistributionConfiguration' - minItems: 1 diff --git a/TS26512_Mas_Configuration_ContentPublishing.yaml.bak b/TS26512_Mas_Configuration_ContentPublishing.yaml.bak deleted file mode 100755 index b1d9c3ea..00000000 --- a/TS26512_Mas_Configuration_ContentPublishing.yaml.bak +++ /dev/null @@ -1,369 +0,0 @@ -openapi: 3.0.0 -info: - title: Mas_Configuration_ContentPublishing - version: 1.1.0 - description: | - 5GMS AS Configuration API: Content Publishing - © 2025, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). - All rights reserved. - -tags: - - name: Mas_Configuration_ContentPublishing - description: '5G Media Streaming: Application Server Configuration (M3) APIs: Content Publishing' - -externalDocs: - description: 'TS 26.512 V19.0.0; 5G Media Streaming (5GMS); Protocols' - url: 'https://www.3gpp.org/ftp/Specs/archive/26_series/26.512/' - -servers: - - url: '{apiRoot}/3gpp-mas-configuration/v3' - variables: - apiRoot: - default: https://example.com - description: See 3GPP TS 29.512 clause 6.1.2. - -security: - - {} - - OAuth2: [] - -paths: - /content-publishing-configurations: - summary: "Content Publishing Configuration collection" - get: - operationId: enumerateContentPublishingConfigurations - summary: "Retrieve a list of Content Publishing Configuration resource identifiers currently registered with the 5GMS AS" - security: - - OAuth2: - - content-publishing-configuration_enumerate - responses: - '200': # OK - description: "Success" - content: - application/json: - schema: - type: array - items: - $ref: 'TS26510_CommonData.yaml#/components/schemas/ResourceId' - '400': # Bad Request: The syntax of the HTTP request is malformed in a way not covered by one of the following more specific client errors - $ref: 'TS29571_CommonData.yaml#/components/responses/400' - '401': # Unauthorized - $ref: 'TS29571_CommonData.yaml#/components/responses/401' - '413': # Payload Too Large: No request body allowed for this operation - $ref: 'TS29571_CommonData.yaml#/components/responses/413' - '500': # Internal Server Error - $ref: 'TS29571_CommonData.yaml#/components/responses/500' - '503': # Service Unavailable - $ref: 'TS29571_CommonData.yaml#/components/responses/503' - default: - $ref: 'TS29571_CommonData.yaml#/components/responses/default' - - /content-publishing-configurations/{afResourceId}: - summary: "Operations to manipulate a single Content Publishing Configuration resource" - description: "Individual resources in the collection are addressed using an afResourceId nominated by the 5GMS AF which is unique in this collection at a given 5GMS AS instance." - parameters: - - name: afResourceId - in: path - required: true - schema: - $ref: 'TS26510_CommonData.yaml#/components/schemas/ResourceId' - description: 'The resource identifier of an existing Provisioning Session.' - post: - operationId: createContentPublishingConfiguration - summary: 'Create and upload the Content Publishing Configuration for the specified Provisioning Session' - security: - - OAuth2: - - content-publishing-configuration_create - requestBody: - description: 'A JSON representation of a Content Publishing Configuration' - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/ApplicationServerContentPublishingConfiguration' - responses: - '201': # Created - description: 'Content Publishing Configuration Created' - headers: - Location: - description: 'URL of the newly created Content Publishing Configuration (which may be redirected from the request URL).' - required: true - schema: - $ref: 'TS26510_CommonData.yaml#/components/schemas/AbsoluteUrl' - '400': # Bad Request: The syntax of the HTTP request is malformed in a way not covered by one of the following more specific client errors - $ref: 'TS29571_CommonData.yaml#/components/responses/400' - '401': # Unauthorized - $ref: 'TS29571_CommonData.yaml#/components/responses/401' - '409': # Conflict: Resource already exists - $ref: 'TS29571_CommonData.yaml#/components/responses/409' - '410': # Gone: This resource has previously been destroyed - $ref: 'TS29571_CommonData.yaml#/components/responses/410' - '411': # Length Required - $ref: 'TS29571_CommonData.yaml#/components/responses/411' - '413': # Payload Too Large - $ref: 'TS29571_CommonData.yaml#/components/responses/413' - '414': # URI Too Long - $ref: 'TS29571_CommonData.yaml#/components/responses/414' - '415': # Unsupported Media Type - $ref: 'TS29571_CommonData.yaml#/components/responses/415' - '500': # Internal Server Error - $ref: 'TS29571_CommonData.yaml#/components/responses/500' - '503': # Service Unavailable - $ref: 'TS29571_CommonData.yaml#/components/responses/503' - default: - $ref: 'TS29571_CommonData.yaml#/components/responses/default' - # get (Retrieval of individual Content Publishing Configuration resources is not permitted at reference point M3.) - put: - operationId: replaceContentPublishingConfiguration - summary: 'Replace an existing Content Publishing Configuration for the specified Provisioning Session' - security: - - OAuth2: - - content-publishing-configuration_replace - requestBody: - description: 'A JSON representation of a Content Publishing Configuration' - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/ApplicationServerContentPublishingConfiguration' - responses: - '200': # OK - description: 'Content Publishing Configuration Replaced' - '204': # No Content - description: 'Content Publishing Configuration Unchanged' - '400': # Bad Request: The syntax of the HTTP request is malformed in a way not covered by one of the following more specific client errors - $ref: 'TS29571_CommonData.yaml#/components/responses/400' - '401': # Unauthorized - $ref: 'TS29571_CommonData.yaml#/components/responses/401' - '404': # Not Found - $ref: 'TS29571_CommonData.yaml#/components/responses/404' - '410': # Gone: This resource has previously been destroyed - $ref: 'TS29571_CommonData.yaml#/components/responses/410' - '411': # Length Required - $ref: 'TS29571_CommonData.yaml#/components/responses/411' - '413': # Payload Too Large - $ref: 'TS29571_CommonData.yaml#/components/responses/413' - '414': # URI Too long - $ref: 'TS29571_CommonData.yaml#/components/responses/414' - '415': # Unsupported Media Type - $ref: 'TS29571_CommonData.yaml#/components/responses/415' - '500': # Internal Server Error - $ref: 'TS29571_CommonData.yaml#/components/responses/500' - '503': # Service Unavailable - $ref: 'TS29571_CommonData.yaml#/components/responses/503' - default: - $ref: 'TS29571_CommonData.yaml#/components/responses/default' - delete: - operationId: destroyContentPublishingConfiguration - summary: 'Destroy the specified Content Publishing Configuration' - security: - - OAuth2: - - content-publishing-configuration_destroy - responses: - '204': # No Content - description: 'Content Publishing Configuration Destroyed' - '400': # Bad Request: The syntax of the HTTP request is malformed in a way not covered by one of the following more specific client errors - $ref: 'TS29571_CommonData.yaml#/components/responses/400' - '401': # Unauthorized - $ref: 'TS29571_CommonData.yaml#/components/responses/401' - '404': # Not Found - $ref: 'TS29571_CommonData.yaml#/components/responses/404' - '410': # Gone: This resource has previously been destroyed - $ref: 'TS29571_CommonData.yaml#/components/responses/410' - '413': # Payload Too Large: No request body allowed for this operation - $ref: 'TS29571_CommonData.yaml#/components/responses/413' - '414': # URI too long - $ref: 'TS29571_CommonData.yaml#/components/responses/414' - '500': # Internal Server Error - $ref: 'TS29571_CommonData.yaml#/components/responses/500' - '503': # Service Unavailable - $ref: 'TS29571_CommonData.yaml#/components/responses/503' - default: - $ref: 'TS29571_CommonData.yaml#/components/responses/default' - - /content-publishing-configurations/{afResourceId}/active: - parameters: - - name: afResourceId - in: path - required: true - schema: - $ref: 'TS26510_CommonData.yaml#/components/schemas/ResourceId' - description: 'Individual resources in the collection are addressed using an afResourceId nominated by the 5GMS AF which is unique in this collection at a given 5GMS AS instance.' - post: - operationId: modifyContentPublishingConfigurationState - summary: 'Activate or deactivate the specified Content Publishing Configuration' - security: - - OAuth2: - - content-publishing-configuration_modify-state - requestBody: - description: 'The desired state of the target Content Publishing Configuration' - required: true - content: - application/json: - schema: - description: 'The desired state of the target Content Publishing Configuration: true for active; false for inactive.' - type: boolean - responses: - '204': # No Content - description: 'No Content' - '400': # Bad Request: The syntax of the HTTP request is malformed in a way not covered by one of the following more specific client errors - $ref: 'TS29571_CommonData.yaml#/components/responses/400' - '401': # Unauthorized - $ref: 'TS29571_CommonData.yaml#/components/responses/401' - '404': # Not Found - $ref: 'TS29571_CommonData.yaml#/components/responses/404' - '410': # Gone: This resource has previously been destroyed - $ref: 'TS29571_CommonData.yaml#/components/responses/410' - '413': # Payload too large - $ref: 'TS29571_CommonData.yaml#/components/responses/413' - '415': # Unsupported Media Type - $ref: 'TS29571_CommonData.yaml#/components/responses/415' - '414': # URI too long - $ref: 'TS29571_CommonData.yaml#/components/responses/414' - '500': # Internal Server Error - $ref: 'TS29571_CommonData.yaml#/components/responses/500' - '503': # Service Unavailable - $ref: 'TS29571_CommonData.yaml#/components/responses/503' - default: - $ref: 'TS29571_CommonData.yaml#/components/responses/default' - get: - operationId: interrogateContentPublishingConfigurationState - summary: 'Interrogate the current state of the specified Content Publishing Configuration' - security: - - OAuth2: - - content-publishing-configuration_interrogate-state - responses: - '200': # OK - description: 'Success' - content: - application/json: - schema: - description: 'The current state of the target Content Publishing Configuration: true for active; false for inactive.' - type: boolean - '400': # Bad Request: The syntax of the HTTP request is malformed in a way not covered by one of the following more specific client errors - $ref: 'TS29571_CommonData.yaml#/components/responses/400' - '401': # Unauthorized - $ref: 'TS29571_CommonData.yaml#/components/responses/401' - '404': # Not Found - $ref: 'TS29571_CommonData.yaml#/components/responses/404' - '410': # Gone: This resource has previously been destroyed - $ref: 'TS29571_CommonData.yaml#/components/responses/410' - '413': # Payload Too Large: No request body allowed for this operation - $ref: 'TS29571_CommonData.yaml#/components/responses/413' - '415': # Unsupported Media Type - $ref: 'TS29571_CommonData.yaml#/components/responses/415' - '414': # URI too long - $ref: 'TS29571_CommonData.yaml#/components/responses/414' - '500': # Internal Server Error - $ref: 'TS29571_CommonData.yaml#/components/responses/500' - '503': # Service Unavailable - $ref: 'TS29571_CommonData.yaml#/components/responses/503' - default: - $ref: 'TS29571_CommonData.yaml#/components/responses/default' - - /content-publishing-configurations/{afResourceId}/purge: - parameters: - - name: afResourceId - in: path - required: true - schema: - $ref: 'TS26510_CommonData.yaml#/components/schemas/ResourceId' - description: 'Individual resources in the collection are addressed using an afResourceId nominated by the 5GMS AF which is unique in this collection at a given 5GMS AS instance.' - post: - operationId: purgeContentPublishingCache - summary: 'Purge the content of the cache for the specified Content Publishing Configuration' - security: - - OAuth2: - - content-publishing-configuration_purge-cache - requestBody: - description: 'The regular expression pattern for resources to purge from the cache' - required: true - content: - application/x-www-form-urlencoded: - schema: - properties: - pattern: - description: 'Keyword' - type: string - value: - description: 'The regular expression' - type: string - responses: - '204': # No Content - description: 'Content Purged' - '400': # Bad Request: The syntax of the HTTP request is malformed in a way not covered by one of the following more specific client errors - $ref: 'TS29571_CommonData.yaml#/components/responses/400' - '401': # Unauthorized - $ref: 'TS29571_CommonData.yaml#/components/responses/401' - '404': # Not Found - $ref: 'TS29571_CommonData.yaml#/components/responses/404' - '410': # Gone: This resource has previously been destroyed - $ref: 'TS29571_CommonData.yaml#/components/responses/410' - '411': # Length Required - $ref: 'TS29571_CommonData.yaml#/components/responses/411' - '413': # Payload too large - $ref: 'TS29571_CommonData.yaml#/components/responses/413' - '414': # URI too long - $ref: 'TS29571_CommonData.yaml#/components/responses/414' - '415': # Unsupported Media Type - $ref: 'TS29571_CommonData.yaml#/components/responses/415' - '500': # Internal Server Error - $ref: 'TS29571_CommonData.yaml#/components/responses/500' - '503': # Service Unavailable - $ref: 'TS29571_CommonData.yaml#/components/responses/503' - default: - $ref: 'TS29571_CommonData.yaml#/components/responses/default' - -components: - securitySchemes: - OAuth2: - type: oauth2 - flows: - clientCredentials: - tokenUrl: '{tokenUrl}' - scopes: - content-publishing-configuration_enumerate: Enumerate the current set of Content Publishing Configuration resources - content-publishing-configuration_create: Create a Content Publishing Configuration resource - content-publishing-configuration_replace: Replace a Content Publishing Configuration resource - content-publishing-configuration_destroy: Destroy a Content Publishing Configuration resource - content-publishing-configuration_modify-state: Modify the state of a Content Publishing Configuration resource - content-publishing-configuration_interrogate-state: Interrogate the state of a Content Publishing Configuration resource - content-publishing-configuration_purge-cache: Purge the cache associated with a Content Publishing Configuration resource - - schemas: - ApplicationServerContributionConfiguration: - description: 'A content contribution configuration used to configure a Media AS.' - allOf: - - $ref: 'TS26510_Maf_Provisioning_ContentPublishing.yaml#/components/schemas/BaseContributionConfiguration' - - type: object - required: - - canonicalDomainName - - baseURL - properties: - canonicalDomainName: - type: string - description: 'Default Fully-Qualified Domain Name assigned by the Media AF for use at reference point M4.' - baseURL: - allOf: - - $ref: 'TS26510_CommonData.yaml#/components/schemas/AbsoluteUrl' - - # Schema for the resource itself - ApplicationServerContentPublishingConfiguration: - type: object - description: "A representation of a Content Publishing Configuration resource used to configure a Media AS." - required: - - name - - externalServiceId - - contributionConfigurations - - egestConfiguration - properties: - name: - type: string - externalServiceId: - type: string - contributionConfigurations: - type: array - items: - $ref: '#/components/schemas/ApplicationServerContributionConfiguration' - minItems: 1 - egestConfiguration: - $ref: 'TS26510_Maf_Provisioning_ContentPublishing.yaml#/components/schemas/EgestConfiguration' -- GitLab From 927cd76f96492b6a2bb12f6dc16d42b972605c0f Mon Sep 17 00:00:00 2001 From: Richard Bradbury Date: Mon, 29 Sep 2025 17:09:32 +0100 Subject: [PATCH 17/17] Bump middle API version number rather than final number. --- TS26510_Maf_SessionHandling_MetricsReporting.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TS26510_Maf_SessionHandling_MetricsReporting.yaml b/TS26510_Maf_SessionHandling_MetricsReporting.yaml index 58e2f26f..f1a46933 100755 --- a/TS26510_Maf_SessionHandling_MetricsReporting.yaml +++ b/TS26510_Maf_SessionHandling_MetricsReporting.yaml @@ -1,7 +1,7 @@ openapi: 3.0.0 info: title: Maf_SessionHandling_MetricsReporting - version: 1.0.2 + version: 1.1.0 description: | Media Delivery: Metrics Reporting API © 2025, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). -- GitLab