"openapi: 3.0.1\n\ninfo:\n title: Home Protect Takaful\n description: Provides financial protection against loss or damage to residential property caused by fire and other covered perils\n termsOfService: https://www.takaful-ikhlas.com.my/terms-and-conditions\n version: 2.0.0\n logoUrl: assets/images/catalog-icon/vectorHomeSolution.svg\n contact:\n email: digital@mnrb.com.my\n\nservers:\n - url: https://sandbox.takaful-ikhlas.com.my\n\ntags:\n - name: Customers\n description: Customer validation and retrieval\n - name: Pricing\n description: Pricing and premium calculation\n - name: Quotations\n description: Home Protect quotation management\n - name: References\n description: Reference and master data\n - name: Payment\n description: Payment API\n - name: Document\n description: Policy and receipt documents\n\npaths:\n\n /api/v2/home-protect/customer:\n get:\n tags:\n - Customers\n summary: Get customer by ID number and name\n parameters:\n - name: idNo\n in: query\n required: true\n description: Customer identification number\n schema:\n type: string\n example: \"720430115138\"\n - name: name\n in: query\n required: true\n description: Customer full name\n schema:\n type: string\n example: John Doe\n responses:\n 200:\n description: Success\n security:\n - api_key: []\n\n /api/v2/home-protect/pricing/nsure:\n post:\n tags:\n - Pricing\n summary: Get Home Protect pricing\n requestBody:\n required: true\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/PayloadPricing'\n responses:\n 201:\n description: Pricing calculated successfully\n security:\n - api_key: []\n\n /api/v2/home-protect/quotation:\n post:\n tags:\n - Quotations\n summary: Create Home Protect quotation\n requestBody:\n required: true\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/CreateQuotation'\n responses:\n 201:\n description: Quotation created successfully\n security:\n - api_key: []\n\n /api/v2/home-protect/quotation/{quotationId}:\n get:\n tags:\n - Quotations\n summary: Get quotation by ID\n parameters:\n - name: quotationId\n in: path\n required: true\n description: Quotation ID\n schema:\n type: string\n responses:\n 200:\n description: Success\n security:\n - api_key: []\n\n patch:\n tags:\n - Quotations\n summary: Update quotation by ID\n parameters:\n - name: quotationId\n in: path\n required: true\n description: Quotation ID\n schema:\n type: string\n requestBody:\n required: true\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/UpdateQuotation'\n responses:\n 200:\n description: Quotation updated successfully\n security:\n - api_key: []\n\n /api/v2/home-protect/quotation/{quotationId}/policy:\n get:\n tags:\n - Quotations\n summary: Get policy linked to quotation\n parameters:\n - name: quotationId\n in: path\n required: true\n schema:\n type: string\n responses:\n 200:\n description: Success\n security:\n - api_key: []\n\n /api/v2/home-protect/quotation/unique/{uuid}:\n get:\n tags:\n - Quotations\n summary: Get quotation by unique ID\n parameters:\n - name: uuid\n in: path\n required: true\n schema:\n type: string\n responses:\n 200:\n description: Success\n security:\n - api_key: []\n\n /api/v2/home-protect/refs:\n get:\n tags:\n - References\n summary: Get all reference data\n responses:\n 200:\n description: Success\n\n /api/v2/home-protect/refs/key/{key}:\n get:\n tags:\n - References\n summary: Get reference data by key\n parameters:\n - name: key\n in: path\n required: true\n schema:\n type: string\n responses:\n 200:\n description: Success\n\n /api/v1/refs/postcodes:\n get:\n tags:\n - References\n summary: Get All Postcodes\n operationId: getPostcodes\n responses:\n 200:\n description: Success\n content: { }\n\n /api/v1/refs/postcode/{postcodeId}:\n get:\n tags:\n - References\n summary: Get Specific Postcode Details\n operationId: getPostcode\n parameters:\n - name: postcodeId\n in: path\n description: ID of postcode to return\n required: true\n schema:\n type: integer\n format: int64\n responses:\n 200:\n description: Success\n content: { }\n 404:\n description: No Postcode Found\n content: { }\n\n /api/v1/refs/banks:\n get:\n tags:\n - References\n summary: Get All Banks and Bank Codes\n responses:\n 200:\n description: Success\n content: { }\n\n /api/v1/refs/bank/{bankKey}:\n get:\n tags:\n - References\n summary: Get Specific Bank Details\n parameters:\n - name: bankKey\n in: path\n description: Code of bank to return\n required: true\n schema:\n type: string\n responses:\n 200:\n description: Success\n content: { }\n 404:\n description: No Bank Found\n content: { }\n\n /api/v1/refs/nationalities:\n get:\n tags:\n - References\n summary: Get All Nationalities and Nationalities Codes\n responses:\n 200:\n description: Success\n content: { }\n\n /api/v1/refs/nationality/{nationalityCode}:\n get:\n tags:\n - References\n summary: Get Specific Nationalities Details\n parameters:\n - name: nationalityCode\n in: path\n description: Code of nationality to return\n required: true\n schema:\n type: string\n responses:\n 200:\n description: Success\n content: { }\n 404:\n description: No Nationalities Found\n content: { }\n\n /payment/start:\n post:\n tags:\n - Payment\n summary: Start payment\n parameters: [ ]\n requestBody:\n description: Start Payment details, POST must be done in form POST redirection. Example, https://sandbox.takaful-ikhlas.com.my/payment/start\n content:\n multipart/form-data:\n schema:\n $ref: '#/components/schemas/StartPayment'\n application/json:\n schema:\n $ref: '#/components/schemas/StartPayment'\n required: true\n responses:\n 200:\n description: Success\n content: { }\n 400:\n description: |-\n Bad Request\n - No Quotation ID Found\n\n /payment/verify/public/{uniqueId}:\n post:\n tags:\n - Payment\n summary: Verify payment status\n parameters:\n - name: uniqueId\n in: query\n description: Quotation unique ID\n schema:\n type: string\n requestBody:\n description: Verify paymet status\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/PaymentVerify'\n required: true\n responses:\n 200:\n description: Success\n content: { }\n 400:\n description: |-\n Bad Request\n - No Quotation ID Found\n\n\n /api/v2/home-protect/document/receipt/{uniqueId}:\n get:\n tags:\n - Document\n summary: Get payment receipt\n parameters:\n - name: uniqueId\n in: path\n required: true\n schema:\n type: string\n responses:\n 200:\n description: Success\n security:\n - api_key: []\n\n /api/v2/home-protect/document/epolicy/{uniqueId}:\n get:\n tags:\n - Document\n summary: Get e-Policy document\n parameters:\n - name: uniqueId\n in: path\n required: true\n schema:\n type: string\n responses:\n 200:\n description: Success\n security:\n - api_key: []\n\n /api/v2/moody/tigb/batch:\n post:\n tags:\n - Screening\n summary: Check moodys screening batch\n requestBody:\n description: Submit batch screening data to Moodys API\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/MoodysScreening'\n multipart/form-data:\n schema:\n $ref: '#/components/schemas/MoodysScreening'\n required: true\n responses:\n 201:\n description: Screening request processed successfully\n content:\n application/json:\n schema:\n type: array\n items:\n type: object\n required:\n - dob\n - idNo\n - name\n - status\n - responseId\n - nationality\n - reviewStatus\n properties:\n dob:\n description: Date of birth in ISO 8601 format\n type: string\n format: date-time\n example: 1990-01-01T00:00:00.000Z\n idNo:\n description: Identification number\n type: string\n example: A12345678\n name:\n description: Screened individual name\n type: string\n example: MICHAEL LIU\n status:\n description: Screening process status\n type: string\n example: COMPLETE\n responseId:\n description: Unique response identifier from Moody’s\n type: string\n example: \"62549\"\n nationality:\n description: Nationality country code\n type: string\n example: ID\n reviewStatus:\n description: Screening match result\n type: string\n example: NOMATCH\n security:\n - api_key: [ ]\n x-codegen-request-body-name: body\n\n /api/v1/customer/check/individual:\n get:\n tags:\n - Screening\n summary: Check MOHA screening by ID number\n description: Validate individual customer record using identification number\n parameters:\n - name: idNo\n in: query\n description: Identification number of the individual\n required: true\n schema:\n type: string\n example: \"880808015008\"\n responses:\n 200:\n description: Validation result returned successfully\n content:\n application/json:\n schema:\n type: object\n required:\n - code\n - message\n - data\n properties:\n code:\n description: HTTP-like response code\n type: integer\n example: 200\n message:\n description: Response message\n type: string\n example: Success\n data:\n type: object\n required:\n - passed\n properties:\n passed:\n description: Indicates whether the individual check passed\n type: boolean\n example: true\n 400:\n description: Invalid request parameters\n 404:\n description: Customer not found\n 500:\n description: Internal server error\n security:\n - api_key_v1: [ ]\n\n /api/v1/customer/check/nationality:\n get:\n tags:\n - Screening\n summary: Check sanction nationality\n description: Validate nationality information using nationality ID\n parameters:\n - name: nationalityId\n in: query\n description: Nationality identifier\n required: true\n schema:\n type: integer\n example: 113\n responses:\n 200:\n description: Nationality validation result returned successfully\n content:\n application/json:\n schema:\n type: object\n required:\n - code\n - message\n - data\n properties:\n code:\n description: HTTP-like response code\n type: integer\n example: 200\n message:\n description: Response message\n type: string\n example: Success\n data:\n type: object\n required:\n - passed\n properties:\n passed:\n description: Indicates whether nationality check passed\n type: boolean\n example: false\n 400:\n description: Invalid nationality ID\n 500:\n description: Internal server error\n security:\n - api_key_v1: [ ]\n\ncomponents:\n\n securitySchemes:\n api_key:\n type: apiKey\n in: header\n name: x-consumer-custom-id\n description: Consumer authentication key\n api_key_v1:\n type: apiKey\n in: header\n name: apiKey\n description: Consumer for v1 API\n\n schemas:\n\n PayloadPricing:\n type: object\n required:\n - buildingCode\n - includedContent\n - includedBuilding\n - buildingCoverage\n - contentCoverage\n - coverageStartedAt\n - coverageEndedAt\n - addOnCode\n properties:\n buildingCode:\n type: number\n enum: [4001, 4005, 4006]\n example: 4001\n includedContent:\n type: boolean\n includedBuilding:\n type: boolean\n buildingMaterial:\n type: string\n enum: [C1A, C1B, \"\"]\n buildingCoverage:\n type: number\n example: 500000\n contentCoverage:\n type: number\n example: 200000\n coverageStartedAt:\n type: string\n format: date\n example: 2025-06-09\n coverageEndedAt:\n type: string\n format: date\n example: 2026-06-09\n addOnCode:\n type: array\n items:\n type: string\n enum: [HP6A, HP6B, HP7, HP8]\n\n CreateQuotation:\n allOf:\n - $ref: '#/components/schemas/PayloadPricing'\n - type: object\n properties:\n residentialStatus:\n type: string\n enum: [Owner, Tenant]\n buildingType:\n type: string\n enum: [Landed, Non-Landed]\n numberOfStoreys:\n type: string\n example: \"2\"\n propertyType:\n type: string\n example: B01,C01\n customerType:\n type: string\n enum: [NRIC, MYPR, PASSPORT]\n customerID:\n type: string\n example: \"880888088888\"\n participantName:\n type: string\n example: John Doe\n mobilePhoneNumber:\n type: string\n example: \"+60123456789\"\n emailAddress:\n type: string\n example: example@example.com\n dateOfBirth:\n type: string\n example: 01/01/1990\n\n UpdateQuotation:\n type: object\n properties:\n buildingCoverage:\n type: number\n contentCoverage:\n type: number\n addOnCode:\n type: array\n items:\n type: string\n\n StartPayment:\n description: All fields are required\n type: object\n properties:\n commonId:\n type: string\n description: commonId from the created quotation\n example: 1537\n agentCode:\n type: string\n example: V0123456\n returnUrl:\n type: string\n description: URL for our payment service to POST the data back to, after payment\n example: https://sandbox.takaful-ikhlas.com.my/payment/test/landing-page\n channel:\n type: string\n description: Payment initiate from which channel. Only 'WEB', 'MOBILE', 'API', 'AGENT PORTAL' or 'BANCA' allowed\n example: WEB\n enum: [ 'WEB', 'MOBILE', 'API', 'AGENT PORTAL', 'BANCA' ]\n madeBy:\n type: string\n description: Payment initiate from who. Only 'WTP', 'CUSTOMER' or 'AGENT' allowed\n example: WTP\n enum: [ 'WTP', 'CUSTOMER', 'AGENT' ]\n paymentType:\n type: string\n description: Payment type, use by agent. Only 'GROSS' or 'NETT' allowed\n example: GROSS\n enum: [ 'GROSS', 'NETT' ]\n product:\n type: string\n description: Product type, use by agent. Only 'TRAVEL', 'PA' or 'MOTOR' allowed\n example: GROSS\n enum: [ 'TRAVEL', 'PA', 'MOTOR' ]\n\n MoodysScreening:\n description: All required fields must be completed before quotation acceptance is allowed\n type: object\n required:\n - reportName\n - trackName\n - metadata\n properties:\n reportName:\n description: Report identifier name\n type: string\n example: GODIRECT\n trackName:\n description: Tracking reference name\n type: string\n example: 20240809160800_GI00026_COMP-PRCAR\n metadata:\n description: List of customer metadata\n type: array\n items:\n type: object\n required:\n - fullName\n - idType\n - dob\n - nationality\n - countryCodeValue\n properties:\n fullName:\n description: Full name as per identification document\n type: string\n example: Michael Liu\n idType:\n description: Type of identification document\n type: string\n enum:\n - NRIC\n - MYPR\n - PASSPORT\n example: PASSPORT\n idNo:\n description: Identification number\n type: string\n example: A12345678\n dob:\n description: Date of birth in YYYY-MM-DD format\n type: string\n example: 1990-01-01\n nationality:\n description: Nationality of the customer\n type: string\n example: Indonesia\n countryCodeValue:\n description: ISO country code (2 characters)\n type: string\n example: ID\n userInfo:\n description: Additional user information\n type: object\n example: { }\n"
{}