MTN TMF Product Catalog - TMF620

API to provide capability to manage catalog, category, Offerings, Offering price and specification of products.

OpenAPI Specification

mtn-group-tmf-product-catalog-tmf620.yml Raw ↑
swagger: '2.0'
info:
  title: Product Catalog Management
  description: >-
    API to provide capability to manage catalog, category, Offerings, Offering price and specification of  products. 
  version: 1.0.0
host: api.mtn.com
basePath: /tmf-api/productcatalog/v1
schemes:
  - https
consumes:
  - application/json;charset=utf-8
produces:
  - application/json;charset=utf-8
tags:
  - name: catalog
  - name: category
securityDefinitions:
  ApiKeyAuth:
    type: "apiKey"
    name: "X-API-Key"
    in: "header"
  OAuth2:
    type: oauth2
    flow: application
    tokenUrl: https://api.mtn.com/v1/oauth/access_token
security:
  - ApiKeyAuth: []
  - OAuth2: []
paths:
 /catalog:
    get:
      operationId: listCatalog
      summary: List or find Catalog objects
      description: This operation list or find Catalog entities
      tags:
        - catalog
      parameters:
        - name: "transactionId"
          in: header
          required: false
          description: 'Client generated Id to include for tracing requests.'
          type: string
          x-example: '6f0bece6-7df3-4da4-af02-5e7f16e5e6fc'
        - name: "Issellable"
          in: query
          required: true
          type: string
          enum:
           - True
           - False
          description: 'ascertains whether the product is sellable or not'
        - name: category name
          in: query
          description: "name of the product category"
          required: True
          type: string
          enum:
            - VAS
            - CUG
            - FNF
            - Devices
            - Accessories
            - ProviderActivation
            - SharedData
            - PoolShare
            - FixedShare
            - LoyaltyCatalog
            - GDS
        - name: lifecycle
          in: query
          type: string
          required: False
          enum:
           - Launched
           - Active
           - Initial
           - Rejected
           - Retired
           - Obsolete
           - In design
        - name: business type
          in: query
          type: string
          required: True
          enum:
           - Postpay
           - Prepay
        - name: depth
          description: used to expand inline referenced entities up to the level specified
          required: false
          in: query
          type: integer
          x-example: 4
        - name: market segment
          description: name of the product market segment,e.g individual, Staff
          required: false
          in: query
          type: string
        - name: fields
          in: query
          required: false
          type: string
          description: fields to be included in the response, name, id, url
          x-example: name
      responses:
        '200':  
          description: Success
          schema:
           $ref: '#/definitions/Response_Catalog'
        '400':
          description: Bad Request
          schema:
            $ref: '#/definitions/Error'
        '401':
          description: Unauthorized
          schema:
            $ref: '#/definitions/Error'
        '403':
          description: Forbidden
          schema:
            $ref: '#/definitions/Error'
        '404':
          description: Customer Not Found
          schema:
            $ref: '#/definitions/Error'
        '405':
          description: Method Not allowed
          schema:
            $ref: '#/definitions/Error'
        '409':
          description: Conflict
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: Internal Server Error
          schema:
            $ref: '#/definitions/Error'
 
 /catalog/{id}:
    get:
      operationId: retrieveCatalog
      summary: Retrieves a 'Catalog' by Id
      tags:
        - catalog
      parameters:
        - name: id
          description: Identifier of the Category
          required: true
          type: string
          in: path
        - name: "transactionId"
          in: header
          required: false
          description: 'Client generated Id to include for tracing requests.'
          type: string
          x-example: '6f0bece6-7df3-4da4-af02-5e7f16e5e6fc'
        - name: fields
          required: false
          type: string
          in: query
          description: name,id,description,businessType,version,productOffering,productOfferingTerm,productOfferingPrice
        - name: targetprice
          required: false
          type: string
          in: query
          description: target of the policy to determine pricing, pass pricepolicy for this parameter
        - name: countryCode
          in: header
          type: string
          description: "Country ISO code. Must be ISO 3166-1 alpha-3 codes (It is a 3 character string)"
          required: false
        
        
          
      responses:
        '200':  
          description: Success
          schema:
           $ref: '#/definitions/Response_Catalog2'
        '400':
          description: Bad Request
          schema:
            $ref: '#/definitions/Error'
        '401':
          description: Unauthorized
          schema:
            $ref: '#/definitions/Error'
        '403':
          description: Forbidden
          schema:
            $ref: '#/definitions/Error'
        '404':
          description: Customer Not Found
          schema:
            $ref: '#/definitions/Error'
        '405':
          description: Method Not allowed
          schema:
            $ref: '#/definitions/Error'
        '409':
          description: Conflict
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: Internal Server Error
          schema:
            $ref: '#/definitions/Error'
 
 /category/{id}:
    get:
      operationId: retrieveCategory
      summary: Retrieves a Category by ID
      description: >-
        This operation retrieves a Category entity. Attribute selection is
        enabled for all first level attributes.
      tags:
        - category
      parameters:
        - name: id
          description: Identifier of the Category
          required: true
          type: string
          in: path
        - name: "transactionId"
          in: header
          required: false
          description: 'Client generated Id to include for tracing requests.'
          type: string
          x-example: '6f0bece6-7df3-4da4-af02-5e7f16e5e6fc'
        - name: countryCode
          in: header
          type: string
          description: "Country ISO code. Must be ISO 3166-1 alpha-3 codes (It is a 3 character string)"
          required: false
        - name: "senderId"
          in: query
          required: false
          type: string
          description: 'Provide the channel information'
          x-example: 'IVR'
        - name: "serviceNumber"
          in: query
          required: false
          type: string
          description: Unique identifier. This may be customer msisdn, customer id etc.
          x-example: '25067564321'
        - name: custom
          in: query
          required: false
          type: string
          description: 'Reserve for future use. Hold additional filter criteria'
      responses:
        '200':  
          description: Success
          schema:
           $ref: '#/definitions/Response_Category_ID'
        '400':
          description: Bad Request
          schema:
            $ref: '#/definitions/Error'
        '401':
          description: Unauthorized
          schema:
            $ref: '#/definitions/Error'
        '403':
          description: Forbidden
          schema:
            $ref: '#/definitions/Error'
        '404':
          description: Customer Not Found
          schema:
            $ref: '#/definitions/Error'
        '405':
          description: Method Not allowed
          schema:
            $ref: '#/definitions/Error'
        '409':
          description: Conflict
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: Internal Server Error
          schema:
            $ref: '#/definitions/Error'
            
 /productOffering/{id}/dynamicOffers:
    get:
      operationId: retrieveDynamicProductOffering
      summary: Retrieves the dynamic ProductOffering by ID for USSD
      description: This operation retrieves a ProductOffering entity. Attribute selection is enabled for all first level attributes.
      tags:
        - channelService
      parameters:
        - name: id
          description: Identifier of the ProductOffering
          required: true
          type: string
          in: path
        - name: transactionId
          in: header
          type: string
          description: transactionId
          required: false
        - name: "offerType"
          in: "query"
          required: false
          type: "string"
          enum: [AIRTIME,VOICE,DATA,SOCIAL,COMBO,SMS,ALL,NDAKO,DYNAMICDATA,Burner Cross Sell,Burner Offer One,Burner Upsell]
        - name: "offerMenuId"
          in: "query"
          required: false
          type: "string"
          description: This will be used by 3PP to pass the AuthKey values.
        - name: "validity"
          in: "query"
          required: false
          type: "string"
          enum: [Daily,Weekly,Monthly]
        - name: "category"
          in: "query"
          type: "string"
          description: "Category of the product to be fetched from that catalogue"
          enum: [StandardATL,PersonalizedATL,Burner,All]
        - name: "subCategory"
          in: "query"
          type: "string"
          description: "This can be any of the sub category of the category entered. This may be require only if the category is passed. Subscriber Type can be passed like Prepaid or Postpaid."
        - name: "platform"
          in: "query"
          type: "string"
          description: "This flag correlates to the allPlatforms flag in the response. In essence, its a ‘Flag’ indicating which platform the bundles is being requested for. All - Indicates that all bundles should be returned. ‘Self Service’ - Indicates the bundles are being requested for self-service platforms ‘Assisted Sales’ - Indicates the bundles are being requested for assisted sales channels CSR Only"
        - name: "channel"
          in: "query"
          required: false
          type: "string"
          description: This parameter indicates which channel the response is for. like "All", "IVR", "MTNApp", "USSD", "Portal"
        - name: "bundleState"
          in: "query"
          required: false
          type: "string"
          description: When passed in input ,helps to return only the 'Active' or 'Inactive' or 'All' the bundles . Allowed values 'Active' , 'Inactive' and 'All'.
        - name: "subscriberType"
          in: "query"
          required: false
          type: "string"
          description: The subscriber type associated to the MSISDN entered above. The field can be one of the following values-Converged,Prepaid, MVNO,Contract,Hybrid,EBU,FTTH.The Neon offers will be returned irrespective of the subtye.
        - name: "amount"
          in: "query"
          type: "string"
          description: "Specify the balance amount"
        - name: "topSeller"
          in: "query"
          type: "string"
          description: "When set to 'Yes' output contains both the top selling and regular bundles. When set to 'No' the output contains only the regular bundles. When set to 'All' returns both the top selling and regular bundles .Allowed values 'Yes','No','All'"
        - name: "purchaseMedium"
          in: "query"
          type: "string"
          description: "When passed in input ,helps to return only the matched bundles.Suppose if user tries to buy via Airtime this parameter takes value as 'Airtime' and those applicable bundles are returned.Allowed values 'Card','Airtime','Momo','Loyalty' and 'All'."
        - name: pricePlanId
          in: query
          type: string
          description: >-
            The priceplan ID associated to the MSISDN entered above. Bundles
            that are not applicable to this price plan are excluded from the
            response based on this parameter and also bundles only applicable
            for the price plan is returned.
        - name: "suburb"
          in: "query"
          type: "string"
          description: "Specify the suburb of the customer"
        - name: "city"
          in: "query"
          type: "string"
          description: "Specify the city of the customer"
        - name: "province"
          in: "query"
          type: "string"
          description: "Specify the province of the customer"
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/DynamicProductOffering'
        '400':
          description: Bad Request
          schema:
            $ref: '#/definitions/Error'
        '401':
          description: Unauthorized
          schema:
            $ref: '#/definitions/Error'
        '403':
          description: Forbidden
          schema:
            $ref: '#/definitions/Error'
        '404':
          description: Not Found
          schema:
            $ref: '#/definitions/Error'
        '405':
          description: Method Not allowed
          schema:
            $ref: '#/definitions/Error'
        '409':
          description: Conflict
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: Internal Server Error
          schema:
            $ref: '#/definitions/Error'    
