openapi: 3.0.0 info: description: "API for auditing. \n© 2025, 3GPP Organizational Partners (ARIB, ATIS,\ \ CCSA, ETSI, TSDSI, TTA, TTC). \nAll rights reserved.\n" title: CAPIF_Auditing_API version: 1.4.0-alpha.2 externalDocs: description: 3GPP TS 29.222 V19.3.0 Common API Framework for 3GPP Northbound APIs url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.222/ servers: - url: "{apiRoot}/logs/v1" variables: apiRoot: default: https://example.com description: apiRoot as defined in clause 7.5 of 3GPP TS 29.222. paths: /apiInvocationLogs: get: description: Query and retrieve service API invocation logs stored on the CAPIF core function. operationId: api_invocation_logs_get parameters: - description: String identifying the API exposing function. explode: true in: query name: aef-id required: false schema: type: string style: form - description: String identifying the API invoker which invoked the service API. explode: true in: query name: api-invoker-id required: false schema: type: string style: form - description: Start time of the invocation time range. explode: true in: query name: time-range-start required: false schema: $ref: '#/components/schemas/DateTime' style: form - description: End time of the invocation time range. explode: true in: query name: time-range-end required: false schema: $ref: '#/components/schemas/DateTime' style: form - description: String identifying the API invoked. explode: true in: query name: api-id required: false schema: type: string style: form - description: | Contains the API name set to the value of the "" placeholder of the API URI as defined in clause 5.2.4 of 3GPP TS 29.122 [14]. explode: true in: query name: api-name required: false schema: type: string style: form - description: Version of the API which was invoked. explode: true in: query name: api-version required: false schema: type: string style: form - description: Protocol invoked. explode: true in: query name: protocol required: false schema: $ref: '#/components/schemas/Protocol' style: form - description: Operation that was invoked on the API. explode: true in: query name: operation required: false schema: $ref: '#/components/schemas/Operation' style: form - description: Result or output of the invocation. explode: true in: query name: result required: false schema: type: string style: form - description: Name of the specific resource invoked. explode: true in: query name: resource-name required: false schema: type: string style: form - content: application/json: schema: $ref: '#/components/schemas/InterfaceDescription' description: Interface description of the API invoker. in: query name: src-interface required: false - content: application/json: schema: $ref: '#/components/schemas/InterfaceDescription' description: Interface description of the API invoked. in: query name: dest-interface required: false - description: To filter irrelevant responses related to unsupported features explode: true in: query name: supported-features required: false schema: $ref: '#/components/schemas/SupportedFeatures' style: form - content: application/json: schema: items: $ref: '#/components/schemas/NetSliceId' minItems: 1 type: array description: | Contains the identifier(s) of the network slice(s) within which the API shall be available. in: query name: net-slice-info required: false responses: "200": content: application/json: schema: $ref: '#/components/schemas/InvocationLogsRetrieveRes' description: | Result of the query operation along with fetched service API invocation log data. "307": description: Temporary Redirect headers: Location: description: An alternative URI of the resource. required: true schema: type: string "308": description: Permanent Redirect headers: Location: description: An alternative URI of the resource. required: true schema: type: string "400": content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' description: Bad request "401": content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' description: Unauthorized "403": content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' description: Forbidden "404": content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' description: Not Found "406": content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' description: Not Acceptable "414": content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' description: URI Too Long "429": content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' description: Too Many Requests "500": content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' description: Internal Server Error "503": content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' description: Service Unavailable default: description: Generic Error x-openapi-router-controller: logs.controllers.default_controller components: responses: "307": description: Temporary Redirect headers: Location: description: An alternative URI of the resource. required: true schema: type: string "308": description: Permanent Redirect headers: Location: description: An alternative URI of the resource. required: true schema: type: string "400": content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' description: Bad request "401": content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' description: Unauthorized "403": content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' description: Forbidden "404": content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' description: Not Found "406": content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' description: Not Acceptable "414": content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' description: URI Too Long "429": content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' description: Too Many Requests "500": content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' description: Internal Server Error "503": content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' description: Service Unavailable default: description: Generic Error schemas: InvocationLogs: description: | Represents several (more than one) invocation logs. properties: multipleInvocationLogs: items: $ref: '#/components/schemas/InvocationLog' minItems: 1 title: multipleInvocationLogs type: array supportedFeatures: description: | A string used to indicate the features supported by an API that is used as defined in clause 6.6 in 3GPP TS 29.500. The string shall contain a bitmask indicating supported features in hexadecimal representation Each character in the string shall take a value of "0" to "9", "a" to "f" or "A" to "F" and shall represent the support of 4 features as described in table 5.2.2-3. The most significant character representing the highest-numbered features shall appear first in the string, and the character representing features 1 to 4 shall appear last in the string. The list of features and their numbering (starting with 1) are defined separately for each API. If the string contains a lower number of characters than there are defined features for an API, all features that would be represented by characters that are not present in the string are not supported. pattern: "^[A-Fa-f0-9]*$" title: SupportedFeatures type: string required: - multipleInvocationLogs title: InvocationLogs type: object InvocationLogsRetrieveRes: description: | Represents the result of an invocation logs retrieval request. oneOf: - $ref: '#/components/schemas/InvocationLog' - $ref: '#/components/schemas/InvocationLogs' title: InvocationLogsRetrieveRes DateTime: description: string with format "date-time" as defined in OpenAPI. format: date-time title: DateTime type: string Protocol: enum: - HTTP_1_1 - HTTP_2 - MQTT - WEBSOCKET type: string description: "Indicates a protocol and protocol version used by the API. \n\ Possible values are:\n- HTTP_1_1: Indicates that the protocol is HTTP version\ \ 1.1.\n- HTTP_2: Indicates that the protocol is HTTP version 2.\n- MQTT:\ \ Indicates that the protocol is Message Queuing Telemetry Transport.\n- WEBSOCKET:\ \ Indicates that the protocol is Websocket.\n" title: Protocol Operation: enum: - GET - POST - PUT - PATCH - DELETE type: string description: "Indicates an HTTP method. \nPossible values are:\n- GET: HTTP\ \ GET method.\n- POST: HTTP POST method.\n- PUT: HTTP PUT method.\n- PATCH:\ \ HTTP PATCH method.\n- DELETE: HTTP DELETE method.\n" title: Operation InterfaceDescription: description: Represents the description of an API's interface. example: ipv6Addr: ipv6Addr grantTypes: - CLIENT_CREDENTIALS - CLIENT_CREDENTIALS securityMethods: - PSK - PSK fqdn: fqdn port: 39500 apiPrefix: apiPrefix ipv4Addr: ipv4Addr nullable: true oneOf: - required: ["ipv4Addr"] - required: ["ipv6Addr"] - required: ["fqdn"] properties: ipv4Addr: description: | string identifying a Ipv4 address formatted in the "dotted decimal" notation as defined in IETF RFC 1166. title: Ipv4Addr type: string ipv6Addr: description: | string identifying a Ipv6 address formatted according to clause 4 in IETF RFC 5952. The mixed Ipv4 Ipv6 notation according to clause 5 of IETF RFC 5952 shall not be used. title: Ipv6Addr type: string fqdn: description: Fully Qualified Domain Name maxLength: 253 minLength: 4 pattern: "^([0-9A-Za-z]([-0-9A-Za-z]{0,61}[0-9A-Za-z])?\\.)+[A-Za-z]{2,63}\\\ .?$" title: Fqdn type: string port: description: Unsigned integer with valid values between 0 and 65535. maximum: 65535 minimum: 0 title: Port type: integer apiPrefix: description: | A string representing a sequence of path segments that starts with the slash character. title: apiPrefix type: string securityMethods: description: | Security methods supported by the interface, it take precedence over the security methods provided in AefProfile, for this specific interface. items: $ref: '#/components/schemas/SecurityMethod' minItems: 1 title: securityMethods type: array grantTypes: items: $ref: '#/components/schemas/OAuthGrantType' minItems: 1 title: grantTypes type: array title: InterfaceDescription type: object SecurityMethod: enum: - PSK - PKI - OAUTH type: string description: "Indicates the security method. \nPossible values are:\n- PSK:\ \ Security method 1 (Using TLS-PSK) as described in 3GPP TS 33.122.\n- PKI:\ \ Security method 2 (Using PKI) as described in 3GPP TS 33.122.\n- OAUTH:\ \ Security method 3 (TLS with OAuth token) as described in 3GPP TS 33.122.\n" title: SecurityMethod SupportedFeatures: description: | A string used to indicate the features supported by an API that is used as defined in clause 6.6 in 3GPP TS 29.500. The string shall contain a bitmask indicating supported features in hexadecimal representation Each character in the string shall take a value of "0" to "9", "a" to "f" or "A" to "F" and shall represent the support of 4 features as described in table 5.2.2-3. The most significant character representing the highest-numbered features shall appear first in the string, and the character representing features 1 to 4 shall appear last in the string. The list of features and their numbering (starting with 1) are defined separately for each API. If the string contains a lower number of characters than there are defined features for an API, all features that would be represented by characters that are not present in the string are not supported. pattern: "^[A-Fa-f0-9]*$" title: SupportedFeatures type: string NetSliceId: description: | Represents the network slice identification information. example: ensi: ensi snssai: sd: sd sst: 37 nsiId: nsiId nullable: true oneOf: - required: ["snssai"] - required: ["nsiId"] - required: ["ensi"] properties: snssai: $ref: '#/components/schemas/Snssai' nsiId: description: Contains the Identifier of the selected Network Slice instance title: NsiId type: string ensi: description: | Represents the External Network Slice Information that is used to identify a network slice, as specified in 3GPP TS 33.501. title: Ensi type: string title: NetSliceId type: object Ensi: description: | Represents the External Network Slice Information that is used to identify a network slice, as specified in 3GPP TS 33.501. title: Ensi type: string ProblemDetails: description: Represents additional information and details on an error response. properties: type: description: string providing an URI formatted according to IETF RFC 3986. title: Uri type: string title: description: "A short, human-readable summary of the problem type. It should\ \ not change from occurrence to occurrence of the problem. \n" title: title type: string status: description: The HTTP status code for this occurrence of the problem. title: status type: integer detail: description: A human-readable explanation specific to this occurrence of the problem. title: detail type: string instance: description: string providing an URI formatted according to IETF RFC 3986. title: Uri type: string cause: description: | A machine-readable application error cause specific to this occurrence of the problem. This IE should be present and provide application-related error information, if available. title: cause type: string invalidParams: description: | Description of invalid parameters, for a request rejected due to invalid parameters. items: $ref: '#/components/schemas/InvalidParam' minItems: 1 title: invalidParams type: array supportedFeatures: description: | A string used to indicate the features supported by an API that is used as defined in clause 6.6 in 3GPP TS 29.500. The string shall contain a bitmask indicating supported features in hexadecimal representation Each character in the string shall take a value of "0" to "9", "a" to "f" or "A" to "F" and shall represent the support of 4 features as described in table 5.2.2-3. The most significant character representing the highest-numbered features shall appear first in the string, and the character representing features 1 to 4 shall appear last in the string. The list of features and their numbering (starting with 1) are defined separately for each API. If the string contains a lower number of characters than there are defined features for an API, all features that would be represented by characters that are not present in the string are not supported. pattern: "^[A-Fa-f0-9]*$" title: SupportedFeatures type: string title: ProblemDetails type: object Uri: description: string providing an URI formatted according to IETF RFC 3986. title: Uri type: string InvalidParam: description: | Represents the description of invalid parameters, for a request rejected due to invalid parameters. properties: param: description: "Attribute's name encoded as a JSON Pointer, or header's name." title: param type: string reason: description: "A human-readable reason, e.g. \"must be a positive integer\"\ ." title: reason type: string required: - param title: InvalidParam type: object InvocationLog: description: | Represents a set of Service API invocation logs to be stored in a CAPIF core function. example: supportedFeatures: supportedFeatures apiInvokerId: apiInvokerId aefId: aefId logs: - apiName: apiName invocationTime: 2000-01-23T04:56:07.000+00:00 srcInterface: ipv6Addr: ipv6Addr grantTypes: - CLIENT_CREDENTIALS - CLIENT_CREDENTIALS securityMethods: - PSK - PSK fqdn: fqdn port: 39500 apiPrefix: apiPrefix ipv4Addr: ipv4Addr fwdInterface: fwdInterface resourceName: resourceName uri: uri inputParameters: "" invocationLatency: 0 result: result protocol: HTTP_1_1 apiVersion: apiVersion netSliceInfo: ensi: ensi snssai: sd: sd sst: 37 nsiId: nsiId destInterface: ipv6Addr: ipv6Addr grantTypes: - CLIENT_CREDENTIALS - CLIENT_CREDENTIALS securityMethods: - PSK - PSK fqdn: fqdn port: 39500 apiPrefix: apiPrefix ipv4Addr: ipv4Addr operation: GET apiId: apiId outputParameters: "" - apiName: apiName invocationTime: 2000-01-23T04:56:07.000+00:00 srcInterface: ipv6Addr: ipv6Addr grantTypes: - CLIENT_CREDENTIALS - CLIENT_CREDENTIALS securityMethods: - PSK - PSK fqdn: fqdn port: 39500 apiPrefix: apiPrefix ipv4Addr: ipv4Addr fwdInterface: fwdInterface resourceName: resourceName uri: uri inputParameters: "" invocationLatency: 0 result: result protocol: HTTP_1_1 apiVersion: apiVersion netSliceInfo: ensi: ensi snssai: sd: sd sst: 37 nsiId: nsiId destInterface: ipv6Addr: ipv6Addr grantTypes: - CLIENT_CREDENTIALS - CLIENT_CREDENTIALS securityMethods: - PSK - PSK fqdn: fqdn port: 39500 apiPrefix: apiPrefix ipv4Addr: ipv4Addr operation: GET apiId: apiId outputParameters: "" properties: aefId: description: | Identity information of the API exposing function requesting logging of service API invocations title: aefId type: string apiInvokerId: description: Identity of the API invoker which invoked the service API title: apiInvokerId type: string logs: description: Service API invocation log items: $ref: '#/components/schemas/Log' minItems: 1 title: logs type: array supportedFeatures: description: | A string used to indicate the features supported by an API that is used as defined in clause 6.6 in 3GPP TS 29.500. The string shall contain a bitmask indicating supported features in hexadecimal representation Each character in the string shall take a value of "0" to "9", "a" to "f" or "A" to "F" and shall represent the support of 4 features as described in table 5.2.2-3. The most significant character representing the highest-numbered features shall appear first in the string, and the character representing features 1 to 4 shall appear last in the string. The list of features and their numbering (starting with 1) are defined separately for each API. If the string contains a lower number of characters than there are defined features for an API, all features that would be represented by characters that are not present in the string are not supported. pattern: "^[A-Fa-f0-9]*$" title: SupportedFeatures type: string required: - aefId - apiInvokerId - logs title: InvocationLog type: object Log: description: Represents an individual service API invocation log entry. example: apiName: apiName invocationTime: 2000-01-23T04:56:07.000+00:00 srcInterface: ipv6Addr: ipv6Addr grantTypes: - CLIENT_CREDENTIALS - CLIENT_CREDENTIALS securityMethods: - PSK - PSK fqdn: fqdn port: 39500 apiPrefix: apiPrefix ipv4Addr: ipv4Addr fwdInterface: fwdInterface resourceName: resourceName uri: uri inputParameters: "" invocationLatency: 0 result: result protocol: HTTP_1_1 apiVersion: apiVersion netSliceInfo: ensi: ensi snssai: sd: sd sst: 37 nsiId: nsiId destInterface: ipv6Addr: ipv6Addr grantTypes: - CLIENT_CREDENTIALS - CLIENT_CREDENTIALS securityMethods: - PSK - PSK fqdn: fqdn port: 39500 apiPrefix: apiPrefix ipv4Addr: ipv4Addr operation: GET apiId: apiId outputParameters: "" properties: apiId: description: String identifying the API invoked. title: apiId type: string apiName: description: | Contains the invoked API name set to the value of the "" placeholder of the API URI as defined in clause 5.2.4 of 3GPP TS 29.122 [14]. title: apiName type: string apiVersion: description: Version of the API which was invoked title: apiVersion type: string resourceName: description: Name of the specific resource invoked title: resourceName type: string uri: description: string providing an URI formatted according to IETF RFC 3986. title: Uri type: string protocol: $ref: '#/components/schemas/Protocol' operation: $ref: '#/components/schemas/Operation' result: description: "For HTTP protocol, it contains HTTP status code of the invocation" title: result type: string invocationTime: description: string with format "date-time" as defined in OpenAPI. format: date-time title: DateTime type: string invocationLatency: description: Represents a period of time in units of milliseconds. minimum: 0 title: DurationMs type: integer inputParameters: description: | List of input parameters. Can be any value - string, number, boolean, array or object. title: inputParameters outputParameters: description: | List of output parameters. Can be any value - string, number, boolean, array or object. title: outputParameters srcInterface: $ref: '#/components/schemas/InterfaceDescription' destInterface: $ref: '#/components/schemas/InterfaceDescription' fwdInterface: description: | It includes the node identifier (as defined in IETF RFC 7239 of all forwarding entities between the API invoker and the AEF, concatenated with comma and space, e.g. 192.0.2.43:80, unknown:_OBFport, 203.0.113.60 title: fwdInterface type: string netSliceInfo: $ref: '#/components/schemas/NetSliceId' required: - apiId - apiName - apiVersion - protocol - resourceName - result title: Log type: object DurationMs: description: Represents a period of time in units of milliseconds. minimum: 0 title: DurationMs type: integer Ipv4Addr: description: | string identifying a Ipv4 address formatted in the "dotted decimal" notation as defined in IETF RFC 1166. title: Ipv4Addr type: string Ipv6Addr: description: | string identifying a Ipv6 address formatted according to clause 4 in IETF RFC 5952. The mixed Ipv4 Ipv6 notation according to clause 5 of IETF RFC 5952 shall not be used. title: Ipv6Addr type: string Fqdn: description: Fully Qualified Domain Name maxLength: 253 minLength: 4 pattern: "^([0-9A-Za-z]([-0-9A-Za-z]{0,61}[0-9A-Za-z])?\\.)+[A-Za-z]{2,63}\\\ .?$" title: Fqdn type: string Port: description: Unsigned integer with valid values between 0 and 65535. maximum: 65535 minimum: 0 title: Port type: integer OAuthGrantType: enum: - CLIENT_CREDENTIALS - AUTHORIZATION_CODE - AUTHORIZATION_CODE_WITH_PKCE type: string description: "Indicates the supported authorization flow (e.g. client credentials\ \ flow, authorization code flow, etc.) to the API invoker. \nPossible\ \ values are:\n- CLIENT_CREDENTIALS: Indicate that the grant type is is client\ \ credentials flow.\n- AUTHORIZATION_CODE: Indicate that the grant type is\ \ authorization code.\n- AUTHORIZATION_CODE_WITH_PKCE: Indicate that the grant\ \ type is authorization code with PKCE.\n" title: OAuthGrantType Snssai: description: | When Snssai needs to be converted to string (e.g. when used in maps as key), the string shall be composed of one to three digits "sst" optionally followed by "-" and 6 hexadecimal digits "sd". example: sd: sd sst: 37 properties: sst: description: "Unsigned integer, within the range 0 to 255, representing\ \ the Slice/Service Type. It indicates the expected Network Slice behaviour\ \ in terms of features and services. Values 0 to 127 correspond to the\ \ standardized SST range. Values 128 to 255 correspond to the Operator-specific\ \ range. See clause 28.4.2 of 3GPP TS 23.003. Standardized values are\ \ defined in clause 5.15.2.2 of 3GPP TS 23.501. \n" maximum: 255 minimum: 0 title: sst type: integer sd: description: | 3-octet string, representing the Slice Differentiator, in hexadecimal representation. Each character in the string shall take a value of "0" to "9", "a" to "f" or "A" to "F" and shall represent 4 bits. The most significant character representing the 4 most significant bits of the SD shall appear first in the string, and the character representing the 4 least significant bit of the SD shall appear last in the string. This is an optional parameter that complements the Slice/Service type(s) to allow to differentiate amongst multiple Network Slices of the same Slice/Service type. This IE shall be absent if no SD value is associated with the SST. pattern: "^[A-Fa-f0-9]{6}$" title: sd type: string required: - sst title: Snssai type: object NsiId: description: Contains the Identifier of the selected Network Slice instance title: NsiId type: string