{"openapi":"3.1.0","info":{"title":"ZARONIA Verify - independent SA FRN & money-market coupon verification","version":"1.0.0","description":"Recompute and verify ZARONIA-linked coupons against the published SARB Compounded ZARONIA Index. Listed FRNs use the universal SARB §2.2.3 compounded-index formula (5-bday lookback, Modified Following IPD schedule, 4dp); OTC money-market uses 1-bday lookback, Act/365, half-up 4dp. Every paid response carries full workings (observation dates, index values, formula) and a verdict against your expected coupon at 0.05bp tolerance. Engines match JSE BESA / bank acceptance vectors to 4dp.","x-guidance":"Free: GET /v1/conventions (the rules), GET /v1/index/latest (freshness). Paid via x402 (USDC on Base): POST /v1/verify/frn to verify a listed FRN coupon, POST /v1/verify/otc for money-market, POST /v1/verify/portfolio for up to 10 instruments, GET /v1/index/{date} or /v1/index?from=&to= for the SARB index itself. Malformed input returns a free 400 before any payment is requested.","contact":{"email":"api@3l-groupconsulting.co.za"}},"servers":[{"url":"https://api.zaroniacalculator.co.za"}],"paths":{"/v1/conventions":{"get":{"operationId":"getConventions","summary":"Calculation conventions (free)","responses":{"200":{"description":"Conventions for both engines"}}}},"/v1/index/latest":{"get":{"operationId":"getLatestIndex","summary":"Latest SARB index point (free)","responses":{"200":{"description":"Latest published index date and value"}}}},"/v1/index/{date}":{"get":{"operationId":"getIndexPoint","summary":"One SARB Compounded ZARONIA Index point","parameters":[{"name":"date","in":"path","required":true,"schema":{"type":"string","format":"date"}}],"responses":{"200":{"description":"Index point"},"402":{"description":"Payment required (x402)"},"404":{"description":"No publication for that date"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.005"},"protocols":[{"x402":{}}]}}},"/v1/index":{"get":{"operationId":"getIndexRange","summary":"SARB index range","parameters":[{"name":"from","in":"query","required":true,"schema":{"type":"string","format":"date"}},{"name":"to","in":"query","required":true,"schema":{"type":"string","format":"date"}}],"responses":{"200":{"description":"Index points"},"400":{"description":"Invalid dates (free)"},"402":{"description":"Payment required (x402)"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.02"},"protocols":[{"x402":{}}]}}},"/v1/verify/frn":{"post":{"operationId":"verifyListedFrn","summary":"Verify a listed FRN ZARONIA coupon","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"calc_date":{"type":"string","format":"date","description":"Date to recompute the coupon at — issue, reset, or mid-period"},"issue_date":{"type":"string","format":"date"},"first_coupon_date":{"type":"string","format":"date","description":"First IPD; Modified Following schedule generated from here"},"coupon_frequency":{"type":"string","enum":["Monthly","Quarterly","Semi-annually","Annually"]},"margin_pct":{"type":"number","minimum":-5,"maximum":20,"description":"Prospectus margin/spread, percent p.a."},"lookback_bdays":{"type":"integer","minimum":0,"maximum":10,"default":5},"expected_coupon_pct":{"type":"number","description":"Optional — response verdicts match/mismatch at 0.0005% (0.05bp) tolerance"}},"required":["calc_date","issue_date","first_coupon_date","coupon_frequency","margin_pct"],"additionalProperties":false}}}},"responses":{"200":{"description":"Recomputed coupon + workings + verdict","content":{"application/json":{"schema":{"type":"object","properties":{"instrument_type":{"type":"string"},"coupon_pct":{"type":"number","description":"Recomputed coupon, 4dp"},"verdict":{"type":"string","enum":["match","mismatch","no_expectation"]},"difference_pct":{"type":"number"},"workings":{"type":"object","description":"Observation dates, index values, n_obs, formula, convention — the full audit trail"},"source":{"type":"string"},"index_coverage":{"type":"object","properties":{"earliest":{"type":"string"},"latest":{"type":"string"}}},"disclaimer":{"type":"string"}},"required":["instrument_type","coupon_pct","verdict","workings","disclaimer"]}}}},"400":{"description":"Invalid input (free — rejected before payment)"},"402":{"description":"Payment required (x402)"},"422":{"description":"Valid input the index cannot answer yet (e.g. calc_date beyond index coverage)"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.25"},"protocols":[{"x402":{}}]}}},"/v1/verify/otc":{"post":{"operationId":"verifyOtcMoneyMarket","summary":"Verify an OTC money-market ZARONIA coupon","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"settlement_date":{"type":"string","format":"date","description":"Settlement = issue date; interest accrues from this day"},"margin_pct":{"type":"number","minimum":-5,"maximum":20},"expected_coupon_pct":{"type":"number"}},"required":["settlement_date","margin_pct"],"additionalProperties":false}}}},"responses":{"200":{"description":"Recomputed coupon + workings + verdict","content":{"application/json":{"schema":{"type":"object","properties":{"instrument_type":{"type":"string"},"coupon_pct":{"type":"number","description":"Recomputed coupon, 4dp"},"verdict":{"type":"string","enum":["match","mismatch","no_expectation"]},"difference_pct":{"type":"number"},"workings":{"type":"object","description":"Observation dates, index values, n_obs, formula, convention — the full audit trail"},"source":{"type":"string"},"index_coverage":{"type":"object","properties":{"earliest":{"type":"string"},"latest":{"type":"string"}}},"disclaimer":{"type":"string"}},"required":["instrument_type","coupon_pct","verdict","workings","disclaimer"]}}}},"400":{"description":"Invalid input (free)"},"402":{"description":"Payment required (x402)"},"422":{"description":"Valid input the index cannot answer yet"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.10"},"protocols":[{"x402":{}}]}}},"/v1/verify/portfolio":{"post":{"operationId":"verifyPortfolio","summary":"Verify up to 10 instruments in one call","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"instruments":{"type":"array","minItems":1,"maxItems":10,"items":{"oneOf":[{"allOf":[{"type":"object","properties":{"type":{"const":"listed_frn"},"id":{"type":"string"}},"required":["type"]},{"type":"object","properties":{"calc_date":{"type":"string","format":"date","description":"Date to recompute the coupon at — issue, reset, or mid-period"},"issue_date":{"type":"string","format":"date"},"first_coupon_date":{"type":"string","format":"date","description":"First IPD; Modified Following schedule generated from here"},"coupon_frequency":{"type":"string","enum":["Monthly","Quarterly","Semi-annually","Annually"]},"margin_pct":{"type":"number","minimum":-5,"maximum":20,"description":"Prospectus margin/spread, percent p.a."},"lookback_bdays":{"type":"integer","minimum":0,"maximum":10,"default":5},"expected_coupon_pct":{"type":"number","description":"Optional — response verdicts match/mismatch at 0.0005% (0.05bp) tolerance"}},"required":["calc_date","issue_date","first_coupon_date","coupon_frequency","margin_pct"],"additionalProperties":false}]},{"allOf":[{"type":"object","properties":{"type":{"const":"otc_money_market"},"id":{"type":"string"}},"required":["type"]},{"type":"object","properties":{"settlement_date":{"type":"string","format":"date","description":"Settlement = issue date; interest accrues from this day"},"margin_pct":{"type":"number","minimum":-5,"maximum":20},"expected_coupon_pct":{"type":"number"}},"required":["settlement_date","margin_pct"],"additionalProperties":false}]}]}}},"required":["instruments"],"additionalProperties":false}}}},"responses":{"200":{"description":"Per-instrument results + summary"},"400":{"description":"Invalid input (free)"},"402":{"description":"Payment required (x402)"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"1.00"},"protocols":[{"x402":{}}]}}}}}