MTN Product Catalog Management V1

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

OpenAPI Specification

mtn-group-product-catalog-management-v1.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: /productCatalogManagement/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/accesstoken?grant_type=client_credentials"

    
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: "senderId"
          in: query
          required: true
          type: string
          description: 'Provide the channel information'
          x-example: 'IVR'
        - 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: offset
          description: Requested index for start of resources to be provided in response
          required: false
          in: query
          type: integer
        - name: limit
          description: Requested number of resources to be provided in response
          required: false
          in: query
          type: integer
        - 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_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'
 /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'
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
      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
      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 catalog
      version:
        type: string
        description: Catalog version
      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
  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.
    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
  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
      - 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/Catalog'
  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:
      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:
        $ref: '#/definitions/Category'
  ProductOfferingRef:
    type: object
    required:
     - id
    properties:
      id:
       type: string
       description: Unique identifier of a related entity. This can be product id or offer id etc.
      name:
        type: string
        description: Name of the related entity. This can be product name or offer name etc.
      type:
        type: string
        description: Type of a product or offer,e.g., weekly, daily, monthly etc.
      description:
        type: string
      occurance:
        type: string
        enum:
         - autoRenew
         - onceOff
      isChargable:
        type: boolean
      price:
        $ref : "#/definitions/Money"
      productSpecification:
        $ref: "#/definitions/ProductSpecificationRef"
      referredType:
        type: string
        description: The actual type of the target instance when needed for disambiguation.
      baseType:
        type: string
        description: 'When sub-classing, this defines the super-class'
  ProductSpecificationRef:
    type: object
    properties:
      id:
       type: string
       description: Unique identifier of a related entity. This can be product id or offer id etc.
      name:
        type: string
        description: Name of the related entity. This can be product name or offer name etc.
      type:
        type: string
        description: Type of a product or offer,e.g., Data, SMS, Voice etc.
      validity:
        type : string
        description : Validity of a product or offer.
      quantity:
        $ref: "#/definitions/Quantity"
  Error:
    type: "object"
    title: "Error"
    required:
      - "status"
      - "message"
    properties:
      timestamp:
        type: "string"
        format: "date-time"
        description: "Time stamp of the error"
      status:
        type: "string"
        description: "Status/Error code returned from the provider system"
      error:
        type: "string"
        description: "Status/Error description"
      message:
        type: "string"
        description: "More error details and corrective measures"
      path:
        type: "string"
        description: "the path that caused the error"