6 API Definitions

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

6.1 N32 Handshake API

6.1.1 API URI

URIs of this API shall have the following root:

{apiRoot}/{apiName}/{apiVersion}

where "apiRoot" is defined in clause 4.4.1 of 3GPP TS 29.501 [5], the "apiName" shall be set to "n32c-handshake" and the "apiVersion" shall be set to "v1" for the current version of this specification.

6.1.2 Usage of HTTP

6.1.2.1 General

HTTP/2, as defined in IETF RFC 7540 [7], shall be used as specified in clause 4.3.2.1.

HTTP/2 shall be transported as specified in clause 4.3.3.

HTTP messages and bodies for the N32 handshake API shall comply with the OpenAPI [27] specification contained in Annex A.

6.1.2.2 HTTP standard headers

6.1.2.2.1 General

The HTTP standard headers as specified in clause 4.3.2.2 shall be supported for this API.

6.1.2.2.2 Content type

The following content types shall be supported:

– the JSON format (see IETF RFC 8259 [8]). The use of the JSON format shall be signalled by the content type "application/json". See also clause 5.3.4.

– the Problem Details JSON Object (see IETF RFC 7807 [22]). The use of the Problem Details JSON object in a HTTP response body shall be signalled by the content type "application/problem+json".

6.1.2.3 HTTP custom headers

6.1.2.3.1 General

In this release of the specification, no specific custom headers are defined for the N32 handshake API.

For 3GPP specific HTTP custom headers used across all service based interfaces, see clause 4.3.2.3.

6.1.3 Resources

6.1.3.1 Overview

There are no resources in this version of the N32 handshake API. All the operations are realized as custom operations without resources.

6.1.4 Custom Operations without Associated Resources

6.1.4.1 Overview

Table 6.1.4.1-1: Custom operations without associated resources

Operation Name

Custom operation URI

Mapped HTTP method

Description

Security Capability Negotiation

/exchange-capability

POST

This is the N32 capability exchange API used to negotiate the security capabilities between SEPPs or tear down the N32-f TLS connection.

Parameter Exchange

/exchange-params

POST

This is the N32 parameter exchange API used to exchange the cipher suites and protection policies.

N32-f Context Terminate

/n32f-terminate

POST

This is the N32-f context termination procedure API.

N32-f Error Reporting

/n32f-error

POST

This is the N32-f error reporting procedure API.

6.1.4.2 Operation: Security Capability Negotiation

6.1.4.2.1 Description

This custom operation is used between the SEPPs to negotiate their security capabilities or to tear down the N32-f connection when negotiated security scheme is TLS. The HTTP method POST shall be used on the following URI:

URI: {apiRoot}/n32c-handshake/v1/exchange-capability

This operation shall support the resource URI variables defined in table 6.1.4.2.1-1.

Table 6.1.4.2.1-1: Resource URI variables for this Operation

Name

Data type

Definition

apiRoot

string

See clause 6.1.1.

6.1.4.2.2 Operation Definition

This operation shall support the request data structures and response codes specified in tables 6.2.4.2.2-1 and 6.2.4.2.2-2.

Table 6.1.4.2.2-1: Data structures supported by the POST Request Body

Data type

P

Cardinality

Description

SecNegotiateReqData

M

1

The IE shall contain the security capabilities of the initiating SEPP.

Table 6.1.4.2.2-2: Data structures supported by the POST Response Body on this resource

Data type

P

Cardinality

Response

codes

Description

SecNegotiateRspData

M

1

200 OK

This represents the successful processing of the requested security capabilities. The responding SEPP shall provide the security capabilities that it has selected, in the response.

ProblemDetails

O

0..1

403 Forbidden

The "cause" attribute may be used to indicate one of the following application errors:

– REQUESTED_PURPOSE_NOT_ALLOWED

When the receiving SEPP fails to negotiate the security capability, the "cause" attribute shall be set to "NEGOTIATION_NOT_ALLOWED".

NOTE: The mandatory HTTP error status codes for the POST method listed in Table 5.2.7.1-1 of 3GPP TS 29.500 [4] other than those specified in the table above also apply, with a ProblemDetails data type (see clause 5.2.7 of 3GPP TS 29.500 [4]).

6.1.4.3 Operation: Parameter Exchange

6.1.4.3.1 Description

This custom operation is used between the SEPPs to exchange the parameters for the N32-f connection. The HTTP method POST shall be used on the following URI:

URI: {apiRoot}/n32c-handshake/v1/exchange-params

This operation shall support the resource URI variables defined in table 6.1.4.3.1-1.

Table 6.1.4.3.1-1: Resource URI variables for this Operation

Name

Data type

Definition

apiRoot

string

See clause 6.1.1.

6.1.4.3.2 Operation Definition

This operation shall support the request data structures and response codes specified in tables 6.1.4.3.2-1 and 6.1.4.3.2-2.

Table 6.1.4.3.2-1: Data structures supported by the POST Request Body

Data type

P

Cardinality

Description

SecParamExchReqData

M

1

The IE shall contain the parameters requested by the requesting SEPP.

Table 6.1.4.3.2-2: Data structures supported by the POST Response Body on this resource

Data type

P

Cardinality

Response

codes

Description

SecParamExchRspData

M

1

200 OK

This represents the successful processing of the requested parameters. The SEPP shall provide the selected parameters (i.e selected cipher suite and/or selected data type encryption policy) depending on what was requested by the requesting SEPP and what is supported by the responding SEPP, or the SEPP shall provide the modification policy and/or security information lists of the connected IPXs.

ProblemDetails

O

0..1

409 Conflict

The "cause" attribute may be used to indicate one of the following application errors:

– REQUESTED_PARAM_MISMATCH

NOTE: The mandatory HTTP error status codes for the POST method listed in Table 5.2.7.1-1 of 3GPP TS 29.500 [4] other than those specified in the table above also apply, with a ProblemDetails data type (see clause 5.2.7 of 3GPP TS 29.500 [4]).

6.1.4.4 Operation: N32-f Context Terminate

6.1.4.4.1 Description

This custom operation is used between the SEPPs to terminate an N32-f context. The HTTP method POST shall be used on the following URI:

URI: {apiRoot}/n32c-handshake/v1/n32f-terminate

This operation shall support the resource URI variables defined in table 6.1.4.3.1-1.

Table 6.1.4.4.1-1: Resource URI variables for this Operation

Name

Data type

Definition

apiRoot

string

See clause 6.1.1.

6.1.4.4.2 Operation Definition

This operation shall support the request data structures and response codes specified in tables 6.1.4.4.2-1 and 6.1.4.4.2-2.

Table 6.1.4.4.2-1: Data structures supported by the POST Request Body

Data type

P

Cardinality

Description

N32fContextInfo

M

1

The IE shall contain the information about the N32-f context requested to be terminated by the requesting SEPP.

Table 6.1.4.4.2-2: Data structures supported by the POST Response Body on this resource

Data type

P

Cardinality

Response

codes

Description

N32fContextInfo

M

1

200 OK

This represents the successful deletion of the request N32-f context. The responding SEPP shall return the "n32fContextId" it had towards the initiating SEPP, in this IE.

NOTE: The mandatory HTTP error status codes for the POST method listed in Table 5.2.7.1-1 of 3GPP TS 29.500 [4] other than those specified in the table above also apply, with a ProblemDetails data type (see clause 5.2.7 of 3GPP TS 29.500 [4]).

6.1.4.5 Operation: N32-f Error Reporting

6.1.4.5.1 Description

This custom operation is used between the SEPPs to report errors identified while processing the messages received on N32-f. The HTTP method POST shall be used on the following URI:

URI: {apiRoot}/n32c-handshake/v1/n32f-error

This operation shall support the resource URI variables defined in table 6.1.4.5.1-1.

Table 6.1.4.5.1-1: Resource URI variables for this Operation

Name

Data type

Definition

apiRoot

string

See clause 6.1.1.

6.1.4.5.2 Operation Definition

This operation shall support the request data structures and response codes specified in tables 6.1.4.5.2-1 and 6.1.4.5.2-2.

Table 6.1.4.5.2-1: Data structures supported by the POST Request Body

Data type

P

Cardinality

Description

N32fErrorInfo

M

1

The IE shall contain the information about the N32-f message that failed to process at the SEPP initiating the N32-f error reporting procedure, together with information related to the nature of the error.

Table 6.1.4.5.2-2: Data structures supported by the POST Response Body on this resource

Data type

P

Cardinality

Response

codes

Description

204 No Content

This represents the successful processing of the N32-f error report at the receiving SEPP.

NOTE: The mandatory HTTP error status codes for the POST method listed in Table 5.2.7.1-1 of 3GPP TS 29.500 [4] other than those specified in the table above also apply, with a ProblemDetails data type (see clause 5.2.7 of 3GPP TS 29.500 [4]).

6.1.5 Data Model

6.1.5.1 General

This clause specifies the application data model supported by the API.

Table 6.1.5.1-1 specifies the data types defined for the N32 interface.

Table 6.1.5.1-1: N32 specific Data Types

Data type

Clause defined

Description

SecNegotiateReqData

6.1.5.2.2

Defines the security capabilities of a SEPP sent to a receiving SEPP.

SecNegotiateRspData

6.1.5.2.3

Defines the selected security capabilities by a SEPP.

SecurityCapability

6.1.5.3.3

Enumeration of security capabilities.

SecParamExchReqData

