3GPP TS 29.571 Common Data API

Common Data Types for Service Based Interfaces. An OpenAPI 3.0.0 data-model-only document (no paths; it defines the schemas/Network Resource Model consumed by the Provisioning and Performance management services), API version 1.6.0, published verbatim by 3GPP in 3GPP TS 29.571 as part of the 5G Common Data Types suite and mirrored in the public 3GPP Forge GitLab repository.

OpenAPI Specification

3gpp-ts29571-commondata.yml Raw ↑
openapi: 3.0.0

info:
  version: '1.6.0'


  title: 'Common Data Types'
  description: |
    Common Data Types for Service Based Interfaces.  
    © 2025, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC).  
    All rights reserved.

externalDocs:
  description: 3GPP TS 29.571 Common Data Types for Service Based Interfaces, version 19.5.0
  url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.571/'

paths: {}
components:
  schemas:

#
# Common Data Types for Generic usage definitions as defined in clause 5.2
#

#
# COMMON SIMPLE DATA TYPES
#
    Binary:
      format: binary
      type: string
      description: string with format 'binary' as defined in OpenAPI.

    BinaryRm:
      format: binary
      type: string
      nullable: true
      description: >
        "string with format 'binary' as defined in OpenAPI OpenAPI with 'nullable: true' property."

    Bytes:
      format: byte
      type: string
      description: string with format 'bytes' as defined in OpenAPI

    BytesRm:
      format: byte
      type: string
      nullable: true
      description: >
        string with format 'bytes' as defined in OpenAPI OpenAPI with 'nullable: true' property.

    Date:
      format: date
      type: string
      description: string with format 'date' as defined in OpenAPI.

    DateRm:
      format: date
      type: string
      nullable: true
      description: >
        string with format 'date' as defined in OpenAPI OpenAPI with 'nullable: true' property.

    DateTime:
      format: date-time
      type: string
      description: string with format 'date-time' as defined in OpenAPI.

    DateTimeRm:
      format: date-time
      type: string
      nullable: true
      description: >
        string with format 'date-time' as defined in OpenAPI with 'nullable:true' property. 

    DiameterIdentity:
      $ref: '#/components/schemas/Fqdn'

    DiameterIdentityRm:
      $ref: '#/components/schemas/FqdnRm'

    Double:
      format: double
      type: number
      description: string with format 'double' as defined in OpenAPI

    DoubleRm:
      format: double
      type: number
      nullable: true
      description: >
        string with format 'double' as defined in OpenAPI with 'nullable: true' property.

    DurationSec:
      type: integer
      description: indicating a time in seconds.

    DurationSecRm:
      type: integer
      nullable: true
      description: "indicating a time in seconds with OpenAPI defined 'nullable: true' property."

    Float:
      format: float
      type: number
      description: string with format 'float' as defined in OpenAPI.

    FloatRm:
      format: float
      type: number
      nullable: true
      description: >
        string with format 'float' as defined in OpenAPI with the OpenAPI defined
        'nullable: true' property.

    Int32:
      format: int32
      type: integer
      description: string with format 'int32' as defined in OpenAPI.

    Int32Rm:
      format: int32
      type: integer
      nullable: true
      description: >
        string with format 'int32' as defined in OpenAPI with the OpenAPI defined
        'nullable: true' property.

    Int64:
      type: integer
      format: int64
      description: string with format 'int64' as defined in OpenAPI.

    Int64Rm:
      format: int64
      type: integer
      nullable: true
      description: >
        string with format 'int64' as defined in OpenAPI with the OpenAPI defined
        'nullable: true' property.

    Ipv4Addr:
      type: string
      pattern: '^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])$'
      example: '198.51.100.1'
      description: >
        String identifying a IPv4 address formatted in the 'dotted decimal' notation
        as defined in RFC 1166.

    Ipv4AddrRm:
      type: string
      pattern: '^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])$'
      example: '198.51.100.1'
      nullable: true
      description: >
        String identifying a IPv4 address formatted in the 'dotted decimal' notation
        as defined in RFC 1166 with the OpenAPI defined 'nullable: true' property.

    Ipv4AddrMask:
      type: string
      pattern: '^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(\/([0-9]|[1-2][0-9]|3[0-2]))$'
      example: '198.51.0.0/16'
      description: >
        "String identifying a IPv4 address mask formatted in the 'dotted decimal' notation
        as defined in RFC 1166."

    Ipv4AddrMaskRm:
      type: string
      pattern: '^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(\/([0-9]|[1-2][0-9]|3[0-2]))$'
      example: '198.51.0.0/16'
      nullable: true
      description: >
        String identifying a IPv4 address mask formatted in the 'dotted decimal' notation
        as defined in RFC 1166 with the OpenAPI defined 'nullable: true' property.

    Ipv6Addr:
      type: string
      allOf:
        - pattern: '^((:|(0?|([1-9a-f][0-9a-f]{0,3}))):)((0?|([1-9a-f][0-9a-f]{0,3})):){0,6}(:|(0?|([1-9a-f][0-9a-f]{0,3})))$'
        - pattern: '^((([^:]+:){7}([^:]+))|((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?))$'
      example: '2001:db8:85a3::8a2e:370:7334'
      description: >
        String identifying an IPv6 address formatted according to clause 4 of RFC5952.
        The mixed IPv4 IPv6 notation according to clause 5 of RFC5952 shall not be used.

    Ipv6AddrRm:
      type: string
      allOf:
        - pattern: '^((:|(0?|([1-9a-f][0-9a-f]{0,3}))):)((0?|([1-9a-f][0-9a-f]{0,3})):){0,6}(:|(0?|([1-9a-f][0-9a-f]{0,3})))$'
        - pattern: '^((([^:]+:){7}([^:]+))|((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?))$'
      example: '2001:db8:85a3::8a2e:370:7334'
      nullable: true
      description: >
        String identifying an IPv6 address formatted according to clause 4 of RFC5952 with the
        OpenAPI 'nullable: true' property.
        The mixed IPv4 IPv6 notation according to clause 5 of RFC5952 shall not be used.

    Ipv6Prefix:
      type: string
      allOf:
        - pattern: '^((:|(0?|([1-9a-f][0-9a-f]{0,3}))):)((0?|([1-9a-f][0-9a-f]{0,3})):){0,6}(:|(0?|([1-9a-f][0-9a-f]{0,3})))(\/(([0-9])|([0-9]{2})|(1[0-1][0-9])|(12[0-8])))$'
        - pattern: '^((([^:]+:){7}([^:]+))|((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?))(\/.+)$'
      example: '2001:db8:abcd:12::0/64'
      description: >
        String identifying an IPv6 address prefix formatted according to clause 4 of RFC 5952.
        IPv6Prefix data type may contain an individual /128 IPv6 address.

    Ipv6PrefixRm:
      type: string
      allOf:
        - pattern: '^((:|(0?|([1-9a-f][0-9a-f]{0,3}))):)((0?|([1-9a-f][0-9a-f]{0,3})):){0,6}(:|(0?|([1-9a-f][0-9a-f]{0,3})))(\/(([0-9])|([0-9]{2})|(1[0-1][0-9])|(12[0-8])))$'
        - pattern: '^((([^:]+:){7}([^:]+))|((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?))(\/.+)$'
      nullable: true
      description: >
        String identifying an IPv6 address prefix formatted according to clause 4 of RFC 5952 with
        the OpenAPI 'nullable: true' property. IPv6Prefix data type may contain an individual
        /128 IPv6 address.

    MacAddr48:
      type: string
      pattern: '^([0-9a-fA-F]{2})((-[0-9a-fA-F]{2}){5})$'
      description: >
        String identifying a MAC address formatted in the hexadecimal notation
        according to clause 1.1 and clause 2.1 of RFC 7042.

    MacAddr48Rm:
      type: string
      pattern: '^([0-9a-fA-F]{2})((-[0-9a-fA-F]{2}){5})$'
      nullable: true
      description: >
        "String identifying a MAC address formatted in the hexadecimal notation according to
        clause 1.1 and clause 2.1 of RFC 7042 with the OpenAPI 'nullable: true' property."

    SupportedFeatures:
      type: string
      pattern: '^[A-Fa-f0-9]*$'
      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.

    Uinteger:
      type: integer
      minimum: 0
      description: Unsigned Integer, i.e. only value 0 and integers above 0 are permissible.

    UintegerRm:
      type: integer
      minimum: 0
      description: >
        Unsigned Integer, i.e. only value 0 and integers above 0 are permissible with
        the OpenAPI 'nullable: true' property.
      nullable: true

    Uint16:
      type: integer
      minimum: 0
      maximum: 65535
      description: >
        Integer where the allowed values correspond to the value range of an
        unsigned 16-bit integer.

    Uint16Rm:
      type: integer
      minimum: 0
      maximum: 65535
      nullable: true
      description: >
        Integer where the allowed values correspond to the value range of an unsigned 
        16-bit integer with the OpenAPI 'nullable: true' property.

    Uint32:
      type: integer
      minimum: 0
      maximum: 4294967295 #(2^32)-1
      description: >
        Integer where the allowed values correspond to the value range of an unsigned
        32-bit integer.

    Uint32Rm:
      format: int32
      type: integer
      minimum: 0
      maximum: 4294967295 #(2^32)-1
      nullable: true
      description: >
        Integer where the allowed values correspond to the value range of an unsigned
        32-bit integer with the OpenAPI 'nullable: true' property.

    Uint64:
      type: integer
      minimum: 0
      maximum: 18446744073709551615 #(2^64)-1
      description: >
        Integer where the allowed values correspond to the value range of an
        unsigned 64-bit integer.

    Uint64Rm:
      type: integer
      minimum: 0
      maximum: 18446744073709551615 #(2^64)-1
      nullable: true
      description: >
        Integer where the allowed values correspond to the value range of an unsigned
        16-bit integer with the OpenAPI 'nullable: true' property.

    Uri:
      type: string
      description: String providing an URI formatted according to RFC 3986.

    UriRm:
      type: string
      nullable: true
      description: >
        String providing an URI formatted according to RFC 3986 with the OpenAPI
        'nullable: true' property.

    VarUeId:
      type: string
      pattern: '^(imsi-[0-9]{5,15}|nai-.+|msisdn-[0-9]{5,15}|extid-[^@]+@[^@]+|gci-.+|gli-.+|.+)$'
      description: String represents the SUPI or GPSI

    VarUeIdRm:
      type: string
      pattern: '^(imsi-[0-9]{5,15}|nai-.+|msisdn-[0-9]{5,15}|extid-[^@]+@[^@]+|gci-.+|gli-.+|.+)$'
      nullable: true
      description: "String represents the SUPI or GPSI with the OpenAPI 'nullable: true' property."

    TimeZone:
      type: string
      example: '-08:00+1'
      description: |
        String with format "time-numoffset" optionally appended by "daylightSavingTime", where 
        - "time-numoffset" shall represent the time zone adjusted for daylight saving time and be
           encoded as time-numoffset as defined in clause 5.6 of IETF RFC 3339; 
        - "daylightSavingTime" shall represent the adjustment that has been made and shall be
           encoded as "+1" or "+2" for a +1 or +2 hours adjustment. 

        The example is for 8 hours behind UTC, +1 hour adjustment for Daylight Saving Time.

    TimeZoneRm:
      type: string
      nullable: true
      description: |
        "String with format 'time-numoffset' optionally appended by '<daylightSavingTime>', where
          - 'time-numoffset' shall represent the time zone adjusted for daylight saving time and be
            encoded as time-numoffset as defined in clause 5.6 of IETF RFC 3339;
          - 'daylightSavingTime' shall represent the adjustment that has been made and shall be
            encoded as '+1' or '+2' for a +1 or +2 hours adjustment.

          But with the OpenAPI 'nullable: true' property."

    StnSr:
      type: string
      description: String representing the STN-SR as defined in clause 18.6 of 3GPP TS 23.003.

    StnSrRm:
      type: string
      nullable: true
      description: >
        String representing the STN-SR as defined in clause 18.6 of 3GPP TS 23.003
        with the OpenAPI 'nullable: true' property. 

    CMsisdn:
      type: string
      pattern: '^[0-9]{5,15}$'
      description: String representing the C-MSISDN as defined in clause 18.7 of 3GPP TS 23.003.

    CMsisdnRm:
      type: string
      pattern: '^[0-9]{5,15}$'
      nullable: true
      description: >
        String representing the C-MSISDN as defined in clause 18.7 of 3GPP TS 23.003 with
        the OpenAPI 'nullable: true' property. 

    MonthOfYear:
      type: integer
      minimum: 1
      maximum: 12
      description: >
        integer between and including 1 and 12 denoting a month. 1 shall indicate January,
        and the subsequent months shall be indicated with the next higher numbers.
        12 shall indicate December.

    DayOfWeek:
      type: integer
      minimum: 1
      maximum: 7
      description: >
        integer between and including 1 and 7 denoting a weekday. 1 shall indicate Monday,
        and the subsequent weekdays shall be indicated with the next higher numbers.
        7 shall indicate Sunday.

    TimeOfDay:
      type: string
      description: >
        String with format partial-time or full-time as defined in clause 5.6 of IETF RFC 3339.
        Examples, 20:15:00, 20:15:00-08:00 (for 8 hours behind UTC). 

    EmptyObject:
      description: Empty JSON object { }, it is defined with the keyword additionalProperties false
      type: object
      additionalProperties: false

    Fqdn:
      description: Fully Qualified Domain Name
      type: string
      pattern: '^([0-9A-Za-z]([-0-9A-Za-z]{0,61}[0-9A-Za-z])?\.)+[A-Za-z]{2,63}\.?$'
      minLength: 4
      maxLength: 253

    FqdnRm:
      description: Fully Qualified Domain Name, but it also allows the null value
      anyOf:
        - $ref: '#/components/schemas/Fqdn'
        - $ref: '#/components/schemas/NullValue'

