MTN Product Catalogue Management

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

OpenAPI Specification

mtn-group-product-catalogue-management.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/oauth/client_credential/accesstoken
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: false
          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'
        - name: startDate
          description: Request Start Date
          required: false
          in: query
          type: integer
        - name: endDate
          in: query
          required: false
          type: string
          description: Request End Date
        - name: targetSystem
          in: header
          enum: [DSM,DCML]
          x-example: DCML
          type: string
          description: Target System

      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
      primaryURL:
        type: string
      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
      serviceMetadata:
        type: array
        items:
          $ref: '#/definitions/ServiceMetaData'
        description: List of root service meta data contained in this catalog
      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'
      serviceType:
        type: string
        description: Service type
      serviceName:
        type: string
        description: Service name
      tenantId:
        type: string
        description: Tenant id
      tenantName:
        type: string
        description: Tenant name
      requestType:
        type: string
        description: Request type
      catalogCategory:
        type: string
        description: Category
      chargingMode:
        type: string
        description: Mode of charging
      serviceValidity:
        type: string
        description: Validity of the service
      serviceMsgList:
        type: string
        description: Service type Message List
      status:
        type: string
        description: service status
      activeStatus:
        type: string
        description: Active state of Service
      consentKeywords:
        type: string
        description: Consent keywords
      typeOfService:
        type: string
        description: Type of service
      consentRequired:
        type: boolean
        description: Is Consent Required
      gatewayCharging:
        type: string
        description: Gateway charging
      freeCounter:
        type: string
      priceQueryReq:
        type: boolean
        description: Price query required
      balanceQueryReq:
        type: boolean
        description: Balance query required
      access:
        type: string
        description: Access
      freeMOService:
        type: string
        description: Free MO Service
      ready:
        type: string
        description: State
      subMtCpDaily:
        type: string
      mtPushEnabled:
        type: string
      shortCode:
        type: string
      directSubscription:
        type: string
      thirdConsentRequired:
        type: string
      planLinked:
        type: string
      spId:
        type: string
      dndCheck:
        type: string
      fallbackConsentRequired:
        type: string
      servicePausable:
        type: string
      promoContentMtLimited:
        type: string
      familyPlanReq:
        type: string
      fBreqFamilyPlan:
        type: string
      notificationReqFamilyPlan:
        type: string
      offNet:
        type: string
      callbackRegRequired:
        type: string
      amountBasedChargingReq:
        type: string
      consentReqFreePlan:
        type: string
      chargingReqFreePlan:
        type: string
      dndCategory:
        type: string
      dndCategoryMap:
        type: object
      serviceValidityMap:
        type: object
      typeOfServiceMap:
        type: object
      userTypeMap:
        type: object
      cli:
        type: string
      secondarySpId:
        type: string
      secondarySpName:
        type: string
      isServicePauseable:
        type: string
      promoContentMtLimitEnabled:
        type: string
      isFamilyPlanReq:
        type: string
      isFbReqFamilyPlan:
        type: string
      isNotifReqFamilyPlan:
        type: string
      noOfFamilyMembersList:
        type: array
        items:
          type: string
      serviceImageList:
        type: array
        items:
          type: string
      isAmountBasedChargingReq:
        type: string
      isPackRequired:
        type: string
      isConsentReqFreePlan:
        type: string
      isChargingReqFreePlan:
        type: string
      giftOptionEnabled:
        type: string
      isDirectCallbackReq:
        type: string

  ServiceMetaData:
    type: object
    properties:
      serviceName:
        type: string
        example: "Zoom Package"
      serviceDesc:
        type: string
        example: "Zoom Package"
      languageId:
        type: string
        example: "1"
      languageName:
        type: string
        example: "en"
      keyword:
        type: string
        example: "English"
      image:
        type: string
        example: []


  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.
      renewalPrice:
        type: string
      renewalPricePoint:
        type: string
      pricePoint:
        type: string
      renewalLifecycleId:
        type: string
      lifecycleId:
        type: string
      validityPeriod:
        type: string
      gracePeriod:
        type: string
      suspendPeriod:
        type: string
      parkingPeriod:
        type: string
      allowInGrace:
        type: string
      disableFallback:
        type: string
      autoRenew:
        type: string
      isfallBackReq:
        type: string
      startDate:
        type: string
      endDate:
        type: string
      isFoc:
        type: string
      timeDurationList:
        type: array
        items:
          type: string
        maxItems: 0
      specialDaysList:
        type: array
        items:
          type: string
        maxItems: 0
      focDaysList:
        type: array
        items:
          type: string
        maxItems: 0
      renValPeriod:
        type: string
      planMsgList:
        type: array
        items:
          $ref: '#/definitions/PlanMessage'
      isRenFbReg:
        type: string
      isGraceChargeble:
        type: string
      isSuspendChargeable:
        type: string
      allowInSuspend:
        type: string
      isParkingChargeable:
        type: string
      allowInParking:
        type: string
      deactivationMode:
        type: string
      periodicityPlan:
        type: string
      periodicityPeriod:
        type: string
      resubsAllowed:
        type: string
      renewalPlanId:
        type: string
      validityType:
        type: string
      microChargingEnabled:
        type: string
      preRenewalConsent:
        type: string
      isOneOffReq:
        type: string
      failAction:
        type: string
      isFamilyPlan:
        type: string
      discountAmount:
        type: string
      discountPercentage:
        type: string
      discountText:
        type: string
      promoText:
        type: string
      subPrice:
        type: string
      planMetadata:
        type: array
        items:
          $ref: '#/definitions/PlanMetaData'

    required:
      - id


  PlanMessage:
    type: object
    properties:
      msgTypeId:
        type: string
      msgTypeName:
        type: string
      isFrequencyRequest:
        type: string
        enum:
          - "0"
          - "1"
      frequencyId:
        type: string
      frequency:
        type: string
      active:
        type: string
      msgList:
        type: array
        items:
          $ref: '#/definitions/MessageList'

  MessageList:
    type: object
    properties:
      msgId:
        type: string
      msgTypeId:
        type: string
      languageCode:
        type: string
      language:
        type: string
      message:
        type: string
      isFilled:
        type: string
      renewalMessage:
        type: string

  PlanMetaData:
    type: object
    properties:
      planMetadataId:
        type: string
      planId:
        type: string
      planName:
        type: string
      promoText:
        type: string
      description:
        type: string
      discountText:
        type: string
      validityType:
        type: string
      languageId:
        type: string
      searchKeyword:
        type: string


  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
  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.
      pageSize:
        type: string
        description: Catalog Page Size
        example: 1
      next:
        type: string
        example: 5
      previous:
        type: string
        example: 0
      responseCount:
        type: string
        description: Catalog Response Size - Actual Number of catalog items returned
        example: 4
      offset:
        type: string
        description: Catalog offset
      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/SubCategory'
  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"