forked from acouzens/open5gs
547 lines
17 KiB
YAML
547 lines
17 KiB
YAML
openapi: 3.0.0
|
|
|
|
info:
|
|
version: '1.2.1'
|
|
title: 'N32 Handshake API'
|
|
description: |
|
|
N32-c Handshake Service.
|
|
© 2022, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC).
|
|
All rights reserved.
|
|
servers:
|
|
- url: '{apiRoot}/n32c-handshake/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 V17.6.0; 5G System; Public Land Mobile Network (PLMN) Interconnection; Stage 3
|
|
url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.573/
|
|
|
|
paths:
|
|
/exchange-capability:
|
|
post:
|
|
summary: Security Capability Negotiation
|
|
tags:
|
|
- Security Capability Negotiation
|
|
operationId: PostExchangeCapability
|
|
requestBody:
|
|
description: Custom operation for security capability negotiation
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/SecNegotiateReqData'
|
|
responses:
|
|
'200':
|
|
description: OK (Successful negitiation of security capabilities)
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/SecNegotiateRspData'
|
|
'400':
|
|
$ref: 'TS29571_CommonData.yaml#/components/responses/400'
|
|
'403':
|
|
$ref: 'TS29571_CommonData.yaml#/components/responses/403'
|
|
'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'
|
|
'503':
|
|
$ref: 'TS29571_CommonData.yaml#/components/responses/503'
|
|
default:
|
|
description: Unexpected error
|
|
/exchange-params:
|
|
post:
|
|
summary: Parameter Exchange
|
|
tags:
|
|
- Parameter Exchange
|
|
operationId: PostExchangeParams
|
|
requestBody:
|
|
description: Custom operation for parameter exchange
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/SecParamExchReqData'
|
|
responses:
|
|
'200':
|
|
description: OK (Successful exchange of parameters)
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/SecParamExchRspData'
|
|
'400':
|
|
$ref: 'TS29571_CommonData.yaml#/components/responses/400'
|
|
'409':
|
|
$ref: 'TS29571_CommonData.yaml#/components/responses/409'
|
|
'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'
|
|
'503':
|
|
$ref: 'TS29571_CommonData.yaml#/components/responses/503'
|
|
default:
|
|
description: Unexpected error
|
|
/n32f-terminate:
|
|
post:
|
|
summary: N32-f Context Terminate
|
|
tags:
|
|
- N32-f Context Terminate
|
|
operationId: PostN32fTerminate
|
|
requestBody:
|
|
description: Custom operation for n32-f context termination
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/N32fContextInfo'
|
|
responses:
|
|
'200':
|
|
description: OK (Successful exchange of parameters)
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/N32fContextInfo'
|
|
'400':
|
|
$ref: 'TS29571_CommonData.yaml#/components/responses/400'
|
|
'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'
|
|
'503':
|
|
$ref: 'TS29571_CommonData.yaml#/components/responses/503'
|
|
default:
|
|
description: Unexpected error
|
|
/n32f-error:
|
|
post:
|
|
summary: N32-f Error Reporting Procedure
|
|
tags:
|
|
- N32-f Error Report
|
|
operationId: PostN32fError
|
|
requestBody:
|
|
description: Custom operation for n32-f error reporting procedure
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/N32fErrorInfo'
|
|
responses:
|
|
'204':
|
|
description: successful error reporting
|
|
'400':
|
|
$ref: 'TS29571_CommonData.yaml#/components/responses/400'
|
|
'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'
|
|
'503':
|
|
$ref: 'TS29571_CommonData.yaml#/components/responses/503'
|
|
default:
|
|
description: Unexpected error
|
|
components:
|
|
schemas:
|
|
SecurityCapability:
|
|
# description: Enumeration of security capabilities
|
|
# anyOf:
|
|
# - type: string
|
|
enum:
|
|
- TLS
|
|
- PRINS
|
|
- NONE
|
|
# - type: string
|
|
ApiSignature:
|
|
description: API URI of the service operation
|
|
oneOf:
|
|
- $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri'
|
|
- $ref: '#/components/schemas/CallbackName'
|
|
HttpMethod:
|
|
# description: Enumeration of HTTP methods
|
|
# anyOf:
|
|
# - type: string
|
|
enum:
|
|
- GET
|
|
- PUT
|
|
- POST
|
|
- DELETE
|
|
- PATCH
|
|
- HEAD
|
|
- OPTIONS
|
|
- CONNECT
|
|
- TRACE
|
|
# - type: string
|
|
|
|
IeType:
|
|
# description: Enumeration of types of IEs (i.e kind of IE) to specify the protection policy
|
|
# anyOf:
|
|
# - type: string
|
|
enum:
|
|
- UEID
|
|
- LOCATION
|
|
- KEY_MATERIAL
|
|
- AUTHENTICATION_MATERIAL
|
|
- AUTHORIZATION_TOKEN
|
|
- OTHER
|
|
- NONSENSITIVE
|
|
# - type: string
|
|
|
|
IeLocation:
|
|
# description: Location of the IE in a HTTP message
|
|
# anyOf:
|
|
# - type: string
|
|
enum:
|
|
- URI_PARAM
|
|
- HEADER
|
|
- BODY
|
|
- MULTIPART_BINARY
|
|
# - type: string
|
|
|
|
IeInfo:
|
|
description: Protection and modification policy for the IE
|
|
type: object
|
|
required:
|
|
- ieLoc
|
|
- ieType
|
|
properties:
|
|
ieLoc:
|
|
$ref: '#/components/schemas/IeLocation'
|
|
ieType:
|
|
$ref: '#/components/schemas/IeType'
|
|
reqIe:
|
|
type: string
|
|
rspIe:
|
|
type: string
|
|
isModifiable:
|
|
type: boolean
|
|
isModifiableByIpx:
|
|
type: object
|
|
additionalProperties:
|
|
type: boolean
|
|
minProperties: 1
|
|
|
|
ApiIeMapping:
|
|
description: API URI to IE mapping on which the protection policy needs to be applied
|
|
type: object
|
|
required:
|
|
- apiSignature
|
|
- apiMethod
|
|
- IeList
|
|
properties:
|
|
apiSignature:
|
|
$ref: '#/components/schemas/ApiSignature'
|
|
apiMethod:
|
|
$ref: '#/components/schemas/HttpMethod'
|
|
IeList:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/IeInfo'
|
|
minItems: 1
|
|
# 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.
|
|
|
|
ProtectionPolicy:
|
|
description: The protection policy to be negotiated between the SEPPs
|
|
type: object
|
|
required:
|
|
- apiIeMappingList
|
|
properties:
|
|
apiIeMappingList:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/ApiIeMapping'
|
|
minItems: 1
|
|
dataTypeEncPolicy:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/IeType'
|
|
minItems: 1
|
|
|
|
SecNegotiateReqData:
|
|
description: Defines the security capabilities of a SEPP sent to a receiving SEPP
|
|
type: object
|
|
required:
|
|
- sender
|
|
- supportedSecCapabilityList
|
|
properties:
|
|
sender:
|
|
$ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn'
|
|
supportedSecCapabilityList:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/SecurityCapability'
|
|
minItems: 1
|
|
3GppSbiTargetApiRootSupported:
|
|
type: boolean
|
|
default: false
|
|
# 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.
|
|
plmnIdList:
|
|
type: array
|
|
items:
|
|
$ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId'
|
|
minItems: 1
|
|
snpnIdList:
|
|
type: array
|
|
items:
|
|
$ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnIdNid'
|
|
minItems: 1
|
|
targetPlmnId:
|
|
$ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId'
|
|
targetSnpnId:
|
|
$ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnIdNid'
|
|
intendedUsagePurpose:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/IntendedN32Purpose'
|
|
minItems: 1
|
|
supportedFeatures:
|
|
$ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures'
|
|
|
|
SecNegotiateRspData:
|
|
description: Defines the selected security capabilities by a SEPP
|
|
type: object
|
|
required:
|
|
- sender
|
|
- selectedSecCapability
|
|
properties:
|
|
sender:
|
|
$ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn'
|
|
selectedSecCapability:
|
|
$ref: '#/components/schemas/SecurityCapability'
|
|
3GppSbiTargetApiRootSupported:
|
|
type: boolean
|
|
default: false
|
|
# 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.
|
|
plmnIdList:
|
|
type: array
|
|
items:
|
|
$ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId'
|
|
minItems: 1
|
|
snpnIdList:
|
|
type: array
|
|
items:
|
|
$ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnIdNid'
|
|
minItems: 1
|
|
allowedUsagePurpose:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/IntendedN32Purpose'
|
|
minItems: 1
|
|
rejectedUsagePurpose:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/IntendedN32Purpose'
|
|
minItems: 1
|
|
supportedFeatures:
|
|
$ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures'
|
|
|
|
SecParamExchReqData:
|
|
description: Request data structure for parameter exchange
|
|
type: object
|
|
required:
|
|
- n32fContextId
|
|
properties:
|
|
n32fContextId:
|
|
type: string
|
|
pattern: '^[A-Fa-f0-9]{16}$'
|
|
jweCipherSuiteList:
|
|
type: array
|
|
items:
|
|
type: string
|
|
minItems: 1
|
|
jwsCipherSuiteList:
|
|
type: array
|
|
items:
|
|
type: string
|
|
minItems: 1
|
|
protectionPolicyInfo:
|
|
$ref: '#/components/schemas/ProtectionPolicy'
|
|
ipxProviderSecInfoList:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/IpxProviderSecInfo'
|
|
minItems: 1
|
|
sender:
|
|
$ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn'
|
|
|
|
SecParamExchRspData:
|
|
description: Response data structure for parameter exchange
|
|
type: object
|
|
required:
|
|
- n32fContextId
|
|
properties:
|
|
n32fContextId:
|
|
type: string
|
|
pattern: '^[A-Fa-f0-9]{16}$'
|
|
selectedJweCipherSuite:
|
|
type: string
|
|
selectedJwsCipherSuite:
|
|
type: string
|
|
selProtectionPolicyInfo:
|
|
$ref: '#/components/schemas/ProtectionPolicy'
|
|
ipxProviderSecInfoList:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/IpxProviderSecInfo'
|
|
minItems: 1
|
|
sender:
|
|
$ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn'
|
|
|
|
N32fContextInfo:
|
|
description: N32-f context information
|
|
type: object
|
|
required:
|
|
- n32fContextId
|
|
properties:
|
|
n32fContextId:
|
|
type: string
|
|
pattern: '^[A-Fa-f0-9]{16}$'
|
|
CallbackName:
|
|
description: Callback Name
|
|
type: object
|
|
required:
|
|
- callbackType
|
|
properties:
|
|
callbackType:
|
|
type: string
|
|
N32fErrorInfo:
|
|
description: N32-f error information
|
|
type: object
|
|
required:
|
|
- n32fMessageId
|
|
- n32fErrorType
|
|
properties:
|
|
n32fMessageId:
|
|
type: string
|
|
n32fErrorType:
|
|
$ref: '#/components/schemas/N32fErrorType'
|
|
n32fContextId:
|
|
type: string
|
|
pattern: '^[A-Fa-f0-9]{16}$'
|
|
failedModificationList:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/FailedModificationInfo'
|
|
minItems: 1
|
|
errorDetailsList:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/N32fErrorDetail'
|
|
minItems: 1
|
|
FailedModificationInfo:
|
|
description: Information on N32-f modifications block that failed to process
|
|
type: object
|
|
required:
|
|
- ipxId
|
|
- n32fErrorType
|
|
properties:
|
|
ipxId:
|
|
$ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn'
|
|
n32fErrorType:
|
|
$ref: '#/components/schemas/N32fErrorType'
|
|
N32fErrorDetail:
|
|
description: Details about the N32f error
|
|
type: object
|
|
required:
|
|
- attribute
|
|
- msgReconstructFailReason
|
|
properties:
|
|
attribute:
|
|
type: string
|
|
msgReconstructFailReason:
|
|
$ref: '#/components/schemas/FailureReason'
|
|
IpxProviderSecInfo:
|
|
description: Defines the security information list of an IPX
|
|
type: object
|
|
required:
|
|
- ipxProviderId
|
|
properties:
|
|
ipxProviderId:
|
|
$ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn'
|
|
rawPublicKeyList:
|
|
type: array
|
|
items:
|
|
type: string
|
|
minItems: 1
|
|
certificateList:
|
|
type: array
|
|
items:
|
|
type: string
|
|
minItems: 1
|
|
|
|
IntendedN32Purpose:
|
|
description: Indicates the intended N32 establishment purpose
|
|
type: object
|
|
required:
|
|
- usagePurpose
|
|
properties:
|
|
usagePurpose:
|
|
$ref: '#/components/schemas/N32Purpose'
|
|
additionalInfo:
|
|
type: string
|
|
cause:
|
|
type: string
|
|
|
|
N32fErrorType:
|
|
# description: Type of error while processing N32-f message
|
|
# anyOf:
|
|
# - type: string
|
|
enum:
|
|
- INTEGRITY_CHECK_FAILED
|
|
- INTEGRITY_CHECK_ON_MODIFICATIONS_FAILED
|
|
- MODIFICATIONS_INSTRUCTIONS_FAILED
|
|
- DECIPHERING_FAILED
|
|
- MESSAGE_RECONSTRUCTION_FAILED
|
|
- CONTEXT_NOT_FOUND
|
|
- INTEGRITY_KEY_EXPIRED
|
|
- ENCRYPTION_KEY_EXPIRED
|
|
- POLICY_MISMATCH
|
|
# - type: string
|
|
FailureReason:
|
|
# description: Reason for failure to reconstruct a HTTP/2 message from N32-f message
|
|
# anyOf:
|
|
# - type: string
|
|
enum:
|
|
- INVALID_JSON_POINTER
|
|
- INVALID_INDEX_TO_ENCRYPTED_BLOCK
|
|
- INVALID_HTTP_HEADER
|
|
# - type: string
|
|
|
|
N32Purpose:
|
|
# description: Usage purpose of establishing N32 connectivity
|
|
# anyOf:
|
|
# - type: string
|
|
enum:
|
|
- ROAMING
|
|
- INTER_PLMN_MOBILITY
|
|
- SMS_INTERCONNECT
|
|
- ROAMING_TEST
|
|
- INTER_PLMN_MOBILITY_TEST
|
|
- SMS_INTERCONNECT_TEST
|
|
- SNPN_INTERCONNECT
|
|
- SNPN_INTERCONNECT_TEST
|
|
- DISASTER_ROAMING
|
|
- DISASTER_ROAMING_TEST
|
|
# - type: string
|