{"openapi":"3.1.0","info":{"title":"induwara.lk Public API","version":"1.0.0","description":"Free public API for Sri-Lanka data: NIC decoding, holidays, working days, income tax, land-area conversion, districts and AI text-to-speech.","contact":{"url":"https://induwara.lk/developers"}},"servers":[{"url":"https://induwara.lk"}],"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]},{}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"x-api-key"},"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"ilk_live_*"}}},"paths":{"/api/v1/nic/{number}":{"get":{"operationId":"nic","summary":"NIC Decoder","description":"Decode a Sri Lankan NIC (old 10-char or new 12-digit) into the data the number encodes: date of birth, gender, age, serial and voting eligibility. Pure parsing — no personal database lookup.","tags":["Identity"],"parameters":[{"name":"number","in":"path","required":true,"description":"The NIC number.","schema":{"type":"string"},"example":"199234567890"}],"responses":{"200":{"description":"Success","content":{"application/json":{}}},"429":{"description":"Rate limit or daily quota exceeded"}}}},"/api/v1/holidays":{"get":{"operationId":"holidays","summary":"Public Holidays","description":"Sri Lankan gazetted holidays for a year (public, bank, mercantile and poya days), with English/Sinhala/Tamil names.","tags":["Calendar"],"parameters":[{"name":"year","in":"query","required":false,"description":"Year (supported: 2026, 2027). Defaults to current year.","schema":{"type":"string"},"example":"2026"},{"name":"type","in":"query","required":false,"description":"Filter to one calendar: public | bank | mercantile.","schema":{"type":"string"},"example":"public"}],"responses":{"200":{"description":"Success","content":{"application/json":{}}},"429":{"description":"Rate limit or daily quota exceeded"}}}},"/api/v1/working-days":{"get":{"operationId":"working-days","summary":"Working Days","description":"Count business days between two dates, excluding weekends and Sri Lankan holidays for the chosen calendar.","tags":["Calendar"],"parameters":[{"name":"from","in":"query","required":true,"description":"Start date YYYY-MM-DD.","schema":{"type":"string"},"example":"2026-01-01"},{"name":"to","in":"query","required":true,"description":"End date YYYY-MM-DD.","schema":{"type":"string"},"example":"2026-03-31"},{"name":"calendar","in":"query","required":false,"description":"public | bank | mercantile | government (default: mercantile).","schema":{"type":"string"},"example":"mercantile"},{"name":"saturday","in":"query","required":false,"description":"Set to 1 to count Saturdays as working days.","schema":{"type":"string"},"example":"0"}],"responses":{"200":{"description":"Success","content":{"application/json":{}}},"429":{"description":"Rate limit or daily quota exceeded"}}}},"/api/v1/tax/paye":{"get":{"operationId":"tax","summary":"Income Tax (PAYE / APIT)","description":"Calculate Sri Lankan personal income tax (APIT) on a gross monthly salary using the current IRD brackets.","tags":["Finance"],"parameters":[{"name":"monthly","in":"query","required":true,"description":"Gross monthly salary in LKR.","schema":{"type":"string"},"example":"250000"}],"responses":{"200":{"description":"Success","content":{"application/json":{}}},"429":{"description":"Rate limit or daily quota exceeded"}}}},"/api/v1/convert/land":{"get":{"operationId":"convert-land","summary":"Land Area Converter","description":"Convert a Sri Lankan land area between perch, rood, acre, cent, hectare, m², ft² and yd², with acre-rood-perch deed notation.","tags":["Utility"],"parameters":[{"name":"value","in":"query","required":true,"description":"The amount to convert.","schema":{"type":"string"},"example":"10"},{"name":"from","in":"query","required":true,"description":"Source unit: perch | sqft | sqm | sqyd | rood | acre | hectare | cent.","schema":{"type":"string"},"example":"perch"}],"responses":{"200":{"description":"Success","content":{"application/json":{}}},"429":{"description":"Rate limit or daily quota exceeded"}}}},"/api/v1/vat":{"get":{"operationId":"vat","summary":"VAT Calculator","description":"Add or remove Sri Lankan VAT. mode=add adds VAT to a net amount; mode=remove extracts VAT from a gross amount. Rate defaults to the standard 18%.","tags":["Finance"],"parameters":[{"name":"amount","in":"query","required":true,"description":"Amount in LKR.","schema":{"type":"string"},"example":"10000"},{"name":"rate","in":"query","required":false,"description":"VAT rate %, default 18.","schema":{"type":"string"},"example":"18"},{"name":"mode","in":"query","required":false,"description":"add | remove (default add).","schema":{"type":"string"},"example":"add"}],"responses":{"200":{"description":"Success","content":{"application/json":{}}},"429":{"description":"Rate limit or daily quota exceeded"}}}},"/api/v1/loan":{"get":{"operationId":"loan","summary":"Loan EMI Calculator","description":"Equated monthly instalment (EMI) plus total interest and total payment, using the reducing-balance formula.","tags":["Finance"],"parameters":[{"name":"principal","in":"query","required":true,"description":"Loan amount in LKR.","schema":{"type":"string"},"example":"5000000"},{"name":"rate","in":"query","required":true,"description":"Annual interest rate %.","schema":{"type":"string"},"example":"12.5"},{"name":"months","in":"query","required":true,"description":"Tenure in months.","schema":{"type":"string"},"example":"240"}],"responses":{"200":{"description":"Success","content":{"application/json":{}}},"429":{"description":"Rate limit or daily quota exceeded"}}}},"/api/v1/fd":{"get":{"operationId":"fd","summary":"Fixed Deposit Calculator","description":"Fixed-deposit maturity and effective annual yield. payout=cumulative|monthly; wht=1 applies the 5% withholding tax on interest.","tags":["Finance"],"parameters":[{"name":"principal","in":"query","required":true,"description":"Deposit amount in LKR.","schema":{"type":"string"},"example":"1000000"},{"name":"rate","in":"query","required":true,"description":"Annual interest rate %.","schema":{"type":"string"},"example":"10"},{"name":"months","in":"query","required":true,"description":"Tenure in months.","schema":{"type":"string"},"example":"12"},{"name":"payout","in":"query","required":false,"description":"cumulative | monthly.","schema":{"type":"string"},"example":"cumulative"},{"name":"wht","in":"query","required":false,"description":"1 to apply 5% WHT.","schema":{"type":"string"},"example":"0"}],"responses":{"200":{"description":"Success","content":{"application/json":{}}},"429":{"description":"Rate limit or daily quota exceeded"}}}},"/api/v1/districts":{"get":{"operationId":"districts","summary":"Districts of Sri Lanka","description":"The 25 districts with province, a short tagline and notable places — for address forms, dropdowns and travel apps.","tags":["Reference"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{}}},"429":{"description":"Rate limit or daily quota exceeded"}}}},"/api/v1/voice":{"post":{"operationId":"voice","summary":"AI Voice (Text to Speech)","description":"Convert text into natural AI speech (MP3). Requires a free API key. Body: { text, voice }. Hosted on our own infrastructure.","tags":["AI"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{}}},"429":{"description":"Rate limit or daily quota exceeded"}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"text":{"type":"string","description":"Text to synthesise (JSON body). May embed effects: inline [pause] [laugh] [sigh], or wrapping <whisper>…</whisper> <slow>…</slow>.","example":"Hello! <whisper>this is whispered</whisper> [laugh]"},"voice":{"type":"string","description":"Voice id: eve | ara | leo | rex | sal (default eve).","example":"eve"},"language":{"type":"string","description":"Language code, e.g. en, auto, fr, de, hi, ja … (28 supported, default en).","example":"en"},"codec":{"type":"string","description":"mp3 | wav (default mp3).","example":"mp3"},"sample_rate":{"type":"string","description":"8000 | 16000 | 22050 | 24000 | 44100 | 48000 Hz.","example":"24000"},"bit_rate":{"type":"string","description":"32000 | 64000 | 96000 | 128000 | 192000 (mp3 only).","example":"128000"},"text_normalization":{"type":"string","description":"Expand numbers/dates/abbreviations before speaking (default true).","example":"true"}}}}}}}}}}