#
#   COMMON ENUMERATED DATA TYPES
#

    PatchOperation:
      anyOf:
        - type: string
          enum:
            - add
            - copy
            - move
            - remove
            - replace
            - test
        - type: string
      description: Operations as defined in IETF RFC 6902.

    UriScheme:
      anyOf:
        - type: string
          enum:
            - http
            - https
        - type: string
      description: HTTP and HTTPS URI scheme.

    ChangeType:
      anyOf:
        - type: string
          enum:
            - ADD
            - MOVE
            - REMOVE
            - REPLACE
        - type: string
      description: Indicates the type of change to be performed.

    HttpMethod:
      anyOf:
        - type: string
          enum:
            - GET
            - POST
            - PUT
            - DELETE
            - PATCH
            - OPTIONS
            - HEAD
            - CONNECT
            - TRACE
        - type: string
      description: HTTP methodes.

    NullValue:
      enum:
        - null
      description: JSON's null value.


    MatchingOperator:
      anyOf:
        - type: string
          enum:
            - FULL_MATCH
            - MATCH_ALL
            - STARTS_WITH
            - NOT_START_WITH
            - ENDS_WITH
            - NOT_END_WITH
            - CONTAINS
            - NOT_CONTAIN
        - type: string
      description: the matching operation.

    UpfPacketInspectionFunctionality:
      description: Indicates a packet inspection functionality of the UPF.
      anyOf:
        - type: string
          enum:
            - DEEP_PACKET_INSPECTION
            - MAC_FILTER_BASED_PACKET_DETECTION
            - IP_FILTER_BASED_PACKET_DETECTION
        - type: string
          description: >
            This string provides forward-compatibility with future
            extensions to the enumeration.


