"openapi: 3.0.1\ninfo:\n title: Ikhlas Secure Travel Takaful\n description: Provides compensation in the event of permanent disablement or death caused by accident\n termsOfService: http://sandbox.takaful-ikhlas.com.my\n contact:\n email: digital@mnrb.com.my\n version: 1.0.0\n logoUrl: assets/images/catalog-icon/vectorPa.svg\nservers:\n- url: https://sandbox.takaful-ikhlas.com.my/api/v1\n- url: https://sandbox.takaful-ikhlas.com.my/\n description: For payment and document endpoints\ntags:\n- name: Plans\n description: Ikhlas Secure Travel Plans\n- name: Quotations\n description: Quotations API\n- name: Policies\n description: Policies API\n- name: Customers\n description: Customers API\n- name: Beneficiaries\n description: Beneficiaries API\n- name: Nominees\n description: Nominees API\n- name: References\n description: General API\n- name: Payment\n description: Payment API\n- name: Document\n description: Document API\npaths:\n /refs/travel/plans:\n get:\n tags:\n - Plans\n summary: Get All Ikhlas Secure Travel Takaful Plans\n parameters:\n - name: travel_type\n in: query\n description: 'Travel type for this plan. Type available: senior, individual, family'\n schema:\n type: string\n - name: period_type\n in: query\n description: 'Either annual for single_return'\n schema:\n type: string\n - name: period\n in: query\n description: 'Number of days'\n schema:\n type: integer\n - name: area\n in: query\n description: 'Coverage code. Coverage code available: 1, 2, 3, 4'\n schema:\n type: integer\n - name: numberOfPerson\n in: query\n description: 'Number of adult for this travel'\n schema:\n type: integer\n - name: numberOfPerson\n in: query\n description: 'Number of adult for this travel'\n schema:\n type: integer\n responses:\n 200:\n description: Success\n content: {}\n 400:\n description: Bad request\n content: {}\n security:\n - api_key: []\n /refs/travel/airlines:\n get:\n tags:\n - Airline\n summary: Get List of Airline Companies\n parameters: []\n responses:\n 200:\n description: Success\n content: {}\n 400:\n description: Bad request\n content: {}\n /customer:\n post:\n tags:\n - Customer\n summary: Create Travel Customer\n requestBody:\n description: Customer details\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Customer'\n required: true\n responses:\n 200:\n description: Success\n content: {}\n 400:\n description: Bad request\n content: {}\n /nonmotor/travel/quotation:\n post:\n tags:\n - Quotations\n summary: Create Travel Quotation\n requestBody:\n description: Quotation details\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Quotation'\n required: true\n responses:\n 200:\n description: Success\n content: {}\n security:\n - api_key: []\n x-codegen-request-body-name: body\n /nonmotor/travel/quotation/{quotationId}:\n get:\n tags:\n - Quotations\n summary: Get Quotation Details by ID\n parameters:\n - name: quotationId\n in: path\n description: Quotation ID\n required: true\n schema:\n type: integer\n responses:\n 200:\n description: Success\n content: {}\n 400:\n description: |-\n Bad Request\n - No Quotation ID Found\n content: {}\n security:\n - api_key: []\n /nonmotor/travel/policies:\n get:\n tags:\n - Policies\n summary: Get List Policies\n parameters:\n - name: offset\n in: query\n description: 'The page number. Default is 0. Example: 0'\n schema:\n type: integer\n - name: limit\n in: query\n description: 'The numbers of items to return. Default is 10. Example: 30'\n schema:\n type: integer\n - name: attributes\n in: query\n description: 'Select attributes to show for quotation. Example: id,grossContribution,riskCode'\n schema:\n type: string\n - name: insuredName\n in: query\n description: 'Select quotations with this idNo only. Example: 900101010101'\n schema:\n type: string\n - name: insuredIdNo\n in: query\n description: 'Select quotations with this idNo only. Example: 900101010101'\n schema:\n type: string\n - name: includeInsured\n in: query\n description: 'Include customer details for each quotation. Example: true'\n schema:\n type: boolean\n - name: insuredAttributes\n in: query\n description: 'Select attributes to show for customer. Example: idNo,name'\n schema:\n type: string\n - name: includeQuotation\n in: query\n description: 'Include all beneficiaries details for each quotation. Example:\n true'\n schema:\n type: boolean\n - name: quotationAttributes\n in: query\n description: 'Select attributes to show for beneficiary. Example: name,beneficiaryType'\n schema:\n type: string\n - name: includePayment\n in: query\n description: 'Select quotations with this customer''s name. Example: customer\n name'\n schema:\n type: string\n - name: paymentAttributes\n in: query\n description: 'Select quotations with this idNo only. Example: 900101010101'\n schema:\n type: string\n responses:\n 200:\n description: Success\n content: {}\n security:\n - api_key: []\n /nonmotor/travel/policy/{policyId}:\n get:\n tags:\n - Policies\n summary: Get Policy Details by Policy Number\n parameters:\n - name: policyId\n in: path\n description: Policy ID\n required: true\n schema:\n type: integer\n responses:\n 200:\n description: Success\n content: {}\n 400:\n description: |-\n Bad Request\n - No Policy Found\n content: {}\n security:\n - api_key: []\n /customer/check/existing:\n get:\n tags:\n - Customers\n summary: Get Existing Customer Details by ID and Name\n parameters:\n - name: idNo\n in: path\n description: Customer ID No\n required: true\n schema:\n type: string\n - name: name\n description: Customer Name\n required: true\n schema:\n type: string\n responses:\n 200:\n description: Success\n content: {}\n 400:\n description: |-\n Bad Request\n - Unable to verify participant information\n content: {}\n security:\n - api_key: []\n /beneficiary/customer/{customerId}:\n post:\n tags:\n - Beneficiaries\n summary: Create Beneficiary\n parameters:\n - name: customerId\n in: path\n description: Customer ID\n required: true\n schema:\n type: integer\n requestBody:\n description: 'Beneficiary details: idNo required'\n content:\n multipart/form-data:\n schema:\n $ref: '#/components/schemas/Beneficiary'\n application/json:\n schema:\n $ref: '#/components/schemas/Beneficiary'\n required: true\n responses:\n 200:\n description: Success\n content: {}\n security:\n - api_key: []\n x-codegen-request-body-name: body\n /nominee/customer/{customerId}:\n post:\n tags:\n - Nominees\n summary: Create Nominee for Individual Only\n parameters:\n - name: customerId\n in: path\n description: Customer ID\n required: true\n schema:\n type: integer\n requestBody:\n description: Nominee details\n content:\n multipart/form-data:\n schema:\n $ref: '#/components/schemas/Nominee'\n application/json:\n schema:\n $ref: '#/components/schemas/Nominee'\n required: true\n responses:\n 200:\n description: Success\n content: {}\n security:\n - api_key: []\n x-codegen-request-body-name: body\n /nominees/customer/{customerId}:\n get:\n tags:\n - Nominees\n summary: Get Customer's Nominees\n parameters:\n - name: customerId\n in: path\n description: Customer ID\n required: true\n schema:\n type: integer\n responses:\n 200:\n description: Success\n content: {}\n security:\n - api_key: []\n /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 security:\n - api_key: []\n /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 security:\n - api_key: []\n /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 security:\n - api_key: []\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 /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 /payment/document/ePolicy:\n get:\n tags:\n - Document\n summary: Get policy certificate\n parameters:\n - name: uniqueId\n in: query\n description: Quotation unique ID\n schema:\n type: string\n - name: product\n in: query\n description: Value is 'travel'\n schema:\n type: string\n responses:\n 200:\n description: Success\n content: {}\n 400:\n description: |-\n Bad Request\n - No Policy Number Found\n /payment/document/receipt:\n get:\n tags:\n - Document\n summary: Get payment receipt\n parameters:\n - name: uniqueId\n in: query\n description: Quotation unique ID\n schema:\n type: string\n - name: product\n in: query\n description: Value is 'travel'\n schema:\n type: string\n responses:\n 200:\n description: Success\n content: {}\n 400:\n description: |-\n Bad Request\n - No Invoice Number Found\n /payment/document/nomination:\n get:\n tags:\n - Document\n summary: Get Nomination document\n parameters:\n - name: uniqueId\n in: query\n description: Quotation unique ID\n schema:\n type: string\n - name: product\n in: query\n description: Value is 'travel'\n schema:\n type: string\n responses:\n 200:\n description: Success\n content: {}\n 400:\n description: |-\n Bad Request\n - No Invoice Number Found\n\ncomponents:\n schemas:\n PaymentVerify:\n type: object\n required:\n - product\n properties:\n product:\n description: Product Code, value must be 'TRAVEL'\n type: string\n Quotation:\n type: object\n required:\n - planId\n - coverageStartDate\n - coverageEndDate\n - customerId\n - wakafPct\n - destination\n - area\n - noOfPersonTravelling\n - addons\n - period_type\n - travel_type\n - beneficiaries\n - nominees\n - groups\n - destination\n properties:\n planId:\n description: Plan ID from list of Travel plans\n type: integer\n example: 3\n coverageStartDate:\n description: Must not be in past\n type: string\n example: '2022-04-01'\n coverageEndDate:\n description: Must be ahead of coverageStartDate\n type: string\n example: '2022-04-15'\n customerId:\n description: Only valid customer ID\n type: integer\n wakafPct:\n description: Valid values - 0, 5, 10, 15, 20, 25, 30\n type: integer\n enum: [0, 5, 10, 15, 20, 25, 30]\n destination:\n description: Destination\n type: string\n enum: ['Domestic', 'Asia', 'Worldwide excluding USA & Canada', 'Worldwide including USA & Canada']\n area:\n description: Destination area code\n type: integer\n enum: [1, 2, 3, 4]\n noOfPersonTravelling:\n description: Number of person travelling, including children and adults\n type: integer\n addons:\n description: Additional coverage code base on plan\n type: string\n default: [IST31A]\n period_type:\n description: Period Type\n type: string\n enum: ['annual', 'single_return']\n travel_type:\n description: Travel Type\n type: string\n enum: ['individual', 'group', 'family', 'senior']\n groups:\n description: Only valid group IDs. Only for group\n type: array\n items:\n type: integer\n default: []\n beneficiaries:\n description: Only valid beneficiary IDs. Only for family\n type: array\n items:\n type: integer\n default: []\n nominees:\n description: Only 1 executor allowed. Total percentage for all nominees' sharePct and wakafPct must be 100\n type: array\n default: []\n items:\n type: object\n properties:\n nomineeId:\n type: integer\n example: '3'\n sharePct:\n type: integer\n isExecutor:\n type: boolean\n example:\n - nomineeId: 1\n sharePct: 100\n isExecutor: true\n UpdateQuotation:\n type: object\n properties:\n coverageStartDate:\n description: Must not be in past\n type: string\n example: '2021-09-01'\n coverageEndDate:\n description: Must be ahead of coverageStartDate\n type: string\n example: '2022-04-15'\n customerId:\n description: Only valid customer ID\n type: integer\n example: 1274\n wakafPct:\n type: integer\n example: 30\n enum: [0, 5, 10, 15, 20, 25, 30]\n beneficiaries:\n description: Only valid beneficiary IDs\n type: array\n items:\n type: integer\n example: [647] \n nominees:\n description: Only 1 executor allowed. Total percentage for all nominees' sharePct and wakafPct must be 100\n type: array\n items:\n type: object\n properties:\n nomineeId:\n type: integer\n sharePct:\n type: integer\n isExecutor:\n type: boolean\n nomineeType:\n type: boolean\n example:\n - nomineeId: 638\n sharePct: 70\n isExecutor: false\n quotationVersion:\n type: integer\n example: 2\n isAnnual:\n description: Not compulsory if the plan is not annual\n type: boolean\n example: false\n Customer:\n type: object\n required:\n - name\n - mobileNumber\n - email\n properties:\n name:\n description: Maximum 40 characters, certain special characters not allowed\n type: string\n example: Najwa Hidayah binti Abu Syamil\n email:\n description: Must be valid email format\n type: string\n example: email@domain.com\n mobileNumber:\n description: Must starts with 601\n type: string\n example: \"60176665555\"\n idNo:\n description: Must be unique. Minimum 4 and Maximum 20 characters.\n type: string\n idType:\n description: Choose 'NRIC', 'MYPR', 'PASSPORT' or 'BUSINESS'\n type: string\n enum: ['NRIC', 'MYPR', 'PASSPORT', 'BUSINESS']\n dateOfBirth:\n description: Required for idType PASSPORT only\n type: string\n address1:\n description: Maximum 40 characters, certain special characters not allowed\n type: string\n address2:\n description: Maximum 40 characters, certain special characters not allowed\n type: string\n address3:\n description: Maximum 40 characters, certain special characters not allowed\n type: string\n postcode:\n description: Must be a valid postcode and exactly 5 characters\n type: string\n nationalityCode:\n description: Required for idType PASSPORT only. Must be valid nationalityCode, exactly 3 characters only. For NRIC the value is defaulted to 139\n type: string\n bankKey:\n description: Must be a valid bankKey from list of banks\n type: string\n bankAccountNumber:\n description: Bank account length must be valid based on selected bankKey\n type: string\n UpdateCustomer:\n type: object\n properties:\n name:\n description: Maximum 40 characters, certain special characters not allowed\n type: string\n mobileNumber:\n description: Must starts with 601\n type: string\n email:\n description: Must be valid email format\n type: string\n idNo:\n description: Must be unique. Minimum 4 and Maximum 20 characters.\n type: string\n example: \"900101010101\"\n idType:\n description: Only 'NRIC', 'MYPR' or 'PASSPORT', 'BUSINESS' allowed\n type: string\n example: NRIC\n enum: ['NRIC', 'MYPR', 'PASSPORT', 'BUSINESS']\n dateOfBirth:\n description: Required for idType PASSPORT only\n type: string\n address1:\n description: Maximum 40 characters, certain special characters not allowed\n type: string\n example: Jalan Suakasih 2/6B\n address2:\n description: Maximum 40 characters, certain special characters not allowed\n type: string\n example: Bandar Tun Hussein Onn\n address3:\n description: Maximum 40 characters, certain special characters not allowed\n type: string\n example: Cheras\n postcode:\n description: Must be a valid postcode and exactly 5 characters\n type: string\n example: \"43200\"\n bankKey:\n description: Must be a valid bankKey from list of banks\n type: string\n example: BOFAMY2X\n bankAccountNumber:\n description: Bank account length must be valid based on selected bankKey\n type: string\n example: \"563525178211\"\n Beneficiary:\n type: object\n required:\n - name\n - beneficiaryType\n properties:\n name:\n description: Maximum 40 characters, certain special characters not allowed\n type: string\n example: Fatimah binti Ahmad\n beneficiaryType:\n description: Only 'CHILD' or 'SPOUSE' allowed\n type: string\n example: SPOUSE\n enum: ['CHILD', 'SPOUSE']\n idNo:\n description: Must be unique. Minimum 4 and Maximum 20 characters.\n type: string\n idType:\n description: Only 'NRIC', 'MYPR' or 'PASSPORT' allowed\n type: string\n enum: ['NRIC', 'MYPR', 'PASSPORT']\n dateOfBirth:\n description: Required for idType PASSPORT only\n type: string\n nationalityCode:\n description: Required for idType PASSPORT and beneficiaryType SPOUSE only. Must be valid nationalityCode, exactly 3 characters only\n type: string\n fullTimeEducation:\n description: Required for beneficiaryType CHILD between age 18 and 23\n type: boolean\n Nominee:\n type: object\n required:\n - name\n - mobileNumber\n - email\n - relationship\n properties:\n name:\n description: Maximum 40 characters, certain special characters not allowed\n type: string\n example: Son Nominee\n relationship:\n description: Must be a valid relationship from list of relationships\n type: string\n example: Son\n mobileNumber:\n description: Must starts with 601\n type: string\n example: \"60198765432\"\n email:\n description: Must be valid email format\n type: string\n example: son@nominee.com\n idNo:\n description: Must be unique. Minimum 4 and Maximum 20 characters.\n type: string\n idType:\n description: Only 'NRIC', 'MYPR' or 'PASSPORT' allowed\n type: string\n enum: ['NRIC', 'MYPR', 'PASSPORT']\n dateOfBirth:\n description: Required for idType PASSPORT\n type: string\n UpdateNominee:\n type: object\n properties:\n name:\n description: Maximum 40 characters, certain special characters not allowed\n type: string\n example: Son Nominee\n relationship:\n description: Must be a valid relationship from list of relationships\n type: string\n example: Son\n mobileNumber:\n description: Must starts with 601\n type: string\n example: \"60198765432\"\n email:\n description: Must be valid email format\n type: string\n example: son@nominee.com\n idNo:\n type: string\n example: \"900101010101\"\n idType:\n description: Only 'NRIC', 'MYPR' or 'PASSPORT' allowed\n type: string\n example: NRIC\n enum: ['NRIC', 'MYPR', 'PASSPORT']\n dateOfBirth:\n description: Required for idType PASSPORT\n type: string\n AcceptQuotation:\n description: All required fields must be completed before quotation acceptance is allowed\n type: object\n properties:\n aqad:\n type: boolean\n example: true\n consent:\n type: boolean\n example: true\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 securitySchemes:\n api_key:\n type: apiKey\n name: apikey\n in: header"
{}