C.4 OpenAPI representation of the M5 APIs
26.5123GPP5G Media Streaming (5GMS)ProtocolsRelease 17TS
C.4.1 M5_ServiceAccessInformation API
openapi: 3.0.0 info: title: M5_ServiceAccessInformation version: 2.1.0 description: | 5GMS AF M5 Service Access Information API © 2022, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved. tags: – name: M5_ServiceAccessInformation description: ‘5G Media Streaming: Media Session Handling (M5) APIs: Service Access Information’ externalDocs: description: ‘TS 26.512 V17.2.0; 5G Media Streaming (5GMS); Protocols’ url: ‘https://www.3gpp.org/ftp/Specs/archive/26_series/26.512/’ servers: – url: ‘{apiRoot}/3gpp-m5/v2’ variables: apiRoot: default: https://example.com description: See 3GPP TS 29.512 clause 6.1. paths: /service-access-information/{provisioningSessionId}: parameters: – name: provisioningSessionId description: ‘The resource identifier of an existing Provisioning Session.’ in: path required: true schema: $ref: ‘TS26512_CommonData.yaml#/components/schemas/ResourceId’ get: operationId: retrieveServiceAccessInformation summary: ‘Retrieve the Service Access Information resource’ responses: ‘200’: description: ‘Success’ content: application/json: schema: $ref: ‘#/components/schemas/ServiceAccessInformationResource’ ‘404’: description: ‘Not Found’ components: schemas: ServerAddresses: description: "A set of application endpoint addresses." type: array items: $ref: ‘TS26512_CommonData.yaml#/components/schemas/Url’ minItems: 1 ServiceAccessInformationResource: description: "A representation of a Service Access Information resource." type: object required: – provisioningSessionId – provisioningSessionType properties: provisioningSessionId: $ref: ‘TS26512_CommonData.yaml#/components/schemas/ResourceId’ provisioningSessionType: $ref: ‘TS26512_CommonData.yaml#/components/schemas/ProvisioningSessionType’ streamingAccess: type: object properties: mediaPlayerEntry: $ref: ‘TS26512_CommonData.yaml#/components/schemas/Url’ eMBMSServiceAnnouncementLocator: $ref: ‘TS26512_CommonData.yaml#/components/schemas/Url’ clientConsumptionReportingConfiguration: type: object required: – serverAddresses – locationReporting – samplePercentage properties: reportingInterval: $ref: ‘TS29571_CommonData.yaml#/components/schemas/DurationSec’ serverAddresses: $ref: ‘#/components/schemas/ServerAddresses’ locationReporting: type: boolean accessReporting: type: boolean samplePercentage: $ref: ‘TS26512_CommonData.yaml#/components/schemas/Percentage’ dynamicPolicyInvocationConfiguration: type: object required: – serverAddresses – validPolicyTemplateIds – sdfMethods properties: serverAddresses: $ref: ‘#/components/schemas/ServerAddresses’ validPolicyTemplateIds: type: array items: $ref: ‘TS26512_CommonData.yaml#/components/schemas/ResourceId’ minItems: 0 sdfMethods: type: array items: $ref: ‘TS26512_CommonData.yaml#/components/schemas/SdfMethod’ minItems: 0 externalReferences: type: array items: type: string minItems: 1 clientMetricsReportingConfiguration: type: array items: type: object required: – serverAddresses – scheme – samplePercentage – urlFilters – metrics properties: serverAddresses: $ref: ‘#/components/schemas/ServerAddresses’ scheme: $ref: ‘TS29571_CommonData.yaml#/components/schemas/Uri’ dataNetworkName: $ref: ‘TS29571_CommonData.yaml#/components/schemas/Dnn’ reportingInterval: $ref: ‘TS29571_CommonData.yaml#/components/schemas/DurationSec’ samplePercentage: $ref: ‘TS26512_CommonData.yaml#/components/schemas/Percentage’ urlFilters: type: array items: type: string minItems: 0 metrics: type: array items: type: string networkAssistanceConfiguration: type: object required: – serverAddress properties: serverAddress: $ref: ‘TS26512_CommonData.yaml#/components/schemas/Url’ clientEdgeResourcesConfiguration: type: object required: – easDiscoveryTemplate properties: eligibilityCriteria: $ref: ‘TS26512_CommonData.yaml#/components/schemas/EdgeProcessingEligibilityCriteria’ easDiscoveryTemplate: $ref: ‘#/components/schemas/EASDiscoveryTemplate’ easRelocationRequirements: $ref: ‘#/components/schemas/M5EASRelocationRequirements’ M5EASRelocationRequirements: description: ‘Relocation requirements of an EAS.’ type: object required: – tolerance properties: tolerance: $ref: ‘TS26512_CommonData.yaml#/components/schemas/EASRelocationTolerance’ maxInterruptionDuration: $ref: ‘TS29571_CommonData.yaml#/components/schemas/UintegerRm’ EASDiscoveryTemplate: description: ‘A template for discovering an EAS instance .’ type: object required: – easType – easProviderIds – serviceFeatures properties: easType: type: string easProviderIds: type: array items: type: string serviceFeatures: type: array items: type: string |
C.4.2 M5_ConsumptionReporting API
openapi: 3.0.0 info: title: M5_ConsumptionReporting version: 2.0.0 description: | 5GMS AF M5 Consumption Reporting API © 2022, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved. tags: – name: M5_ConsumptionReporting description: ‘5G Media Streaming: Media Session Handling (M5) APIs: Consumption Reporting’ externalDocs: description: ‘TS 26.512 V17.2.0; 5G Media Streaming (5GMS); Protocols’ url: ‘https://www.3gpp.org/ftp/Specs/archive/26_series/26.512/’ servers: – url: ‘{apiRoot}/3gpp-m5/v2’ variables: apiRoot: default: https://example.com description: See 3GPP TS 29.512 clause 6.1. paths: /consumption-reporting/{aspId}: parameters: – name: aspId in: path required: true schema: $ref: ‘TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/AspId’ description: ‘See 3GPP TS 26.512 clause 11.3.2.’ post: operationId: submitConsumptionReport summary: ‘Submit a Consumption Report’ requestBody: description: ‘A Consumption Report’ required: true content: application/json: schema: $ref: ‘#/components/schemas/ConsumptionReport’ responses: ‘204’: description: ‘Consumption Report Accepted’ ‘400’: description: ‘Bad Request’ ‘415’: description: ‘Unsupported Media Type’ components: schemas: ConsumptionReport: description: "A representation of a Consumption Report." type: object required: – mediaPlayerEntry – reportingClientId – consumptionReportingUnits properties: mediaPlayerEntry: type: string reportingClientId: type: string consumptionReportingUnits: type: array items: $ref: ‘#/components/schemas/ConsumptionReportingUnit’ ConsumptionReportingUnit: description: "A Consumption Reporting Unit." type: object required: – mediaConsumed – startTime – duration properties: mediaConsumed: type: string mediaEndpointAddress: $ref: ‘TS26512_CommonData.yaml#/components/schemas/EndpointAddress’ startTime: $ref: ‘TS29571_CommonData.yaml#/components/schemas/DateTime’ duration: $ref: ‘TS29571_CommonData.yaml#/components/schemas/DurationSec’ locations: type: array items: $ref: ‘TS26512_CommonData.yaml#/components/schemas/TypedLocation’ minItems: 1 |
C.4.3 M5_MetricsReporting API
openapi: 3.0.0 info: title: M5_MetricsReporting version: 2.0.0 description: | 5GMS AF M5 Metrics Reporting API © 2022, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved. tags: – name: M5_ConsumptionReporting description: ‘5G Media Streaming: Media Session Handling (M5) APIs: Metrics Reporting’ externalDocs: description: ‘TS 26.512 V17.2.0; 5G Media Streaming (5GMS); Protocols’ url: ‘https://www.3gpp.org/ftp/Specs/archive/26_series/26.512/’ servers: – url: ‘{apiRoot}/3gpp-m5/v2’ variables: apiRoot: default: https://example.com description: See 3GPP TS 29.512 clause 6.1. paths: /metrics-reporting/{provisioningSessionId}/{metricsReportingConfigurationId}: parameters: – name: provisioningSessionId in: path required: true schema: $ref: ‘TS26512_CommonData.yaml#/components/schemas/ResourceId’ description: ‘The resource identifier of an existing Provisioning Session.’ – name: metricsReportingConfigurationId in: path required: true schema: $ref: ‘TS26512_CommonData.yaml#/components/schemas/ResourceId’ description: ‘The resource identifier of a Metrics Configuration in the specified Provisioning Session.’ post: operationId: submitMetricsReport summary: ‘Submit a Metrics Report’ requestBody: description: ‘A Metrics Report’ required: true content: application/3gpdash-qoe-report+xml: schema: type: string format: xml application/*: schema: type: string responses: ‘204’: description: ‘Metrics Report Accepted’ ‘400’: description: ‘Bad Request’ ‘415’: description: ‘Unsupported Media Type’ |
C.4.4 M5_DynamicPolicies API
openapi: 3.0.0 info: title: M5_DynamicPolicies version: 2.0.0 description: | 5GMS AF M5 Dynamic Policy API © 2022, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved. tags: – name: M5_DynamicPolicies description: ‘5G Media Streaming: Media Session Handling (M5) APIs: Dynamic Policies’ externalDocs: description: ‘TS 26.512 V17.2.0; 5G Media Streaming (5GMS); Protocols’ url: ‘https://www.3gpp.org/ftp/Specs/archive/26_series/26.512/’ servers: – url: ‘{apiRoot}/3gpp-m5/v2’ variables: apiRoot: default: https://example.com description: See 3GPP TS 29.512 clause 6.1. paths: /dynamic-policies: post: operationId: createDynamicPolicy summary: ‘Create (and optionally upload) a new Dynamic Policy resource’ requestBody: description: ‘An optional JSON representation of a Dynamic Policy resource’ content: application/json: schema: $ref: ‘#/components/schemas/DynamicPolicy’ responses: ‘201’: description: ‘Created Dynamic Policy Resource’ content: application/json: schema: $ref: ‘#/components/schemas/DynamicPolicy’ headers: Location: description: ‘The URL of the newly created Dynamic Policy resource’ required: true schema: $ref: ‘TS26512_CommonData.yaml#/components/schemas/Url’ ‘400’: description: ‘Bad Request’ ‘401’: description: ‘Unauthorized’
/dynamic-policies/{dynamicPolicyId}: parameters: – name: dynamicPolicyId description: ‘The resource identifier of a Dynamic Policy resource’ in: path required: true schema: $ref: ‘TS26512_CommonData.yaml#/components/schemas/ResourceId’ get: operationId: retrieveDynamicPolicy summary: ‘Retrieve an existing Dynamic Policy resource’ responses: ‘200’: description: ‘Success’ content: application/json: schema: $ref: ‘#/components/schemas/DynamicPolicy’ ‘400’: description: ‘Bad Request’ ‘401’: description: ‘Unauthorized’ ‘404’: description: ‘Not Found’ put: operationId: updateDynamicPolicy summary: ‘Update an existing Dynamic Policy resource’ requestBody: description: ‘A replacement JSON representation of a Dynamic Policy resource’ required: true content: application/json: schema: $ref: ‘#/components/schemas/DynamicPolicy’ responses: ‘400’: description: ‘Bad Request’ ‘401’: description: ‘Unauthorized’ ‘404’: description: ‘Not found’ patch: operationId: patchDynamicPolicy summary: ‘Patch an existing Dynamic Policy resource’ requestBody: description: ‘A JSON patch to a Dynamic Policy resource’ required: true content: application/merge-patch+json: schema: $ref: ‘#/components/schemas/DynamicPolicy’ application/json-patch+json: schema: $ref: ‘#/components/schemas/DynamicPolicy’ responses: ‘200’: description: ‘Patched Dynamic Policy’ content: application/json: schema: $ref: ‘#/components/schemas/DynamicPolicy’ ‘204’: description: ‘Patched Dynamic Policy’ ‘400’: description: ‘Bad Request’ ‘401’: description: ‘Unauthorized’ ‘404’: description: ‘Not found’ delete: operationId: destroyDynamicPolicy summary: ‘Destroy an existing Dynamic Policy resource’ responses: ‘204’: description: ‘Destroyed Dynamic Policy’ ‘400’: description: ‘Bad Request’ ‘401’: description: ‘Unauthorized’ ‘404’: description: ‘Not Found’ components: schemas: DynamicPolicy: description: "A representation of a Dynamic Policy resource." type: object required: – dynamicPolicyId – policyTemplateId – serviceDataFlowDescriptions – provisioningSessionId properties: dynamicPolicyId: $ref: ‘TS26512_CommonData.yaml#/components/schemas/ResourceId’ policyTemplateId: $ref: ‘TS26512_CommonData.yaml#/components/schemas/ResourceId’ serviceDataFlowDescriptions: type: array items: $ref: ‘TS26512_CommonData.yaml#/components/schemas/ServiceDataFlowDescription’ provisioningSessionId: $ref: ‘TS26512_CommonData.yaml#/components/schemas/ResourceId’ qosSpecification: $ref: ‘TS26512_CommonData.yaml#/components/schemas/M5QoSSpecification’ enforcementMethod: type: string enforcementBitRate: type: integer |
C.4.5 M5_NetworkAssistance API
openapi: 3.0.0 info: title: M5_NetworkAssistance version: 2.0.0 description: | 5GMS AF M5 Network Assistance API © 2022, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved. tags: – name: M5_NetworkAssistance description: ‘5G Media Streaming: Media Session Handling (M5) APIs: Network Assistance’ externalDocs: description: 3GPP TS 26.512 V17.2.0; 5G Media Streaming (5GMS); Protocols. url: ‘http://www.3gpp.org/ftp/Specs/archive/29_series/26.512/’ servers: – url: ‘{apiRoot}/3gpp-m5/v2’ variables: apiRoot: default: https://example.com description: apiRoot as defined in subclause 4.4.1 of 3GPP TS 29.501. paths: /network-assistance/: post: operationId: createNetworkAssistanceSession summary: ‘Create a new Network Assistance Session.’ responses: ‘201’: description: ‘Created Network Assistance Session’ content: application/json: schema: $ref: ‘#/components/schemas/NetworkAssistanceSession’ headers: Location: description: ‘The URL of the nely created Network Assistance Session resource’ required: true schema: $ref: ‘TS26512_CommonData.yaml#/components/schemas/Url’ ‘400’: description: ‘Bad Request’ ‘401’: description: ‘Unauthorized’ /network-assistance/{naSessionId}: parameters: – name: naSessionId description: ‘The resource identifier of an existing Network Assistance Session resource’ in: path required: true schema: $ref: ‘TS26512_CommonData.yaml#/components/schemas/ResourceId’ get: operationId: retrieveNetworkAssistanceSession summary: ‘Retrieve an existing Network Assistance Session resource’ responses: ‘200’: description: ‘A JSON representation of a Network Assistance Session resource’ content: application/json: schema: $ref: ‘#/components/schemas/NetworkAssistanceSession’ ‘400’: description: ‘Bad Request’ ‘401’: description: ‘Unauthorized’ ‘404’: description: ‘Not Found’ put: operationId: updateNetworkAssistanceSession summary: ‘Update an existing Network Assistance Session resource’ requestBody: description: ‘A replacement JSON representation of a Network Assistance Session resource’ required: true content: application/json: schema: $ref: ‘#/components/schemas/NetworkAssistanceSession’ responses: ‘400’: description: ‘Bad Request’ ‘401’: description: ‘Unauthorized’ ‘404’: description: ‘Not found’ patch: operationId: patchNetworkAssistanceSession summary: ‘Patch an existing Network Assistance Session resource’ requestBody: description: ‘A JSON patch to a Network Assistance Session resource’ required: true content: application/merge-patch+json: schema: $ref: ‘#/components/schemas/NetworkAssistanceSession’ application/json-patch+json: schema: $ref: ‘#/components/schemas/NetworkAssistanceSession’ responses: ‘200’: description: ‘Patched Network Assistance Session’ content: application/json: schema: $ref: ‘#/components/schemas/NetworkAssistanceSession’ ‘204’: description: ‘Patched Network Assistance Session’ ‘400’: description: ‘Bad Request’ ‘401’: description: ‘Unauthorized’ ‘404’: description: ‘Not Found’ delete: operationId: destroyNetworkAssistanceSession summary: ‘Destroy an existing Network Assistance Session resource’ responses: ‘204’: description: ‘Destroyed Network Assistance Session’ ‘400’: description: ‘Bad Request’ ‘401’: description: ‘Unauthorized’ ‘404’: description: ‘Not Found’ /network-assistance/{naSessionId}/recommendation: get: operationId: requestBitRateRecommendation summary: ‘Obtain a bit rate recommendation for the next recommendation window’ parameters: – name: naSessionId description: ‘The resource identifier of an existing Network Assistance Session resource’ in: path required: true schema: type: string responses: ‘200’: description: ‘Success’ content: application/json: schema: $ref: ‘TS26512_CommonData.yaml#/components/schemas/M5QoSSpecification’ ‘400’: description: ‘Bad Request’ ‘401’: description: ‘Unauthorized’ ‘404’: description: ‘Not Found’ /network-assistance/{naSessionId}/boost-request: post: operationId: requestDeliveryBoost summary: ‘Request a delivery boost’ parameters: – name: naSessionId description: ‘The resource identifier of an existing Network Assistance Session resource’ in: path required: true schema: type: string responses: ‘200’: description: ‘Delivery Boost Request Processed’ content: application/json: schema: $ref: ‘TS26512_CommonData.yaml#/components/schemas/OperationSuccessResponse’ ‘400’: description: ‘Bad Request’ ‘401’: description: ‘Unauthorized’ ‘404’: description: ‘Not Found’ components: schemas: NetworkAssistanceSession: description: "A representation of a Network Assistance Session resource." type: object required: – naSessionId properties: naSessionId: $ref: ‘TS26512_CommonData.yaml#/components/schemas/ResourceId’ serviceDataFlowDescription: type: array items: $ref: ‘TS26512_CommonData.yaml#/components/schemas/ServiceDataFlowDescription’ minItems: 1 policyTemplateId: $ref: ‘TS26512_CommonData.yaml#/components/schemas/ResourceId’ requestedQoS: $ref: ‘TS26512_CommonData.yaml#/components/schemas/M5QoSSpecification’ recommendedQoS: $ref: ‘TS26512_CommonData.yaml#/components/schemas/M5QoSSpecification’ notficationURL: $ref: ‘TS26512_CommonData.yaml#/components/schemas/Url’ |