{"openapi":"3.1.0","info":{"title":"INI API","version":"1.0.0","description":"Convert between INI configuration files and JSON, in both directions. The parse endpoint reads INI text — sections ([section]), nested sections ([database.replica]), key=value pairs, comments and repeated keys (arrays) — into a clean JSON object; the stringify endpoint turns a JSON object back into a properly formatted INI file. INI is the config format used by Git (.gitconfig), PHP (php.ini), systemd units, desktop entries, tox/setup.cfg, many CLI tools and Windows software. Perfect for editing config programmatically, migrating settings between formats, and reading config in environments that only speak JSON. Pure local computation — no key, no third-party service, instant; send large files via POST. Live, nothing stored. 3 endpoints. Complements the YAML, TOML, CSV and XML converters and is distinct from each.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/ini-api","description":"oanor gateway"}],"tags":[{"name":"INI"},{"name":"Meta"}],"components":{"securitySchemes":{"oanorKey":{"type":"apiKey","in":"header","name":"x-oanor-key","description":"Get your key at https://www.oanor.com/developer/keys"}}},"security":[{"oanorKey":[]}],"paths":{"/v1/parse":{"get":{"operationId":"get_v1_parse","tags":["INI"],"summary":"Parse INI to JSON","description":"","parameters":[{"name":"ini","in":"query","required":true,"description":"INI text","schema":{"type":"string"},"example":"[server]\nhost = localhost\nport = 8080\n[server.tls]\nenabled = true"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"json":{"server":{"tls":{"enabled":true},"host":"localhost","port":"8080"}}},"meta":{"timestamp":"2026-06-02T16:51:44.280Z","request_id":"cb1546c5-233a-4ead-9854-b9a87ba575cd"},"status":"ok","message":"Parse INI to JSON","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/stringify":{"get":{"operationId":"get_v1_stringify","tags":["INI"],"summary":"Convert JSON to INI","description":"","parameters":[{"name":"json","in":"query","required":true,"description":"JSON object","schema":{"type":"string"},"example":"{\"server\":{\"host\":\"localhost\",\"port\":8080}}"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"ini":"[server]\nhost=localhost\nport=8080\n"},"meta":{"timestamp":"2026-06-02T16:51:44.360Z","request_id":"9c525de1-af98-408f-a97e-491befae4571"},"status":"ok","message":"JSON to INI","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/meta":{"get":{"operationId":"get_v1_meta","tags":["Meta"],"summary":"Spec","description":"","parameters":[],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"name":"INI API","notes":"Values are read as strings except booleans true/false; numbers come back as strings (INI has no types). Send large files via POST. Nothing is stored.","version":"v1","endpoints":[{"path":"/v1/parse","params":{"ini":"INI text (required)"},"returns":"the parsed object as JSON"},{"path":"/v1/stringify","params":{"json":"a JSON object (required)"},"returns":"an INI-formatted string"},{"path":"/v1/meta","params":[],"returns":"this document"}],"description":"Convert between INI configuration files and JSON, in both directions. Parses sections ([section]), nested sections ([a.b]), key=value pairs, comments and array values; stringifies a JSON object back into INI. Powered by the `ini` package. Pure local, no key."},"meta":{"timestamp":"2026-06-02T16:51:44.457Z","request_id":"61506218-6450-478f-a672-fee4fe2c9c1e"},"status":"ok","message":"Meta","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}}},"x-oanor-pricing":[{"slug":"free","name":"Free","price_cents_month":0,"monthly_call_quota":820,"rps_limit":2,"hard_limit":true},{"slug":"starter","name":"Starter","price_cents_month":140,"monthly_call_quota":6700,"rps_limit":8,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":1960,"monthly_call_quota":128000,"rps_limit":20,"hard_limit":true},{"slug":"mega","name":"Mega","price_cents_month":5560,"monthly_call_quota":660000,"rps_limit":50,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/ini-api"}