6.1.5.2.4

Request data structure for parameter exchange

SecParamExchRspData

6.1.5.2.5

Response data structure for parameter exchange

ProtectionPolicy

6.1.5.2.6

The protection policy to be negotiated between the SEPPs.

ApiIeMapping

6.1.5.2.7

API URI to IE mapping on which the protection policy needs to be applied.

IeInfo

6.1.5.2.8

Protection and modification policy for the IE

ApiSignature

6.1.5.2.9

API URI of the service operation

N32fContextInfo

6.1.5.2.10

N32-f context information

N32fErrorInfo

6.1.5.2.11

N32-f error information.

FailedModificationInfo

6.1.5.2.12

Information on N32-f modifications block that failed to process.

N32fErrorDetail

6.1.5.2.13

Details about the N32f error.

CallbackName

6.1.5.2.14

Callback Name.

IpxProviderSecInfo

6.1.5.2.15

Defines the security information list of an IPX.

IntendedN32Purpose

6.1.5.2.16

Defines the intended N32 establishment purpose.

HttpMethod

6.1.5.3.4

Enumeration of HTTP methods.

IeType

6.1.5.3.5

Enumeration of types of IEs (i.e kind of IE) to specify the protection policy.

IeLocation

6.1.5.3.6

Location of the IE in a HTTP message.

N32fErrorType

6.1.5.3.7

Type of error while processing N32-f message.

FailureReason

6.1.5.3.8

Reason for failure to reconstruct a HTTP/2 message from N32-f message.

Table 6.1.5.1-2 specifies data types re-used by the N32 interface protocol from other specifications, including a reference to their respective specifications and when needed, a short description of their use within the Namf service based interface.

Table 6.1.5.1-2: N32 re-used Data Types

Data type

Reference

Comments

Fqdn

3GPP TS 29.571 [12]

SupportedFeatures

3GPP TS 29.571 [12]

Used to negotiate the applicability of the optional features defined in table 6.1.7-1.

6.1.5.2 Structured data types

6.1.5.2.1 Introduction

This clause defines the structures to be used in the N32 Handshake API.

6.1.5.2.2 Type: SecNegotiateReqData

Table 6.1.5.2.2-1: Definition of type SecNegotiateReqData

Attribute name

Data type

P

Cardinality

Description

sender

Fqdn

M

1

This IE shall uniquely identify the SEPP that is sending the request. This IE is used to identify and store the negotiated security capability against the right SEPP.

supportedSecCapabilityList

array(SecurityCapability)

M

1..N

This IE shall contain the list of security capabilities that the requesting SEPP supports.

To tear down the N32-f TLS connection, this IE shall set SecurityCapability as "NONE".

3GppSbiTargetApiRootSupported

boolean

C

0..1

This IE should be present and indicate that the 3gpp-Sbi-Target-apiRoot HTTP header is supported, if TLS security is supported for N32f message forwarding.

When present, it shall indicate if TLS security using the 3gpp-Sbi-Target-apiRoot HTTP header is supported:

– true: supported

– false (default): not supported

(NOTE 1)

plmnIdList

array(PlmnId)

O

1..N

A list of PLMN IDs associated with the SEPP, which is sending the request. The list to be stored by the receiving SEPP in a N32-f Context (see clause 5.9.3 in 3GPP TS 33.501 [6])

snpnIdList

array(PlmnIdNid)

O

1..N

A list of SNPN IDs associated with the SEPP, which is sending the request. The list to be stored by the receiving SEPP in a N32-f Context (see clause 5.9.3 in 3GPP TS 33.501 [6])

targetPlmnId

PlmnId

O

1

When present, this IE shall contain a PLMN ID of the target SEPP.

See clause 5.2.2 step 1.

targetSnpnId

PlmnIdNid

O

0..1

When present, this IE shall contain a SNPN ID of the target SEPP. See clause 5.2.2 step 1.

intendedUsagePurpose

array(IntendedN32Purpose)

O

1..N

This attribute notifies the list of requested usage purpose the N32 is established for.

supportedFeatures

SupportedFeatures

C

0..1

This IE shall be present if at least one optional feature defined in clause 6.1.7 is supported

senderN32fFqdn

Fqdn

O

0..1

This IE may be present if TLS is present in the supportedSecCapabilityList IE, and the sending SEPP wishes the receiving SEPP to establish the N32-f connection towards a specific FQDN, if TLS is selected as the security option for N32-f.

(NOTE 2)

senderN32fPort

Uinteger

O

0..1

This IE may be present if TLS is present in the supportedSecCapabilityList IE, and the sending SEPP wishes the receiving SEPP to establish the N32-f connection using a specific port number, if TLS is selected as the security option for N32-f.

(NOTE 3)

NOTE 1: The attribute name does not follow the naming conventions specified in 3GPP TS 29.501 [5]. The attribute name is kept though as defined in the current specification for backward compatibility reason.

NOTE 2: If the senderN32fFqdn IE is absent, the receiving SEPP establishes the N32-f connection towards the sending SEPP using the N32-c FQDN and/or local configuration. SEPP implementations complying with earlier releases of the specification may not support this IE.

NOTE 3: If the senderN32fPort IE is absent, the receiving SEPP shall use a locally configured port if any, otherwise the default HTTPs port number, i.e., TCP port 443 for "https" URIs as specified in IETF RFC 7540 [7]. SEPP implementations complying with earlier releases of the specification may not support this IE.

6.1.5.2.3 Type: SecNegotiateRspData

Table 6.1.5.2.3-1: Definition of type SecNegotiateRspData

Attribute name

Data type

P

Cardinality

Description

sender

Fqdn

M

1

This IE shall uniquely identify the SEPP that is sending the response. This IE is used to identify and store the negotiated security capability against the right SEPP.

selectedSecCapability

SecurityCapability

M

1

This IE shall contain the security capability selected by the responding SEPP.

When the request is for tearing down the N32-f TLS connection, the responding SEPP shall add SecurityCapability as "NONE".

3GppSbiTargetApiRootSupported

boolean

C

0..1

This IE should be present and indicate that the 3gpp-Sbi-Target-apiRoot HTTP header is supported, if TLS security is negotiated for N32f message forwarding and the initiating SEPP indicated support of this header.

When present, it shall indicate if TLS security using the 3gpp-Sbi-Target-apiRoot HTTP header is supported:

– true: supported

– false (default): not supported

(NOTE 1)

plmnIdList

array(PlmnId)

O

1..N

A list of PLMN IDs of a single PLMN associated with the SEPP, which is sending the response. The list to be stored by the receiving SEPP in a N32-f Context (see clause 5.9.3 in 3GPP TS 33.501 [6]).

If different PLMNs are represented by different PLMN IDs supported by a SEPP, then the SEPP shall select the PLMN as specified in clause 5.2.2 step 2a.

snpnIdList

array(PlmnIdNid)

O

1..N

A list of SNPN IDs of a single SNPN associated with the SEPP, which is sending the response. The list to be stored by the receiving SEPP in a N32-f Context (see clause 5.9.3 in 3GPP TS 33.501 [6]).

If different SNPNs are represented by different SNPN IDs supported by a SEPP, then the SEPP shall select the SNPN as specified in clause 5.2.2 step 2a.

allowedUsagePurpose

array(IntendedN32Purpose)

O

1..N

This attribute notifies the list of allowed usage purpose the N32 is established for.

IntendedN32Purpose shall not include attribute "cause".

rejectedUsagePurpose

array(IntendedN32Purpose)

O

1..N

This attribute notifies the list of rejected usage purpose the N32 is established for.

Shall only be present if any of the requested usage purpose is rejected.

supportedFeatures

SupportedFeatures

C

0..1

This IE shall be present if at least one optional feature defined in clause 6.1.7 is supported

senderN32fFqdn

Fqdn

O

0..1

This IE may be present if TLS is present in the selectedSecCapability IE, and the sending SEPP wishes the receiving SEPP to establish the N32-f connection towards a specific FQDN.

(NOTE 2)

senderN32fPort

Uinteger

O

0..1

This IE may be present if TLS is present in the supportedSecCapabilityList IE, and the sending SEPP wishes the receiving SEPP to establish the N32-f connection using a specific port number.

(NOTE 3)

NOTE 1: The attribute name does not follow the naming conventions specified in 3GPP TS 29.501 [5]. The attribute name is kept though as defined in the current specification for backward compatibility reason.

NOTE 2: If the senderN32fFqdn IE is absent, the receiving SEPP establishes the N32-f connection towards the sending SEPP using the N32-c FQDN and/or local configuration. SEPP implementations complying with earlier releases of the specification may not support this IE.

NOTE 3: If the senderN32fPort number is absent, the receiving SEPP shall use a locally configured port, if any, otherwise the default HTTPs port number, i.e., TCP port 443 for "https" URIs as specified in IETF RFC 7540 [7]. SEPP implementations complying with earlier releases of the specification may not support this IE.

6.1.5.2.4 Type: SecParamExchReqData

Table 6.1.5.2.4-1: Definition of type SecParamExchReqData

Attribute name

Data type

P

Cardinality

Description

n32fContextId

string

M

1

This IE shall contain the context identifier to be used by the responding SEPP for subsequent JOSE protected message forwarding procedure over N32-f towards the initiating SEPP. The initiating SEPP shall use this context identifier to locate the cipher suite and protection policy exchanged and agreed to be used with the responding SEPP, for the message forwarding procedure over N32-f.

