Skip to content

Commit

Permalink
Add proposed M3 API interfaces.
Browse files Browse the repository at this point in the history
These are some proposed APIs for the M3 interface between the 5GMS application function and 5GMS application server. These are a work in progress and may be changed.
  • Loading branch information
David Waring committed Oct 18, 2022
1 parent b3cfda1 commit f96e1e4
Show file tree
Hide file tree
Showing 2 changed files with 369 additions and 0 deletions.
206 changes: 206 additions & 0 deletions 5gms/5G_APIs-overrides/M3_ContentHostingProvisioning.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,206 @@
openapi: 3.0.0
info:
title: M3_ContentHostingProvisioning
version: 0.0.0
description: |
5GMS AS M3 Content Hosting Provisioning API
Copyright © 2022 British Broadcasting Corporation
All rights reserved.
tags:
- name: M3_ContentHostingProvisioning
description: '5G Media Streaming: Application Server Provisioning (M3) APIs: Content Hosting Provisioning'
externalDocs:
description: 'TS 26.512 V16.x.x; 5G Media Streaming (5GMS); Protocols'
url: 'https://www.3gpp.org/ftp/Specs/archive/26_series/26.512/'
servers:
- url: '{apiRoot}/3gpp-m3/v1'
variables:
apiRoot:
default: https://example.com
description: See 3GPP TS 29.512 clause 6.1.
paths:
/content-hosting-configurations:
summary: "Content Hosting Configuration collection"
get:
operationId: retrieveContentHostingConfigurations
summary: "Retrieve a list of Content Hosting Configuration resource identifiers currently registered with the 5GMS AS"
responses:
'200':
# OK
description: "Success"
content:
application/json:
schema:
type: array
items:
$ref: 'TS26512_CommonData.yaml#/components/schemas/ResourceId'
'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/{provisioningSessionId}:
summary: "Operations to manipulate a single Content Hosting Configuration resource"
description: "Individual Content Hosting Configuration resources in the collection are addressed by the provisioningSessionId of their parent Provisioning Session."
parameters:
- name: provisioningSessionId
in: path
required: true
schema:
$ref: 'TS26512_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'
requestBody:
description: 'A JSON representation of a Content Hosting Configuration'
required: true
content:
application/json:
schema:
$ref: 'TS26512_M1_ContentHostingProvisioning.yaml#/components/schemas/ContentHostingConfiguration'
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: 'TS26512_CommonData.yaml#/components/schemas/Url'
'405':
# Method Not Allowed: Content Hosting Configuration resource already exists at the specified path
$ref: 'TS29571_CommonData.yaml#/components/responses/405'
'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'
# (Retrieval of individual Content Hosting Configuration resources is not permitted at reference point M3.)
put:
operationId: updateContentHostingConfiguration
summary: 'Update (by replacement) an existing Content Hosting Configuration for the specified Provisioning Session'
requestBody:
description: 'A JSON representation of a Content Hosting Configuration'
required: true
content:
application/json:
schema:
$ref: 'TS26512_M1_ContentHostingProvisioning.yaml#/components/schemas/ContentHostingConfiguration'
responses:
'200':
# OK
description: 'Content Hosting Configuration Updated'
'204':
# No Content
description: 'Content Hosting Configuration Unchanged'
'404':
# Not Found
$ref: 'TS29571_CommonData.yaml#/components/responses/404'
'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'
responses:
'204':
# No Content
description: 'Content Hosting Configuration Destroyed'
'404':
# Not Found
$ref: 'TS29571_CommonData.yaml#/components/responses/404'
'413':
# Payload too large
$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/{provisioningSessionId}/purge:
parameters:
- name: provisioningSessionId
in: path
required: true
schema:
$ref: 'TS26512_CommonData.yaml#/components/schemas/ResourceId'
description: 'The Provisioning Session identifier of an existing Content Hosting Configuration.'
post:
operationId: purgeContentHostingCache
summary: 'Purge the content of the cache for the specified Content Hosting Configuration'
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'
'404':
# Not Found
$ref: 'TS29571_CommonData.yaml#/components/responses/404'
'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'
163 changes: 163 additions & 0 deletions 5gms/5G_APIs-overrides/M3_ServerCertificatesProvisioning.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,163 @@
openapi: 3.0.0
info:
title: M3_ServerCertificatesProvisioning
version: 0.0.0
description: |
5GMS AS M3 Server Certificates Provisioning API
Copyright © 2022 British Broadcasting Corporation
All rights reserved.
tags:
- name: M3_ServerCertificatesProvisioning
description: '5G Media Streaming: Application Server Provisioning (M3) APIs: Server Certificates Provisioning'
externalDocs:
description: 'TS 26.512 V16.x.x; 5G Media Streaming (5GMS); Protocols'
url: 'https://www.3gpp.org/ftp/Specs/archive/26_series/26.512/'
servers:
- url: '{apiRoot}/3gpp-m3/v1'
variables:
apiRoot:
default: https://example.com
description: See 3GPP TS 29.512 clause 6.1.
paths:
/certificates:
summary: "Server Certificates collection"
get:
operationId: retrieveServerCertificates
summary: "Retrieve a list of Server Certificate composite resource identifiers currently registered with the 5GMS AS"
responses:
'200':
# OK
description: "Success"
content:
application/json:
schema:
type: array
items:
$ref: 'TS26512_CommonData.yaml#/components/schemas/ResourceId'
'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'