definitions:
  Catalog:
    type: object
    description: >-
      A collection of Product Offerings, intended for a specific
      DistributionChannel, enhanced with additional information such as SLA
      parameters, invoicing and shipping details
    properties:
      id:
        type: string
        description: Unique identifier of the Catalog
      name:
        type: string
        description: Name of the catalog
      href:
        type: string
        description: Unique reference of the catalog
      catalogType:
        type: string
        description: 'Indicates if the catalog is a product, service or resource catalog'
      description:
        type: string
        description: Description of this catalog
      offertype: 
        type: string
        description: Type of catalog e.g., voice,SMS, Data
      price: 
        description: charges of the product
        $ref: '#/definitions/Money'
      validity:
       $ref: '#/definitions/Validity' 
        
      lifecycleStatus:
        type: string
        description: Used to indicate the current lifecycle status
      
      version:
        type: string
        description: Catalog version
      lastUpdate:
        type: string
        format: date-time
        description: Date and time of the last update
      category:
        type: array
        items:
          $ref: '#/definitions/CategoryRef'
        description: List of root categories contained in this catalog
      relatedParty:
        type: array
        items:
          $ref: '#/definitions/RelatedParty'
        description: List of parties involved in this catalog
      validFor:
        $ref: '#/definitions/TimePeriod'
        description: The period for which the catalog is valid
      baseType:
        type: string
        description: 'When sub-classing, this defines the super-class'
      type:
        type: string
        description: 'When sub-classing, this defines the sub-class entity name'
        
  Category:
    type: object
    description: >-
      The category resource is used to group product offerings, service and
      resource candidates in logical containers. Categories can contain other categories and/or product offerings, resource or service candidates.
    properties:
      id:
        type: string
        description: Unique identifier of the category
      href:
        type: string
        description: Holds URI
      description:
        type: string
        description: Description of the category
      isRoot:
        type: boolean
        description: >-
          If true, this Boolean indicates that the category is a root of
          categories
      lastUpdate:
        type: string
        format: date-time
        description: Date and time of the last update
      lifecycleStatus:
        type: string
        description: Used to indicate the current lifecycle status
      name:
        type: string
        description: Name of the category
      parentId:
        type: string
        description: Unique identifier of the parent category
      version:
        type: string
        description: Category version
      type:
        type: string
        description: 'When sub-classing, this defines the sub-class entity name'
      baseType:
        type: string
        description: 'When sub-classing, this defines the super-class'
      productOffering:
        type: array
        items:
          $ref: '#/definitions/ProductOfferingRef'
        description: >-
          A product offering represents entities that are orderable from the
          provider of the catalog, this resource includes pricing information.
      subCategory:
        type: array
        items:
          $ref: '#/definitions/CategoryRef'
        description: >-
          The category resource is used to group product offerings, service and
          resource candidates in logical containers. Categories can contain
          other (sub-)categories and/or product offerings.
      validFor:
        $ref: '#/definitions/TimePeriod'
        description: The period for which the category is valid
  SubCategory:
    type: object
    description: >-
      The category resource is used to group product offerings, service and
      resource candidates in logical containers. Categories can contain other categories and/or product offerings, resource or service candidates.
    properties:
      id:
        type: string
        description: Unique identifier of the category
      href:
        type: string
        description: Holds URI
      description:
        type: string
        description: Description of the category
      isRoot:
        type: boolean
        description: >-
          If true, this Boolean indicates that the category is a root of
          categories
      lastUpdate:
        type: string
        format: date-time
        description: Date and time of the last update
      lifecycleStatus:
        type: string
        description: Used to indicate the current lifecycle status
      name:
        type: string
        description: Name of the category
      parentId:
        type: string
        description: Unique identifier of the parent category
      version:
        type: string
        description: Category version
      type:
        type: string
        description: 'When sub-classing, this defines the sub-class entity name'
      baseType:
        type: string
        description: 'When sub-classing, this defines the super-class'
      productOffering:
        type: array
        items:
          $ref: '#/definitions/ProductOfferingRef'
        description: >-
          A product offering represents entities that are orderable from the
          provider of the catalog, this resource includes pricing information.
      subCategory:
        type: array
        items:
          $ref: '#/definitions/SubCategoryRef'
        description: >-
          The sub category resource is used to group product offerings, service and resource candidates in logical containers. Categories can contain other (sub-)categories and/or product offerings.
      validFor:
        $ref: '#/definitions/TimePeriod'
        description: The period for which the category is valid
  CategoryRef:
    type: object
    description: The category for grouping recommendations
    properties:
      id:
        type: string
        description: Unique identifier of a related entity
      href:
        type: string
        description: Holds URI.
      name:
        type: string
        description: Name of the related entity.
      description:
        type: string
        description: Description of the related entity.
      lifecycleStatus:
        type: string
        description: Used to indicate the current lifecycle status
      version:
        type: string
        description: Category version
      baseType:
        type: string
        description: 'When sub-classing, this defines the super-class'
      type:
        type: string
        description: 'When sub-classing, this defines the sub-class entity name'
      referredType:
        type: string
        description: 'The actual type of the target instance when needed for disambiguation.'
      haSubCategory:
        type: string
        description: Sub category flag . Valid values are 1 for 'has child' and 0 for 'no child' 
      level:
        type: string
        description: Level of navigation at the menu will be displayed.
      
    required:
      - id
  SubCategoryRef:
    type: object
    description: The category for grouping recommendations
    properties:
      id:
        type: string
        description: Unique identifier of a related entity
      href:
        type: string
        description: Holds URI.
      name:
        type: string
        description: Name of the related entity.
      description:
        type: string
        description: Description of the related entity.
      lifecycleStatus:
        type: string
        description: Used to indicate the current lifecycle status
      version:
        type: string
        description: Category version
      baseType:
        type: string
        description: 'When sub-classing, this defines the super-class'
      type:
        type: string
        description: 'When sub-classing, this defines the sub-class entity name'
      referredType:
        type: string
        description: 'The actual type of the target instance when needed for disambiguation.'
    required:
      - id
  Money:
    type: object
    description: A base / value business entity used to represent money
    properties:
      unit:
        type: string
        description: Currency (ISO4217 norm uses 3 letters to define the currency)
      value:
        type: number
        format: float
        description: A positive floating point number
  Validity:
    type: object
    description: A used to represent start date and end date
    properties:
      start date:
        type: string
        description: start date
      expirely date:
        type: string
        description: End date
  Quantity:
    type: object
    description: An amount in a given unit
    properties:
      amount:
        default: 1
        type: number
        format: float
        description: Numeric value in a given unit
      units:
        type: string
        description: Unit
  RelatedParty:
    type: object
    description: >-
      Related Entity reference. A related party defines party or party role
      linked to a specific entity.
    required:
      - id
    properties:
      id:
        type: string
        description: Unique identifier of a related entity.
      name:
        type: string
        description: Name of the related entity.
      role:
        type: string
        description: Role played by the related party
      baseType:
        type: string
        description: 'When sub-classing, this defines the super-class'
      type:
        type: string
        description: 'When sub-classing, this defines the sub-class entity name'
      referredType:
        type: string
        description: The actual type of the target instance when needed for disambiguation.
  TimePeriod:
    type: object
    description: >-
      A period of time, either as a deadline (endDateTime only) a startDateTime
      only, or both
    properties:
      endDateTime:
        type: string
        format: date-time
        description: 'End of the time period, using IETC-RFC-3339 format'
      startDateTime:
        type: string
        format: date-time
        description: >-
          Start of the time period, using IETC-RFC-3339 format. If you define a
          start, you must also define an end
  Response_Catalog:
    type: object
    required: 
      - resultCode
      - resultDescription
      - catalog
    properties:
      resultCode:
        type: string
        description: Result code. Example- '0000'
      resultDescription:
        type: string
        description: Result message. Example- 'Successfully processed'
      transactionId:
        type: string
        description: Transaction id returned by the provider system.
      catalog:
        type: array
        items:
          $ref: '#/definitions/Catalog_level-1'
  
  Catalog_level-1:     
    type: object
    description: >-
      A collection of Product Offerings, intended for a specific
      DistributionChannel, enhanced with additional information such as SLA
      parameters, invoicing and shipping details
    properties:
      id:
        type: string
        description: Unique identifier of the Catalog
        example: 63514374jfgfs
      name:
        type: string
        description: Name of the catalog
        example: Ketir Bundles
  Catalog_level-2:
    type: object
    required:
      - category
    properties:
      name:
        type: string
      businessType:
        type: string  
      version:
        type: string
      lifecycleStatus:
        type: string
      category:
        $ref: '#/definitions/Category_level_2'
        
  Response_Catalog2:        
    type: object
    required: 
      - resultCode
      - resultDescription
      - catalog
    properties:
      resultCode:
        type: string
        description: Result code. Example- '0000'
      resultDescription:
        type: string
        description: Result message. Example- 'Successfully processed'
      transactionId:
        type: string
        description: Transaction id returned by the provider system.
      catalog:
          $ref: '#/definitions/Catalog_level-2'
       
  Category_level_2:
    type: object
    required:
      - productoffering
    properties:
      productoffering:
        $ref: '#/definitions/ProductOffering_level_2'
        
  ProductOffering_level_2:
    type: object
    required:
      - productSpecification
      - id
    properties:
      id:
        type: string
      name: 
        type: string
      productSpecification:
        $ref: '#/definitions/productSpecification'
       
      productOfferingTerm:
        type: array
        items:
          $ref: '#/definitions/ProductTerm'
      productOfferingPrice:
        type: array
        items:
          $ref: '#/definitions/ProductOfferingPriceRef'
  productSpecification:
    type: array
    items:
      $ref: '#/definitions/productSpecificationRef'
  productSpecificationRef:
    type: object
    required:
      - productSpecCharacteristic
    properties:
      id:
        type: string
      name: 
        type: string
      lifeCycleStatus:
        type: string
      href: 
        type: string
      version: 
        type: string
      lastUpdate: 
        type: string
      type: 
        type: string
      productSpecCharacteristic:
        type: array
        items:
          $ref: '#/definitions/ProductSpecCharacteristic'
  ProductSpecCharacteristic:
    type: array
    items:
      $ref: '#/definitions/ProductSpecCharacteristicRef'
  ProductSpecCharacteristicRef:
    type: object
    properties:
      name:
        type: string
      description:
        type: string
      maxCardinality:
        type: string
      minCardinality:
        type: string
      value:
        type: string
        description: A discrete value that the characteristic can take on. the value type is defined by 'valueType' characteristic
      unitOfMeasure:
        type: string
        description: Could be minutes, GB, SMS, minutes
      '@type':
        type: string
        description: description on the type of the resouce eg data, voice,SMS, 
      '@schemaLocation':
        type: string
        description: Hyperlink reference to schema describing this object 
  ProdSpecCharValueUse:
    type: object
    description: A use of the ProdSpecCharacteristicValue by a ProductOffering to which additional properties (attributes) apply or override the properties of similar properties contained in ProdSpecCharacteristicValue. It should be noted that characteristics which their value(s) addressed by this object must exist in corresponding product specification. The available characteristic values for a ProductSpecCharacteristic in a Product specification can be modified at the ProductOffering level. For example, a characteristic 'Color' might have values White, Blue, Green, and Red. But, the list of values can be restricted to e.g. White and Blue in an associated product offering. It should be noted that the list of values in 'ProdSpecCharValueUse' is a strict subset of the list of values as defined in the corresponding product specification characteristics.
    properties:
      name:
        type: string
        description: Name of the associated productSpecCharacteristic
      description:
        type: string
        description: A narrative that explains in detail what the productSpecCharacteristic is
      valueType:
        type: string
        description: A kind of value that the characteristic can take on, such as numeric, text and so forth
      minCardinality:
        type: integer
        description: The minimum number of instances a CharacteristicValue can take on. For example, zero to five phone numbers in a group calling plan, where zero is the value for the minCardinality.
      maxCardinality:
        type: integer
        description: The maximum number of instances a CharacteristicValue can take on. For example, zero to five phone numbers in a group calling plan, where five is the value for the maxCardinality.
      validFor:
        $ref: '#/definitions/TimePeriod'
        description: The period for which the productSpecCharacteristic is valid
      productSpecCharacteristicValue:
        type: array
        items:
          $ref: '#/definitions/ProductSpecCharacteristicRef'
          
  ProductTerm:
    type: object
    description: Description of a productTerm linked to this product. This represent a commitment with a duration
    properties:
      validFor:
        $ref: '#/definitions/validity'
       
  ProductOfferingPriceRef:
    type: object
    properties:
      name:
        type: string
      recurringChargePeriodType:
        type: string
        example: weekly
      priceType:
        type: string
        description: A category that describes the price, such as recurring, discount, allowance, penalty, and so forth.
      recurringChargePeriodLength:
        type: integer
        description: 'the period of the recurring charge:  1, 2, ... .It sets to zero if it is not applicable'
      price:
        $ref: '#/definitions/price'

      constraint:
        type: object
        properties:
          prodSpecCharValueUse:
            type: array
            items:
             $ref: '#/definitions/ProdSpecCharValueUse'
          productOfferingPrice:
            type: object
            properties:
              price:
                type: array
                items:
                  $ref: '#/definitions/price'

  price:
    type: object
    properties:
      value:
        type: number
        description: number representing value of the price/amount
        example: 10
      unit:
        type: string
        description: unit of mesureof the value/amount eg. SSP
        example: SSP
  
  validity:
    type: object
    properties:
      amount:
        type: number
        description: number representing the validity
        example: 7
      unitofmeasure:
        type: string
        description: amount unit of mesure e.g days, month, weekly
        example: days
    
  Response_Category:
    type: object
    required: 
      - resultCode
      - resultDescription
      - data
    properties:
      resultCode:
        type: string
        description: Result code. Example- '0000'
      resultDescription:
        type: string
        description: Result message. Example- 'Successfully processed'
      transactionId:
        type: string
        description: Transaction id returned by the provider system.
      data:
        type: array
        items:
          $ref: '#/definitions/Category'
  Response_Category_ID:
    type: object
    required: 
      - resultCode
      - resultDescription
      - data
    properties:

# --- truncated at 32 KB (44 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/mtn-group/refs/heads/main/openapi/mtn-group-tmf-product-catalog-tmf620.yml