The n32fContextId shall encode a 64-bit integer in hexadecimal representation. Each character in the string shall take a value of "0" to "9" or "A" to "F" and shall represent 4 bits. The most significant character representing the 4 most significant bits of the N32-f context Id shall appear first in the string, and the character representing the 4 least significant bit of the N32-f context Id shall appear last in the string.

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

Example: "0600AD1855BD6007".

jweCipherSuiteList

array(string)

C

1..N

This IE shall be present during the parameter exchange procedure for cipher suite negotiation (see clause 5.2.3.2). When present, this IE shall contain the ordered list of JWE cipher suites supported by the requesting SEPP. Valid values for the string are as specified in clause 5.1 of IETF RFC 7518 [13].

jwsCipherSuiteList

array(string)

C

1..N

This IE shall be present during the parameter exchange procedure for cipher suite negotiation (see clause 5.2.3.2). When present, this IE shall contain the ordered list of JWS cipher suites supported by the requesting SEPP. Valid values for the string are as specified in clause 3.1 of IETF RFC 7518 [13].

protectionPolicyInfo

ProtectionPolicy

C

0..1

This IE shall be present during the parameter exchange procedure for protection policy exchange (see clause 5.2.3.3). When present, this IE shall contain the data type encryption policy requested by the requesting SEPP and/or the modification policy supported by the IPX(s) on the side of the requesting SEPP.

ipxProviderSecInfoList

array(IpxProviderSecInfo)

C

1..N

This IE includes the list of IPX security information.

sender

Fqdn

C

0..1

This IE shall be present if the Parameter Exchange request is sent on a different N32-c HTTP connection than the one used to perform the Security Capability Negotiation procedure. It may be present otherwise.

When present, it shall uniquely identify the SEPP that is sending the request. This IE is used to store the exchanged parameters against the right SEPP.

6.1.5.2.5 Type: SecParamExchRspData

Table 6.1.5.2.5-1: Definition of type SecParamExchRspData

Attribute name

Data type

P

Cardinality

Description

n32fContextId

string

M

1

This IE shall contain the context identifier to be used by the initiating SEPP for subsequent JOSE protected message forwarding procedure over N32-f towards the responding SEPP. The responding SEPP shall use this context identifier to locate the cipher suite and protection policy exchanged and agreed to be used with the initiating SEPP, for the message forwarding procedure over N32-f.

The n32fContextId shall encode a 64-bit integer in hexadecimal representation. Each character in the string shall take a value of "0" to "9" or "A" to "F" and shall represent 4 bits. The most significant character representing the 4 most significant bits of the N32-f context Id shall appear first in the string, and the character representing the 4 least significant bit of the N32-f context Id shall appear last in the string.

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

Example: "0600AD1855BD6007".

selectedJweCipherSuite

string

C

1

This IE shall be present during the parameter exchange procedure for cipher suite negotiation (see clause 5.2.3.2). When present, this IE shall contain the JWE cipher suite selected by the responding SEPP.

selectedJwsCipherSuite

string

C

1

This IE shall be present during the parameter exchange procedure for cipher suite negotiation (see clause 5.2.3.2). When present, this IE shall contain the JWS cipher suite selected by the responding SEPP.

selProtectionPolicyInfo

ProtectionPolicy

C

0..1

This IE shall be present during the parameter exchange procedure for protection policy exchange (see clause 5.2.3.3). When present, this IE shall contain the data type encryption policy selected by the responding SEPP and/or the modification policy supported by the IPX(s) on the side of the responding SEPP.

ipxProviderSecInfoList

array(IpxProviderSecInfo)

C

1..N

This IE includes the list of IPX security information.

sender

Fqdn

C

0..1

This IE shall be present if the Parameter Exchange response is sent on a different N32-c HTTP connection than the one used to perform the Security Capability Negotiation procedure. It may be present otherwise.

When present, it shall uniquely identify the SEPP that is sending the response. This IE is used to store the exchanged parameters against the right SEPP.

6.1.5.2.6 Type: ProtectionPolicy

Table 6.1.5.2.6-1: Definition of type ProtectionPolicy

Attribute name

Data type

P

Cardinality

Description

apiIeMappingList

array(ApiIeMapping)

M

1..N

Contains an array of API URI to IE type – IE name mapping. The mapping includes an indication against each IE if that IE is allowed to be modified by the IPX on the side of the SEPP or not.

dataTypeEncPolicy

array(IeType)

C

1..N

This IE shall be present when the SEPPs need to exchange the IE protection policies. When present, this IE shall contain the list of IE types that the SEPP intends to protect by ciphering.

6.1.5.2.7 Type: ApiIeMapping

Table 6.1.5.2.7-1: Definition of type ApiIeMapping

Attribute name

Data type

P

Cardinality

Description

apiSignature

ApiSignature

M

1

This IE shall contain:

– The API URI of the NF service operations following request/response semantic; or

– The API URI of the subscribe / unsubscribe service operation

apiMethod

HttpMethod

M

1

This IE shall contain the HTTP method used by the API.

IeList

array(IeInfo)

M

1..N

This IE shall contain the array of Ies in the API.

(NOTE)

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

6.1.5.2.8 Type: IeInfo

Table 6.1.5.2.8-1: Definition of type IeInfo

Attribute name

Data type

P

Cardinality

Description

ieLoc

IeLocation

M

1

This IE shall contain the location of the IE mentioned in "reqBodyIePath" or "rspBodyIePath" (i.e URI parameter or JSON body or multipart message)

ieType

IeType

M

1

This IE shall contain the type of the IE, representing the nature of the information the IE is carrying.

reqIe

string

C

0..1

This IE shall be included when the Ies in HTTP/2 request messages of an API need to be protected when forwarded over N32-f. When present, this IE shall contain:

– The JSON pointer representation of the IE to be protected, if the "ieLoc" indicates "BODY". Only the JSON pointer of the leaf IEs are included;

– The name of the URI query attribute to be protected, if the "ieLoc" indicates "URI_PARAM";

– The name of the HTTP header, if the "ieLoc" indicates "HEADER";

– The JSON pointer representation of the attribute defined with the RefToBinaryData type if the "ieLoc" indicates "MULTIPART_BINARY". It shall be encoded as: <JSON Pointer of the attribute defined with the RefToBinaryData type>/data.

rspIe

string

C

0..1

This IE shall be included when the IEs in HTTP/2 response messages of an API need to be protected when forwarded over N32-f. When present, this IE shall contain:

– The JSON pointer representation of the IE to be protected, if the "ieLoc" indicates "BODY". Only the JSON pointer of the leaf IEs are included;

– The name of the URI query attribute to be protected, if the "ieLoc" indicates "URI_PARAM";

– The name of the HTTP header, if the "ieLoc" indicates "HEADER";

– The JSON pointer representation of the attribute defined with the RefToBinaryData type if the "ieLoc" indicates "MULTIPART_BINARY". It shall be encoded as: <JSON Pointer of the attribute defined with the RefToBinaryData type>/data.

isModifiable

boolean

C

0..1

This IE shall be included if the IE is allowed to be modified by all IPX(s) on the side of the SEPP sending the API IE mapping. When present,

– true, indicates that the IE is allowed to be modified by all IPX(s) on the side of the SEPP;

– false, indicates that the IE is not allowed to be modified by any IPX on the side of the SEPP;

– default is false.

When the IE is not included, the default value shall be applied.

(NOTE)

isModifiableByIpx

map(boolean)

C

0..1

This IE shall be included if the IE is allowed to be modified by some of (but not all) the IPX(s) on the side of the SEPP sending the API IE mapping. The key of the map is the ipxProviderId for which the boolean applies.

When present, each element carries the isModifiable indication for the IPX indicated by the key.

(NOTE)

NOTE: Either isModifiable or isModifiableByIpx may be present, but not both.

6.1.5.2.9 Type: ApiSignature

Table 6.1.5.2.9-1: Definition of type ApiSignature as a list of "mutually exclusive alternatives"

Data type

Cardinality

Description

Applicability

Uri

1

API URI of a request/response or subscribe/unsubscribe NF service operation as specified in the respective API specification with the variable parts other than {apiVersion} unresolved.

Examples:

"{apiRoot}/nsmf-pdusession/v1/sm-contexts", for the SMF PDUSession Create SM Context service operation.

"{apiRoot}/nsmf-pdusession/v1/sm-contexts/{smContextRef}/modify", for the SMF PDUSession Update SM Context service operation.

.

CallbackName

1

A value identifying the type of callback.

6.1.5.2.10 Type: N32fContextInfo

Table 6.1.5.2.10-1: Definition of type N32fContextInfo

Attribute name

Data type

P

Cardinality

Description

n32fContextId

string

M

1

This IE shall contain the N32-f context identifier of the receiving SEPP.

The n32fContextId shall encode a 64-bit integer in hexadecimal representation. Each character in the string shall take a value of "0" to "9" or "A" to "F" and shall represent 4 bits. The most significant character representing the 4 most significant bits of the N32-f context Id shall appear first in the string, and the character representing the 4 least significant bit of the N32-f context Id shall appear last in the string.

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

Example: "0600AD1855BD6007".

6.1.5.2.11 Type: N32fErrorInfo

Table 6.1.5.2.11-1: Definition of type N32fErrorInfo

Attribute name

Data type

P

Cardinality

Description

n32fMessageId

string

M

1