/certificates/{provisioningSessionId}+{certificateId}:
summary: "Operations to manipulate a single Server Certificate resource"
description: "Individual Server Certificate resources in the collection are addressed using a composite key since certificateId is only unique within the scope of a provisioningSessionId."
parameters:
- name: provisioningSessionId
in: path
required: true
schema:
$ref: 'TS26512_CommonData.yaml#/components/schemas/ResourceId'
description: 'The resource identifier of a Provisioning Session in the 5GMS AF.'
- name: certificateId
in: path
required: true
schema:
$ref: 'TS26512_CommonData.yaml#/components/schemas/ResourceId'
description: 'The resource identifier of a Server Certificate, unique within the scope of a Provisioning Session.'
post:
operationId: createServerCertificate
summary: "Create a new Server Certificate resource and upload an X.509 certificate bundle to be associated with it"
requestBody:
description: "As well as the public certificate itself, the PEM bundle is required to include the private key of the certificate and any intermediate CA certificates."
required: true
content:
application/x-pem-file:
schema:
type: string
responses:
'201':
# Created
description: "Server Certificate Created"
headers:
Location:
description: 'URL of the newly created Content Hosting Configuration (which may be redirected from the request URL).'
required: true
schema:
$ref: 'TS26512_CommonData.yaml#/components/schemas/Url'
'405':
# Method Not Allowed: Server Certificate resource already exists at the specified path
$ref: 'TS29571_CommonData.yaml#/components/responses/405'
'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'
# (Retrieval of individual Server Certificate resources is not permitted at reference point M3.)
put:
operationId: updateServerCertificate
summary: "Update (by replacement) an existing Server Certificate resource with a new X.509 certificate bundle"
requestBody:
description: "As well as the public certificate itself, the PEM bundle is required to include the private key of the certificate and any intermediate CA certificates."
required: true
content:
application/x-pem-file:
schema:
type: string
responses:
'200':
# OK
description: "Server Certificate Updated"
'204':
# No Content
description: 'Server Certificate Unchanged'
'404':
# Not Found
$ref: 'TS29571_CommonData.yaml#/components/responses/404'
'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: destroyServerCertificate
summary: 'Destroy an existing Server Certificate resource'
responses:
'204':
# No Content
description: 'Server Certificate Destroyed'
'404':
# Not Found
$ref: 'TS29571_CommonData.yaml#/components/responses/404'
'413':
# Payload too large
$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'

0 comments on commit f96e1e4

Please sign in to comment.