A.3 JOSE Protected Message Forwarding API on N32-f

29.5733GPP5G SystemPublic Land Mobile Network (PLMN) InterconnectionRelease 18Stage 3TS

openapi: 3.0.0

info:

version: ‘1.3.0-alpha.1’

title: ‘JOSE Protected Message Forwarding API’

description: |

N32-f Message Forwarding Service.

© 2022, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC).

All rights reserved.

servers:

– url: ‘{apiRoot}/n32f-forward/v1’

variables:

apiRoot:

default: https://example.com

description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501.

externalDocs:

description: 3GPP TS 29.573 V18.1.0; 5G System; Public Land Mobile Network (PLMN) Interconnection; Stage 3

url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.573/

paths:

/n32f-process:

post:

summary: N32-f Message Forwarding

tags:

– N32-f Forward

operationId: PostN32fProcess

parameters:

– name: Content-Encoding

in: header

description: Content-Encoding, described in IETF RFC 7231

schema:

type: string

– name: Accept-Encoding

in: header

description: Accept-Encoding, described in IETF RFC 7231

schema:

type: string

– name: 3gpp-Sbi-Message-Priority

in: header

description: 3gpp-Sbi-Message-Priority, defined in 3GPP TS 29.500

schema:

type: string

requestBody:

description: Custom operation N32-f Message Forwarding

required: true

content:

application/json:

schema:

$ref: ‘#/components/schemas/N32fReformattedReqMsg’

responses:

‘200’:

description: OK (Successful forwarding of reformatted message over N32-f)

content:

application/json:

schema:

$ref: ‘#/components/schemas/N32fReformattedRspMsg’

headers:

Accept-Encoding:

description: Accept-Encoding, described in IETF RFC 7694

schema:

type: string

Content-Encoding:

description: Content-Encoding, described in IETF RFC 7231

schema:

type: string

3gpp-Sbi-Message-Priority:

description: 3gpp-Sbi-Message-Priority, defined in 3GPP TS 29.500

schema:

type: string

‘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’

‘411’:

$ref: ‘TS29571_CommonData.yaml#/components/responses/411’

‘413’:

$ref: ‘TS29571_CommonData.yaml#/components/responses/413’

‘415’:

$ref: ‘TS29571_CommonData.yaml#/components/responses/415’

‘429’:

$ref: ‘TS29571_CommonData.yaml#/components/responses/429’

‘500’:

$ref: ‘TS29571_CommonData.yaml#/components/responses/500’

‘502’:

$ref: ‘TS29571_CommonData.yaml#/components/responses/502’

‘503’:

$ref: ‘TS29571_CommonData.yaml#/components/responses/503’

default:

description: Unexpected error

options:

summary: Discover communication options supported by next hop (IPX or SEPP)

operationId: N32fProcessOptions

tags:

– N32-f Forward

responses:

‘204’:

description: No Content

headers:

Accept-Encoding:

description: Accept-Encoding, described in IETF RFC 7694

schema:

type: string

‘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’

‘405’:

$ref: ‘TS29571_CommonData.yaml#/components/responses/405’

‘429’:

$ref: ‘TS29571_CommonData.yaml#/components/responses/429’

‘500’:

$ref: ‘TS29571_CommonData.yaml#/components/responses/500’

‘501’:

$ref: ‘TS29571_CommonData.yaml#/components/responses/501’

‘502’:

$ref: ‘TS29571_CommonData.yaml#/components/responses/502’

‘503’:

$ref: ‘TS29571_CommonData.yaml#/components/responses/503’

default:

$ref: ‘TS29571_CommonData.yaml#/components/responses/default’

components:

schemas:

FlatJweJson:

description: Contains the integrity protected reformatted block

type: object

required:

– ciphertext

properties:

protected:

type: string

unprotected:

type: object

header:

type: object

encrypted_key:

type: string

# The attribute name does not follow the naming conventions specified in 3GPP TS 29.501. The attribute name is kept though as defined in the current specification for backward compatibility reason.

aad:

type: string

iv:

type: string

ciphertext:

type: string

tag:

type: string

FlatJwsJson:

description: Contains the modification from IPXes on path

type: object

required:

– payload

– signature

properties:

payload:

type: string

protected:

type: string

header:

type: object

signature:

type: string

N32fReformattedReqMsg:

description: Contains the reformatted HTTP/2 request message

type: object

required:

– reformattedData

properties:

reformattedData:

$ref: ‘#/components/schemas/FlatJweJson’

modificationsBlock:

type: array

items:

$ref: ‘#/components/schemas/FlatJwsJson’

minItems: 1

N32fReformattedRspMsg:

description: Contains the reformatted HTTP/2 response message

type: object

required:

– reformattedData

properties:

reformattedData:

$ref: ‘#/components/schemas/FlatJweJson’

modificationsBlock:

type: array

items:

$ref: ‘#/components/schemas/FlatJwsJson’

minItems: 1

DataToIntegrityProtectAndCipherBlock:

description: HTTP header to be encrypted or the value of a JSON attribute to be encrypted

type: object

required:

– dataToEncrypt

properties:

dataToEncrypt:

type: array

items: {}

minItems: 1

DataToIntegrityProtectBlock:

description: Data to be integrity protected

type: object

properties:

metaData:

$ref: ‘#/components/schemas/MetaData’

requestLine:

$ref: ‘#/components/schemas/RequestLine’

statusLine:

type: string

headers:

type: array

items:

$ref: ‘#/components/schemas/HttpHeader’

minItems: 1

payload:

type: array

items:

$ref: ‘#/components/schemas/HttpPayload’

minItems: 1

RequestLine:

description: Contains the request line of the HTTP API request being reformatted and forwarded over N32-f

type: object

required:

– method

– scheme

– authority

– path

– protocolVersion

properties:

method:

$ref: ‘TS29573_N32_Handshake.yaml#/components/schemas/HttpMethod’

scheme:

$ref: ‘TS29571_CommonData.yaml#/components/schemas/UriScheme’

authority:

type: string

path:

type: string

protocolVersion:

type: string

queryFragment:

type: string

HttpHeader:

description: Contains the encoding of HTTP headers in the API request / response

type: object

required:

– header

– value

properties:

header:

type: string

value:

$ref: ‘#/components/schemas/EncodedHttpHeaderValue’

HttpPayload:

description: Contains the encoding of JSON payload in the API request / response

type: object

required:

– iePath

– ieValueLocation

– value

properties:

iePath:

type: string

ieValueLocation:

$ref: ‘TS29573_N32_Handshake.yaml#/components/schemas/IeLocation’

value:

type: object

MetaData:

description: Contains the meta data information needed for replay protection

type: object

required:

– n32fContextId

– messageId

– authorizedIpxId

properties:

n32fContextId:

type: string

pattern: ‘^[A-Fa-f0-9]{16}$’

messageId:

type: string

authorizedIpxId:

type: string

Modifications:

description: Information on inserting of the modifications entry

type: object

required:

– identity

properties:

identity:

$ref: ‘TS29571_CommonData.yaml#/components/schemas/Fqdn’

operations:

type: array

items:

$ref: ‘TS29571_CommonData.yaml#/components/schemas/PatchItem’

minItems: 1

tag:

type: string

IndexToEncryptedValue:

description: Index to the encrypted value

type: object

required:

– encBlockIndex

properties:

encBlockIndex:

$ref: ‘TS29571_CommonData.yaml#/components/schemas/Uinteger’

EncodedHttpHeaderValue:

description: HTTP header value or index to the HTTP header value

oneOf:

– type: string

– $ref: ‘#/components/schemas/IndexToEncryptedValue’