This IE shall contain the N32-f message identifier received over N32-f (see clause 6.2.5.2.9).

n32fErrorType

N32fErrorType

M

1

This IE shall contain the type of processing error encountered by the SEPP initiating the N32-f error reporting procedure.

n32fContextId

string

C

0..1

This IE shall be present if available.

When present, this IE shall contain the n32fContextId of the SEPP receiving N32-f error reporting message, which is exchanged between the SEPPs during the parameter exchange procedure (see clause 5.2.3).

The n32fContextId shall encode a 64-bit integer in hexadecimal representation. Each character in the string shall take a value of "0" to "9" or "A" to "F" and shall represent 4 bits. The most significant character representing the 4 most significant bits of the N32-f context Id shall appear first in the string, and the character representing the 4 least significant bit of the N32-f context Id shall appear last in the string.

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

Example: "0600AD1855BD6007".

failedModificationList

array(FailedModificationInfo)

C

1..N

This IE shall be present if the n32ErrorType is "INTEGRITY_CHECK_ON_MODIFICATIONS_FAILED" or "MODIFICATIONS_INSTRUCTIONS_FAILED". When present this IE shall contain a list of FQDNs of the IPX-es whose inserted modifications failed to process at the SEPP initiating the N32-f error reporting procedure, together with the reason for the failure to process.

errorDetailsList

array(N32fErrorDetail)

O

1..N

This IE may be included when the n32ErrorType IE indicates "MESSAGE_RECONSTRUCTION_FAILED ". When present, this IE shall contain a list of JSON pointers to the IEs that failed to process together with the reason for the failure to process that IE.

6.1.5.2.12 Type: FailedModificationInfo

Table 6.1.5.2.12-1: Definition of type FailedModificationInfo

Attribute name

Data type

P

Cardinality

Description

ipxId

Fqdn

M

1

This IE shall identify the IPX.

n32fErrorType

N32fErrorType

M

1

This IE shall contain the type of processing error on the modifications block, encountered by the SEPP initiating the N32-f error reporting procedure. The value shall be one of the following:

INTEGRITY_CHECK_ON_MODIFICATIONS_FAILED;

MODIFICATIONS_INSTRUCTIONS_FAILED

6.1.5.2.13 Type: N32fErrorDetail

Table 6.1.5.2.13-1: Definition of type N32fErrorDetail

Attribute name

Data type

P

Cardinality

Description

attribute

string

M

1

Contains either a HTTP header name or the JSON pointer of an attribute within the N32-f message that failed to reconstruct. The value shall be one of the values of the iePath attribtue (see clause 6.2.5.2.8) in the received N32-f message.

msgReconstructFailReason

FailureReason

M

1

Indicates the reason for the failure to reconstruct the attribute.

6.1.5.2.14 Type: CallbackName

Table 6.1.5.2.14-1: Definition of type CallbackName

Attribute name

Data type

P

Cardinality

Description

callbackType

string

M

1

This IE shall contain a string identifying the type of callback. The value shall be one of the values specified in 3GPP 29.500 [4], Annex B.

6.1.5.2.15 Type: IpxProviderSecInfo

Table 6.1.5.2.15-1: Definition of type IpxProviderSecInfo

Attribute name

Data type

P

Cardinality

Description

ipxProviderId

Fqdn

M

1

This IE shall uniquely identify the IPX.

rawPublicKeyList

array(string)

C

1..N

This IE includes the list of raw public keys for the IPX.

When present, each array item shall contain a raw public key for the IPX, with textual encoding as specified in clause 13 of IETF RFC 7468 [21].

certificateList

array(string)

C

1..N

This IE includes the list of certificates for the IPX.

When present, each array item shall contain a certificate for the IPX, with textual encoding as specified in IETF RFC 7468 [21].

NOTE: Either the rawPublicKeyList attribute, or the certificateList attribute, shall be present.

6.1.5.2.16 Type: IntendedN32Purpose

Table 6.1.5.2.16-1: Definition of type IntendedN32Purpose

Attribute name

Data type

P

Cardinality

Description

usagePurpose

N32Purpose

M

1

This attribute provides the one purpose of the intended N32 establishment.

additionalInfo

String

O

0..1

This attribute provides any additional information necessary to characterize the intention for N32 establishment.

cause

String

O

0..1

This attribute, if present, provided the reason for the reject for the purpose described in other attributes are rejected (e.g. "NO_CONTRACT").

This attribute shall be absent if the intended purpose is allowed.

6.1.5.3 Simple data types and enumerations

6.1.5.3.1 Introduction

This clause defines simple data types and enumerations that can be referenced from data structures defined in the previous clauses.

6.1.5.3.2 Simple data types

The simple data types defined in table 6.1.5.3.2-1 shall be supported.

Table 6.1.5.3.2-1: Simple data types

Type Name

Type Definition

Description

6.1.5.3.3 Enumeration: SecurityCapability

Table 6.1.5.3.3-1: Enumeration SecurityCapability

Enumeration value

Description

Applicability

"TLS"

TLS security.

"PRINS"

PRotocol for N32 INterconnect Security.

"NONE"

N32-f TLS connection termination

NFTLST

6.1.5.3.4 Enumeration: HttpMethod

Table 6.1.5.3.4-1: Enumeration HttpMethod

Enumeration value

Description

"GET"

HTTP GET Method.

"PUT"

HTTP PUT Method.

"POST"

HTTP POST Method.

"DELETE"

HTTP DELETE Method.

"PATCH"

HTTP PATCH Method.

"HEAD"

HTTP HEAD Method.

"OPTIONS"

HTTP OPTIONS Method.

"CONNECT"

HTTP CONNECT Method.

"TRACE"

HTTP TRACE Method.

6.1.5.3.5 Enumeration: IeType

Table 6.1.5.3.5-1: Enumeration IeType

Enumeration value

Description

"UEID"

These are IEs which carry the UE identity (i.e. SUPI and GPSI). This also includes the long-lasting identity Charging ID.

An example of a UEID IE is gpsi IE defined in 3GPP TS 29.518 [25].

"LOCATION"

These are IEs which carry location information (i.e. cell-id and TAI).

An example of a LOCATION IE is ncgi IE defined in 3GPP TS 29.571 [12].

"KEY_MATERIAL"

These are IEs which carry keying material as KSEAF and UPU related information.

An example of a KEY_MATERIAL IE is upuInfo IE defined in 3GPP TS 29.503 [26].

"AUTHENTICATION_MATERIAL"

These are IEs which carry authentication material like authentication vectors and EAP payload.

An example of an AUTHENTICATION_MATERIAL IE is authenticationVector IE defined in 3GPP TS 29.503 [26].

"AUTHORIZATION_TOKEN"

These are IEs which carry authorization Token. The oauth2 access_token would be of this type.

An example of an AUTHORIZATION_TOKEN IE is access_token IE defined in 3GPP TS 29.510 [18].

"OTHER"

These are IEs which do not fall into one of the above types, but they would be considered sensitive, and which protection policies may wish to apply confidentiality protection.

"NONSENSITIVE"

These are IEs which carry information that are not sensitive. A protection policy would not normally encrypt (confidentiality protect) these.

6.1.5.3.6 Enumeration: IeLocation

Table 6.1.5.3.6-1: Enumeration IeLocation

Enumeration value

Description

"URI_PARAM"

IE is located in the URI parameters.

"HEADER"

IE is located in the HTTP header.

"BODY"

IE is located in the body.

"MULTIPART_BINARY"

IE is located in the message body but encoded as a multipart message information in binary format.

6.1.5.3.7 Enumeration: N32fErrorType

Table 6.1.5.3.7-1: Enumeration N32fErrorType

Enumeration value

Description

"INTEGRITY_CHECK_FAILED"

The integrity check verification on the received N32-f message failed.

"INTEGRITY_CHECK_ON_MODIFICATIONS_FAILED"

The integrity check verification on the modifications block of the received N32-f message failed.

"MODIFICATIONS_INSTRUCTIONS_FAILED"

Failed to apply the JSON patch instructions in the modifications block of the received N32-f message, e.g. the references to encBlockIndex is inserted or relocated by IPX (see clause 5.9.3.2 of 3GPP TS 33.501 [6]).

"DECIPHERING_FAILED"

The deciphering of the encrypted block of the received N32-f message failed.

"MESSAGE_RECONSTRUCTION_FAILED"

The reconstruction of the original HTTP/2 message from the received N32-f message failed.

"CONTEXT_NOT_FOUND"

The n32fContextId is unknown in the receiving SEPP. (NOTE)

"INTEGRITY_KEY_EXPIRED"

The integrity keys in the receiving SEPP have expired.

"ENCRYPTION_KEY_EXPIRED"

The encryption keys in the receiving SEPP have expired.

"POLICY_MISMATCH"

The encryption policy verification on the received N32-f message has failed, e.g. protected IEs are not ciphered, or unprotected IEs are ciphered.

NOTE: This enumeration value is deprecated and shall not be used by N32-f error reporting procedure over the N32-c interface.

6.1.5.3.8 Enumeration: FailureReason

Table 6.1.5.3.8-1: Enumeration FailureReason

Enumeration value

Description

"INVALID_JSON_POINTER"

The JSON pointer value in iePath attribute (see clause 6.2.5.2.8) is invalid.

"INVALID_INDEX_TO_ENCRYPTED_BLOCK"