#
#  COMMON STRUCTURED DATA TYPES
#

    ProblemDetails:
      description: Provides additional information in an error response.
      type: object
      properties:
        type:
          $ref: '#/components/schemas/Uri'
        title:
          type: string
        status:
          type: integer
        detail:
          type: string
          description: A human-readable explanation specific to this occurrence of the problem.
        instance:
          $ref: '#/components/schemas/Uri'
        cause:
          type: string
          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.
        invalidParams:
          type: array
          items:
            $ref: '#/components/schemas/InvalidParam'
          minItems: 1
        supportedFeatures:
          $ref: '#/components/schemas/SupportedFeatures'
        #accessTokenError:
        #  $ref: 'TS29510_Nnrf_AccessToken.yaml#/components/schemas/AccessTokenErr'
        #accessTokenRequest:
        #  $ref: 'TS29510_Nnrf_AccessToken.yaml#/components/schemas/AccessTokenReq'
        nrfId:
          $ref: '#/components/schemas/Fqdn'
        supportedApiVersions:
          type: array
          items:
            type: string
          minItems: 1
        #noProfileMatchInfo:
        #  $ref: 'TS29510_Nnrf_NFDiscovery.yaml#/components/schemas/NoProfileMatchInfo'

    Link:
      type: object
      properties:
        href:
          $ref: '#/components/schemas/Uri'
      description: It contains the URI of the linked resource.

    LinkRm:
      type: object
      properties:
        href:
          $ref: '#/components/schemas/Uri'
      nullable: true
      description: >
        It contains the URI of the linked resource with the OpenAPI 'nullable: true' property.

    PatchItem:
      type: object
      properties:
        op:
          $ref: '#/components/schemas/PatchOperation'
        path:
          type: string
          description: >
            contains a JSON pointer value (as defined in IETF RFC 6901) that references
            a location of a resource on which the patch operation shall be performed.
        from:
          type: string
          description: >
            indicates the path of the source JSON element (according to JSON Pointer syntax)
            being moved or copied to the location indicated by the "path" attribute.
        value: {}
      required:
        - op
        - path
      description: it contains information on data to be changed.

    LinksValueSchema:
      oneOf:
        - type: array
          items:
            $ref: '#/components/schemas/Link'
          minItems: 1
        - $ref: '#/components/schemas/Link'
      description: A list of mutually exclusive alternatives of 1 or more links.

    SelfLink:
      type: object
      properties:
        self:
          $ref: '#/components/schemas/Link'
      required:
        - self
      description: It contains the URI of the linked resource.

    InvalidParam:
      type: object
      properties:
        param:
          type: string
          description: >
            If the invalid parameter is an attribute in a JSON body, this IE shall contain the 
            attribute's name and shall be encoded as a JSON Pointer. If the invalid parameter is 
            an HTTP header, this IE shall be formatted as the concatenation of the string "header " 
            plus the name of such header. If the invalid parameter is a query parameter, this IE 
            shall be formatted as the concatenation of the string "query " plus the name of such 
            query parameter. If the invalid parameter is a variable part in the path of a resource 
            URI, this IE shall contain the name of the variable, including the symbols "{" and "}" 
            used in OpenAPI specification as the notation to represent variable path segments.
        reason:
          type: string
          description: >
            A human-readable reason, e.g. "must be a positive integer". In cases involving failed 
            operations in a PATCH request, the reason string should identify the operation that 
            failed using the operation's array index to assist in correlation of the invalid 
            parameter with the failed operation, e.g." Replacement value invalid for attribute 
            (failed operation index= 4)"
      required:
        - param
      description: It contains an invalid parameter and a related description.

    ChangeItem:
      type: object
      properties:
        op:
          $ref: '#/components/schemas/ChangeType'
        path:
          type: string
          description: >
            contains a JSON pointer value (as defined in IETF RFC 6901) that references a target 
            location within the resource on which the change has been applied.
        from:
          type: string
          description: >
            indicates the path of the source JSON element (according to JSON Pointer syntax) 
            being moved or copied to the location indicated by the "path" attribute. It shall 
            be present if the "op" attribute is of value "MOVE".
        origValue: {}
        newValue: {}
      required:
        - op
        - path
      description: It contains data which need to be changed.

    NotifyItem:
      type: object
      required:
        - resourceId
        - changes
      properties:
        resourceId:
          $ref: '#/components/schemas/Uri'
        changes:
          type: array
          items:
            $ref: '#/components/schemas/ChangeItem'
          minItems: 1
      description: Indicates changes on a resource.

    ComplexQuery:
      oneOf:
        - $ref: '#/components/schemas/Cnf'
        - $ref: '#/components/schemas/Dnf'
      description: >
        The ComplexQuery data type is either a conjunctive normal form or a disjunctive normal form. 
        The attribute names "cnfUnits" and "dnfUnits" (see clause 5.2.4.11 and clause 5.2.4.12) 
        serve as discriminator.

    Cnf:
      type: object
      required:
        - cnfUnits
      properties:
        cnfUnits:
          type: array
          items:
            $ref: '#/components/schemas/CnfUnit'
          minItems: 1
      description: A conjunctive normal form

    Dnf:
      type: object
      required:
        - dnfUnits
      properties:
        dnfUnits:
          type: array
          items:
            $ref: '#/components/schemas/DnfUnit'
          minItems: 1
      description: A disjunctive normal form.

    CnfUnit:
      type: object
      required:
        - cnfUnit
      properties:
        cnfUnit:
          type: array
          items:
            $ref: '#/components/schemas/Atom'
          minItems: 1
      description: >
        During the processing of cnfUnits attribute, all the members in the array shall be 
        interpreted as logically concatenated with logical "AND".

    DnfUnit:
      type: object
      required:
        - dnfUnit
      properties:
        dnfUnit:
          type: array
          items:
            $ref: '#/components/schemas/Atom'
          minItems: 1
      description: >
        During the processing of dnfUnits attribute, all the members in the array shall be 
        interpreted as logically concatenated with logical "OR".

    Atom:
      description: contains a search parameter and its positive or negative content.
      type: object
      required:
        - attr
        - value
      properties:
        attr:
          type: string
          description: contains the name of a defined query parameter.
        value: {}
        negative:
          type: boolean
          description: indicates whether the negative condition applies for the query condition.

    PatchResult:
      description: The execution report result on failed modification.
      type: object
      required:
        - report
      properties:
       report:
        type: array
        items:
          $ref: '#/components/schemas/ReportItem'
        minItems: 1
        description: >
          The execution report contains an array of report items. Each report item indicates one 
          failed modification.

    ReportItem:
      type: object
      required:
        - path
      properties:
        path:
          type: string
          description: >
            Contains a JSON pointer value (as defined in IETF RFC 6901) that references a 
            location of a resource to which the modification is subject.
        reason:
          type: string
          description: >
            A human-readable reason providing details on the reported modification failure. 
            The reason string should identify the operation that failed using the operation's 
            array index to assist in correlation of the invalid parameter with the failed 
            operation, e.g. "Replacement value invalid for attribute (failed operation index= 4)".
      description: indicates performed modivications.

    HalTemplate:
      description: >
        Hypertext Application Language (HAL) template contains the extended 3GPP hypermedia format.
      type: object
      required:
        - method
      properties:
        title:
          type: string
          description: A human-readable string that can be used to identify this template
        method:
          $ref: '#/components/schemas/HttpMethod'
        contentType:
          type: string
          description: >
            The media type that should be used for the corresponding request. If the attribute
            is missing, or contains an unrecognized value, the client should act as if the 
            contentType is set to "application/json".
        properties:
          type: array
          items:
            $ref: '#/components/schemas/Property'
          minItems: 1
          description: >
            The properties that should be included in the body of the corresponding request. 
            If the contentType attribute is set to "application/json", then this attribute 
            describes the attributes of the JSON object of the body.

    Property:
      description: >
       If the contentType attribute is set to "application/json", then this attribute describes 
       the attributes of the JSON object of the body.
      type: object
      required:
        - name
      properties:
        name:
          type: string
          description: The name of the property
        required:
          type: boolean
          description: >
            Indicates whether the property is required – true= required – 
            false(default)= not required.
        regex:
          type: string
          description: A regular expression string to be applied to the value of the property.
        value:
          type: string
          description: The property value. When present, it shall be a valid JSON string.

    RedirectResponse:
      description: >
        The response shall include a Location header field containing a different URI 
        (pointing to a different URI of an other service instance), or the same URI if a request 
        is redirected to the same target resource via a different SCP.
      type: object
      properties:
        cause:
          type: string
        targetScp:
          $ref: '#/components/schemas/Uri'
        targetSepp:
          $ref: '#/components/schemas/Uri'

    TunnelAddress:
      description: Tunnel address
      type: object
      properties:
        ipv4Addr:
          $ref: '#/components/schemas/Ipv4Addr'
        ipv6Addr:
          $ref: '#/components/schemas/Ipv6Addr'
        portNumber:
          $ref: '#/components/schemas/Uinteger'
      required:
        - portNumber
      anyOf:
        - required: [ ipv4Addr ]
        - required: [ ipv6Addr ]


    FqdnPatternMatchingRule:
      description: a matching rule for a FQDN pattern
      type: object
      oneOf:
        - required: [ regex ]
        - required: [ stringMatchingRule ]
      properties:
        regex:
          type: string
        stringMatchingRule:
          $ref: '#/components/schemas/StringMatchingRule'


    StringMatchingRule:
      description: A list of conditions for string matching 
      type: object
      properties:
        stringMatchingConditions:
          type: array
          items:
            $ref: '#/components/schemas/StringMatchingCondition'
          minItems: 1
      required:
        - stringMatchingConditions

    StringMatchingCondition:
      description: A String with Matching Operator
      type: object
      properties:
        matchingString:
          type: string
        matchingOperator:
          $ref: '#/components/schemas/MatchingOperator'
      required:
        - matchingOperator

    Ipv4AddressRange:
      description: Range of IPv4 addresses
      type: object
      properties:
        start:
          $ref: '#/components/schemas/Ipv4Addr'
        end:
          $ref: '#/components/schemas/Ipv4Addr'
      required:
        - start
        - end


    Ipv6AddressRange:
      description: Range of IPv6 addresses
      type: object
      properties:
        start:
          $ref: '#/components/schemas/Ipv6Addr'
        end:
          $ref: '#/components/schemas/Ipv6Addr'
      required:
        - start
        - end

    Ipv6PrefixRange:
      description: Range of IPv6 prefixes
      type: object
      properties:
        start:
          $ref: '#/components/schemas/Ipv6Prefix'
        end:
          $ref: '#/components/schemas/Ipv6Prefix'
      required:
        - start
        - end

    NfSignallingInfo:
      description: NF Signalling Information
      type: object
      properties:
        nfInstanceId:
          $ref: '#/components/schemas/NfInstanceId'
        nfSigInfoPerWndw:
          type: array
          items:
            $ref: '#/components/schemas/NfSignallingInfoPerTimeWindow'
          minItems: 1
        nfHeartbeatInfo:
          $ref: '#/components/schemas/NfHeartbeatInfo'
        unexpStatusInd:
          type: boolean
          default: false
      required:
        - nfInstanceId

    NfSignallingInfoPerTimeWindow:
      description: NF Signalling Information Per time window
      type: object
      properties:
    #    tw:
    #      $ref: 'TS29122_CommonData.yaml#/components/schemas/TimeWindow'
        nfSigInfoPerService:
          type: array
          items:
            $ref: '#/components/schemas/NfSignallingInfoPerService'
          minItems: 1
      required:
        - tw
        - nfSigInfoPerService

    NfSignallingInfoPerService:
      description: NF signalling information per service.
      type: object
      properties:
        nfServiceInstanceId:
          type: string
        #serviceName:
        #  $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/ServiceName'
        avgProcTime:
          $ref: '#/components/schemas/Float'
        numOfReq:
          $ref: '#/components/schemas/Uinteger'
        numOfReqUnresp:
          $ref: '#/components/schemas/Uinteger'
        numOfReqReject:
          $ref: '#/components/schemas/Uinteger'
        numOfRedMessages:
          $ref: '#/components/schemas/Uinteger'
        numOfPosteriorReq:
          $ref: '#/components/schemas/Uinteger'
      required:
        - nfServiceInstanceId
        - serviceName

    NfHeartbeatInfo:
      description: NF heart beat information.
      type: object
      properties:
        numOfRetrans:
          $ref: '#/components/schemas/Uinteger'
        hbIntvl:
          $ref: '#/components/schemas/Uinteger'

#
# Data Types related to Subscription, Identification and Numbering as defined in clause 5.3
#

#
# SIMPLE DATA TYPES
#
    Dnn:
      type: string
      description: >
        String representing a Data Network as defined in clause 9A of 3GPP TS 23.003; 
        it shall contain

# --- truncated at 32 KB (242 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/3gpp/refs/heads/main/openapi/3gpp-ts29571-commondata.yml