diff --git a/README.md b/README.md index bc5c604e327d39de70fdd912a917522bbb7fc567..6c2ce474b528507627a606dda2328e7f8c57932c 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,13 @@ -# OpenAPI Specification Files for 3GPP 5G Core Network (Release 19) +# {-[DRAFT]-} OpenAPI Specification Files for 3GPP 5G Core Network (Release 19) © 2025, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved. -API version: **September 2025** +API version: **October/November 2025** Release status: **{+ Open +}** Other releases: [Rel-18 (Frozen)](https://forge.3gpp.org/rep/all/5G_APIs/tree/REL-18), [Rel-17 (Frozen)](https://forge.3gpp.org/rep/all/5G_APIs/tree/REL-17), [Rel-16 (Frozen)](https://forge.3gpp.org/rep/all/5G_APIs/tree/REL-16), [Rel-15 (Frozen)](https://forge.3gpp.org/rep/all/5G_APIs/tree/REL-15) OpenAPI validation status: -[![pipeline status](https://forge.3gpp.org/rep/all/5G_APIs/badges/REL-19/pipeline.svg)](https://forge.3gpp.org/rep/all/5G_APIs/commits/REL-19) +[![pipeline status](https://forge.3gpp.org/rep/all/5G_APIs/badges/Rel19-draft-TSG110/pipeline.svg)](https://forge.3gpp.org/rep/all/5G_APIs/commits/Rel19-draft-TSG110) #### Tools * API Parser/Linter to parse OpenAPI files with APIDevTools Swagger Parser/Validator and run a number of lint rules to improve API quality @@ -260,6 +260,12 @@ The links below will open the Swagger Editor/UI and auto-load the OpenAPI YAML f * VFL Inference ([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29591_Nnef_VFLInference.yaml)) ([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29591_Nnef_VFLInference.yaml)) +* Training +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29591_Nnef_Training.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29591_TS29591_Nnef_Training.yaml)) +* VFL Training +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29591_Nnef_VFLTraining.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29591_Nnef_VFLTraining.yaml)) ## PCF (Policy Control Function) * Policy Authorization @@ -597,6 +603,14 @@ The links below will open the Swagger Editor/UI and auto-load the OpenAPI YAML f * Ambient IoT Data Management Service ([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29369_Nadm_DM.yaml)) ([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29369_Nadm_DM.yaml)) +* Ambient IoT Security Service +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29369_Nadm_Sec.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29369_Nadm_Sec.yaml)) + +## EIF (Energy Information Function) +* EIF Event Exposure Service +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29566_Neif_EventExposure.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29566_Neif_EventExposure.yaml)) # Northbound and Application Layer APIs ## CAPIF (Common API Framework) @@ -1021,6 +1035,9 @@ These APIs are not part of the 5G Core Network; these APIs are exposed by the 4G * ADAE UE RAT Connectivity Analytics ([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29549_SS_ADAE_UeRatConnectivityAnalytics.yaml)) ([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29549_SS_ADAE_UeRatConnectivityAnalytics.yaml)) +* ADAE Data Network Energy Analytics +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29549_SS_ADAE_DN_energy_analytics.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29549_SS_ADAE_DN_energy_analytics.yaml)) * AADRF Data Management ([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29549_SS_AADRF_DataManagement.yaml)) ([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29549_SS_AADRF_DataManagement.yaml)) @@ -1036,9 +1053,24 @@ These APIs are not part of the 5G Core Network; these APIs are exposed by the 4G * SAn Server Spatial Anchors Discovery Service ([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29437_SS_SAnDiscovery.yaml)) ([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29437_SS_SAnDiscovery.yaml)) +* SAn Server Spatial Anchors Usage Service +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29437_SS_SAnUsage.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29437_SS_SAnUsage.yaml)) * SM Server Data Source Registration Service ([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS24550_SS_SmDataSourceRegistration.yaml)) ([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS24550_SS_SmDataSourceRegistration.yaml)) +* SM Server Spatial Maps Management Service +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29437_SS_SmManagement.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29437_SS_SmManagement.yaml)) +* SM Server Spatial Maps Discovery Service +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29437_SS_SmDiscovery.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29437_SS_SmDiscovery.yaml)) +* SM Server Spatial Maps Localization Service +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29437_SS_SmLocalization.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29437_SS_SmLocalization.yaml)) +* SM Server Data Source Discovery Service +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29437_SS_SmDataSourceDiscovery.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29437_SS_SmDataSourceDiscovery.yaml)) * SM Server SMAS registration Service ([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29437_SS_SmSmasRegistration.yaml)) ([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29437_SS_SmSmasRegistration.yaml)) @@ -1187,6 +1219,15 @@ These APIs are not part of the 5G Core Network; these APIs are exposed by the 4G ([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29583_PIN_ASServiceContinuity.yaml)) ## AIML App (Artificial Intelligence Machine Learning Application) +* AIMLE transfer learning (TL) enablement service (server) +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS24560_Aimles_UeTLModelSelectionAssistance.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS24560_Aimles_UeTLModelSelectionAssistance.yaml)) +* AIMLE transfer learning (TL) enablement service (client) +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS24560_Aimlec_ClientDataProcessing.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS24560_Aimlec_ClientDataProcessing.yaml)) +* AIMLE client participation service +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS24560_Aimlec_AIMLEClientParticipation.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS24560_Aimlec_AIMLEClientParticipation.yaml)) * AIMLE client registration service ([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS24560_Aimles_AIMLEClientRegistration.yaml)) ([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS24560_Aimles_AIMLEClientRegistration.yaml)) @@ -1223,15 +1264,39 @@ These APIs are not part of the 5G Core Network; these APIs are exposed by the 4G * AIMLE Data Management Service ([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29482_AIMLES_DataManagement.yaml)) ([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29482_AIMLES_DataManagement.yaml)) +* AIMLE Federated Learning Member Group Support Service +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29482_AIMLES_FLMemberGroupSupport.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29482_AIMLES_FLMemberGroupSupport.yaml)) * AIMLE Hierarchical Computing Assist Service ([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29482_AIMLES_HierarchicalComputingAssist.yaml)) ([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29482_AIMLES_HierarchicalComputingAssist.yaml)) +* AIMLE Machine Learning Model Performance Monitor Service +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29482_AIMLES_MLModelPerfMonitor.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29482_AIMLES_MLModelPerfMonitor.yaml)) * AIMLE ML Model Retrieval Service -([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29482_Aimles_MLModelRetrieval.yaml)) -([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29482_Aimles_MLModelRetrieval.yaml)) +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29482_AIMLES_MLModelRetrieval.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29482_AIMLES_MLModelRetrieval.yaml)) +* AIMLE ML Model Training Service +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29482_AIMLES_MLModelTraining.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29482_AIMLES_MLModelTraining.yaml)) +* AIMLES_ML Model Update Request Service +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29482_AIMLES_MLModelUpdate.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29482_AIMLES_MLModelUpdate.yaml)) +* AIMLE Split Operation Event Service +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29482_AIMLES_SplitOpEvent.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29482_AIMLES_SplitOpEvent.yaml)) * AIMLE Split Operation Node Registration Service -([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29482_Aimles_SplitOpNodeRegistration.yaml)) -([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29482_Aimles_SplitOpNodeRegistration.yaml)) +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29482_AIMLES_SplitOpNodeRegistration.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29482_AIMLES_SplitOpNodeRegistration.yaml)) +* AIMLE Transfer Learning Model Selection Assistance Service +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29482_AIMLES_TLModelSelectionAssistance.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29482_AIMLES_TLModelSelectionAssistance.yaml)) +* Machine Learning Federated Learning Events Service +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29482_MLR_FLEvents.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29482_MLR_FLEvents.yaml)) +* AIMLE Repository Federated Member Service +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29482_MLR_FLMember.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29482_MLR_FLMember.yaml)) * MLR ML Model Management Service ([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29482_MLR_MLModelManagement.yaml)) ([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29482_MLR_MLModelManagement.yaml)) @@ -1239,6 +1304,20 @@ These APIs are not part of the 5G Core Network; these APIs are exposed by the 4G ([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29482_MLR_ModelInformationDiscovery.yaml)) ([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29482_MLR_ModelInformationDiscovery.yaml)) +## MMTel (Multimedia Telephony) +* MMTel DC Application Management Service +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29392_MMTel_DCAppManagement.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29392_MMTel_DCAppManagement.yaml)) +* MMTel Enabler Server DC Application Call Service +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29392_MMTel_DCAppCall.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29392_MMTel_DCAppCall.yaml)) +* MMTel Enabler Server Call Event Service +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29392_MMTel_CallEvent.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29392_MMTel_CallEvent.yaml)) +* MMTel Enabler Server Call Control Service +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29392_MMTel_CallControl.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29392_MMTel_CallControl.yaml)) + # Media Delivery TS 26.510 * Common Data Types ([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS26510_CommonData.yaml)) @@ -1373,6 +1452,36 @@ These APIs are not part of the 5G Core Network; these APIs are exposed by the 4G ([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS26512_M5_NetworkAssistance.yaml)) + +# Avatar Call BAR Base Avatar Management TS 26.264 + +* Common Data Types +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS26264_CommonData.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS26264_CommonData.yaml)) + +## BAR Management APIs + +* Mbar Management Avatars +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS26264_Mbar_Management_Avatars.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS26264_Mbar_Management_Avatars.yaml)) + +* Mbar Management Assets +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS26264_Mbar_Management_Assets.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS26264_Mbar_Management_Assets.yaml)) + +* Mbar Management Associated Information +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS26264_Mbar_Management_AssociatedInformation.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS26264_Mbar_Management_AssociatedInformation.yaml)) + +* Mbar Management Avatar Representations +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS26264_Mbar_Management_AvatarRepresentations.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS26264_Mbar_Management_AvatarRepresentations.yaml)) + +* Mbar Management Sessions +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS26264_Mbar_Management_Sessions.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS26264_Mbar_Management_Sessions.yaml)) + + # 3GPP SA5 models and MnS OpenAPI definitions ## Network Resource Models (NRM) diff --git a/TS26264_CommonData.yaml b/TS26264_CommonData.yaml new file mode 100644 index 0000000000000000000000000000000000000000..c2834b20e238803042205a9c7ead3b159bcb42e9 --- /dev/null +++ b/TS26264_CommonData.yaml @@ -0,0 +1,61 @@ +openapi: 3.0.0 +info: + title: TS26264_CommonData + version: 1.0.0 + description: | + Common Data Types for IMS-based AR Real-Time Communication + © 2025, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 'TS 26.264 V19.1.0; IMS-based AR Real-Time Communication' + url: 'https://www.3gpp.org/ftp/Specs/archive/26_series/26.264/' + +paths: {} + +components: + schemas: + + ################################################### + # Annex B.1.7: Associated Information (Table B.1-9) + ################################################### + AssociatedInfo: + type: object + description: 'Associated information metadata for Base Avatars and Assets' + properties: + avatarId: + $ref: 'TS26510_CommonData.yaml#/components/schemas/ResourceId' + avatarMetadata: + type: object + description: 'Metadata related to the Avatar' + assets: + type: array + items: + type: object + properties: + assetLoDs: + type: array + items: + type: object + properties: + level: + type: string + description: 'Level of detail identifier.' + size: + type: integer + description: 'The size in bytes associated with this LoD' + description: 'A list of available LoDs for the corresponding asset with size information' + description: 'A list of assets associated with the Base Avatar' + selectionInfo: + type: object + description: 'Provides information that the user can use to select this avatar, including name, nickname, usage context, and images of renditions' + supportedAnimations: + type: array + items: + type: string + description: 'A list of the URNs that identify the supported animation frameworks by this base avatar' + infoUpdatedAt: + type: number + format: int64 + description: 'A timestamp (in wall clock time) describing the time of the last update to the associated information' + required: [avatarId, assets, supportedAnimations, infoUpdatedAt] diff --git a/TS26264_Mbar_Management_Assets.yaml b/TS26264_Mbar_Management_Assets.yaml new file mode 100644 index 0000000000000000000000000000000000000000..ea34d961a79c00b375d21a5f7886422f2d873627 --- /dev/null +++ b/TS26264_Mbar_Management_Assets.yaml @@ -0,0 +1,273 @@ +openapi: 3.0.0 +info: + title: Mbar_Management_Assets + version: 1.0.0 + description: | + Base Avatar Repository Management API - Assets + © 2025, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +tags: + - name: Assets + description: 'Avatar Asset Management' + +externalDocs: + description: 'TS 26.264 V19.1.0; IMS-based AR Real-Time Communication' + url: 'https://www.3gpp.org/ftp/Specs/archive/26_series/26.264/' + +servers: + - url: '{apiRoot}/3gpp-mbar-management/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in 3GPP TS 29.501 + +security: + - {} + - OAuth2: [] + +paths: + /avatars/{avatarId}/assets: + parameters: + - name: avatarId + in: path + required: true + schema: + $ref: 'TS26510_CommonData.yaml#/components/schemas/ResourceId' + description: 'The unique identifier of the parent Avatar resource' + post: + tags: + - Assets + operationId: createAsset + summary: 'Create a new asset resource in the BAR' + description: 'Create a new Asset resource in the BAR under the parent Base Avatar.' + security: + - OAuth2: + - asset_create + requestBody: + description: 'A JSON representation of an Asset' + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/Asset' + responses: + '201': + description: 'Asset Created' + headers: + Location: + description: 'URL of the newly created Asset resource' + required: true + schema: + $ref: 'TS26510_CommonData.yaml#/components/schemas/Url' + content: + multipart/form-data: + schema: + type: object + properties: + asset: + $ref: '#/components/schemas/Asset' + description: 'A JSON representation of an Asset' + assetData: + type: array + items: + type: string + format: binary + description: 'Array of binary files for the asset components.' + required: + - asset + encoding: + asset: + contentType: application/json + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '411': + $ref: 'TS29571_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29571_CommonData.yaml#/components/responses/413' + '414': + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '415': + $ref: 'TS29571_CommonData.yaml#/components/responses/415' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /avatars/{avatarId}/assets/{assetId}: + parameters: + - name: avatarId + in: path + required: true + schema: + $ref: 'TS26510_CommonData.yaml#/components/schemas/ResourceId' + description: 'The unique identifier of the Avatar resource' + - name: assetId + in: path + required: true + schema: + $ref: 'TS26510_CommonData.yaml#/components/schemas/ResourceId' + description: 'The unique identifier of the Asset resource' + get: + tags: + - Assets + operationId: getAsset + summary: 'Retrieve a previously created or uploaded asset' + security: + - OAuth2: + - asset_retrieve + responses: + '200': + description: 'Success' + content: + application/json: + schema: + $ref: '#/components/schemas/Asset' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '410': + $ref: 'TS29571_CommonData.yaml#/components/responses/410' + '413': + $ref: 'TS29571_CommonData.yaml#/components/responses/413' + '414': + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + put: + tags: + - Assets + operationId: updateAsset + summary: 'Upload or update asset data' + security: + - OAuth2: + - asset_update + requestBody: + description: 'A JSON representation of an Asset' + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/Asset' + responses: + '200': + description: 'Asset Updated' + content: + application/json: + schema: + $ref: '#/components/schemas/Asset' + '204': + description: 'Asset Unchanged' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '410': + $ref: 'TS29571_CommonData.yaml#/components/responses/410' + '411': + $ref: 'TS29571_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29571_CommonData.yaml#/components/responses/413' + '414': + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '415': + $ref: 'TS29571_CommonData.yaml#/components/responses/415' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + delete: + tags: + - Assets + operationId: deleteAsset + summary: 'Remove and delete an asset' + security: + - OAuth2: + - asset_delete + responses: + '204': + description: 'Asset Deleted' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '410': + $ref: 'TS29571_CommonData.yaml#/components/responses/410' + '413': + $ref: 'TS29571_CommonData.yaml#/components/responses/413' + '414': + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $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: + asset_create: Create Asset resource + asset_retrieve: Retrieve Asset resource + asset_update: Update Asset resource + asset_delete: Delete Asset resource + + schemas: + Asset: + type: object + description: 'Asset resource as defined in Table B.1-7 of TS 26.264.' + required: + - namespace + properties: + assetId: + allOf: + - $ref: 'TS26510_CommonData.yaml#/components/schemas/ResourceId' + - readOnly: true + description: 'A unique identifier assigned to an asset by the BAR on creation. The assetId is scoped by the avatarId' + namespace: + type: string + description: 'A namespace defining the intended usage of the asset, as exemplified by names such as "human/head" or "accessory/hat"' + example: 'human/head' + LoD: + type: array + items: + type: string + description: 'A list of available LoDs for the corresponding asset' + assetData: + type: array + items: + $ref: 'TS26510_CommonData.yaml#/components/schemas/Url' + description: | + List of URLs that point to the asset data. For creation/update of an asset, all components shall be provided as part of a multi-part mime body. + The primary URL shall reference an ARF document describing all components. + associatedInfo: + allOf: + - $ref: 'TS26264_CommonData.yaml#/components/schemas/AssociatedInfo' + - readOnly: true + description: 'Associated information related to the Asset' diff --git a/TS26264_Mbar_Management_AssociatedInformation.yaml b/TS26264_Mbar_Management_AssociatedInformation.yaml new file mode 100644 index 0000000000000000000000000000000000000000..8f2617acd2e5600a64620c215f52f918542ce83f --- /dev/null +++ b/TS26264_Mbar_Management_AssociatedInformation.yaml @@ -0,0 +1,90 @@ +openapi: 3.0.0 +info: + title: Mbar_Management_AssociatedInformation + version: 1.0.0 + description: | + Base Avatar Repository Management API - Associated Information + © 2025, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +tags: + - name: AssociatedInformation + description: 'Associated Information for Base Avatars' + +externalDocs: + description: 'TS 26.264 V19.1.0; IMS-based AR Real-Time Communication' + url: 'https://www.3gpp.org/ftp/Specs/archive/26_series/26.264/' + +servers: + - url: '{apiRoot}/3gpp-mbar-management/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in 3GPP TS 29.501 + +security: + - {} + - OAuth2: [] + +paths: + /avatars/{avatarId}/associatedInfo: + parameters: + - name: avatarId + in: path + required: true + schema: + $ref: 'TS26510_CommonData.yaml#/components/schemas/ResourceId' + description: 'The unique identifier of the Avatar resource' + get: + tags: + - AssociatedInformation + operationId: getAssociatedInformation + summary: 'Retrieve associated information corresponding to a Base Avatar' + security: + - OAuth2: + - associated_info_retrieve + responses: + '200': + description: 'Success' + content: + application/json: + schema: + $ref: '#/components/schemas/AssociatedInformation' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '410': + $ref: 'TS29571_CommonData.yaml#/components/responses/410' + '413': + $ref: 'TS29571_CommonData.yaml#/components/responses/413' + '414': + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $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: + associated_info_retrieve: Retrieve Associated Information + + schemas: + AssociatedInformation: + type: object + description: 'A representation of Associated Information resource' + required: + - associatedInfo + properties: + associatedInfo: + $ref: 'TS26264_CommonData.yaml#/components/schemas/AssociatedInfo' diff --git a/TS26264_Mbar_Management_AvatarRepresentations.yaml b/TS26264_Mbar_Management_AvatarRepresentations.yaml new file mode 100644 index 0000000000000000000000000000000000000000..d778f306f6aa1014ec6762de81653938cdaae96c --- /dev/null +++ b/TS26264_Mbar_Management_AvatarRepresentations.yaml @@ -0,0 +1,314 @@ +openapi: 3.0.0 +info: + title: Mbar_Management_AvatarRepresentations + version: 1.0.0 + description: | + Base Avatar Repository Management API - Avatar Representations + © 2025, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +tags: + - name: AvatarRepresentations + description: 'Avatar Representation Management' + +externalDocs: + description: 'TS 26.264 V19.1.0; IMS-based AR Real-Time Communication' + url: 'https://www.3gpp.org/ftp/Specs/archive/26_series/26.264/' + +servers: + - url: '{apiRoot}/3gpp-mbar-management/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in 3GPP TS 29.501 + +security: + - {} + - OAuth2: [] + +paths: + /avatars/{avatarId}/representations: + parameters: + - name: avatarId + in: path + required: true + schema: + $ref: 'TS26510_CommonData.yaml#/components/schemas/ResourceId' + description: 'The unique identifier of the Avatar resource' + post: + tags: + - AvatarRepresentations + operationId: createAvatarRepresentation + summary: 'Create an Avatar Representation resource in the BAR' + security: + - OAuth2: + - avatar_representation_create + requestBody: + description: 'A JSON representation of an Avatar Representation' + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/AvatarRepresentation' + responses: + '201': + description: 'Avatar Representation Created' + headers: + Location: + description: 'URL of the newly created Avatar Representation resource' + required: true + schema: + $ref: 'TS26510_CommonData.yaml#/components/schemas/Url' + content: + application/json: + schema: + $ref: '#/components/schemas/AvatarRepresentation' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '411': + $ref: 'TS29571_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29571_CommonData.yaml#/components/responses/413' + '414': + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '415': + $ref: 'TS29571_CommonData.yaml#/components/responses/415' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /avatars/{avatarId}/representations/{avatarRepresentationId}: + parameters: + - name: avatarId + in: path + required: true + schema: + $ref: 'TS26510_CommonData.yaml#/components/schemas/ResourceId' + description: 'The unique identifier of the parent Avatar resource' + - name: avatarRepresentationId + in: path + required: true + schema: + $ref: 'TS26510_CommonData.yaml#/components/schemas/ResourceId' + description: 'The unique identifier of the Avatar Representation resource' + get: + tags: + - AvatarRepresentations + operationId: getAvatarRepresentation + summary: 'Retrieve a previously created Avatar Representation resource' + security: + - OAuth2: + - avatar_representation_retrieve + responses: + '200': + description: 'Success' + content: + application/json: + schema: + $ref: '#/components/schemas/AvatarRepresentation' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '410': + $ref: 'TS29571_CommonData.yaml#/components/responses/410' + '413': + $ref: 'TS29571_CommonData.yaml#/components/responses/413' + '414': + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + put: + tags: + - AvatarRepresentations + operationId: updateAvatarRepresentation + summary: 'Update Avatar Representation resource' + security: + - OAuth2: + - avatar_representation_update + requestBody: + description: 'A JSON representation of an Avatar Representation' + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/AvatarRepresentation' + responses: + '200': + description: 'Avatar Representation Updated' + content: + application/json: + schema: + $ref: '#/components/schemas/AvatarRepresentation' + '204': + description: 'Avatar Representation Unchanged' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '410': + $ref: 'TS29571_CommonData.yaml#/components/responses/410' + '411': + $ref: 'TS29571_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29571_CommonData.yaml#/components/responses/413' + '414': + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '415': + $ref: 'TS29571_CommonData.yaml#/components/responses/415' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + patch: + tags: + - AvatarRepresentations + operationId: patchAvatarRepresentation + summary: 'Patch Avatar Representation resource' + security: + - OAuth2: + - avatar_representation_update + requestBody: + description: 'A JSON representation of an Avatar Representation' + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/AvatarRepresentation' + application/json-patch+json: + schema: + $ref: '#/components/schemas/AvatarRepresentation' + responses: + '200': + description: 'Patched Avatar Representation' + content: + application/json: + schema: + $ref: '#/components/schemas/AvatarRepresentation' + '204': + description: 'Avatar Representation Unchanged' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '410': + $ref: 'TS29571_CommonData.yaml#/components/responses/410' + '411': + $ref: 'TS29571_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29571_CommonData.yaml#/components/responses/413' + '414': + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '415': + $ref: 'TS29571_CommonData.yaml#/components/responses/415' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + delete: + tags: + - AvatarRepresentations + operationId: deleteAvatarRepresentation + summary: 'Remove and delete an Avatar Representation' + security: + - OAuth2: + - avatar_representation_delete + responses: + '204': + description: 'Avatar Representation Deleted' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '410': + $ref: 'TS29571_CommonData.yaml#/components/responses/410' + '413': + $ref: 'TS29571_CommonData.yaml#/components/responses/413' + '414': + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $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: + avatar_representation_create: Create Avatar Representation resource + avatar_representation_retrieve: Retrieve Avatar Representation resource + avatar_representation_update: Update Avatar Representation resource + avatar_representation_delete: Delete Avatar Representation resource + + schemas: + AvatarRepresentation: + type: object + description: 'A representation of an Avatar Representation resource' + required: + - ownerId + - assetIds + - assetLoDs + properties: + avatarRepresentationId: + allOf: + - $ref: 'TS26510_CommonData.yaml#/components/schemas/ResourceId' + - readOnly: true + description: 'A unique identifier assigned to an Avatar Representation by the BAR on creation' + ownerId: + type: string + description: 'A unique identifier identifying the subscriber (owner) associated with the base avatar' + assetIds: + type: array + items: + $ref: 'TS26510_CommonData.yaml#/components/schemas/ResourceId' + description: 'Identifies the assets to be shared' + assetLoDs: + type: array + items: + type: object + properties: + assetId: + $ref: 'TS26510_CommonData.yaml#/components/schemas/ResourceId' + allowedLoDs: + type: array + items: + type: string + description: 'Identifies the allowed LoDs for each asset selected' + publishTime: + type: number + format: int64 + readOnly: true + description: 'Describes the issue time or latest update time (in wall clock time) of the Avatar Representation' diff --git a/TS26264_Mbar_Management_Avatars.yaml b/TS26264_Mbar_Management_Avatars.yaml new file mode 100644 index 0000000000000000000000000000000000000000..5f518f053fc36db0b231acbd106219b63465ce88 --- /dev/null +++ b/TS26264_Mbar_Management_Avatars.yaml @@ -0,0 +1,317 @@ +openapi: 3.0.0 +info: + title: Mbar_Management_Avatars + version: 1.0.0 + description: | + Base Avatar Repository Management API - Avatars + © 2025, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +tags: + - name: Avatars + description: 'Base Avatar Management' + +externalDocs: + description: 'TS 26.264 V19.1.0; IMS-based AR Real-Time Communication' + url: 'https://www.3gpp.org/ftp/Specs/archive/26_series/26.264/' + +servers: + - url: '{apiRoot}/3gpp-mbar-management/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in 3GPP TS 29.501 + +security: + - {} + - OAuth2: [] + +paths: + /avatars: + post: + tags: + - Avatars + operationId: createAvatar + summary: 'Create a new Base Avatar resource in the BAR' + security: + - OAuth2: + - avatar_create + requestBody: + required: true + content: + multipart/form-data: + schema: + type: object + properties: + avatar: + $ref: '#/components/schemas/Avatar' + description: 'A JSON representation of an Avatar' + avatarContainer: + type: string + format: binary + description: 'Binary ARF container file for the base avatar.' + required: + - avatar + encoding: + avatar: + contentType: application/json + avatarContainer: + contentType: model/vnd.mpeg.arf+zip + responses: + '201': + description: 'Avatar Created' + headers: + Location: + description: 'URL of the newly created Avatar resource' + required: true + schema: + $ref: 'TS26510_CommonData.yaml#/components/schemas/Url' + content: + application/json: + schema: + $ref: '#/components/schemas/Avatar' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '411': + $ref: 'TS29571_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29571_CommonData.yaml#/components/responses/413' + '414': + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '415': + $ref: 'TS29571_CommonData.yaml#/components/responses/415' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /avatars/{avatarId}: + parameters: + - name: avatarId + in: path + required: true + schema: + $ref: 'TS26510_CommonData.yaml#/components/schemas/ResourceId' + description: 'The unique identifier of the Avatar resource' + get: + tags: + - Avatars + operationId: getAvatar + summary: 'Retrieve a Base Avatar' + description: 'Retrieves a previously created or uploaded base avatar in the BAR.' + security: + - OAuth2: + - avatar_retrieve + responses: + '200': + description: 'Success' + content: + application/json: + schema: + $ref: '#/components/schemas/Avatar' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '410': + $ref: 'TS29571_CommonData.yaml#/components/responses/410' + '413': + $ref: 'TS29571_CommonData.yaml#/components/responses/413' + '414': + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + put: + tags: + - Avatars + operationId: updateAvatar + summary: 'Upload or update Base Avatar data' + description: 'Updates the Base Avatar data for the specified Avatar ID.' + security: + - OAuth2: + - avatar_update + requestBody: + description: 'A JSON representation of an Avatar' + required: true + content: + multipart/form-data: + schema: + type: object + properties: + avatarContainer: + type: string + format: binary + description: 'Binary avatar container.' + encoding: + avatarContainer: + contentType: model/vnd.mpeg.arf+zip + responses: + '200': + description: 'Avatar Updated' + content: + application/json: + schema: + $ref: '#/components/schemas/Avatar' + '204': + description: 'Avatar Unchanged' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '410': + $ref: 'TS29571_CommonData.yaml#/components/responses/410' + '411': + $ref: 'TS29571_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29571_CommonData.yaml#/components/responses/413' + '414': + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '415': + $ref: 'TS29571_CommonData.yaml#/components/responses/415' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + patch: + tags: + - Avatars + operationId: patchAvatar + summary: 'Patch Base Avatar data' + security: + - OAuth2: + - avatar_update + requestBody: + description: 'A JSON representation of an Avatar' + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/Avatar' + application/json-patch+json: + schema: + $ref: '#/components/schemas/Avatar' + responses: + '200': + description: 'Patched Avatar' + content: + application/json: + schema: + $ref: '#/components/schemas/Avatar' + '204': + description: 'Avatar Unchanged' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '410': + $ref: 'TS29571_CommonData.yaml#/components/responses/410' + '411': + $ref: 'TS29571_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29571_CommonData.yaml#/components/responses/413' + '414': + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '415': + $ref: 'TS29571_CommonData.yaml#/components/responses/415' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + delete: + tags: + - Avatars + operationId: deleteAvatar + summary: 'Remove and delete a Base Avatar.' + description: 'Removes an Avatar resource, including its associated container, as well as its related assets and associated information' + security: + - OAuth2: + - avatar_delete + responses: + '204': + description: 'Avatar Deleted' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '410': + $ref: 'TS29571_CommonData.yaml#/components/responses/410' + '413': + $ref: 'TS29571_CommonData.yaml#/components/responses/413' + '414': + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $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: + avatar_create: Create Avatar resource + avatar_retrieve: Retrieve Avatar resource + avatar_update: Update Avatar resource + avatar_delete: Delete Avatar resource + + schemas: + Avatar: + type: object + description: 'Avatar resource as defined in Table B.1-5 of TS 26.264' + required: + - ownerId + properties: + avatarId: + allOf: + - $ref: 'TS26510_CommonData.yaml#/components/schemas/ResourceId' + - readOnly: true + description: 'A unique identifier assigned to a Base Avatar by the BAR on creation' + ownerId: + type: string + description: 'A unique identifier identifying the subscriber (owner) associated with the base avatar' + assetIds: + type: array + items: + $ref: 'TS26510_CommonData.yaml#/components/schemas/ResourceId' + readOnly: true + description: 'A list of asset IDs for the assets associated with the Base Avatar' + avatarContainer: + allOf: + - $ref: 'TS26510_CommonData.yaml#/components/schemas/Url' + - description: 'Payload containing the Base Avatar data and associated assets. For creation and update operations, the URL shall point to a multipart MIME part with MIME type "model/vnd.mpeg.arf+zip"' + associatedInfo: + allOf: + - $ref: 'TS26264_CommonData.yaml#/components/schemas/AssociatedInfo' + - readOnly: true + description: 'Associated information related to the Base Avatar' diff --git a/TS26264_Mbar_Management_Sessions.yaml b/TS26264_Mbar_Management_Sessions.yaml new file mode 100644 index 0000000000000000000000000000000000000000..d918e53554e8d4745d56d92918835b25f45714be --- /dev/null +++ b/TS26264_Mbar_Management_Sessions.yaml @@ -0,0 +1,399 @@ +openapi: 3.0.0 +info: + title: Mbar_Management_Sessions + version: 1.0.0 + description: | + Base Avatar Repository Management API - Sessions + © 2025, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +tags: + - name: Sessions + description: 'Session Management for Avatar Usage' + +externalDocs: + description: 'TS 26.264 v19.0.0; IMS-based AR Real-Time Communication' + url: 'https://www.3gpp.org/ftp/Specs/archive/26_series/26.264/' + +servers: + - url: '{apiRoot}/3gpp-mbar-management/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in 3GPP TS 29.501 + +security: + - {} + - OAuth2: [] + +paths: + /sessions: + post: + tags: + - Sessions + operationId: createSession + summary: 'Create a Session resource in the BAR' + security: + - OAuth2: + - session_create + requestBody: + description: 'A JSON representation of a Session' + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/Session' + responses: + '201': + description: 'Session Created' + headers: + Location: + description: 'URL of the newly created Session resource' + required: true + schema: + $ref: 'TS26510_CommonData.yaml#/components/schemas/Url' + content: + application/json: + schema: + $ref: '#/components/schemas/Session' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '411': + $ref: 'TS29571_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29571_CommonData.yaml#/components/responses/413' + '414': + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '415': + $ref: 'TS29571_CommonData.yaml#/components/responses/415' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /sessions/{sessionId}: + parameters: + - name: sessionId + in: path + required: true + schema: + $ref: 'TS26510_CommonData.yaml#/components/schemas/ResourceId' + description: 'The unique identifier of the Session resource' + get: + tags: + - Sessions + operationId: getSession + summary: 'Retrieve a previously created Session resource' + security: + - OAuth2: + - session_retrieve + responses: + '200': + description: 'Success' + content: + application/json: + schema: + $ref: '#/components/schemas/Session' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '410': + $ref: 'TS29571_CommonData.yaml#/components/responses/410' + '413': + $ref: 'TS29571_CommonData.yaml#/components/responses/413' + '414': + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + put: + tags: + - Sessions + operationId: updateSession + summary: 'Update Session resource' + security: + - OAuth2: + - session_update + requestBody: + description: 'A JSON representation of a Session' + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/Session' + responses: + '200': + description: 'Session Updated' + content: + application/json: + schema: + $ref: '#/components/schemas/Session' + '204': + description: 'Session Unchanged' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '410': + $ref: 'TS29571_CommonData.yaml#/components/responses/410' + '411': + $ref: 'TS29571_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29571_CommonData.yaml#/components/responses/413' + '414': + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '415': + $ref: 'TS29571_CommonData.yaml#/components/responses/415' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + delete: + tags: + - Sessions + operationId: deleteSession + summary: 'Remove and delete the Session and revoke its associated access token' + security: + - OAuth2: + - session_delete + responses: + '204': + description: 'Session Deleted' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '410': + $ref: 'TS29571_CommonData.yaml#/components/responses/410' + '413': + $ref: 'TS29571_CommonData.yaml#/components/responses/413' + '414': + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /sessions/{sessionId}/token: + parameters: + - name: sessionId + in: path + required: true + schema: + $ref: 'TS26510_CommonData.yaml#/components/schemas/ResourceId' + description: 'The unique identifier of the Session resource' + get: + tags: + - Sessions + operationId: getSessionToken + summary: 'Return current token metadata for the Session' + security: + - OAuth2: + - session_token_retrieve + responses: + '200': + description: 'Success' + content: + application/json: + schema: + $ref: '#/components/schemas/SessionAccess' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '410': + $ref: 'TS29571_CommonData.yaml#/components/responses/410' + '413': + $ref: 'TS29571_CommonData.yaml#/components/responses/413' + '414': + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + post: + tags: + - Sessions + operationId: rotateSessionToken + summary: 'Issue a new short lived access token for the Session and invalidate the previous token' + security: + - OAuth2: + - session_token_rotate + responses: + '200': + description: 'New token issued' + content: + application/json: + schema: + $ref: '#/components/schemas/SessionAccess' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '410': + $ref: 'TS29571_CommonData.yaml#/components/responses/410' + '413': + $ref: 'TS29571_CommonData.yaml#/components/responses/413' + '414': + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + delete: + tags: + - Sessions + operationId: revokeSessionToken + summary: 'Revoke the current Session token without deleting the Session' + security: + - OAuth2: + - session_token_revoke + responses: + '204': + description: 'Token Revoked' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '410': + $ref: 'TS29571_CommonData.yaml#/components/responses/410' + '413': + $ref: 'TS29571_CommonData.yaml#/components/responses/413' + '414': + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $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: + session_create: Create Session resource + session_retrieve: Retrieve Session resource + session_update: Update Session resource + session_delete: Delete Session resource + session_token_retrieve: Retrieve Session Token metadata + session_token_rotate: Rotate Session Token + session_token_revoke: Revoke Session Token + + schemas: + Session: + type: object + description: 'A representation of a Session resource' + required: + - avatarId + - avatarRepresentationId + - ownerId + - creatorId + - callStartTime + - callEndTime + properties: + sessionId: + allOf: + - $ref: 'TS26510_CommonData.yaml#/components/schemas/ResourceId' + - readOnly: true + description: 'Unique identifier assigned by the BAR upon session creation' + avatarId: + allOf: + - $ref: 'TS26510_CommonData.yaml#/components/schemas/ResourceId' + - readOnly: true + description: 'A unique identifier assigned to a base avatar by the BAR' + avatarRepresentationId: + allOf: + - $ref: 'TS26510_CommonData.yaml#/components/schemas/ResourceId' + - readOnly: true + description: 'A unique identifier assigned to an Avatar Representation by the BAR' + ownerId: + type: string + description: 'A unique identifier identifying the subscriber (owner) associated with the base avatar' + creatorId: + type: string + description: 'A unique identifier identifying the creator of the session resource' + callStartTime: + type: number + description: 'The wall clock time at the start time of an avatar call period' + callEndTime: + type: number + description: 'Specifies the end time (in wall clock time) of an avatar call period' + publishTime: + type: number + readOnly: true + description: 'Describes the issue time or latest update time (in wall clock time) of the session resource' + accessToken: + allOf: + - $ref: '#/components/schemas/SessionAccess' + - readOnly: true + description: 'Access token and validity for dereferencing BAR resources within the scope of this session' + + SessionAccess: + type: object + description: 'Session access token information' + required: + - token + - issuedAt + - expiresAt + properties: + token: + $ref: '#/components/schemas/SessionToken' + issuedAt: + type: number + description: 'Token issuance time (ms since epoch)' + expiresAt: + type: number + description: 'Absolute expiry (ms since epoch). Tokens are short lived and shall not exceed operator policy TTL' + + SessionToken: + type: object + description: 'Session token' + required: + - scheme + - value + properties: + scheme: + type: string + description: 'Token scheme; "bearer" shall be supported' + enum: + - bearer + value: + type: string + description: 'Opaque token value. Its internal structure is operator specific'