The value part of the HttpPayload attribute (see clause 6.2.5.2.8) or HttpHeader attribute (see clause 6.2.5.2.7) is pointing to an invalid index to the encrypted block.

"INVALID_HTTP_HEADER"

The name of the header in the received HttpHeader attribute is invalid.

6.1.5.3.9 Enumeration: N32Purpose

Table 6.1.5.3.9-1: Enumeration N32Purpose

Enumeration value

Description

"ROAMING"

Usage dedicated to roaming

"INTER_PLMN_MOBILITY"

Usage corresponding to any inter-mobility transactions

"SMS_INTERCONNECT"

Usage dedicated to SMS interconnect, e.g. SMS sent between subscribers of two different networks

"ROAMING_TEST"

Usage dedicated to roaming, and allowed only for tests, e.g. to allow traffic for test subscribers/SUPI or sessions

"INTER_PLMN_MOBILITY_TEST"

Usage corresponding to any inter-mobility transactions and allowed only for tests, e.g. to allow traffic for test subscribers/SUPI or sessions

"SMS_INTERCONNECT_TEST"

Usage dedicated to SMS interconnect, e.g. SMS sent between subscribers of two different networks, and allowed only for tests, e.g. to allow traffic for test subscribers/SUPI or sessions

"SNPN_INTERCONNECT"

Usage dedicated to an interconnection with an SNPN

"SNPN_INTERCONNECT_TEST"

Usage corresponding to any interconnection with an SNPN and allowed only for tests, e.g. to allow traffic for test subscribers/SUPI or sessions

"DISASTER_ROAMING"

Usage dedicated to Disaster Roaming (see clause 5.40 of 3GPP TS 23.501 [2]).

"DISASTER_ROAMING_TEST"

Usage dedicated to Disaster Roaming (see clause 5.40 of 3GPP TS 23.501 [2]) and allowed only for tests, e.g. to allow traffic for test subscribers/SUPI or sessions.

6.1.5.4 Binary data

There are no multipart/binary part used on the N32-c API(s) in this release of this specification.

6.1.6 Error Handling

6.1.6.1 General

HTTP error handling shall be supported as specified in clause 5.2.4 of 3GPP TS 29.500 [4].

6.1.6.2 Protocol Errors

Protocol Error Handling shall be supported as specified in clause 5.2.7.2 of 3GPP TS 29.500 [4].

6.1.6.3 Application Errors

The common application errors defined in the Table 5.2.7.2-1 in 3GPP TS 29.500 [4] may also be used for the N32-c Handshake service. The following application errors listed in Table 6.1.6.3-1 are specific for the N32-c Handshake service.

Table 6.1.6.3-1: Application errors

Application Error

HTTP status code

Description

REQUESTED_PARAM_MISMATCH

409 Conflict

This represents a parameter mismatch has been detected by the receiving SEPP, i.e. received data-type encryption or modification policy conflict with the one manually configured for the specific roaming partner, interconnect partner and IPX provider

REQUESTED_PURPOSE_NOT_ALLOWED

403 Forbidden

This represents that all the requested purposes included in the request was rejected by the receiving SEPP.

NEGOTIATION_NOT_ALLOWED

403 Forbidden

This represents a security capability negotiation failure at the receiving SEPP, i.e., the received security capability from the peer SEPP is not configured to be supported at the receiving SEPP.

6.1.7 Feature Negotiation

The feature negotiation mechanism specified in clause 6.6 of 3GPP TS 29.500 [4] shall be used to negotiate the optional features applicable between the c-SEPP and the p-SEPP, for the N32 Handshake service, if any.

The c-SEPP shall indicate the optional features it supports for the N32 Handshake service, if any, by including the supportedFeatures attribute in the HTTP POST request message for following service operations:

– Security Capability Negotiation procedure, as specified in clause 5.2.2 to negotiate the security capability;

The p-SEPP shall determine the supported features for the requested network as specified in clause 6.6 of 3GPP TS 29.500 [4] and shall indicate the supported features by including the supportedFeatures attribute in payload of the HTTP response for the service operation.

The syntax of the supportedFeatures attribute is defined in clause 5.2.2 of 3GPP TS 29.571 [12].

The following features are defined for the N32 Handshake service.

Table 6.1.7-1: Features of supportedFeatures attribute used by N32 Handshake service

Feature Number

Feature

M/O

Description

1

NFTLST

O

N32-f TLS Connection Termination Support

A SEPP that supports this feature shall support handling of Security Capability Negotiation procedure to tear down the N32-f TLS connection as specified in clause 5.2.2).

Feature number: The order number of the feature within the supportedFeatures attribute (starting with 1).

Feature: A short name that can be used to refer to the bit and to the feature.

M/O: Defines if the implementation of the feature is mandatory ("M") or optional ("O").

Description: A clear textual description of the feature.

6.2 JOSE Protected Message Forwarding API on N32

6.2.1 API URI

URIs of this API shall have the following root:

{apiRoot}/{apiName}/{apiVersion}

where "apiRoot" is defined in clause 4.4.1 of 3GPP TS 29.501 [5]. The apiRoot to use towards a SEPP of the target PLMN shall be configured at the SEPP. The URI scheme of the API shall be "http". The "apiName" shall be set to "n32f-forward" and the "apiVersion" shall be set to "v1" for the current version of this specification. The apiName part of the URI shall be as specified here for homogeneity of the API across PLMNs.

6.2.2 Usage of HTTP

6.2.2.1 General

HTTP/2, as defined in IETF RFC 7540 [7], shall be used as specified in clause 4.3.2.1.

HTTP/2 shall be transported as specified in clause 4.3.3.

HTTP messages and bodies for the JOSE protected message forwarding API on N32-f shall comply with the OpenAPI [27] specification contained in Annex A.

6.2.2.2 HTTP standard headers

6.2.2.2.1 General

The HTTP standard headers as specified in clause 4.3.2.2 shall be supported for this API.

6.2.2.2.2 Content type

The following content types shall be supported:

– the JSON format (see IETF RFC 8259 [8]). The use of the JSON format shall be signalled by the content type "application/json". See also clause 5.3.4.

– the Problem Details JSON Object (see IETF RFC 7807 [22]). The use of the Problem Details JSON object in a HTTP response body shall be signalled by the content type "application/problem+json".

6.2.2.2.3 Accept-Encoding

SEPPs and IPX should support gzip coding (see IETF RFC 1952 [23]) in HTTP requests and responses and indicate so in the Accept-Encoding header, as described in clause 5.3.2.1.

6.2.2.3 HTTP custom headers

6.2.2.3.1 General

In this release of the specification, no specific custom headers are defined for the JOSE protected message forwarding API on N32.

For 3GPP specific HTTP custom headers used across all service based interfaces, see clause 4.3.2.3.

6.2.3 Resources

6.2.3.1 Overview

There are no resources in this version of this API. All the operations are realized as custom operations without resources.

6.2.4 Custom Operations without associated resources

6.2.4.1 Overview

Table 6.2.4.1-1: Custom operations without associated resources

Operation Name

Custom operation URI

Mapped HTTP method

Description

JOSE Protected Forwarding

/n32f-process

POST

This is the N32f forwarding API used to forward a reformatted and JOSE protected message to a receiving SEPP.

JOSE Protected Forwarding Options

/n32f-process

OPTIONS

Discover the communication options supported by the next hop (IPX or SEPP) for N32-f message processing.

6.2.4.2 Operation: JOSE Protected Forwarding

6.2.4.2.1 Description

This custom operation is used between the SEPPs to forward the reformatted and JOSE protected HTTP/2 message on N32-f. The HTTP method POST shall be used on the following URI:

URI: {apiRoot}/n32f-forward/v1/n32f-process

This operation shall support the resource URI variables defined in table 6.1.4.2.1-1.

Table 6.2.4.2.1-1: Resource URI variables for this Operation

Name

Data type

Definition

apiRoot

string

See clause 6.1.1.

6.2.4.2.2 Operation Definition

This operation shall support the request data structures and response codes specified in tables 6.2.4.2.2-1 and 6.2.4.2.2-2.

Table 6.2.4.2.2-1: Data structures supported by the POST Request Body on this resource

Data type

P

Cardinality

Description

N32fReformattedReqMsg

M

1

This IE shall contain the reformatted HTTP/2 message comprising the plain text part, encrypted information, meta data and modification chain information. See clause 6.2.5.2.2.

Table 6.2.4.2.2-2: Data structures supported by the POST Response Body on this resource

Data type

P

Cardinality

Response

codes

Description

N32fReformattedRspMsg

M

1

200 OK

This represents the successful processing of the reformatted JOSE protected message at the responding SEPP. The responding SEPP shall provide the reformatted and JOSE protected content of the corresponding HTTP/2 response message received from the NF service producer, or the HTTP/2 notification response message received from the NF service consumer.

ProblemDetails

O

0..1

403 Forbidden

When the receiving SEPP fails to process the reconstructed message due to PLMN ID verification failure, the "cause" attribute shall be set to "PLMNID_MISMATCH".

When the receiving SEPP receives HTTP requests over N32-f with purpose, marked using 3gpp-Sbi-Interplmn-Purpose header as specified in 3GPP TS 29.500 [4], that does not match with any of the purposes exchanged via the Security Capability Negotiation procedure, then the "cause" attribute shall be set to "REQUESTED_PURPOSE_NOT_ALLOWED".

