Catalogue

Sign up

"openapi: 3.0.1\npaths:\n /api/v2/ist/plans:\n get:\n description: >-\n Entry point of the flow. Returns every plan available for the trip parameters, each with its\n base contribution, benefits and add-ons, plus the fee percentages. Same response shape as\n the legacy `GET /api/v1/refs/travel/plans`.\n operationId: AppController_getPlans\n parameters:\n - name: numberOfPerson\n required: false\n in: query\n description: Required when travel_type=group\n schema:\n example: 1\n - name: period\n required: false\n in: query\n description: 'Trip length in days (default 365; single_return brackets: 1-5, 6-10, 11-18, 19-31)'\n schema:\n example: 2\n - name: travel_type\n required: true\n in: query\n description: individual | group | family | senior\n schema:\n example: individual\n - name: period_type\n required: true\n in: query\n description: single_return | annual\n schema:\n example: single_return\n - name: area\n required: true\n in: query\n description: 1=domestic, 2=ASEAN, 3=Asia, 4=Worldwide\n schema:\n example: 2\n responses:\n '200':\n description: Plans with contributions and fees\n content:\n application/json:\n schema:\n example:\n name: individual\n participantMinAge: 30\n participantMaxAge: 70\n childMinAge: 1\n childMaxAge: 18\n travellingType: '1'\n contributions:\n - id: 12\n plan: gold\n riskCode: IST13W\n grossContribution: 100\n totalContribution: 100\n benefits:\n - description: Personal Accident\n addon: false\n premium: 50,000\n - description: Medical Expenses\n addon: false\n premium: 300,000\n addons:\n - id: IST37\n description: Adventurous Activities\n basicPremium: 20\n premium: 20\n cancellationRM: 10\n commissionPct: 25\n wakalahManagementPct: 25\n totalWakalahPct: 45\n rebatePct: 25\n sstPct: 8\n security:\n - x-consumer-custom-id: []\n - apikey: []\n - bearer: []\n summary: List plans with base contributions\n tags:\n - Quotation\n /api/v2/ist/airlines:\n get:\n description: Flight carriers (ICAO/IATA/name) for the quotation flight fields.\n operationId: AppController_getAirlines\n parameters: []\n responses:\n '200':\n description: Airlines\n content:\n application/json:\n schema:\n example:\n - id: 1\n icaoCode: MAS\n iataCode: MH\n airlineName: Malaysia Airlines\n - id: 2\n icaoCode: AXM\n iataCode: AK\n airlineName: AirAsia\n security:\n - x-consumer-custom-id: []\n - apikey: []\n - bearer: []\n summary: List airlines\n tags:\n - Quotation\n /api/v2/ist/quotation:\n post:\n description: >-\n Creates a quotation from the plan chosen in `GET /plans`. Customer, co-travellers\n (`insureds`/`groups`) and `beneficiaries` are sent inline — no separate customer calls.\n Contribution and policy dates are computed server-side. `agentCode` is taken from the\n verified token, not the body.\n operationId: AppController_createQuotation\n parameters: []\n requestBody:\n required: true\n description: Raw SPA quotation payload\n content:\n application/json:\n schema:\n type: string\n examples:\n full:\n summary: Full (customer + beneficiaries inline)\n value:\n agentCode: GA00718\n planId: 12\n travel_type: individual\n period_type: single_return\n area: 1\n destination: JAPAN\n coverageStartDate: 01/07/2026\n coverageEndDate: 31/07/2026\n noOfPersonTravelling: 1\n addOns:\n - IST37\n wakafPct: 0\n customer:\n name: John Doe\n idType: NRIC\n idNo: '900101015531'\n dateOfBirth: 01/01/1990\n mobileNumber: '0123456789'\n email: john@example.com\n address1: No 1, Jalan Satu\n address2: Taman Dua\n postcode: '50000'\n bankKey: MBBEMYKL\n bankAccountNumber: '1234567890'\n beneficiaries:\n - name: Jane Doe\n idNo: '920202025542'\n dateOfBirth: 02/02/1992\n share: '100'\n beneficiaryType: WIFE\n minimal:\n summary: Bare minimum (plan + trip type + dates)\n description: >-\n Smallest payload that prices a rate. Customer/beneficiary details can be added\n later via PATCH.\n value:\n planId: 12\n travel_type: individual\n period_type: single_return\n coverageStartDate: 01/07/2026\n coverageEndDate: 31/07/2026\n responses:\n '200':\n description: Created quotation (raw, no envelope)\n content:\n application/json:\n schema:\n example:\n id: eee57225-cf98-4e25-9b2d-d4aadf1f3f43\n uniqueId: eee57225-cf98-4e25-9b2d-d4aadf1f3f43\n agentCode: GA00718\n planCode: IST13W\n travelType: individual\n area: 1\n coverageStartDate: 01/07/2026\n coverageEndDate: 31/07/2026\n participantName: John Doe\n dateOfBirth: 01/01/1990\n mobilePhoneNumber: '0123456789'\n emailAddress: john@example.com\n basicContributionAmount: '100.00'\n grossContributionAmount: '100.00'\n serviceTax: '8.00'\n netContributionAmount: '108.00'\n info:\n aqad: false\n security:\n - x-consumer-custom-id: []\n - apikey: []\n - bearer: []\n summary: Create a quotation\n tags:\n - Quotation\n /api/v2/ist/quotation/{id}:\n patch:\n description: Patch a not-yet-accepted quotation. Rejected once `aqad` is true.\n operationId: AppController_updateQuotation\n parameters:\n - name: id\n required: true\n in: path\n description: Quotation ID (UUID)\n schema:\n type: string\n requestBody:\n required: true\n description: Partial SPA quotation payload\n content:\n application/json:\n schema:\n example:\n agentCode: GA00718\n planId: 12\n travel_type: individual\n period_type: single_return\n area: 1\n destination: JAPAN\n coverageStartDate: 01/07/2026\n coverageEndDate: 31/07/2026\n noOfPersonTravelling: 1\n addOns:\n - IST37\n wakafPct: 0\n customer:\n name: John Doe\n idType: NRIC\n idNo: '900101015531'\n dateOfBirth: 01/01/1990\n mobileNumber: '0123456789'\n email: john@example.com\n address1: No 1, Jalan Satu\n address2: Taman Dua\n postcode: '50000'\n bankKey: MBBEMYKL\n bankAccountNumber: '1234567890'\n beneficiaries:\n - name: Jane Doe\n idNo: '920202025542'\n dateOfBirth: 02/02/1992\n share: '100'\n beneficiaryType: WIFE\n responses:\n '200':\n description: Updated quotation (envelope)\n content:\n application/json:\n schema:\n example:\n code: 200\n data:\n id: eee57225-cf98-4e25-9b2d-d4aadf1f3f43\n uniqueId: eee57225-cf98-4e25-9b2d-d4aadf1f3f43\n agentCode: GA00718\n planCode: IST13W\n travelType: individual\n area: 1\n coverageStartDate: 01/07/2026\n coverageEndDate: 31/07/2026\n participantName: John Doe\n dateOfBirth: 01/01/1990\n mobilePhoneNumber: '0123456789'\n emailAddress: john@example.com\n basicContributionAmount: '100.00'\n grossContributionAmount: '100.00'\n serviceTax: '8.00'\n netContributionAmount: '108.00'\n info:\n aqad: false\n message: OK\n security:\n - x-consumer-custom-id: []\n - apikey: []\n - bearer: []\n summary: Update a quotation\n tags:\n - Quotation\n get:\n description: Returns the quotation for the calling agent.\n operationId: AppController_getQuotation\n parameters:\n - name: id\n required: true\n in: path\n description: Quotation ID (UUID)\n schema:\n type: string\n responses:\n '200':\n description: Quotation (envelope)\n content:\n application/json:\n schema:\n example:\n code: 200\n data:\n id: eee57225-cf98-4e25-9b2d-d4aadf1f3f43\n uniqueId: eee57225-cf98-4e25-9b2d-d4aadf1f3f43\n agentCode: GA00718\n planCode: IST13W\n travelType: individual\n area: 1\n coverageStartDate: 01/07/2026\n coverageEndDate: 31/07/2026\n participantName: John Doe\n dateOfBirth: 01/01/1990\n mobilePhoneNumber: '0123456789'\n emailAddress: john@example.com\n basicContributionAmount: '100.00'\n grossContributionAmount: '100.00'\n serviceTax: '8.00'\n netContributionAmount: '108.00'\n info:\n aqad: false\n message: OK\n security:\n - x-consumer-custom-id: []\n - apikey: []\n - bearer: []\n summary: Get a quotation\n tags:\n - Quotation\n /api/v2/ist/quotation/{id}/aqad:\n patch:\n description: Marks the quotation accepted. Required before a covernote can be issued.\n operationId: AppController_acceptAqad\n parameters:\n - name: id\n required: true\n in: path\n description: Quotation ID (UUID)\n schema:\n type: string\n requestBody:\n required: true\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/AqadDto'\n examples:\n default:\n value:\n aqad: true\n agentCode: GA00718\n responses:\n '200':\n description: Accepted quotation (envelope)\n content:\n application/json:\n schema:\n example:\n code: 200\n data:\n id: eee57225-cf98-4e25-9b2d-d4aadf1f3f43\n uniqueId: eee57225-cf98-4e25-9b2d-d4aadf1f3f43\n agentCode: GA00718\n planCode: IST13W\n travelType: individual\n area: 1\n coverageStartDate: 01/07/2026\n coverageEndDate: 31/07/2026\n participantName: John Doe\n dateOfBirth: 01/01/1990\n mobilePhoneNumber: '0123456789'\n emailAddress: john@example.com\n basicContributionAmount: '100.00'\n grossContributionAmount: '100.00'\n serviceTax: '8.00'\n netContributionAmount: '108.00'\n info:\n aqad: false\n message: OK\n security:\n - x-consumer-custom-id: []\n - apikey: []\n - bearer: []\n summary: Accept a quotation (AQAD)\n tags:\n - Quotation\n /api/v2/ist/quotation/{id}/covernote:\n post:\n description: >-\n Call after the partner has collected payment on their side. Requires the quotation to be\n accepted (`aqad`). Mints the covernote/policy number and issues the policy via Premia.\n Idempotent — re-calling returns the same covernote. Optional `payment` reference and\n `channel` (default AGENT) in the body.\n operationId: AppController_issueCovernote\n parameters:\n - name: id\n required: true\n in: path\n description: Quotation ID (UUID)\n schema:\n type: string\n requestBody:\n required: false\n description: Optional partner payment reference + channel\n content:\n application/json:\n schema:\n example:\n channel: AGENT\n payment:\n reference: PARTNER-PAY-2026-0001\n amount: '108.00'\n paidAt: '2026-07-15T09:30:00Z'\n responses:\n '200':\n description: Covernote number + Premia id (envelope)\n content:\n application/json:\n schema:\n example:\n code: 200\n data:\n policyNumber: TSAA00000000042\n premiaId: PRM-778812\n message: OK\n '400':\n description: Quotation not accepted or not found\n '403':\n description: Quotation belongs to another agent\n security:\n - x-consumer-custom-id: []\n - apikey: []\n - bearer: []\n summary: Issue covernote (partner-triggered)\n tags:\n - Quotation\n /api/v2/ist/document/{id}:\n get:\n description: >-\n Streams the e-policy PDF. `action=download` sets an attachment disposition; default is\n inline.\n operationId: AppController_getDocument\n parameters:\n - name: id\n required: true\n in: path\n description: Quotation ID (UUID)\n schema:\n type: string\n - name: action\n required: false\n in: query\n schema:\n enum:\n - view\n - download\n type: string\n responses:\n '200':\n description: PDF document\n '404':\n description: Document not found\n security:\n - x-consumer-custom-id: []\n - apikey: []\n - bearer: []\n summary: Get the policy PDF\n tags:\n - Quotation\n /api/v2/ist/refs/bank:\n get:\n description: All banks (code + name) for the bank dropdown.\n operationId: RefsController_listBanks\n parameters: []\n responses:\n '200':\n description: ''\n content:\n application/json:\n schema:\n example:\n - id: 1\n key: MBBEMYKL\n description: MAYBANK\n length: 12\n - id: 2\n key: CIBBMYKL\n description: CIMB BANK\n length: 14\n security:\n - x-consumer-custom-id: []\n - apikey: []\n - bearer: []\n summary: List banks\n tags:\n - Reference\n /api/v2/ist/refs/bank/{bankCode}:\n get:\n operationId: RefsController_getBank\n parameters:\n - name: bankCode\n required: true\n in: path\n schema:\n example: MBBEMYKL\n type: string\n responses:\n '200':\n description: ''\n content:\n application/json:\n schema:\n example:\n id: 1\n key: MBBEMYKL\n description: MAYBANK\n length: 12\n '404':\n description: Bank not found\n security:\n - x-consumer-custom-id: []\n - apikey: []\n - bearer: []\n summary: Look up a bank by code\n tags:\n - Reference\n /api/v2/ist/refs/nationality:\n get:\n description: All nationalities (code, name, sanctioned flag, destinationArea).\n operationId: RefsController_listNationalities\n parameters: []\n responses:\n '200':\n description: ''\n content:\n application/json:\n schema:\n example:\n - id: 1\n key: '139'\n nationality: MALAYSIA\n sanctioned: false\n destinationArea: 1\n - id: 2\n key: '840'\n nationality: UNITED STATES\n sanctioned: false\n destinationArea: 4\n security:\n - x-consumer-custom-id: []\n - apikey: []\n - bearer: []\n summary: List nationalities\n tags:\n - Reference\n /api/v2/ist/refs/nationality/{nationalityCode}:\n get:\n description: Includes the `sanctioned` flag and `destinationArea`.\n operationId: RefsController_getNationality\n parameters:\n - name: nationalityCode\n required: true\n in: path\n schema:\n example: '139'\n type: string\n responses:\n '200':\n description: ''\n content:\n application/json:\n schema:\n example:\n id: 1\n key: '139'\n nationality: MALAYSIA\n sanctioned: false\n destinationArea: 1\n '404':\n description: Nationality not found\n security:\n - x-consumer-custom-id: []\n - apikey: []\n - bearer: []\n summary: Look up a nationality by code\n tags:\n - Reference\n /api/v2/ist/refs/postcode/{postcode}:\n get:\n description: Returns city/state (+ codes) for a Malaysian postcode — fills the quotation address.\n operationId: RefsController_getPostcode\n parameters:\n - name: postcode\n required: true\n in: path\n schema:\n example: '50000'\n type: string\n responses:\n '200':\n description: ''\n content:\n application/json:\n schema:\n example:\n id: 1\n postcode: '50000'\n cityCode: KUL\n city: KUALA LUMPUR\n stateCode: '14'\n state: WILAYAH PERSEKUTUAN KUALA LUMPUR\n region: CENTRAL\n '404':\n description: Postcode not found\n security:\n - x-consumer-custom-id: []\n - apikey: []\n - bearer: []\n summary: Resolve a postcode\n tags:\n - Reference\ninfo:\n title: Ikhlas Secure Travel Takaful\n # description: API documentation for PA Perdana\n termsOfService: http://sandbox.takaful-ikhlas.com.my\n contact:\n email: digital@mnrb.com.my\n logoUrl: assets/images/catalog-icon/vectorPa.svg\n description: Protection for you and your loved ones against travel-related risks and unforeseen events during your journey.\n version: '2.0'\ntags:\n - name: Quotation\n description: Quote → accept → covernote\n - name: Reference\n description: Postcode / bank / nationality lookups\nservers:\n - url: https://sandbox.takaful-ikhlas.com.my\n description: UAT / Sandbox\ncomponents:\n securitySchemes:\n bearer:\n scheme: bearer\n bearerFormat: JWT\n type: http\n in: header\n x-consumer-custom-id:\n type: apiKey\n in: header\n name: x-consumer-custom-id\n apikey:\n type: apiKey\n in: header\n name: apikey\n schemas:\n AqadDto:\n type: object\n properties:\n aqad:\n type: boolean\n example: true\n required:\n - aqad\n InsuredDto:\n type: object\n properties:\n insuredName:\n type: string\n example: John Doe\n insuredIdNric:\n type: string\n example: '200101010001'\n insuredOtherId:\n type: string\n example: null\n insuredBirthDate:\n type: object\n example: null\n relationship:\n type: string\n example: SELF\n required:\n - insuredName\n BeneficiaryDto:\n type: object\n properties:\n beneficiaryName:\n type: string\n example: John Doe\n beneficiaryNameId:\n type: string\n example: '1234567890'\n beneficiaryShare:\n type: string\n example: '100'\n beneficiaryDob:\n type: object\n example: 01/01/1990\n beneficiaryExecutor:\n type: string\n example: 'YES'\n beneficiaryrelationship:\n type: string\n example: WIFE\n required:\n - beneficiaryName\n - beneficiaryNameId\n - beneficiaryShare\n - beneficiaryExecutor\n - beneficiaryrelationship\n QuotationDto:\n type: object\n properties:\n planCode:\n type: string\n example: IST01\n travelType:\n type: string\n example: individual\n enum:\n - individual\n - group\n - family\n - senior\n description: Travel type (matches the type table name; senior = senior citizen)\n periodType:\n type: string\n example: single_return\n enum:\n - single_return\n - annual\n area:\n type: number\n example: 1\n destination:\n type: string\n example: JAPAN\n coverageStartDate:\n type: string\n example: 01/07/2026\n coverageEndDate:\n type: string\n example: 31/07/2026\n noOfPersonTravelling:\n type: number\n example: 1\n addOns:\n example:\n - IST37\n type: array\n items:\n type: string\n customerOption:\n type: string\n example: 'YES'\n waqfEndowment:\n type: string\n example: '0'\n paymentMethod:\n type: string\n example: fpx\n participantName:\n type: string\n example: John Doe\n customerIdNric:\n type: string\n example: '900101010001'\n customerIdOtherId:\n type: string\n example: null\n dateOfBirth:\n type: object\n example: null\n mobilePhoneNumber:\n type: string\n example: '0123456789'\n emailAddress:\n type: string\n example: a@b.com\n address1:\n type: string\n address2:\n type: string\n postalCode:\n type: string\n custBankName:\n type: string\n custBankAccNo:\n type: string\n sstNumber:\n type: string\n tinNumber:\n type: string\n insureds:\n type: array\n items:\n $ref: '#/components/schemas/InsuredDto'\n beneficiaries:\n type: array\n items:\n $ref: '#/components/schemas/BeneficiaryDto'\n PostDto:\n type: object\n properties:\n quotationId:\n type: string\n example: eee57225-cf98-4e25-9b2d-d4aadf1f3f43\n required:\n - quotationId\nsecurity:\n - apikey: []\n"
{}
Takaful Ikhlas API Portal
TERMS & CONDITIONS PRIVACY