openapi: 3.2.0 info: title: CAPIF_Publish_Service_ APF published APIs (Collection) API description: "API for publishing service APIs. \n© 2025, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). \nAll rights reserved.\n" version: 1.4.0 servers: - url: '{apiRoot}/published-apis/v1' variables: apiRoot: default: https://example.com description: apiRoot as defined in clause 7.5 of 3GPP TS 29.222. tags: - name: APF published APIs (Collection) paths: /{apfId}/service-apis: post: description: Publish a new API. operationId: CreateAPFPubAPIs tags: - APF published APIs (Collection) parameters: - name: apfId in: path required: true schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ServiceAPIDescription' responses: '201': description: 'Service API published successfully The URI of the created resource shall be returned in the "Location" HTTP header. ' content: application/json: schema: $ref: '#/components/schemas/ServiceAPIDescription' headers: Location: description: 'Contains the URI of the newly created resource, according to the structure {apiRoot}/published-apis/v1/{apfId}/service-apis/{serviceApiId} ' required: true schema: type: string '400': $ref: TS29122_CommonData.yaml#/components/responses/400 '401': $ref: TS29122_CommonData.yaml#/components/responses/401 '403': $ref: TS29122_CommonData.yaml#/components/responses/403 '404': $ref: TS29122_CommonData.yaml#/components/responses/404 '411': $ref: TS29122_CommonData.yaml#/components/responses/411 '413': $ref: TS29122_CommonData.yaml#/components/responses/413 '415': $ref: TS29122_CommonData.yaml#/components/responses/415 '429': $ref: TS29122_CommonData.yaml#/components/responses/429 '500': $ref: TS29122_CommonData.yaml#/components/responses/500 '503': $ref: TS29122_CommonData.yaml#/components/responses/503 default: $ref: TS29122_CommonData.yaml#/components/responses/default get: description: Retrieve all published APIs. operationId: GetAPFPubAPIs tags: - APF published APIs (Collection) parameters: - name: apfId in: path required: true schema: type: string responses: '200': description: 'Definition of all service API(s) published by the API publishing function. If an empty array is provided, it indicates that there is no active published API at the CCF. ' content: application/json: schema: type: array items: $ref: '#/components/schemas/ServiceAPIDescription' minItems: 0 '307': $ref: TS29122_CommonData.yaml#/components/responses/307 '308': $ref: TS29122_CommonData.yaml#/components/responses/308 '400': $ref: TS29122_CommonData.yaml#/components/responses/400 '401': $ref: TS29122_CommonData.yaml#/components/responses/401 '403': $ref: TS29122_CommonData.yaml#/components/responses/403 '404': $ref: TS29122_CommonData.yaml#/components/responses/404 '406': $ref: TS29122_CommonData.yaml#/components/responses/406 '429': $ref: TS29122_CommonData.yaml#/components/responses/429 '500': $ref: TS29122_CommonData.yaml#/components/responses/500 '503': $ref: TS29122_CommonData.yaml#/components/responses/503 default: $ref: TS29122_CommonData.yaml#/components/responses/default components: schemas: CommunicationType: anyOf: - type: string enum: - REQUEST_RESPONSE - SUBSCRIBE_NOTIFY - type: string description: 'This string provides forward-compatibility with future extensions to the enumeration but is not used to encode content defined in the present version of this API. ' description: "Indicates a communication type of the resource or the custom operation. \nPossible values are:\n- REQUEST_RESPONSE: The communication is of the type request-response.\n- SUBSCRIBE_NOTIFY: The communication is of the type subscribe-notify.\n" DataFormat: anyOf: - type: string enum: - JSON - XML - PROTOBUF3 - type: string description: 'This string provides forward-compatibility with future extensions to the enumeration but is not used to encode content defined in the present version of this API. ' description: "Indicates a data format. \nPossible values are:\n- JSON: Indicates that the data format is JSON.\n- XML: Indicates that the data format is Extensible Markup Language.\n- PROTOBUF3: Indicates that the data format is Protocol buffers version 3.\n" InterfaceDescription: type: object description: Represents the description of an API's interface. properties: ipv4Addr: $ref: TS29122_CommonData.yaml#/components/schemas/Ipv4Addr ipv6Addr: $ref: TS29122_CommonData.yaml#/components/schemas/Ipv6Addr fqdn: $ref: TS29571_CommonData.yaml#/components/schemas/Fqdn port: $ref: TS29122_CommonData.yaml#/components/schemas/Port apiPrefix: type: string description: 'A string representing a sequence of path segments that starts with the slash character. ' securityMethods: type: array items: $ref: '#/components/schemas/SecurityMethod' minItems: 1 description: 'Security methods supported by the interface, it take precedence over the security methods provided in AefProfile, for this specific interface. ' grantTypes: type: array items: $ref: TS29222_CAPIF_Security_API.yaml#/components/schemas/OAuthGrantType minItems: 1 oneOf: - required: - ipv4Addr - required: - ipv6Addr - required: - fqdn AefProfile: type: object description: Represents the AEF profile data. properties: aefId: type: string description: Identifier of the API exposing function versions: type: array items: $ref: '#/components/schemas/Version' minItems: 1 description: API version protocol: $ref: '#/components/schemas/Protocol' dataFormat: $ref: '#/components/schemas/DataFormat' securityMethods: type: array items: $ref: '#/components/schemas/SecurityMethod' minItems: 1 description: Security methods supported by the AEF grantTypes: type: array items: $ref: TS29222_CAPIF_Security_API.yaml#/components/schemas/OAuthGrantType minItems: 1 domainName: type: string description: Domain to which API belongs to interfaceDescriptions: type: array items: $ref: '#/components/schemas/InterfaceDescription' minItems: 1 description: Interface details aefLocation: $ref: '#/components/schemas/AefLocation' serviceKpis: $ref: '#/components/schemas/ServiceKpis' ueIpRange: $ref: '#/components/schemas/IpAddrRange' required: - aefId - versions oneOf: - required: - domainName - required: - interfaceDescriptions ApiStatus: type: object description: 'Represents the API status. ' properties: aefIds: type: array items: type: string description: "Indicates the list of AEF ID(s) where the API is active. If an empty array is provided, it indicates that the API is inactive in all AEF(s). \n" required: - aefIds ShareableInformation: type: object description: 'Indicates whether the service API and/or the service API category can be shared to the list of CAPIF provider domains. ' properties: isShareable: type: boolean description: 'Indicates whether the service API and/or the service API category can be shared to the list of CAPIF provider domain information. true indicates that the service API and/or the service API category can be shared to the list of CAPIF provider domain information. false indicates that the service API and/or the service API category can not be shared to the list of CAPIF provider domain information. ' capifProvDoms: type: array items: type: string minItems: 1 description: 'List of CAPIF provider domains to which the service API information to be shared. ' required: - isShareable IpAddrRange: description: Represents the list of public IP ranges type: object properties: ueIpv4AddrRanges: type: array items: $ref: TS29571_CommonData.yaml#/components/schemas/Ipv4AddressRange description: Represents the IPv4 Address ranges of the UE(s). minItems: 1 ueIpv6AddrRanges: type: array items: $ref: TS29571_CommonData.yaml#/components/schemas/Ipv6AddressRange description: Represents the Ipv6 Address ranges of the UE(s). minItems: 1 anyOf: - required: - ueIpv4AddrRanges - required: - ueIpv6AddrRanges AefLocation: description: 'Represents the location information (e.g. civic address, GPS coordinates, data center ID) where the AEF providing the service API is located. ' type: object properties: civicAddr: $ref: TS29572_Nlmf_Location.yaml#/components/schemas/CivicAddress geoArea: $ref: TS29572_Nlmf_Location.yaml#/components/schemas/GeographicArea dcId: type: string description: 'Identifies the data center where the AEF providing the service API is located. ' Operation: anyOf: - type: string enum: - GET - POST - PUT - PATCH - DELETE - type: string description: 'This string provides forward-compatibility with future extensions to the enumeration but is not used to encode content defined in the present version of this API. ' 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" SecurityMethod: anyOf: - type: string enum: - PSK - PKI - OAUTH - type: string description: 'This string provides forward-compatibility with future extensions to the enumeration but is not used to encode content defined in the present version of this API. ' 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" Resource: type: object description: Represents the API resource data. properties: resourceName: type: string description: Resource name commType: $ref: '#/components/schemas/CommunicationType' uri: type: string description: 'Relative URI of the API resource, it is set as {apiSpecificSuffixes} part of the URI structure as defined in clause 5.2.4 of 3GPP TS 29.122. ' custOpName: type: string description: 'it is set as {custOpName} part of the URI structure for a custom operation associated with a resource as defined in clause 5.2.4 of 3GPP TS 29.122. ' custOperations: type: array items: $ref: '#/components/schemas/CustomOperation' minItems: 1 description: 'Custom operations associated with this resource. ' operations: type: array items: $ref: '#/components/schemas/Operation' minItems: 1 description: 'Supported HTTP methods for the API resource. Only applicable when the protocol in AefProfile indicates HTTP. ' description: type: string description: Text description of the API resource required: - resourceName - commType - uri CustomOperation: type: object description: Represents the description of a custom operation. properties: commType: $ref: '#/components/schemas/CommunicationType' custOpName: type: string description: 'it is set as {custOpName} part of the URI structure for a custom operation without resource association as defined in clause 5.2.4 of 3GPP TS 29.122. ' operations: type: array items: $ref: '#/components/schemas/Operation' minItems: 1 description: 'Supported HTTP methods for the API resource. Only applicable when the protocol in AefProfile indicates HTTP. ' description: type: string description: Text description of the custom operation required: - commType - custOpName ServiceKpis: type: object description: 'Represents information about the service characteristics provided by a service API. ' properties: maxReqRate: $ref: TS29571_CommonData.yaml#/components/schemas/Uinteger maxRestime: $ref: TS29122_CommonData.yaml#/components/schemas/DurationSec availability: $ref: TS29571_CommonData.yaml#/components/schemas/Uinteger avalComp: type: string pattern: ^\d+(\.\d+)? (kFLOPS|MFLOPS|GFLOPS|TFLOPS|PFLOPS|EFLOPS|ZFLOPS)$ description: 'The maximum compute resource available in FLOPS for the API Invoker. ' avalGraComp: type: string pattern: ^\d+(\.\d+)? (kFLOPS|MFLOPS|GFLOPS|TFLOPS|PFLOPS|EFLOPS|ZFLOPS)$ description: 'The maximum graphical compute resource in FLOPS available for the API Invoker. ' avalMem: type: string pattern: ^\d+(\.\d+)? (KB|MB|GB|TB|PB|EB|ZB|YB)$ description: 'The maximum memory resource available for the API Invoker. ' avalStor: type: string pattern: ^\d+(\.\d+)? (KB|MB|GB|TB|PB|EB|ZB|YB)$ description: 'The maximum storage resource available for the API Invoker. ' conBand: $ref: TS29571_CommonData.yaml#/components/schemas/Uinteger ServiceAPIDescription: type: object description: Represents the description of a service API as published by the APF. properties: apiName: type: string 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]. ' apiId: type: string description: 'API identifier assigned by the CAPIF core function to the published service API. Shall not be present in the HTTP POST request from the API publishing function to the CAPIF core function. Shall be present in the HTTP POST response from the CAPIF core function to the API publishing function and in the HTTP GET response from the CAPIF core function to the API invoker (discovery API). ' apiStatus: $ref: '#/components/schemas/ApiStatus' aefProfiles: type: array items: $ref: '#/components/schemas/AefProfile' minItems: 1 description: 'AEF profile information, which includes the exposed API details (e.g. protocol). ' description: type: string description: Text description of the API supportedFeatures: $ref: TS29571_CommonData.yaml#/components/schemas/SupportedFeatures shareableInfo: $ref: '#/components/schemas/ShareableInformation' serviceAPICategory: type: string description: The service API category to which the service API belongs to. apiSuppFeats: $ref: TS29571_CommonData.yaml#/components/schemas/SupportedFeatures pubApiPath: $ref: '#/components/schemas/PublishedApiPath' ccfId: type: string description: CAPIF core function identifier. apiProvName: type: string description: Represents the API provider name. netSliceInfo: type: array items: $ref: TS29435_NSCE_PolicyManagement.yaml#/components/schemas/NetSliceId minItems: 1 description: Represents the applicable network slice identifiers. required: - apiName Protocol: anyOf: - type: string enum: - HTTP_1_1 - HTTP_2 - MQTT - WEBSOCKET - type: string description: 'This string provides forward-compatibility with future extensions to the enumeration but is not used to encode content defined in the present version of this API. ' description: "Indicates a protocol and protocol version used by the API. \nPossible 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" PublishedApiPath: type: object description: Represents the published API path within the same CAPIF provider domain. properties: ccfIds: type: array items: type: string minItems: 1 description: A list of CCF identifiers where the service API is already published. Version: type: object description: Represents the API version information. properties: apiVersion: type: string description: API major version in URI (e.g. v1) expiry: $ref: TS29122_CommonData.yaml#/components/schemas/DateTime resources: type: array items: $ref: '#/components/schemas/Resource' minItems: 1 description: Resources supported by the API. custOperations: type: array items: $ref: '#/components/schemas/CustomOperation' minItems: 1 description: Custom operations without resource association. required: - apiVersion externalDocs: description: 3GPP TS 29.222 V19.5.0 Common API Framework for 3GPP Northbound APIs url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.222/