When the receiving SEPP fails to process the reconstructed message due to the n32fContextId is unknown, the "cause" attribute shall be set to "CONTEXT_NOT_FOUND".

When the receiving SEPP fails to process the reconstructed message, and the error is reported by N32f error reporting procedure as specified in clause 5.2.5, the "cause" attribute shall be set to "UNSPECIFIED".

NOTE: The mandatory HTTP error status codes for the POST method listed in Table 5.2.7.1-1 of 3GPP TS 29.500 [4] other than those specified in the table above also apply, with a ProblemDetails data type (see clause 5.2.7 of 3GPP TS 29.500 [4]).

Table 6.2.4.2.2-3: Headers supported by the POST method on this resource

Name

Data type

P

Cardinality

Description

3gpp-Sbi-Message-Priority

string

O

0..1

3gpp-Sbi-Message-Priority header, defined in 3GPP TS 29.500 [4].

Table 6.2.4.2.2-4: Headers supported by 200 Response Code on this endpoint

Name

Data type

P

Cardinality

Description

3gpp-Sbi-Message-Priority

string

O

0..1

3gpp-Sbi-Message-Priority header, defined in 3GPP TS 29.500 [4].

6.2.4.3 Operation: JOSE Protected Forwarding Options

6.2.4.3.1 Description

This service operation queries the communication options supported by the next hop (IPX or SEPP) for N32-f message processing (see clauses 5.3.2.4 and 5.3.4).

The HTTP method OPTIONS shall be used on the following URI:

URI: {apiRoot}/n32f-forward/v1/n32f-process

This operation shall support the resource URI variables defined in table 6.2.4.3.1-1.

Table 6.2.4.3.1-1: Resource URI variables for this Operation

Name

Data type

Definition

apiRoot

string

See clause 6.1.1.

6.2.4.3.2 Operation Definition

6.2.4.3.2.1 OPTIONS

This method shall support the URI query parameters specified in table 6.2.4.3.2.1-1.

Table 6.2.4.3.2.1-1: URI query parameters supported by the OPTIONS method

Name

Data type

P

Cardinality

Description

n/a

This method shall support the request data structures specified in table 6.2.4.3.2.1-2 and the response data structures and response codes specified in table 6.2.4.3.2.1-3.

Table 6.2.4.3.2.1-2: Data structures supported by the OPTIONS Request Body on this resource

Data type

P

Cardinality

Description

n/a

Table 6.2.4.3.2.1-3: Data structures supported by the OPTIONS Response Body on this resource

Data type

P

Cardinality

Response

codes

Description

n/a

204 No Content

ProblemDetails

O

0..1

405 Method Not Allowed

ProblemDetails

O

0..1

501 Not Implemented

NOTE: The mandatory HTTP error status codes for the OPTIONS method listed in Table 5.2.7.1-1 of 3GPP TS 29.500 [4] other than those specified in the table above also apply, with a ProblemDetails data type (see clause 5.2.7 of 3GPP TS 29.500 [4]).

Table 6.2.4.3.2.1-4: Headers supported by the 204 Response Code on this resource

Name

Data type

P

Cardinality

Description

Accept-Encoding

string

O

0..1

Accept-Encoding, described in IETF RFC 7694 [24]

6.2.5 Data Model

6.2.5.1 General

This clause specifies the application data model supported by the API.

Table 6.2.5.1-1 specifies the data types defined for the N32 interface.

Table 6.2.5.1-1: N32 specific Data Types

Data type

Clause defined

Description

N32fReformattedReqMsg

6.2.5.2.2

Contains the reformatted HTTP/2 request message

N32fReformattedRspMsg

6.2.5.2.3

Contains the reformatted HTTP/2 response message

DataToIntegrityProtectAndCipherBlock

6.2.5.2.4

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

DataToIntegrityProtectBlock

6.2.5.2.5

Data to be integrity protected

RequestLine

6.2.5.2.6

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

HttpHeader

6.2.5.2.7

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

HttpPayload

6.2.5.2.8

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

MetaData

6.2.5.2.9

Contains the meta data information needed for replay protection

Modifications

6.2.5.2.10

Information on inserting of the modifications entry

FlatJweJson

6.2.5.2.11

Contains the integrity protected reformatted block

FlatJwsJson

6.2.5.2.12

Contains the modification from IPXes on path

IndexToEncryptedValue

6.2.5.2.13

Index to the encrypted value

EncodedHttpHeaderValue

6.2.5.2.14

HTTP header value or index to the HTTP header value

Table 6.2.5.1-2 specifies data types re-used by the N32 interface protocol from other specifications, including a reference to their respective specifications and when needed, a short description of their use within the Namf service based interface.

Table 6.2.5.1-2: N32 re-used Data Types

Data type

Reference

Comments

HttpMethod

6.1.5.3.5

IeLocation

6.1.5.3.6

PatchItem

3GPP TS 29.571 [12]

UriScheme

3GPP TS 29.571 [12]

Fqdn

3GPP TS 29.571 [12]

6.2.5.2 Structured data types

6.2.5.2.1 Introduction

This clause defines the structures to be used in the JOSE Protected Message Forwarding API on N32.

6.2.5.2.2 Type: N32fReformattedReqMsg

Table 6.2.5.2.2-1: Definition of type N32fReformattedReqMsg

Attribute name

Data type

P

Cardinality

Description

reformattedData

FlatJweJson

M

1

This IE shall contain the integrity protected reformatted block as well as the ciphered part of the reformatted block of the HTTP/2 request message sent between NF service producer and consumer.

The SEPP shall reformat the HTTP/2 request message as:

– The part of original HTTP/2 request message headers and the payload that needs to be only integrity protected is first reformatted into "DataToIntegrityProtectBlock" and then fed as input for the "aad" parameter of the FlatJweJson after subjecting to BASE64URL encoding.

The part of the original HTTP/2 request message headers and payload that require integrity protection and ciphering is first reformatted into "DataToIntegrityProtectAndCipherBlock" and then fed as input for JWE ciphering and the JWE ciphered block is then BASE64URL encoded and set into the "ciphertext" parameter of the FlatJweJson.

modificationsBlock

array(FlatJwsJson)

C

1..N

This IE shall be included if the IPXes on path are allowed to apply modification policies and if they have any specific modification to be applied on the message contained in the DataToIntegrityProtectBlock.

6.2.5.2.3 Type: N32fReformattedRspMsg

Table 6.2.5.2.3-1: Definition of type N32fReformattedRspMsg

Attribute name

Data type

P

Cardinality

Description

reformattedData

FlatJweJson

M

1

This IE shall contain the integrity protected reformatted block as well as the ciphered part of the reformatted block of the HTTP/2 response message sent between NF service producer and consumer.

The SEPP shall reformat the HTTP/2 response message as:

– The part of original HTTP/2 response message headers and the payload that needs to be only integrity protected is first reformatted into "DataToIntegrityProtectBlock" and then fed as input for the "aad" parameter of the FlatJweJson after subjecting to BASE64URL encoding.

– The part of the original HTTP/2 response message headers and payload that require integrity protection and ciphering is first reformatted into "DataToIntegrityProtectAndCipherBlock" and then fed as input for JWE ciphering and the JWE ciphered block is then BASE64URL encoded and set into the "ciphertext" parameter of the FlatJweJson.

modificationsBlock

array(FlatJwsJson)

C

1..N

This IE shall be included if the IPXes on path are allowed to apply modification policies and if they have any specific modification to be applied on the message contained in the DataToIntegrityProtectBlock.

6.2.5.2.4 Type: DataToIntegrityProtectAndCipherBlock

Table 6.2.5.2.4-1: Definition of type DataToIntegrityProtectAndCipherBlock

Attribute name

Data type

P

Cardinality

Description

dataToEncrypt

array(Any Type)

M

1..N

This IE shall contain the input for ciphering as a JSON object block containing an array of values with arbitrary types. Each entry of the array shall contain the value of a HTTP header to be encrypted or the value of a JSON attribute to be encrypted.

6.2.5.2.5 Type: DataToIntegrityProtectBlock

Table 6.2.5.2.5-1: Definition of type DataToIntegrityProtectBlock

Attribute name

Data type

P

Cardinality

Description

metaData

MetaData

C

0..1

This IE shall be included if the SEPP encodes additional information for replay protection. When present this IE shall contain the meta data information needed for replay protection.

requestLine

RequestLine

C

1

This IE shall be included when a JOSE protected API "request" is forwarded over N32-f. When present, this IE shall contain the request line of the HTTP API request being reformatted and forwarded over N32-f.

statusLine

string

C

0..1

This IE shall be included when a JOSE protected API "response" is forwarded over N32-f. When present, this IE shall contain the status line of the HTTP API response being reformatted and forwarded over N32-f.

headers

array(HttpHeader)

C

1..N

This IE shall be included when a JOSE protected API request / response contains HTTP headers. When present this IE shall contain the encoding of HTTP headers in the API request / response.

payload

array(HttpPayload)

C

1..N

This IE shall be included when a JOSE protected API request / response contains JSON payload that needs to be sent in clear text. When present this IE shall contain the encoding of JSON payload in the API request / response.

6.2.5.2.6 Type: RequestLine

Table 6.2.5.2.6-1: Definition of type RequestLine

Attribute name

Data type

P

Cardinality

Description

method

HttpMethod

M

1

This IE shall contain the HTTP method of the API invoked by the NF service consumer / producer behind the SEPP towards its peer NF service in the other PLMN.

