openapi: 3.0.1 info: title: Agent Profile Aggregator description: Agent Profile Aggregator An API to retrieve the profile of an MTN field agent. Please refer to the reference guides https://developers.mtn.com/getting-started and Response license: name: MADAPI url: https://developers.mtn.com/ version: v1.0 servers: - url: https://api.mtn.com/ description: Generated server url paths: /{agentId}/tracking: post: tags: - agent-profile-management-service-controller summary: Confirm Installation. description: Confirm Installation submit app installation confirmation details to the API. This endpoint is used to submit app installation confirmation details to the API. operationId: addAppInstallationConfirmationDetails parameters: - name: agentId in: path required: true schema: type: string - name: x-origin-channelid in: header required: false schema: type: string default: "" requestBody: content: application/json: schema: $ref: '#/components/schemas/InstallationConfirmationDetailsRequest' required: true responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/AgentTrackingResponse' "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' /{agentId}: get: tags: - agent-profile-management-service-controller summary: View agent profile. description: "Retrieves the profile of a MTN field agent. Accept ID of the agent.\ \ It could be MSISDN, email address, or any other agent identifier. if id\ \ is msisdn, format must be E.123" operationId: viewAgentProfile parameters: - name: agentId in: path required: true schema: type: string - name: fields in: query required: false schema: type: string - name: channel in: query required: false schema: type: string - name: description in: query required: false schema: type: string - name: nodeId in: query required: false schema: type: string - name: transactionId in: query required: false schema: type: string - name: userId in: query required: false schema: type: string - name: targetSystem in: query required: false schema: type: string - name: X-Authorization in: header required: false schema: type: string - name: x-origin-channelid in: header required: false schema: type: string default: "" responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/APIResponseObject' "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: InstallationConfirmationDetailsRequest: type: object properties: appCode: type: string msisdn: type: string imei: type: string phoneOsVersion: type: string imsi: type: string sourceChannel: type: string deviceLocation: type: string AgentTrackingResponse: type: object properties: statusCode: type: string statusMessage: type: string sequenceNo: type: string timestamp: type: string APIError: type: object properties: statusMessage: type: string supportMessage: type: string transactionId: type: string timestamp: type: string path: type: string method: type: string statusCode: type: string downstreamStatusCode: type: integer format: int32 sequenceNo: type: string APIResponseObject: type: object properties: statusCode: type: string statusMessage: type: string supportMessage: type: string transactionId: type: string data: type: object customerId: type: string error: $ref: '#/components/schemas/APIError' timeStamp: type: string path: type: string method: type: string sequenceNo: type: string httpStatus: type: string enum: - 100 CONTINUE - 101 SWITCHING_PROTOCOLS - 102 PROCESSING - 103 EARLY_HINTS - 103 CHECKPOINT - 200 OK - 201 CREATED - 202 ACCEPTED - 203 NON_AUTHORITATIVE_INFORMATION - 204 NO_CONTENT - 205 RESET_CONTENT - 206 PARTIAL_CONTENT - 207 MULTI_STATUS - 208 ALREADY_REPORTED - 226 IM_USED - 300 MULTIPLE_CHOICES - 301 MOVED_PERMANENTLY - 302 FOUND - 302 MOVED_TEMPORARILY - 303 SEE_OTHER - 304 NOT_MODIFIED - 305 USE_PROXY - 307 TEMPORARY_REDIRECT - 308 PERMANENT_REDIRECT - 400 BAD_REQUEST - 401 UNAUTHORIZED - 402 PAYMENT_REQUIRED - 403 FORBIDDEN - 404 NOT_FOUND - 405 METHOD_NOT_ALLOWED - 406 NOT_ACCEPTABLE - 407 PROXY_AUTHENTICATION_REQUIRED - 408 REQUEST_TIMEOUT - 409 CONFLICT - 410 GONE - 411 LENGTH_REQUIRED - 412 PRECONDITION_FAILED - 413 PAYLOAD_TOO_LARGE - 413 REQUEST_ENTITY_TOO_LARGE - 414 URI_TOO_LONG - 414 REQUEST_URI_TOO_LONG - 415 UNSUPPORTED_MEDIA_TYPE - 416 REQUESTED_RANGE_NOT_SATISFIABLE - 417 EXPECTATION_FAILED - 418 I_AM_A_TEAPOT - 419 INSUFFICIENT_SPACE_ON_RESOURCE - 420 METHOD_FAILURE - 421 DESTINATION_LOCKED - 422 UNPROCESSABLE_ENTITY - 423 LOCKED - 424 FAILED_DEPENDENCY - 425 TOO_EARLY - 426 UPGRADE_REQUIRED - 428 PRECONDITION_REQUIRED - 429 TOO_MANY_REQUESTS - 431 REQUEST_HEADER_FIELDS_TOO_LARGE - 451 UNAVAILABLE_FOR_LEGAL_REASONS - 500 INTERNAL_SERVER_ERROR - 501 NOT_IMPLEMENTED - 502 BAD_GATEWAY - 503 SERVICE_UNAVAILABLE - 504 GATEWAY_TIMEOUT - 505 HTTP_VERSION_NOT_SUPPORTED - 506 VARIANT_ALSO_NEGOTIATES - 507 INSUFFICIENT_STORAGE - 508 LOOP_DETECTED - 509 BANDWIDTH_LIMIT_EXCEEDED - 510 NOT_EXTENDED - 511 NETWORK_AUTHENTICATION_REQUIRED _links: $ref: '#/components/schemas/Links' Links: type: object additionalProperties: $ref: '#/components/schemas/Link' 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