MTN TMF Service Activation - TMF640

Service Activation and Configuration API goal is to provide the ability to activate and configure Service. This API features Monitor pattern allowing to manage service configuration/activation asynchronous request (server side will provide monitor as POST/PATCH response).

OpenAPI Specification

mtn-group-tmf-service-activation-tmf678.yml Raw ↑
openapi: 3.0.1
info:
  title: service-activation-aggregator
  description: Service Activation and Configuration API goal is to provide the ability
    to activate and configure Service. This API features Monitor pattern allowing
    to manage service configuration/activation asynchronous request (server side will
    provide monitor as POST/PATCH response).
  license:
    name: MADAPI
    url: https://developers.mtn.com/
  version: 1.0.0
servers:
- url: https://api.mtn.com/
  description: Generated server url
paths:
  /service/{id}:
    get:
      tags:
      - service-activation-controller
      summary: Retrieves a Service by ID
      description: This endpoint retrieves the status of a service by its ID. It supports
        various query parameters to filter the response.
      operationId: retrieveStatus
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      - name: transactionId
        in: query
        required: false
        schema:
          type: string
      - name: fields
        in: query
        required: false
        schema:
          type: string
      - name: servicePlan
        in: query
        required: false
        schema:
          type: string
      - name: targetSystem
        in: query
        required: false
        schema:
          type: string
      - name: queryType
        in: query
        required: false
        schema:
          type: string
      - name: idType
        in: query
        required: false
        schema:
          type: string
      - name: x-origin-channelid
        in: header
        required: false
        schema:
          type: string
      - name: x-country-code
        in: header
        required: false
        schema:
          type: string
      - name: transactionId
        in: header
        required: false
        schema:
          type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorResponse'
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorResponse'
        "500":
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerErrorResponse'
    put:
      tags:
      - service-activation-controller
      summary: Updates the status of a Service
      description: This endpoint updates the status of a service by its ID using the
        provided request body. It supports various headers.
      operationId: updateStatus
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      - name: targetSystem
        in: header
        required: false
        schema:
          type: string
      - name: transactionId
        in: header
        required: false
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ActHLRfresh'
        required: true
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorResponse'
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorResponse'
        "500":
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerErrorResponse'
    delete:
      tags:
      - netflix-integration-controller
      summary: This operation deletes a Subscriber
      description: "This operation deletes a subscriber for Netflix functionality\
        \ by ID, including entitlement and cancellation handling."
      operationId: netflixIntegrationDeleteReq
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      - name: transactionId
        in: header
        required: true
        schema:
          type: string
      - name: x-country-code
        in: header
        required: true
        schema:
          type: string
      - name: targetSystem
        in: header
        required: false
        schema:
          type: string
      - name: serviceProviderID
        in: header
        required: false
        schema:
          type: string
      - name: cancellationReason
        in: header
        required: false
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Service'
        required: true
      responses:
        "204":
          description: Deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorResponse'
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorResponse'
        "500":
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerErrorResponse'
    patch:
      tags:
      - netflix-integration-controller
      summary: This operation upgrades a Service entity
      description: "This operation updates a Service entity for Netflix functionality,\
        \ including handling upgrade and provisioning logic."
      operationId: netflixIntegrationUpgrade
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      - name: transactionId
        in: header
        required: false
        schema:
          type: string
      - name: x-country-code
        in: header
        required: true
        schema:
          type: string
      - name: targetSystem
        in: header
        required: false
        schema:
          type: string
      - name: partnerName
        in: header
        required: false
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Service'
        required: true
      responses:
        "200":
          description: Updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorResponse'
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorResponse'
        "500":
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerErrorResponse'
  /service:
    post:
      tags:
      - netflix-integration-controller
      summary: This operation creates a Service entity
      description: "This operation creates a Service entity for Netflix functionality,\
        \ including handling provisioning and integration logic."
      operationId: netflixIntegrationEnroll
      parameters:
      - name: transactionId
        in: header
        required: false
        schema:
          type: string
      - name: targetSystem
        in: header
        required: true
        schema:
          type: string
      - name: x-origin-channelid
        in: header
        required: false
        schema:
          type: string
      - name: x-country-code
        in: header
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Service'
        required: true
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/APIResponse'
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorResponse'
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorResponse'
        "500":
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerErrorResponse'
  /service/license:
    post:
      tags:
      - license-aggregator-controller
      summary: Create a new license for a specified target system.
      description: "Validates the license request, sets its type, and delegates creation\
        \ to the service layer with structured response."
      operationId: createLicense
      parameters:
      - name: targetSystem
        in: query
        required: true
        schema:
          type: string
      - name: extTransactionId
        in: header
        required: false
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LicenseRequest'
        required: true
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/APIResponse'
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorResponse'
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorResponse'
        "500":
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerErrorResponse'
  /service/callback/{countryCode}/{consumer}/{requestType}:
    post:
      tags:
      - netflix-integration-controller
      summary: This operation deletes a Subscriber
      description: "This operation is used to notify the third-party provider (3pp)\
        \ with the entitlement result, ensuring accurate updates regarding the subscriber's\
        \ entitlement status and any related changes."
      operationId: bokuCallBack
      parameters:
      - name: consumer
        in: path
        required: true
        schema:
          type: string
          enum:
          - Comviva
      - name: countryCode
        in: path
        required: true
        schema:
          type: string
      - name: requestType
        in: path
        required: true
        schema:
          type: string
          enum:
          - GET_DATA
          - TYPE_5G
          - FOUR_G
          - CHECK_IMEI
          - SERVICE_ACTIVATION
          - LICENSE_SERVICE
          - GET_VLR
          - SMS_MO
          - PDP
          - NETFLIX
          - getNetQuery
          - ActHLRfresh
          - CreateEntitlement
          - CheckEntitlementStatus
          - ActivateEntitlement
          - UpdateEntitlement
          - SuspendEntitlement
          - ResumeEntitlement
          - CancelEntitlement
      - name: X-Fortumo-Content-Signature
        in: header
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
        required: true
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/APIResponse'
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorResponse'
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorResponse'
        "500":
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerErrorResponse'
  /bundle/callback/{entitlementType}:
    post:
      tags:
      - netflix-integration-controller
      summary: Boku Call Back
      description: "This operation handles the Boku callback by the entitlement type,\
        \ processing incoming data and responding accordingly."
      operationId: callBack
      parameters:
      - name: entitlementType
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BokuCallback'
        required: true
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BokuCallbackResponse'
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorResponse'
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorResponse'
        "500":
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerErrorResponse'
  /service/license/{id}:
    get:
      tags:
      - license-aggregator-controller
      summary: Retrieve license details using ID
      description: "This gets the license information based on the provided ID and\
        \ ID type, with optional target system and transaction ID."
      operationId: esetGetLicense
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      - name: idType
        in: query
        required: true
        schema:
          type: string
      - name: targetSystem
        in: query
        required: false
        schema:
          type: string
      - name: extTransactionId
        in: header
        required: false
        schema:
          type: string
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/APIResponse'
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorResponse'
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorResponse'
        "500":
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerErrorResponse'
    patch:
      tags:
      - license-aggregator-controller
      summary: Update license details for a given ID
      description: "This handles license updates by validating the request data, logging\
        \ the transaction, and invoking service logic by ID."
      operationId: updateLicense
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      - name: targetSystem
        in: query
        required: false
        schema:
          type: string
      - name: x-origin-channelid
        in: header
        required: false
        schema:
          type: string
      - name: transactionId
        in: header
        required: false
        schema:
          type: string
      - name: extTransactionId
        in: header
        required: false
        schema:
          type: string
      - name: x-country-code
        in: header
        required: false
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LicenseRequest'
        required: true
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/APIResponse'
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorResponse'
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorResponse'
        "500":
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerErrorResponse'
components:
  schemas:
    ActHLRfresh:
      type: object
      properties:
        serviceType:
          type: string
        servicePlan:
          type: string
    APIResponse:
      type: object
      properties:
        _links:
          $ref: '#/components/schemas/Links'
    Links:
      type: object
      additionalProperties:
        $ref: '#/components/schemas/Link'
    AdditionalInfo:
      type: object
      properties:
        name:
          type: string
        value:
          type: string
    Feature:
      type: object
      properties:
        featureCharacteristic:
          type: array
          items:
            $ref: '#/components/schemas/FeatureCharacteristics'
    RelatedEntity:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        role:
          type: string
        '@referredType':
          type: string
    RelatedParty:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        role:
          type: string
        phoneNumber:
          type: string
        email:
          type: string
        '@referredType':
          type: string
    RelatedServiceOrderItem:
      type: object
      properties:
        itemId:
          type: string
        role:
          type: string
        cancellationReason:
          type: string
        serviceOrderHref:
          type: string
        serviceOrderId:
          type: string
        itemAction:
          type: string
        '@referredType':
          type: string
    Service:
      type: object
      properties:
        category:
          type: string
        description:
          type: string
        feature:
          type: array
          items:
            $ref: '#/components/schemas/Feature'
        relatedEntity:
          type: array
          items:
            $ref: '#/components/schemas/RelatedEntity'
        relatedParty:
          type: array
          items:
            $ref: '#/components/schemas/RelatedParty'
        serviceSpecification:
          $ref: '#/components/schemas/ServiceSpecification'
        serviceCharacteristics:
          type: array
          items:
            $ref: '#/components/schemas/ServiceCharacteristics'
        relatedServiceOrderItem:
          type: array
          items:
            $ref: '#/components/schemas/RelatedServiceOrderItem'
        state:
          type: string
        name:
          type: string
        serviceDate:
          type: string
        startDate:
          type: string
        startMode:
          type: string
        '@type':
          type: string
    ServiceCharacteristics:
      type: object
      properties:
        name:
          type: string
        value:
          type: string
        additionalInfo:
          type: array
          items:
            $ref: '#/components/schemas/AdditionalInfo'
    ServiceSpecification:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        partner:
          type: string
        '@type':
          type: string
    LicenseRequest:
      type: object
      properties:
        idType:
          type: string
        endDate:
          type: string
          format: date-time
        startDate:
          type: string
          format: date-time
        serviceOrderItem:
          type: array
          items:
            $ref: '#/components/schemas/ServiceOrderItem'
        relatedEntity:
          type: array
          items:
            $ref: '#/components/schemas/RelatedEntity'
        relatedParty:
          type: array
          items:
            $ref: '#/components/schemas/RelatedParty'
        note:
          $ref: '#/components/schemas/Note'
        quantity:
          type: integer
          format: int32
        dealCode:
          type: string
        type:
          type: string
        id:
          type: string
        status:
          type: string
        category:
          type: string
        validity:
          $ref: '#/components/schemas/Validity'
        serviceType:
          type: string
        name:
          type: string
    Note:
      type: object
      properties:
        id:
          type: string
        text:
          type: string
    Payment:
      type: object
      properties:
        paymentType:
          type: string
        billingInterval:
          type: string
        invoicingInterval:
          type: integer
          format: int32
        invoicingType:
          type: string
    ServiceOrderItem:
      type: object
      properties:
        itemId:
          type: string
        serviceOrderId:
          type: string
        itemAction:
          type: string
        payment:
          $ref: '#/components/schemas/Payment'
    Validity:
      type: object
      properties:
        validityType:
          type: integer
          format: int32
        expirationDate:
          type: string
    BokuCallbackResponse:
      type: object
      properties:
        code:
          type: string
        status:
          type: string
        message:
          type: string
        requestId:
          type: string
        transactionId:
          type: string
    BokuCallback:
      type: object
      properties:
        platformId:
          type: string
        callbackType:
          type: string
        merchantReference:
          type: string
        operationReference:
          type: string
        entitlementState:
          type: string
        entitlementId:
          type: string
        billingIdentity:
          type: string
        timestamp:
          type: string
        entitlementCreated_at:
          type: string
    ApiResponse:
      type: object
      properties:
        transactionId:
          type: string
        sequenceNo:
          type: string
        statusCode:
          type: string
        statusMessage:
          type: string
        supportMessage:
          type: string
        _links:
          $ref: '#/components/schemas/Links'
        category:
          type: string
        description:
          type: string
        feature:
          type: array
          items:
            $ref: '#/components/schemas/Feature'
        features:
          type: array
          items:
            $ref: '#/components/schemas/Feature'
        relatedEntity:
          type: array
          items:
            $ref: '#/components/schemas/RelatedEntity'
        relatedParty:
          type: array
          items:
            $ref: '#/components/schemas/RelatedParty'
        serviceSpecification:
          $ref: '#/components/schemas/ServiceSpecification'
        supportingService:
          type: array
          items:
            $ref: '#/components/schemas/SupportingService'
        note:
          type: array
          items:
            $ref: '#/components/schemas/Note'
        state:
          type: string
        timestamp:
          type: string
        errorDescription:
          type: string
        path:
          type: string
        method:
          type: string
        '@type':
          type: string
        Bundle:
          $ref: '#/components/schemas/Bundle'
        Subscription:
          $ref: '#/components/schemas/Subscription'
        HasPartnerMop:
          type: string
        ProductType:
          type: string
        SuspendStatus:
          type: string
        SuspendEventID:
          type: string
        NetflixTransactionID:
          type: string
        UnsuspendStatus:
          type: string
        UnsuspendEventID:
          type: string
        data:
          type: object
    Bundle:
      type: object
      properties:
        Id:
          type: string
        OfferId:
          type: string
        Status:
          type: string
    FeatureCharacteristics:
      type: object
      properties:
        value:
          type: string
        id:
          type: string
        name:
          type: string
    Plan:
      type: object
      properties:
        Type:
          type: string
        LocalizedType:
          type: string
    SpServiceCharacteristics:
      type: object
      properties:
        name:
          type: string
        value:
          type: string
    Subscription:
      type: object
      properties:
        Plan:
          $ref: '#/components/schemas/Plan'
    SupportingService:
      type: object
      properties:
        serviceCharacteristic:
          type: array
          items:
            $ref: '#/components/schemas/SpServiceCharacteristics'
        description:
          type: string
    BadRequestErrorResponse:
      type: object
      properties:
        statusCode:
          type: string
          example: "5000"
        statusMessage:
          type: string
          example: INVALID_INPUT_PARAMETERS
        supportMessage:
          type: string
          example: The input parameters provided are invalid.
        httpStatus;:
          type: object
          example:
            code: 400
            series: CLIENT_ERROR
            reason: Bad Request
        timestamp:
          type: string
          example: 2025-08-05T20:57:21Z
    UnauthorizedErrorResponse:
      type: object
      properties:
        statusCode:
          type: string
          example: "4000"
        statusMessage:
          type: string
          example: Unauthorized
        supportMessage:
          type: string
          example: The supplied authentication is invalid.
        httpStatus;:
          type: object
          example:
            code: 401
            series: CLIENT_ERROR
            reason: Unauthorized
        timestamp:
          type: string
          example: 2025-08-05T20:57:21Z
    ServerErrorResponse:
      type: object
      properties:
        statusCode:
          type: string
          example: "3001"
        statusMessage:
          type: string
          example: INTERNAL_SERVER_ERROR
        supportMessage:
          type: string
          example: An internal server error occurred and processing could not be completed.
        httpStatus;:
          type: array
          example:
            code: 500
            series: SERVER_ERROR
            reason: Internal Server Error
        timestamp:
          type: string
          example: 2025-08-05T20:57:21Z
    Link:
      type: object
      properties:
        href:
          type: string
        hreflang:
          type: string
        title:
          type: string
        type:
          type: string
        deprecation:
          type: string
        profile:
          type: string
        name:
          type: string
        templated:
          type: boolean