scheme

UriScheme

M

1

This IE shall contain the HTTP scheme of the API.

authority

string

M

1

This IE shall contain the authority part of the URI of the API being invoked.

path

string

M

1

This IE shall contain the path part of the URI of the API being invoked.

protocolVersion

string

M

1

This IE shall contain the HTTP protocol version. The version shall be 2 in this release of this specification.

queryFragment

string

C

0..1

This IE shall contain the query fragment part of the API, if available.

6.2.5.2.7 Type: HttpHeader

Table 6.2.5.2.7-1: Definition of type HttpHeader

Attribute name

Data type

P

Cardinality

Description

header

string

M

1

This IE shall contain the name of the HTTP header to encoded.

value

EncodedHttpHeaderValue

M

1

This IE shall contain the value of the HTTP header. The value of the HTTP header shall be encoded as:

– value field of the EncodedHttpHeaderValue structure specified in clause 6.2.5.2.14 if the HTTP header is not to be encrypted.

– IndexToEncryptedValue structure specified in clause 6.2.5.2.13 if the value of the HTTP header is to be encrypted.

6.2.5.2.8 Type: HttpPayload

Table 6.2.5.2.8-1: Definition of type HttpPayload

Attribute name

Data type

P

Cardinality

Description

iePath

string

M

1

This IE identifies the JSON pointer representation (see IETF RFC 6901 [17]) of full JSON path of the IE to be encoded. IEs that are of type object shall be flattened into each individual attribute’s full JSON path and the HttpPayload IE shall only contain the final leaf attribute IE path and its corresponding value.

ieValueLocation

IeLocation

M

1

This IE shall identify where the IE value is located – i,e in the JSON body or in the multipart message part.

value

object

M

1

This IE shall contain the value of the IE corresponding to "iePath", encoded as a free form object.

If the value of this IE is encrypted, then the value part shall be encoded as

{

"encBlockIndex": <array index in DataToIntegrityProtectAndCipherBlock>

}

(see clause 6.2.5.2.4).

