openapi: 3.0.1 info: title: TMF639 Resource Inventory Management Aggregator description: "Provides operations to manage resource entities, including retrieval,\ \ creation, update, deletion, and event notifications." license: name: MADAPI url: https://developers.mtn.com/ version: "2.0" servers: - url: https://api.mtn.com/ description: Generated server url paths: /resource/{msisdn}: patch: tags: - tmf-639-resource-inventory-management-controller summary: Partially updates a Resource description: "This operation allows for partial updates to a Resource entity\ \ using a PATCH request, modifying only specified fields." operationId: updateIMSI parameters: - name: msisdn in: path required: true schema: type: string - name: transactionId in: header required: false schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchRequest' 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' /resource: get: tags: - tmf-639-resource-inventory-management-controller summary: List or find Resource objects description: This operation allows for retrieval then lists or finds Resource objects using various query parameters and filters. operationId: resource parameters: - name: name in: query required: false schema: type: string enum: - SIM - KIT - MSISDN - MOBILE_NUMBER - SIM_NUMBER - IMSI - name: value in: query required: false schema: type: string - name: type in: query required: false schema: type: string enum: - GET_DATA - CHECK_MSISDN - PIN_PUK - SIM - name: businessType in: query required: false schema: type: string enum: - PRE_PAID - POST_PAID - HYBRID - name: resourceStatus in: query required: false schema: type: string enum: - STAND_BY - ALARM - AVAILABLE - RESERVED - UNKNOWN - SUSPENDED - OPERATING - name: msisdn in: query required: false schema: type: string - name: currentImsi in: query required: false schema: type: string - name: limit in: query required: false schema: type: string - name: offset in: query required: false schema: type: string - name: relatedPartyName in: query 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: $ref: '#/components/schemas/ResourceResponse' "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' /resource/{Id}: get: tags: - tmf-639-resource-inventory-management-controller summary: Retrieves a Resource by ID description: This operation performs retrieval of a Resource by ID. Attribute selection is enabled for all first level attributes. operationId: getImei parameters: - name: transactionId in: header required: false schema: type: string - name: x-authorization-claims in: header required: false schema: type: string - name: Id in: path required: true schema: type: string - name: '@type' in: query required: false schema: type: string default: "" - name: fields in: query required: false schema: type: string default: "" - name: providerId in: query required: false schema: type: string default: "" - name: idType in: query required: false schema: type: string default: "" 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' /physicalResource: get: tags: - tmf-639-resource-inventory-management-controller summary: This operation get Physical Resource data from DRM system. description: This operation allows for retrieval of all Physical resource data or specific resource based on the id from the DRM system. operationId: physicalResource parameters: - name: id in: query required: false schema: type: string - name: fields in: query required: false schema: type: string - name: x-country-code in: header required: true schema: type: string - name: transactionId in: header required: false schema: type: string responses: "200": description: Success content: application/json: schema: $ref: '#/components/schemas/DrmPhysicalResourceResponse' "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' /logicalResource: get: tags: - tmf-639-resource-inventory-management-controller summary: This operation gets Physical Resource data from DRM system. description: This operation allows for retrieval of all Logical resource data or specific resource based on the id from the DRM system. operationId: logicalResource parameters: - name: id in: query required: false schema: type: string - name: fields in: query required: false schema: type: string - name: x-country-code in: header required: true schema: type: string - name: transactionId in: header required: false schema: type: string responses: "200": description: Success content: application/json: schema: $ref: '#/components/schemas/DrmPhysicalResourceResponse' "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: APIError: type: object properties: code: type: string reason: type: string message: type: string status: type: string referenceError: type: string '@baseType': type: string '@schemaLocation': type: string '@type': type: string APIResponse: type: object properties: id: type: string href: type: string resultCode: type: string statusCode: type: string statusMessage: type: string resourceCharacteristic: type: array items: $ref: '#/components/schemas/ResourceCharacteristic' deviceDetails: type: array items: $ref: '#/components/schemas/DeviceDetails' transactionId: type: string resultDescription: type: string error: $ref: '#/components/schemas/APIError' data: type: array items: type: object DeviceDetails: type: object properties: imei: type: string imsi: type: string msisdn: type: string simNumber: type: string simType: type: string model: type: string year: type: string manufacturer: type: string ResourceCharacteristic: type: object properties: publicIdentifier: type: string name: type: string value: type: string valueType: type: string code: type: string PatchRequest: type: object properties: note: type: string publicIdentifier: type: string '@type': type: string value: type: string RelatedParty: type: object properties: name: type: string role: type: string '@type': type: string '@baseType': type: string ResourceResponse: type: object properties: id: type: string href: type: string name: type: string businessType: type: array items: type: string resourceType: type: string resourceCharacteristic: type: array items: $ref: '#/components/schemas/ResourceCharacteristic' relatedParty: type: array items: $ref: '#/components/schemas/RelatedParty' status: type: string operationalState: type: string description: type: string resourceStatus: type: string value: type: string cost: type: object isBundle: type: boolean isMNP: type: boolean resourceVersion: type: integer format: int32 startOperatingDate: type: string endOperatingDate: type: string resourceRecycleDate: type: string resourceAccess: type: string bundle: type: boolean mnp: type: boolean '@schemaLocation': type: string '@type': type: string BundledResource: type: object properties: id: type: string href: type: string '@type': type: string '@baseType': type: string '@schemaLocation': type: string Category: type: object properties: id: type: string name: type: string description: type: string code: type: string version: type: integer format: int32 href: type: string '@schemaLocation': type: string Cost: type: object properties: taxFreeValue: type: number format: double taxedValue: type: number format: double unit: type: string DrmPhysicalResource: type: object properties: id: type: string businessType: type: array items: type: string category: type: array items: $ref: '#/components/schemas/Category' place: type: array items: type: string resourceSpecification: type: array items: type: string attachment: type: array items: type: string note: type: array items: $ref: '#/components/schemas/Note' relatedParty: type: array items: $ref: '#/components/schemas/RelatedParty' resourceCharacteristic: type: array items: $ref: '#/components/schemas/ResourceCharacteristic' bundledResources: type: array items: $ref: '#/components/schemas/BundledResource' resourceRelationship: type: array items: type: string href: type: string description: type: string name: type: string resourceVersion: type: integer format: int32 manufactureDate: type: string format: date-time serialNumber: type: string versionNumber: type: string startOperatingDate: type: string format: date-time endOperatingDate: type: string format: date-time operationalState: type: string value: type: string resourceStatus: type: string cost: $ref: '#/components/schemas/Cost' resourceRecycleDate: type: string format: date-time createdAt: type: string updatedAt: type: string resouceStatus: type: string bundle: type: boolean mnp: type: boolean '@baseType': type: string '@type': type: string '@schemaLocation': type: string DrmPhysicalResourceResponse: type: object properties: resources: type: array items: $ref: '#/components/schemas/DrmPhysicalResource' Note: type: object properties: authorRole: type: string author: type: string date: type: string text: 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