openapi: 3.0.1 info: title: TMF658 Loyalty Management description: This API is used for managing customer loyalty operations. Can also be used by 3rd-party partners (3PP) to get a customer's loyalty products and rewards. license: name: MADAPI url: https://developers.mtn.com/ version: 3.0.0 - Last updated date:2026-09-11 13:54:14 servers: - url: https://api.mtn.com/v1 description: Production Server security: - OAuth2: [] tags: - name: Tmf658LoyaltyManagement paths: /loyaltyMember/{memberId}/loyaltyBalance: get: tags: - Tmf658LoyaltyManagement summary: This operation retrieves loyalty program member accounts balance. description: Request for View Loyalty Point Balance details. This operation retrieves the loyalty point balance for a specific member. operationId: LoyaltyManagementService_get_getViewLoyaltyPointBalance_loyaltyMembermemberI parameters: - name: memberId 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 responses: "200": description: HTTP 200 indicating the request succeeded; the response body follows the documented schema for this operation and includes correlation identifiers where applicable for traceability across MTN MADAPI TMF658 Loyalty Management flows. content: application/json: schema: title: LoyaltyBalanceResponse type: object properties: result: $ref: '#/components/schemas/com_mtn_aggregator_models_response_Result' data: title: LoyaltyBalanceResponseData type: object properties: availablePoints: type: string listResponse: type: array items: title: ListResponse type: object properties: createdDate: type: string modifiedDate: type: string id: type: string quantity: title: Quantity type: object properties: unit: type: string balance: type: string redeemedQuantity: $ref: '#/components/schemas/com_mtn_aggregator_models_response_loyalty_RedeemedQuantity' loyaltyProgramMember: $ref: '#/components/schemas/com_mtn_aggregator_models_response_loyalty_LoyaltyProgramMember' loyaltyProgramProductSpecification: title: LoyaltyProgramProductSpecification type: object properties: id: type: string "400": description: "Bad request. Invalid request parameters, missing required\ \ fields, or validation errors." content: application/json: schema: $ref: '#/components/schemas/APIError' example: statusCode: "400" statusMessage: "Bad request. Invalid request parameters, missing required\ \ fields, or validation errors." supportMessage: API_ERROR transactionId: "1234567890" sequenceNo: "20250115120000001" timestamp: 2025-01-15T12:00:00Z "401": description: "Unauthorized. Invalid or missing authorization credentials,\ \ insufficient permissions, or authentication failure." content: application/json: schema: $ref: '#/components/schemas/APIError' example: statusCode: "401" statusMessage: "Unauthorized. Invalid or missing authorization credentials,\ \ insufficient permissions, or authentication failure." supportMessage: API_ERROR transactionId: "1234567890" sequenceNo: "20250115120000001" timestamp: 2025-01-15T12:00:00Z "403": description: Forbidden. Access denied. The request is valid but the server refuses to perform it. content: application/json: schema: $ref: '#/components/schemas/APIError' example: statusCode: "403" statusMessage: Forbidden. Access denied. The request is valid but the server refuses to perform it. supportMessage: API_ERROR transactionId: "1234567890" sequenceNo: "20250115120000001" timestamp: 2025-01-15T12:00:00Z "404": description: Not found. The requested resource was not found or does not exist. content: application/json: schema: $ref: '#/components/schemas/APIError' example: statusCode: "404" statusMessage: Not found. The requested resource was not found or does not exist. supportMessage: API_ERROR transactionId: "1234567890" sequenceNo: "20250115120000001" timestamp: 2025-01-15T12:00:00Z "500": description: "Internal server error. Unexpected system failure, database\ \ connectivity issues, or external service integration problems." content: application/json: schema: $ref: '#/components/schemas/APIError' example: statusCode: "500" statusMessage: "Internal server error. Unexpected system failure,\ \ database connectivity issues, or external service integration\ \ problems." supportMessage: API_ERROR transactionId: "1234567890" sequenceNo: "20250115120000001" timestamp: 2025-01-15T12:00:00Z "502": description: Bad gateway. The server acting as a gateway received an invalid response from an upstream server. content: application/json: schema: $ref: '#/components/schemas/APIError' example: statusCode: "502" statusMessage: Bad gateway. The server acting as a gateway received an invalid response from an upstream server. supportMessage: API_ERROR transactionId: "1234567890" sequenceNo: "20250115120000001" timestamp: 2025-01-15T12:00:00Z "503": description: Service unavailable. The server is temporarily unable to handle the request due to maintenance or overload. content: application/json: schema: $ref: '#/components/schemas/APIError' example: statusCode: "503" statusMessage: Service unavailable. The server is temporarily unable to handle the request due to maintenance or overload. supportMessage: API_ERROR transactionId: "1234567890" sequenceNo: "20250115120000001" timestamp: 2025-01-15T12:00:00Z deprecated: false post: tags: - Tmf658LoyaltyManagement summary: This operation transfers loyalty points between members. description: Request for Loyalty Point Balance Transfer. This operation allows the transfer of loyalty points from one member to another. operationId: LoyaltyManagementService_post_loyaltyPointBalanceTransfer_loyaltyMembermemberI parameters: - name: memberId 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 requestBody: content: application/json: schema: title: LoyaltyPointsTransferRequest type: object properties: toLoyaltyProgrammeMember: type: string pointsToBeTransferred: type: integer format: int32 required: true responses: "200": description: HTTP 200 indicating the request succeeded; the response body follows the documented schema for this operation and includes correlation identifiers where applicable for traceability across MTN MADAPI TMF658 Loyalty Management flows. content: application/json: schema: title: LoyaltyPointsTransferResponse type: object properties: result: $ref: '#/components/schemas/com_mtn_aggregator_models_response_Result' loyaltyTransferResponse: title: TransferResponse type: object properties: response: type: string "400": description: "Bad request. Invalid request parameters, missing required\ \ fields, or validation errors." content: application/json: schema: $ref: '#/components/schemas/APIError' example: statusCode: "400" statusMessage: "Bad request. Invalid request parameters, missing required\ \ fields, or validation errors." supportMessage: API_ERROR transactionId: "1234567890" sequenceNo: "20250115120000001" timestamp: 2025-01-15T12:00:00Z "401": description: "Unauthorized. Invalid or missing authorization credentials,\ \ insufficient permissions, or authentication failure." content: application/json: schema: $ref: '#/components/schemas/APIError' example: statusCode: "401" statusMessage: "Unauthorized. Invalid or missing authorization credentials,\ \ insufficient permissions, or authentication failure." supportMessage: API_ERROR transactionId: "1234567890" sequenceNo: "20250115120000001" timestamp: 2025-01-15T12:00:00Z "403": description: Forbidden. Access denied. The request is valid but the server refuses to perform it. content: application/json: schema: $ref: '#/components/schemas/APIError' example: statusCode: "403" statusMessage: Forbidden. Access denied. The request is valid but the server refuses to perform it. supportMessage: API_ERROR transactionId: "1234567890" sequenceNo: "20250115120000001" timestamp: 2025-01-15T12:00:00Z "404": description: Not found. The requested resource was not found or does not exist. content: application/json: schema: $ref: '#/components/schemas/APIError' example: statusCode: "404" statusMessage: Not found. The requested resource was not found or does not exist. supportMessage: API_ERROR transactionId: "1234567890" sequenceNo: "20250115120000001" timestamp: 2025-01-15T12:00:00Z "500": description: "Internal server error. Unexpected system failure, database\ \ connectivity issues, or external service integration problems." content: application/json: schema: $ref: '#/components/schemas/APIError' example: statusCode: "500" statusMessage: "Internal server error. Unexpected system failure,\ \ database connectivity issues, or external service integration\ \ problems." supportMessage: API_ERROR transactionId: "1234567890" sequenceNo: "20250115120000001" timestamp: 2025-01-15T12:00:00Z "502": description: Bad gateway. The server acting as a gateway received an invalid response from an upstream server. content: application/json: schema: $ref: '#/components/schemas/APIError' example: statusCode: "502" statusMessage: Bad gateway. The server acting as a gateway received an invalid response from an upstream server. supportMessage: API_ERROR transactionId: "1234567890" sequenceNo: "20250115120000001" timestamp: 2025-01-15T12:00:00Z "503": description: Service unavailable. The server is temporarily unable to handle the request due to maintenance or overload. content: application/json: schema: $ref: '#/components/schemas/APIError' example: statusCode: "503" statusMessage: Service unavailable. The server is temporarily unable to handle the request due to maintenance or overload. supportMessage: API_ERROR transactionId: "1234567890" sequenceNo: "20250115120000001" timestamp: 2025-01-15T12:00:00Z deprecated: false /loyaltyMember/{memberId}/loyaltyBurn: post: tags: - Tmf658LoyaltyManagement summary: This operation retrieves a loyalty burn transactions of a specific programme member.Redemption history description: "This operation retrieves the loyalty burn transactions for a specific\ \ programme member, showing their redemption history." operationId: LoyaltyManagementService_post_postLoyaltyRedemptionPoints_loyaltyMembermemberI parameters: - name: memberId 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 requestBody: content: application/json: schema: title: RedemptionRequest type: object properties: redeemAllPoints: type: boolean loyaltyCatalogueItem: title: LoyaltyCatalogueItem type: object properties: id: type: string units: type: integer format: int32 required: true responses: "200": description: HTTP 200 indicating the request succeeded; the response body follows the documented schema for this operation and includes correlation identifiers where applicable for traceability across MTN MADAPI TMF658 Loyalty Management flows. content: application/json: schema: title: RedemptionSuccessResponse type: object properties: code: type: string message: type: string description: type: string "400": description: "Bad request. Invalid request parameters, missing required\ \ fields, or validation errors." content: application/json: schema: $ref: '#/components/schemas/APIError' example: statusCode: "400" statusMessage: "Bad request. Invalid request parameters, missing required\ \ fields, or validation errors." supportMessage: API_ERROR transactionId: "1234567890" sequenceNo: "20250115120000001" timestamp: 2025-01-15T12:00:00Z "401": description: "Unauthorized. Invalid or missing authorization credentials,\ \ insufficient permissions, or authentication failure." content: application/json: schema: $ref: '#/components/schemas/APIError' example: statusCode: "401" statusMessage: "Unauthorized. Invalid or missing authorization credentials,\ \ insufficient permissions, or authentication failure." supportMessage: API_ERROR transactionId: "1234567890" sequenceNo: "20250115120000001" timestamp: 2025-01-15T12:00:00Z "403": description: Forbidden. Access denied. The request is valid but the server refuses to perform it. content: application/json: schema: $ref: '#/components/schemas/APIError' example: statusCode: "403" statusMessage: Forbidden. Access denied. The request is valid but the server refuses to perform it. supportMessage: API_ERROR transactionId: "1234567890" sequenceNo: "20250115120000001" timestamp: 2025-01-15T12:00:00Z "404": description: Not found. The requested resource was not found or does not exist. content: application/json: schema: $ref: '#/components/schemas/APIError' example: statusCode: "404" statusMessage: Not found. The requested resource was not found or does not exist. supportMessage: API_ERROR transactionId: "1234567890" sequenceNo: "20250115120000001" timestamp: 2025-01-15T12:00:00Z "500": description: "Internal server error. Unexpected system failure, database\ \ connectivity issues, or external service integration problems." content: application/json: schema: $ref: '#/components/schemas/APIError' example: statusCode: "500" statusMessage: "Internal server error. Unexpected system failure,\ \ database connectivity issues, or external service integration\ \ problems." supportMessage: API_ERROR transactionId: "1234567890" sequenceNo: "20250115120000001" timestamp: 2025-01-15T12:00:00Z "502": description: Bad gateway. The server acting as a gateway received an invalid response from an upstream server. content: application/json: schema: $ref: '#/components/schemas/APIError' example: statusCode: "502" statusMessage: Bad gateway. The server acting as a gateway received an invalid response from an upstream server. supportMessage: API_ERROR transactionId: "1234567890" sequenceNo: "20250115120000001" timestamp: 2025-01-15T12:00:00Z "503": description: Service unavailable. The server is temporarily unable to handle the request due to maintenance or overload. content: application/json: schema: $ref: '#/components/schemas/APIError' example: statusCode: "503" statusMessage: Service unavailable. The server is temporarily unable to handle the request due to maintenance or overload. supportMessage: API_ERROR transactionId: "1234567890" sequenceNo: "20250115120000001" timestamp: 2025-01-15T12:00:00Z deprecated: false /loyaltyProgramMember: post: tags: - Tmf658LoyaltyManagement summary: Enrolment of Loyalty Member response object description: Request for Enrollment LoyaltyMember details. This operation creates a new loyalty program member and stores their information. operationId: LoyaltyManagementService_post_CreateNewLoyaltyMember_loyaltyProgramMember parameters: - name: transactionId in: header required: false schema: type: string - name: x-country-code in: header required: true schema: type: string requestBody: content: application/json: schema: title: LoyaltyEnrollmentRequest type: object properties: id: type: string name: type: string status: type: string validFor: title: ValidFor type: object properties: startDateTime: type: string endDateTime: type: string characteristic: type: array items: title: Characteristic type: object properties: name: type: string value: type: string engageParty: title: EngageParty type: object properties: id: type: string contactMedium: type: array items: title: ContactMedium type: object properties: type: type: string medium: title: Medium type: object properties: type: type: string value: type: string required: true responses: "200": description: HTTP 200 indicating the request succeeded; the response body follows the documented schema for this operation and includes correlation identifiers where applicable for traceability across MTN MADAPI TMF658 Loyalty Management flows. content: application/json: schema: title: LoyaltyManagementResponse type: object properties: result: title: Result type: object properties: resultCode: type: string resultDescription: type: string loyaltyEnrollmentResponse: title: LoyaltyEnrollmentResponse type: object properties: id: type: string name: type: string status: type: string validFor: title: ValidFor type: object properties: startDateTime: type: string endDateTime: type: string publicIdentifier: type: string characteristic: type: array items: title: Characteristic type: object properties: name: type: string value: type: string engageParty: title: EngageParty type: object properties: id: type: string contactMedium: type: array items: title: ContactMedium type: object properties: type: type: string medium: title: Medium type: object properties: type: type: string value: type: string email: type: string number: type: string resultCode: type: string resultDescription: type: string resultmessage: type: string resultTimeStamp: type: string "400": description: "Bad request. Invalid request parameters, missing required\ \ fields, or validation errors." content: application/json: schema: $ref: '#/components/schemas/APIError' example: statusCode: "400" statusMessage: "Bad request. Invalid request parameters, missing required\ \ fields, or validation errors." supportMessage: API_ERROR transactionId: "1234567890" sequenceNo: "20250115120000001" timestamp: 2025-01-15T12:00:00Z "401": description: "Unauthorized. Invalid or missing authorization credentials,\ \ insufficient permissions, or authentication failure." content: application/json: schema: $ref: '#/components/schemas/APIError' example: statusCode: "401" statusMessage: "Unauthorized. Invalid or missing authorization credentials,\ \ insufficient permissions, or authentication failure." supportMessage: API_ERROR transactionId: "1234567890" sequenceNo: "20250115120000001" timestamp: 2025-01-15T12:00:00Z "403": description: Forbidden. Access denied. The request is valid but the server refuses to perform it. content: application/json: schema: $ref: '#/components/schemas/APIError' example: statusCode: "403" statusMessage: Forbidden. Access denied. The request is valid but the server refuses to perform it. supportMessage: API_ERROR transactionId: "1234567890" sequenceNo: "20250115120000001" timestamp: 2025-01-15T12:00:00Z "404": description: Not found. The requested resource was not found or does not exist. content: application/json: schema: $ref: '#/components/schemas/APIError' example: statusCode: "404" statusMessage: Not found. The requested resource was not found or does not exist. supportMessage: API_ERROR transactionId: "1234567890" sequenceNo: "20250115120000001" timestamp: 2025-01-15T12:00:00Z "500": description: "Internal server error. Unexpected system failure, database\ \ connectivity issues, or external service integration problems." content: application/json: schema: $ref: '#/components/schemas/APIError' example: statusCode: "500" statusMessage: "Internal server error. Unexpected system failure,\ \ database connectivity issues, or external service integration\ \ problems." supportMessage: API_ERROR transactionId: "1234567890" sequenceNo: "20250115120000001" timestamp: 2025-01-15T12:00:00Z "502": description: Bad gateway. The server acting as a gateway received an invalid response from an upstream server. content: application/json: schema: $ref: '#/components/schemas/APIError' example: statusCode: "502" statusMessage: Bad gateway. The server acting as a gateway received an invalid response from an upstream server. supportMessage: API_ERROR transactionId: "1234567890" sequenceNo: "20250115120000001" timestamp: 2025-01-15T12:00:00Z "503": description: Service unavailable. The server is temporarily unable to handle the request due to maintenance or overload. content: application/json: schema: $ref: '#/components/schemas/APIError' example: statusCode: "503" statusMessage: Service unavailable. The server is temporarily unable to handle the request due to maintenance or overload. supportMessage: API_ERROR transactionId: "1234567890" sequenceNo: "20250115120000001" timestamp: 2025-01-15T12:00:00Z deprecated: false /loyaltyProgramMember/{memberId}: delete: tags: - Tmf658LoyaltyManagement summary: This operation de-enrolls a loyalty program member. description: Request for Loyalty Program Member De-enrollment. This operation removes a specific member from the loyalty program. operationId: LoyaltyManagementService_delete_loyaltyDeEnrollmentMember_loyaltyProgramMember parameters: - name: memberId 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 responses: "200": description: HTTP 200 indicating the request succeeded; the response body follows the documented schema for this operation and includes correlation identifiers where applicable for traceability across MTN MADAPI TMF658 Loyalty Management flows. content: application/json: schema: title: LoyaltyDeEnrollmentResponse type: object properties: result: $ref: '#/components/schemas/com_mtn_aggregator_models_response_Result' loyaltyDeEnrollment: title: LoyaltyDeEnrollment type: object properties: code: type: string message: type: string description: type: string "400": description: "Bad request. Invalid request parameters, missing required\ \ fields, or validation errors." content: application/json: schema: $ref: '#/components/schemas/APIError' example: statusCode: "400" statusMessage: "Bad request. Invalid request parameters, missing required\ \ fields, or validation errors." supportMessage: API_ERROR transactionId: "1234567890" sequenceNo: "20250115120000001" timestamp: 2025-01-15T12:00:00Z "401": description: "Unauthorized. Invalid or missing authorization credentials,\ \ insufficient permissions, or authentication failure." content: application/json: schema: $ref: '#/components/schemas/APIError' example: statusCode: "401" statusMessage: "Unauthorized. Invalid or missing authorization credentials,\ \ insufficient permissions, or authentication failure." supportMessage: API_ERROR transactionId: "1234567890" sequenceNo: "20250115120000001" timestamp: 2025-01-15T12:00:00Z "403": description: Forbidden. Access denied. The request is valid but the server refuses to perform it. content: application/json: schema: $ref: '#/components/schemas/APIError' example: statusCode: "403" statusMessage: Forbidden. Access denied. The request is valid but the server refuses to perform it. supportMessage: API_ERROR transactionId: "1234567890" sequenceNo: "20250115120000001" timestamp: 2025-01-15T12:00:00Z "404": description: Not found. The requested resource was not found or does not exist. content: application/json: schema: $ref: '#/components/schemas/APIError' example: statusCode: "404" statusMessage: Not found. The requested resource was not found or does not exist. supportMessage: API_ERROR transactionId: "1234567890" sequenceNo: "20250115120000001" timestamp: 2025-01-15T12:00:00Z "500": description: "Internal server error. Unexpected system failure, database\ \ connectivity issues, or external service integration problems." content: application/json: schema: $ref: '#/components/schemas/APIError' example: statusCode: "500" statusMessage: "Internal server error. Unexpected system failure,\ \ database connectivity issues, or external service integration\ \ problems." supportMessage: API_ERROR transactionId: "1234567890" sequenceNo: "20250115120000001" timestamp: 2025-01-15T12:00:00Z "502": description: Bad gateway. The server acting as a gateway received an invalid response from an upstream server. content: application/json: schema: $ref: '#/components/schemas/APIError' example: statusCode: "502" statusMessage: Bad gateway. The server acting as a gateway received an invalid response from an upstream server. supportMessage: API_ERROR transactionId: "1234567890" sequenceNo: "20250115120000001" timestamp: 2025-01-15T12:00:00Z "503": description: Service unavailable. The server is temporarily unable to handle the request due to maintenance or overload. content: application/json: schema: $ref: '#/components/schemas/APIError' example: statusCode: "503" statusMessage: Service unavailable. The server is temporarily unable to handle the request due to maintenance or overload. supportMessage: API_ERROR transactionId: "1234567890" sequenceNo: "20250115120000001" timestamp: 2025-01-15T12:00:00Z deprecated: false /loyaltyProgramMember/{memberId}/loyaltyBurn: get: tags: - Tmf658LoyaltyManagement summary: This operation retrieves the loyalty points redemption history for a specific member. description: Request for Loyalty Points Redemption History. This operation retrieves the history of loyalty points redemptions for a specific member. operationId: LoyaltyManagementService_get_getLoyaltyPointsRedemptionHistory_loyaltyProgramMember parameters: - name: memberId 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 responses: "200": description: HTTP 200 indicating the request succeeded; the response body follows the documented schema for this operation and includes correlation identifiers where applicable for traceability across MTN MADAPI TMF658 Loyalty Management flows. content: application/json: schema: title: LoyaltyPointsRedemptionHistoryResponse type: object properties: result: $ref: '#/components/schemas/com_mtn_aggregator_models_response_Result' loyaltyRedemptionHistory: type: array items: title: LoyaltyRedemptionHistory type: object properties: id: type: string href: type: string quantity: type: integer format: int32 openingBalance: type: integer format: int32 closingBalance: type: integer format: int32 createDateTime: type: string modifiedDate: type: string dateTime: type: string description: type: string type: type: string loyaltyProgramMember: title: LoyaltyProgramMember type: object properties: id: type: string publicIdentifier: type: string catalogueItem: title: CatalogueItem type: object properties: id: type: string name: type: string loyaltyBalance: type: array items: title: LoyaltyBalance type: object properties: id: type: string quantity: title: Quantities type: object properties: unit: type: string balance: type: string redeemedQuantity: title: RedeemedQuantity type: object properties: unit: type: string balance: type: string "400": description: "Bad request. Invalid request parameters, missing required\ \ fields, or validation errors." content: application/json: schema: $ref: '#/components/schemas/APIError' example: statusCode: "400" statusMessage: "Bad request. Invalid request parameters, missing required\ \ fields, or validation errors." supportMessage: API_ERROR transactionId: "1234567890" sequenceNo: "20250115120000001" timestamp: 2025-01-15T12:00:00Z "401": description: "Unauthorized. Invalid or missing authorization credentials,\ \ insufficient permissions, or authentication failure." content: application/json: schema: $ref: '#/components/schemas/APIError' example: statusCode: "401" statusMessage: "Unauthorized. Invalid or missing authorization credentials,\ \ insufficient permissions, or authentication failure." supportMessage: API_ERROR transactionId: "1234567890" sequenceNo: "20250115120000001" timestamp: 2025-01-15T12:00:00Z "403": description: Forbidden. Access denied. The request is valid but the server refuses to perform it. content: application/json: schema: $ref: '#/components/schemas/APIError' example: statusCode: "403" statusMessage: Forbidden. Access denied. The request is valid but the server refuses to perform it. supportMessage: API_ERROR transactionId: "1234567890" sequenceNo: "20250115120000001" timestamp: 2025-01-15T12:00:00Z "404": description: Not found. The requested resource was not found or does not exist. content: application/json: schema: $ref: '#/components/schemas/APIError' example: statusCode: "404" statusMessage: Not found. The requested resource was not found or does not exist. supportMessage: API_ERROR transactionId: "1234567890" sequenceNo: "20250115120000001" timestamp: 2025-01-15T12:00:00Z "500": description: "Internal server error. Unexpected system failure, database\ \ connectivity issues, or external service integration problems." content: application/json: schema: $ref: '#/components/schemas/APIError' example: statusCode: "500" statusMessage: "Internal server error. Unexpected system failure,\ \ database connectivity issues, or external service integration\ \ problems." supportMessage: API_ERROR transactionId: "1234567890" sequenceNo: "20250115120000001" timestamp: 2025-01-15T12:00:00Z "502": description: Bad gateway. The server acting as a gateway received an invalid response from an upstream server. content: application/json: schema: $ref: '#/components/schemas/APIError' example: statusCode: "502" statusMessage: Bad gateway. The server acting as a gateway received an invalid response from an upstream server. supportMessage: API_ERROR transactionId: "1234567890" sequenceNo: "20250115120000001" timestamp: 2025-01-15T12:00:00Z "503": description: Service unavailable. The server is temporarily unable to handle the request due to maintenance or overload. content: application/json: schema: $ref: '#/components/schemas/APIError' example: statusCode: "503" statusMessage: Service unavailable. The server is temporarily unable to handle the request due to maintenance or overload. supportMessage: API_ERROR transactionId: "1234567890" sequenceNo: "20250115120000001" timestamp: 2025-01-15T12:00:00Z deprecated: false /loyaltyProgramMember/{memberId}/loyaltyCatalogue/{id}: get: tags: - Tmf658LoyaltyManagement summary: This operation retrieves the loyalty catalogue for a specific member. description: "Request for Loyalty Catalogue. This operation retrieves the loyalty\ \ catalogue for a specific member, providing details about available rewards\ \ and offers." operationId: LoyaltyManagementService_get_loyaltyCatalogue_loyaltyProgramMember parameters: - name: id in: path required: true schema: type: string - name: memberId 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 responses: "200": description: HTTP 200 indicating the request succeeded; the response body follows the documented schema for this operation and includes correlation identifiers where applicable for traceability across MTN MADAPI TMF658 Loyalty Management flows. content: application/json: schema: title: LoyaltyCatalogueResponse type: object properties: result: $ref: '#/components/schemas/com_mtn_aggregator_models_response_Result' response: title: CatalogueResponse type: object properties: availablePoints: type: string listResponse: type: array items: title: CatalogueListResponse type: object properties: id: type: string version: type: string lastUpdate: type: string loyaltyCatalogue: title: LoyaltyCatalogue type: object properties: id: type: string name: type: string pointsRequired: type: integer format: int32 minUnits: type: integer format: int32 maxUnits: type: integer format: int32 lifecycleStatus: type: string validFor: $ref: '#/components/schemas/com_mtn_aggregator_models_response_loyalty_ValidFor' relatedParty: type: array items: title: RelatedParty type: object properties: role: type: string isProvisioningRequired: type: boolean unitDetails: title: UnitDetails type: object properties: type: type: string value: type: integer format: int32 "400": description: "Bad request. Invalid request parameters, missing required\ \ fields, or validation errors." content: application/json: schema: $ref: '#/components/schemas/APIError' example: statusCode: "400" statusMessage: "Bad request. Invalid request parameters, missing required\ \ fields, or validation errors." supportMessage: API_ERROR transactionId: "1234567890" sequenceNo: "20250115120000001" timestamp: 2025-01-15T12:00:00Z "401": description: "Unauthorized. Invalid or missing authorization credentials,\ \ insufficient permissions, or authentication failure." content: application/json: schema: $ref: '#/components/schemas/APIError' example: statusCode: "401" statusMessage: "Unauthorized. Invalid or missing authorization credentials,\ \ insufficient permissions, or authentication failure." supportMessage: API_ERROR transactionId: "1234567890" sequenceNo: "20250115120000001" timestamp: 2025-01-15T12:00:00Z "403": description: Forbidden. Access denied. The request is valid but the server refuses to perform it. content: application/json: schema: $ref: '#/components/schemas/APIError' example: statusCode: "403" statusMessage: Forbidden. Access denied. The request is valid but the server refuses to perform it. supportMessage: API_ERROR transactionId: "1234567890" sequenceNo: "20250115120000001" timestamp: 2025-01-15T12:00:00Z "404": description: Not found. The requested resource was not found or does not exist. content: application/json: schema: $ref: '#/components/schemas/APIError' example: statusCode: "404" statusMessage: Not found. The requested resource was not found or does not exist. supportMessage: API_ERROR transactionId: "1234567890" sequenceNo: "20250115120000001" timestamp: 2025-01-15T12:00:00Z "500": description: "Internal server error. Unexpected system failure, database\ \ connectivity issues, or external service integration problems." content: application/json: schema: $ref: '#/components/schemas/APIError' example: statusCode: "500" statusMessage: "Internal server error. Unexpected system failure,\ \ database connectivity issues, or external service integration\ \ problems." supportMessage: API_ERROR transactionId: "1234567890" sequenceNo: "20250115120000001" timestamp: 2025-01-15T12:00:00Z "502": description: Bad gateway. The server acting as a gateway received an invalid response from an upstream server. content: application/json: schema: $ref: '#/components/schemas/APIError' example: statusCode: "502" statusMessage: Bad gateway. The server acting as a gateway received an invalid response from an upstream server. supportMessage: API_ERROR transactionId: "1234567890" sequenceNo: "20250115120000001" timestamp: 2025-01-15T12:00:00Z "503": description: Service unavailable. The server is temporarily unable to handle the request due to maintenance or overload. content: application/json: schema: $ref: '#/components/schemas/APIError' example: statusCode: "503" statusMessage: Service unavailable. The server is temporarily unable to handle the request due to maintenance or overload. supportMessage: API_ERROR transactionId: "1234567890" sequenceNo: "20250115120000001" timestamp: 2025-01-15T12:00:00Z deprecated: false components: schemas: com_mtn_aggregator_models_response_loyalty_Quantities: title: Quantities type: object properties: unit: type: string balance: type: string com_mtn_aggregator_models_response_loyalty_LoyaltyPointsTransferResponse: title: LoyaltyPointsTransferResponse type: object properties: result: $ref: '#/components/schemas/com_mtn_aggregator_models_response_Result' loyaltyTransferResponse: title: TransferResponse type: object properties: response: type: string com_mtn_aggregator_models_response_loyalty_LoyaltyRedemptionHistory: title: LoyaltyRedemptionHistory type: object properties: id: type: string href: type: string quantity: type: integer format: int32 openingBalance: type: integer format: int32 closingBalance: type: integer format: int32 createDateTime: type: string modifiedDate: type: string dateTime: type: string description: type: string type: type: string loyaltyProgramMember: title: LoyaltyProgramMember type: object properties: id: type: string publicIdentifier: type: string catalogueItem: title: CatalogueItem type: object properties: id: type: string name: type: string loyaltyBalance: type: array items: title: LoyaltyBalance type: object properties: id: type: string quantity: title: Quantities type: object properties: unit: type: string balance: type: string redeemedQuantity: title: RedeemedQuantity type: object properties: unit: type: string balance: type: string com_mtn_aggregator_models_response_loyalty_LoyaltyProgramProductSpecification: title: LoyaltyProgramProductSpecification type: object properties: id: type: string com_mtn_aggregator_models_response_loyalty_LoyaltyDeEnrollmentResponse: title: LoyaltyDeEnrollmentResponse type: object properties: result: $ref: '#/components/schemas/com_mtn_aggregator_models_response_Result' loyaltyDeEnrollment: title: LoyaltyDeEnrollment type: object properties: code: type: string message: type: string description: type: string com_mtn_aggregator_models_response_loyalty_CatalogueItem: title: CatalogueItem type: object properties: id: type: string name: type: string com_mtn_aggregator_models_response_loyalty_LoyaltyPointsRedemptionHistoryResponse: title: LoyaltyPointsRedemptionHistoryResponse type: object properties: result: $ref: '#/components/schemas/com_mtn_aggregator_models_response_Result' loyaltyRedemptionHistory: type: array items: title: LoyaltyRedemptionHistory type: object properties: id: type: string href: type: string quantity: type: integer format: int32 openingBalance: type: integer format: int32 closingBalance: type: integer format: int32 createDateTime: type: string modifiedDate: type: string dateTime: type: string description: type: string type: type: string loyaltyProgramMember: title: LoyaltyProgramMember type: object properties: id: type: string publicIdentifier: type: string catalogueItem: title: CatalogueItem type: object properties: id: type: string name: type: string loyaltyBalance: type: array items: title: LoyaltyBalance type: object properties: id: type: string quantity: title: Quantities type: object properties: unit: type: string balance: type: string redeemedQuantity: title: RedeemedQuantity type: object properties: unit: type: string balance: type: string com_mtn_aggregator_models_response_loyalty_CatalogueResponse: title: CatalogueResponse type: object properties: availablePoints: type: string listResponse: type: array items: title: CatalogueListResponse type: object properties: id: type: string version: type: string lastUpdate: type: string loyaltyCatalogue: title: LoyaltyCatalogue type: object properties: id: type: string name: type: string pointsRequired: type: integer format: int32 minUnits: type: integer format: int32 maxUnits: type: integer format: int32 lifecycleStatus: type: string validFor: $ref: '#/components/schemas/com_mtn_aggregator_models_response_loyalty_ValidFor' relatedParty: type: array items: title: RelatedParty type: object properties: role: type: string isProvisioningRequired: type: boolean unitDetails: title: UnitDetails type: object properties: type: type: string value: type: integer format: int32 com_mtn_aggregator_models_request_loyalty_EngageParty: title: EngageParty type: object properties: id: type: string contactMedium: type: array items: title: ContactMedium type: object properties: type: type: string medium: title: Medium type: object properties: type: type: string value: type: string com_mtn_aggregator_models_request_loyalty_RedemptionRequest: title: RedemptionRequest type: object properties: redeemAllPoints: type: boolean loyaltyCatalogueItem: title: LoyaltyCatalogueItem type: object properties: id: type: string units: type: integer format: int32 com_mtn_aggregator_models_request_loyalty_ValidFor: title: ValidFor type: object properties: startDateTime: type: string endDateTime: type: string com_mtn_aggregator_models_response_loyalty_Medium: title: Medium type: object properties: type: type: string value: type: string email: type: string number: type: string com_mtn_aggregator_models_response_loyalty_ListResponse: title: ListResponse type: object properties: createdDate: type: string modifiedDate: type: string id: type: string quantity: title: Quantity type: object properties: unit: type: string balance: type: string redeemedQuantity: $ref: '#/components/schemas/com_mtn_aggregator_models_response_loyalty_RedeemedQuantity' loyaltyProgramMember: $ref: '#/components/schemas/com_mtn_aggregator_models_response_loyalty_LoyaltyProgramMember' loyaltyProgramProductSpecification: title: LoyaltyProgramProductSpecification type: object properties: id: type: string com_mtn_aggregator_models_request_loyalty_LoyaltyEnrollmentRequest: title: LoyaltyEnrollmentRequest type: object properties: id: type: string name: type: string status: type: string validFor: title: ValidFor type: object properties: startDateTime: type: string endDateTime: type: string characteristic: type: array items: title: Characteristic type: object properties: name: type: string value: type: string engageParty: title: EngageParty type: object properties: id: type: string contactMedium: type: array items: title: ContactMedium type: object properties: type: type: string medium: title: Medium type: object properties: type: type: string value: type: string com_mtn_aggregator_models_response_loyalty_ContactMedium: title: ContactMedium type: object properties: type: type: string medium: title: Medium type: object properties: type: type: string value: type: string email: type: string number: type: string com_mtn_aggregator_models_response_loyalty_LoyaltyManagementResponse: title: LoyaltyManagementResponse type: object properties: result: title: Result type: object properties: resultCode: type: string resultDescription: type: string loyaltyEnrollmentResponse: title: LoyaltyEnrollmentResponse type: object properties: id: type: string name: type: string status: type: string validFor: title: ValidFor type: object properties: startDateTime: type: string endDateTime: type: string publicIdentifier: type: string characteristic: type: array items: title: Characteristic type: object properties: name: type: string value: type: string engageParty: title: EngageParty type: object properties: id: type: string contactMedium: type: array items: title: ContactMedium type: object properties: type: type: string medium: title: Medium type: object properties: type: type: string value: type: string email: type: string number: type: string resultCode: type: string resultDescription: type: string resultmessage: type: string resultTimeStamp: type: string com_mtn_aggregator_models_response_loyalty_LoyaltyEnrollmentResponse: title: LoyaltyEnrollmentResponse type: object properties: id: type: string name: type: string status: type: string validFor: title: ValidFor type: object properties: startDateTime: type: string endDateTime: type: string publicIdentifier: type: string characteristic: type: array items: title: Characteristic type: object properties: name: type: string value: type: string engageParty: title: EngageParty type: object properties: id: type: string contactMedium: type: array items: title: ContactMedium type: object properties: type: type: string medium: title: Medium type: object properties: type: type: string value: type: string email: type: string number: type: string com_mtn_aggregator_models_response_loyalty_EngageParty: title: EngageParty type: object properties: id: type: string contactMedium: type: array items: title: ContactMedium type: object properties: type: type: string medium: title: Medium type: object properties: type: type: string value: type: string email: type: string number: type: string APIError: title: APIError required: - statusCode - statusMessage type: object properties: statusCode: type: string description: Error status code statusMessage: type: string description: Human-readable error message supportMessage: type: string description: Technical support message or error code for troubleshooting transactionId: type: string description: Transaction identifier for tracking and correlation sequenceNo: type: string description: Sequence number for request tracking timestamp: type: string description: Error timestamp in ISO 8601 format format: date-time path: type: string description: API endpoint path where the error occurred method: type: string description: HTTP method of the request that caused the error downstreamStatusCode: type: string description: Downstream service error code if applicable description: Generic MADAPI error response structure com_mtn_aggregator_models_response_loyalty_LoyaltyBalanceResponse: title: LoyaltyBalanceResponse type: object properties: result: $ref: '#/components/schemas/com_mtn_aggregator_models_response_Result' data: title: LoyaltyBalanceResponseData type: object properties: availablePoints: type: string listResponse: type: array items: title: ListResponse type: object properties: createdDate: type: string modifiedDate: type: string id: type: string quantity: title: Quantity type: object properties: unit: type: string balance: type: string redeemedQuantity: $ref: '#/components/schemas/com_mtn_aggregator_models_response_loyalty_RedeemedQuantity' loyaltyProgramMember: $ref: '#/components/schemas/com_mtn_aggregator_models_response_loyalty_LoyaltyProgramMember' loyaltyProgramProductSpecification: title: LoyaltyProgramProductSpecification type: object properties: id: type: string com_mtn_aggregator_models_response_loyalty_LoyaltyProgramMember: title: LoyaltyProgramMember type: object properties: id: type: string publicIdentifier: type: string com_mtn_aggregator_models_request_loyalty_LoyaltyCatalogueItem: title: LoyaltyCatalogueItem type: object properties: id: type: string units: type: integer format: int32 com_mtn_aggregator_models_response_loyalty_CatalogueListResponse: title: CatalogueListResponse type: object properties: id: type: string version: type: string lastUpdate: type: string loyaltyCatalogue: title: LoyaltyCatalogue type: object properties: id: type: string name: type: string pointsRequired: type: integer format: int32 minUnits: type: integer format: int32 maxUnits: type: integer format: int32 lifecycleStatus: type: string validFor: $ref: '#/components/schemas/com_mtn_aggregator_models_response_loyalty_ValidFor' relatedParty: type: array items: title: RelatedParty type: object properties: role: type: string isProvisioningRequired: type: boolean unitDetails: title: UnitDetails type: object properties: type: type: string value: type: integer format: int32 com_mtn_aggregator_models_response_loyalty_RelatedParty: title: RelatedParty type: object properties: role: type: string com_mtn_aggregator_models_response_loyalty_TransferResponse: title: TransferResponse type: object properties: response: type: string com_mtn_aggregator_models_response_RedemptionSuccessResponse: title: RedemptionSuccessResponse type: object properties: code: type: string message: type: string description: type: string com_mtn_aggregator_models_request_loyalty_Characteristic: title: Characteristic type: object properties: name: type: string value: type: string com_mtn_aggregator_models_response_loyalty_ValidFor: title: ValidFor type: object properties: startDateTime: type: string endDateTime: type: string com_mtn_aggregator_models_response_loyalty_LoyaltyBalanceResponseData: title: LoyaltyBalanceResponseData type: object properties: availablePoints: type: string listResponse: type: array items: title: ListResponse type: object properties: createdDate: type: string modifiedDate: type: string id: type: string quantity: title: Quantity type: object properties: unit: type: string balance: type: string redeemedQuantity: $ref: '#/components/schemas/com_mtn_aggregator_models_response_loyalty_RedeemedQuantity' loyaltyProgramMember: $ref: '#/components/schemas/com_mtn_aggregator_models_response_loyalty_LoyaltyProgramMember' loyaltyProgramProductSpecification: title: LoyaltyProgramProductSpecification type: object properties: id: type: string com_mtn_aggregator_models_response_loyalty_Quantity: title: Quantity type: object properties: unit: type: string balance: type: string com_mtn_aggregator_models_response_loyalty_Characteristic: title: Characteristic type: object properties: name: type: string value: type: string com_mtn_aggregator_models_request_loyalty_LoyaltyPointsTransferRequest: title: LoyaltyPointsTransferRequest type: object properties: toLoyaltyProgrammeMember: type: string pointsToBeTransferred: type: integer format: int32 com_mtn_aggregator_models_response_loyalty_LoyaltyBalance: title: LoyaltyBalance type: object properties: id: type: string quantity: title: Quantities type: object properties: unit: type: string balance: type: string redeemedQuantity: title: RedeemedQuantity type: object properties: unit: type: string balance: type: string com_mtn_aggregator_models_response_loyalty_LoyaltyCatalogueResponse: title: LoyaltyCatalogueResponse type: object properties: result: $ref: '#/components/schemas/com_mtn_aggregator_models_response_Result' response: title: CatalogueResponse type: object properties: availablePoints: type: string listResponse: type: array items: title: CatalogueListResponse type: object properties: id: type: string version: type: string lastUpdate: type: string loyaltyCatalogue: title: LoyaltyCatalogue type: object properties: id: type: string name: type: string pointsRequired: type: integer format: int32 minUnits: type: integer format: int32 maxUnits: type: integer format: int32 lifecycleStatus: type: string validFor: $ref: '#/components/schemas/com_mtn_aggregator_models_response_loyalty_ValidFor' relatedParty: type: array items: title: RelatedParty type: object properties: role: type: string isProvisioningRequired: type: boolean unitDetails: title: UnitDetails type: object properties: type: type: string value: type: integer format: int32 com_mtn_aggregator_models_response_loyalty_RedeemedQuantity: title: RedeemedQuantity type: object properties: unit: type: string balance: type: string com_mtn_aggregator_models_request_loyalty_ContactMedium: title: ContactMedium type: object properties: type: type: string medium: title: Medium type: object properties: type: type: string value: type: string com_mtn_aggregator_models_response_loyalty_UnitDetails: title: UnitDetails type: object properties: type: type: string value: type: integer format: int32 com_mtn_aggregator_models_response_Result: title: Result type: object properties: resultCode: type: string resultDescription: type: string com_mtn_aggregator_models_response_loyalty_LoyaltyCatalogue: title: LoyaltyCatalogue type: object properties: id: type: string com_mtn_aggregator_models_request_loyalty_Medium: title: Medium type: object properties: type: type: string value: type: string com_mtn_aggregator_models_response_loyalty_LoyaltyDeEnrollment: title: LoyaltyDeEnrollment type: object properties: code: type: string message: type: string description: type: string securitySchemes: OAuth2: type: oauth2 flows: clientCredentials: tokenUrl: https://api.mtn.com/v1/oauth/access_token scopes: {} Bearer: type: http description: Bearer token received from OAuth2.0 authentication with the MADAPI scheme: bearer bearerFormat: JWT