If the value of this IE is a RefToBinary data type (see 3GPP TS 29.571 [12], then value shall contain the value of the Content-ID header field of the referenced binary body part.

The referenced binary body part of the multipart/related message shall be either encrypted or not encrypted depending on the protection policy exchanged between the SEPPs.

If the referenced binary body part is required to be encrypted, then the binary part is first base64 encoded into a byte array and then inserted into the "DataToIntegrityProtectAndCipherBlock". Then two HttpPayload instances with the following values shall be added immediately after this HttpPayload instance in the "DataToIntegrityProtectBlock"

{

"iePath": <JSON Pointer of the attribute defined with theRefToBinaryData type >/contenttype

"ieValueLocation": "MULTIPART_BINARY"

"value": <value of the content type of multipart binary>

},

{

"iePath": <JSON Pointer of the attribute defined with the RefToBinaryData type>/data,

"ieValueLocation": "MULTIPART_BINARY"

"value": {"encBlockIndex": <array index in DataToIntegrityProtectAndCipherBlock that contains the byte array>}

}

If the referenced binary body part is not required to be encrypted, then the binary part is first base64 encoded into a byte array and then inserted as new instance of HttpPayload IE in " DataToIntegrityProtectBlock" as

{

"iePath": <JSON Pointer of the attribute defined with the RefToBinaryData type>/contenttype

"ieValueLocation": "MULTIPART_BINARY"

"value": <value of the content type of multipart binary>

},

{

"iePath": <JSON path of the attribute defined with the RefToBinaryData type>/data,

"ieValueLocation": "MULTIPART_BINARY"

"value": <base64 encoded byte array>

}

See NOTE 1.

NOTE 1: In this release of this specification only N16 interface has binary content and there is no sensitive information carried over N16 interface. Consequently ciphering of binary part is not required in this release of this specification. The encoding specified here is to provide a N32-f framework in a future proof manner so that if a binary part need to be encrypted in future this structure can be used.

6.2.5.2.9 Type: MetaData

Table 6.2.5.2.9-1: Definition of type MetaData

Attribute name

Data type

P

Cardinality

Description

n32fContextId

string

M

1

This IE shall contain the n32fContextId of the SEPP receiving the message, which is exchanged between the SEPPs during the parameter exchange procedure (see clause 5.2.3).

The n32fContextId shall encode a 64-bit integer in hexadecimal representation. Each character in the string shall take a value of "0" to "9" or "A" to "F" and shall represent 4 bits. The most significant character representing the 4 most significant bits of the N32-f context Id shall appear first in the string, and the character representing the 4 least significant bit of the N32-f context Id shall appear last in the string.

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

Example: "0600AD1855BD6007".

messageId

string

M

1

This IE identifies a particular request that is transformed by the SEPP. The value of this IE shall be encoded in hexadecimal representation of a 64 bit integer. This identifier is used in the N32-f error reporting procedure as specified in clause 6.1.4.5.

Pattern: ^[a-fA-F0-9]{1, 16}$

authorizedIpxId

string

M

1

This IE identifies the first hop IPX that is authorized to insert modifications block. The identifier of the IPX shall be an FQDN. When there is no IPX that’s authorized to update, the value of this IE is set to the string "NULL".

6.2.5.2.10 Type: Modifications

Table 6.2.5.2.10-1: Definition of type Modifications

Attribute name

Data type

P

Cardinality

Description

operations

array(PatchItem)

C

1..N

This IE shall be included if an intermediary IPX inserts modification instructions on the JSON data carried in the "DataToIntegrityProtectBlock" part of the N32-f forwarded message. For the first modifications entry, this IE shall not be included, since the first entry is inserted by the SEPP.

identity

Fqdn

M

1

This IE shall contain the identity of the entity inserting the modifications entry. The identity shall be encoded in the form of an URI.

tag

string

C

0..1

This IE shall be present when the JWE Authentication Tag value is non-empty as specified in IETF RFC 7515 [16]. When present, this IE shall contain the BASE64URL(JWE Authentication Tag).

6.2.5.2.11 Type: FlatJweJson

Table 6.2.5.2.11-1: Definition of type FlatJweJson

Attribute name

Data type

P

Cardinality

Description

protected

string

C

0..1

This IE shall be present if there is a JWE Protected Header part of the JOSE header to encode as specified in IETF RFC 7516 [14]. When present, this IE shall contain the BASE64URL(UTF8(JWE Protected Header)) encoding of the JWE protected header.

unprotected

object

C

0..1

This IE shall be present if there is a JWE unprotected header part of the JOSE header that is shared across recipients, to encode as specified in IETF RFC 7515 [16]. This value is represented as

an unencoded free form JSON object, rather than as a string. These Header Parameter values are not integrity protected.

header

object

C

0..1

This IE shall be present if there is a JWE unprotected header part of the JOSE header that is specific for the recipient, to encode as specified in IETF RFC 7515 [16]. This value is represented as

an unencoded free form JSON object, rather than as a string. These Header Parameter values are not integrity protected.

encrypted_key

string

C

0..1

This IE shall be present when the JWE Encrypted Key for the recipient is non empty. When present this IE shall contain BASE64URL(JWE Encrypted Key).

(NOTE)

aad

string

C

0..1

This IE shall be present when the JWE AAD value is non-empty as specified in IETF RFC 7515 [16]. When present, this IE shall contain BASE64URL encoding of the DataToIntegrityProtectBlock JSON object (see clause 6.2.5.2.5).

iv

string

C

0..1

This IE shall be present when the JWE Initialization Vector is non-empty as specified in IETF RFC 7515 [16]. When present, this IE shall contain the BASE64URL(JWE Initialization Vector).

ciphertext

string

M

1

This IE shall contain BASE64URL(JWE Ciphertext). The input for JWE ciphering is the DataToIntegrityProtecAndCiphertBlock (see clause 6.2.5.2.5).

tag

string

C

0..1

This IE shall be present when the JWE Authentication Tag value is non-empty as specified in IETF RFC 7515 [16]. When present, this IE shall contain the BASE64URL(JWE Authentication Tag).

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

6.2.5.2.12 Type: FlatJwsJson

Table 6.2.5.2.12-1: Definition of type FlatJwsJson

Attribute name

Data type

P

Cardinality

Description

payload

string

M

1

This IE shall contain the BASE64URL encoding of the Modifications JSON object (see clause 6.2.5.2.10).

protected

string

C

0..1

This IE shall be present if there is a JWS Protected Header part of the JOSE header to encode as specified in IETF RFC 7515 [16]. When present, this IE shall contain the BASE64URL(UTF8(JWS Protected Header)) encoding of the JWS protected header.

header

object

C

0..1

This IE shall be present if there is a JWS unprotected header part of the JOSE header to encode as specified in IETF RFC 7515 [16]. This value is represented as

an unencoded free form JSON object, rather than as a string. These Header Parameter values are not integrity protected.

signature

string

M

1

This IE shall contain the BASE64URL encoded value of the calculated JWS signature.

6.2.5.2.13 Type: IndexToEncryptedValue

Table 6.2.5.2.13-1: Definition of type IndexToEncryptedHttpHeader

Attribute name

Data type

P

Cardinality

Description

encBlockIndex

Uinteger

M

1

Index to the value in DataToIntegrityProtectAndCipherBlock

6.2.5.2.14 Type: EncodedHttpHeaderValue

Table 6.2.5.2.14-1: Definition of type EncodedHttpHeaderValue as a list of "mutually exclusive alternatives"

Data type

Cardinality

Description

Applicability

string

1

HTTP header value.

IndexToEncryptedValue

1

Index to encrypted HTTP header in the DataToIntegrityProtectAndCipherBlock

6.2.5.3 Simple data types and enumerations

6.2.5.3.1 Introduction

This clause defines simple data types and enumerations that can be referenced from data structures defined in the previous clauses.

6.2.5.3.2 Simple data types

The simple data types defined in table 6.1.5.3.2-1 shall be supported.

Table 6.2.5.3.2-1: Simple data types

Type Name

Type Definition

Description

6.2.5.3.3 Void
6.2.5.3.4 Void

6.2.6 Error Handling

6.2.6.1 General

HTTP error handling shall be supported as specified in clause 5.2.4 of 3GPP TS 29.500 [4].

6.2.6.2 Protocol Errors

Protocol Error Handling shall be supported as specified in clause 5.2.7.2 of 3GPP TS 29.500 [4].

6.2.6.3 Application Errors

The application errors defined for the JOSE protected message forwarding API on N32-f are listed in Table 6.2.6.3-1.

Table 6.2.6.3-1: Application errors

Application Error

HTTP status code

Description

PLMNID_MISMATCH

403 Forbidden

The PLMN ID in the Bearer token carried in the "Authorization" header of the reconstructed message does not match the PLMN ID of the N32-f context.

REQUESTED_PURPOSE_NOT_ALLOWED

403 Forbidden

The purpose indicated in 3gpp-Sbi-Interplmn-Purpose header as specified in 3GPP TS 29.500 [4] of the reconstructed message does not match with any of the purposes exchanged via the Security Capability Negotiation procedure.

CONTEXT_NOT_FOUND

403 Forbidden

The n32fContextId is unknown in the receiving SEPP.

UNSPECIFIED

403 Forbidden

The receiving SEPP fails to process the reconstructed message, and the error is reported by N32f error reporting procedure as specified in clause 5.2.5.

6.3 Nsepp_Telescopic_FQDN_Mapping API

6.3.1 API URI

URIs of this API shall have the following root:

{apiRoot}/{apiName}/{apiVersion}

where "apiRoot" is defined in clause 4.4.1 of 3GPP TS 29.501 [5], the "apiName" shall be set to "nsepp-telescopic" and the "apiVersion" shall be set to "v1" for the current version of this specification.

6.3.2 Usage of HTTP

6.3.2.1 General

HTTP/2, as defined in IETF RFC 7540 [7], shall be used as specified in clause 5 of 3GPP TS 29.500 [4].

HTTP/2 shall be transported as specified in clause 5.3 of 3GPP TS 29.500 [4].

HTTP messages and bodies for the Nsepp_Telescopic_FQDN_Mapping service shall comply with the OpenAPI [27] specification contained in Annex A.

6.3.2.2 HTTP standard headers

6.3.2.2.1 General

The HTTP standard headers as specified in clause 4.3.2.2 shall be supported for this API.

6.3.2.2.2 Content type

The following content types shall be supported:

– JSON, as defined in IETF RFC 8259 [9]. The use of the JSON format shall be signalled by the content type "application/json". See also clause 5.4 of 3GPP TS 29.500 [4].

– The Problem Details JSON Object (IETF RFC 7807 [10]. The use of the Problem Details JSON object in a HTTP response body shall be signalled by the content type "application/problem+json".

6.3.2.3 HTTP custom headers

6.3.2.3.1 General

In this release of this specification, no custom headers specific to the Nsepp_Telescopic_FQDN_Mapping service are defined. For 3GPP specific HTTP custom headers used across all service-based interfaces, see clause 5.2.3 of 3GPP TS 29.500 [4].

6.3.3 Resources

6.3.3.1 Overview

Figure 6.3.3.1-1: Resource URI structure of the nsepp-telescopic API

Table 6.3.3.1-1 provides an overview of the resources and applicable HTTP methods.

Table 6.3.3.1-1: Resources and methods overview

Resource name

Resource URI

HTTP method or custom operation

Description

Mapping

/mapping

GET

Retrieve the mapping between the FQDN in a foreign PLMN and a telescopic FQDN, or viceversa.

6.3.3.2 Resource: Mapping

6.3.3.2.1 Description

This resource represents the mapping between the FQDN of an NF in a foreign PLMN and a telescopic FQDN.

6.3.3.2.2 Resource Definition

Resource URI: {apiRoot}/nsepp-telescopic/v1/mapping

This resource shall support the resource URI variables defined in table 6.3.3.2.2-1.

Table 6.3.3.2.2-1: Resource URI variables for this resource

Name

Data type

Definition

apiRoot

string

See clause 6.3.1

6.3.3.2.3 Resource Standard Methods

6.3.3.2.3.1 GET

This method shall support the URI query parameters specified in table 6.3.3.2.3.1-1.

Table 6.3.3.2.3.1-1: URI query parameters supported by the GET method on this resource

Name

Data type

P

Cardinality

Description

foreign-fqdn

Fqdn

O

0..1

This parameter shall contain the FQDN of the NF in the foreign network, that needs to be flattened to a telescopic FQDN in the local network (i.e. an FQDN that points to the local SEPP).

telescopic-label

string

O

0..1

This parameter shall contain the first label used in a telescopic FQDN (i.e. an FQDN that points to the local SEPP) that needs to be mapped to an NF in the foreign network.

NOTE: The parameters "foreign-fqdn" and "telescopic-label" shall not be present simultaneously.

This method shall support the request data structures specified in table 6.3.3.2.3.1-2 and the response data structures and response codes specified in table 6.3.3.2.3.1-3.

Table 6.3.3.2.3.1-2: Data structures supported by the GET Request Body on this resource

Data type

P

Cardinality

Description

n/a

Table 6.3.3.2.3.1-3: Data structures supported by the GET Response Body on this resource

Data type

P

Cardinality

Response

codes

Description

TelescopicMapping

M

1

200 OK

Upon success, a response body containing a TelescopicMapping object shall be returned

ProblemDetails

O

0..1

404 Not Found

The mapping between a foreign FQDN and a telescopic FQDN could not be found.

6.3.4 Data Model

6.3.4.1 General

This clause specifies the application data model supported by the API.

Table 6.3.4.1-1 specifies the data types defined for the Nsepp_Telescopic_FQDN_Mapping service-based interface protocol.

Table 6.3.4.1-1: Nsepp_Telescopic_FQDN_Mapping specific Data Types

Data type

Clause defined

Description

TelescopicMapping

6.3.4.2.2

Contains the Telescopic mapping data

Table 6.3.4.1-2 specifies data types re-used by the Nsepp_Telescopic_Mapping service-based interface protocol from other specifications.

Table 6.3.4.1-2: Nsepp_Telescopic_FQDN_Mapping re-used Data Types

Data type

Reference

Comments

Fqdn

3GPP TS 29.571 [12]

ProblemDetails

3GPP TS 29.571 [12]

Common data type for error responses

6.3.4.2 Structured data types

6.3.4.2.1 Introduction

This clause defines the structures to be used in resource representations.

6.3.4.2.2 Type: TelescopicMapping

Table 6.3.4.2.2-1: Definition of type TelescopicMapping

Attribute name

Data type

P

Cardinality

Description

telescopicLabel

string

C

0..1

This parameter shall contain the first label to be used in a telescopic FQDN (i.e. an FQDN that points to the local SEPP) that corresponds to a given NF in the foreign network.

In a successful response, this parameter shall be included when the query parameter "foreign-fqdn" is present in the request.

seppDomain

Fqdn

C

0..1

This parameter shall contain the FQDN of the domain of the local SEPP that needs to be appended after the "telescopicLabel" to compose the complete flattened telescopic FQDN.

In a successful response, this parameter shall be included when the query parameter "foreign-fqdn" is present in the request.

foreignFqdn

Fqdn

C

0..1

This parameter shall contain the FQDN of the NF in the foreign network.

In a successful response, this parameter shall be included when the query parameter "telescopic-label" is present in the request.

6.3.4.3 Simple data types and enumerations

6.3.4.3.1 Introduction

This clause defines simple data types and enumerations that can be referenced from data structures defined in the previous clauses.

6.3.4.3.2 Simple data types

The simple data types defined in table 6.3.4.3.2-1 shall be supported.

Table 6.3.4.3.2-1: Simple data types

Type Name

Type Definition

Description

6.3.5 Error Handling

6.3.5.1 General

HTTP error handling shall be supported as specified in clause 5.2.4 of 3GPP TS 29.500 [4].

6.3.5.2 Protocol Errors

Protocol Error Handling shall be supported as specified in clause 5.2.7 of 3GPP TS 29.500 [4].

6.3.5.3 Application Errors

The common application errors defined in the Table 5.2.7.2-1 in 3GPP TS 29.500 [4] may also be used for the Nsepp_Telescopic_Mapping service, and the following application errors listed in Table 6.3.5.3-1 are specific for the Nsepp_Telescopic_Mapping service.

Table 6.3.5.3-1: Application errors

Application Error

HTTP status code

Description

6.3.6 Feature Negotiation

This API does not currently specify any features.

6.3.7 Security

6.3.7.1 General

This API shall be accessed only from NFs in the same PLMN as the SEPP; it shall not be exposed externally to NFs from another PLMN.

Annex A (normative):
OpenAPI Specification