{"_rev":"3-1fc4cd46e80aaeb17d426d3aae29eb88","time":{"created":"2026-05-13T16:18:56.034Z","modified":"2026-05-13T16:18:56.601Z","1.0.0":"2026-05-13T16:01:31.972Z","1.0.1":"2026-05-13T16:18:56.303Z"},"_id":"@apiaddicts/openapi2insomnia","name":"@apiaddicts/openapi2insomnia","dist-tags":{"latest":"1.0.1"},"versions":{"1.0.1":{"name":"@apiaddicts/openapi2insomnia","version":"1.0.1","description":"Convert OpenAPI 3.0.x specs to Insomnia v5 collections","type":"module","engines":{"node":">=20.0.0","pnpm":">=9.0.0"},"bin":{"o2i":"dist/index.js"},"exports":{".":"./dist/index.js"},"keywords":["openapi","insomnia","converter","cli","openapi3","insomnia-collection"],"repository":{"type":"git","url":"git+https://github.com/apiaddicts/openapi2insomnia.git"},"homepage":"https://github.com/apiaddicts/openapi2insomnia","bugs":{"url":"https://github.com/apiaddicts/openapi2insomnia/issues"},"dependencies":{"@apidevtools/swagger-parser":"^12.1.0","chalk":"^5.3.0","commander":"^14.0.0","js-yaml":"^4.1.0","zod":"^4.3.0"},"license":"LGPL-3.0-or-later","devDependencies":{"@types/js-yaml":"^4.0.9","@types/node":"^25.0.0","tsup":"^8.0.0","typescript":"^6.0.0","vite":"^6.0.0","vitest":"^4.1.0"},"scripts":{"build":"tsup","dev":"tsup --watch","test":"vitest run","test:watch":"vitest","typecheck":"tsc --noEmit","lint":"tsc --noEmit"},"_id":"@apiaddicts/openapi2insomnia@1.0.1","_integrity":"sha512-DR1Mc86lWsB8ojWuBuY5wvTfzAz7i/r4nUNT9y2Thp1ASNzrNjv0PiqGohCU3wjeydC+Wh+75DsElh/AzrcFuQ==","_resolved":"C:\\Users\\hp_Xa\\AppData\\Local\\Temp\\33fde82af6070185a66e7a8d7a5471c4\\apiaddicts-openapi2insomnia-1.0.1.tgz","_from":"file:apiaddicts-openapi2insomnia-1.0.1.tgz","_nodeVersion":"25.3.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-DR1Mc86lWsB8ojWuBuY5wvTfzAz7i/r4nUNT9y2Thp1ASNzrNjv0PiqGohCU3wjeydC+Wh+75DsElh/AzrcFuQ==","shasum":"182f4e66994b754be8f1160dd07a7a32831a19fc","tarball":"https://registry.npmjs.org/@apiaddicts/openapi2insomnia/-/openapi2insomnia-1.0.1.tgz","fileCount":4,"unpackedSize":95366,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDzBfYm7pTp494bOJ06tmWVyM8dHkMgO/ggrUpcjrbYKgIhAMdiXelFG5/zZ2evYPF1WmhaW4rJuOil+pI809BhGYOz"}]},"_npmUser":{"name":"apiaddict","email":"devrel@apiaddicts.org"},"directories":{},"maintainers":[{"name":"apiaddict","email":"devrel@apiaddicts.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/openapi2insomnia_1.0.1_1778689136169_0.9708718020560532"},"_hasShrinkwrap":false}},"maintainers":[{"name":"apiaddict","email":"devrel@apiaddicts.org"}],"description":"Convert OpenAPI 3.0.x specs to Insomnia v5 collections","homepage":"https://github.com/apiaddicts/openapi2insomnia","keywords":["openapi","insomnia","converter","cli","openapi3","insomnia-collection"],"repository":{"type":"git","url":"git+https://github.com/apiaddicts/openapi2insomnia.git"},"bugs":{"url":"https://github.com/apiaddicts/openapi2insomnia/issues"},"license":"LGPL-3.0-or-later","readme":"# 🛠️ Openapi2Insomnia ![Release](https://img.shields.io/badge/release-1.0.x-purple) ![OpenApi](https://img.shields.io/badge/-openapi-%23Clojure?style=flat&logo=openapiinitiative&logoColor=white) ![Insomnia](https://img.shields.io/badge/Insomnia-4000BF?style=flat&logo=insomnia&logoColor=white) [![NPM](https://img.shields.io/badge/npm-%23CB3837.svg?style=flat&logo=npm&logoColor=white)](https://www.npmjs.com/package/openapi2insomnia)\r\n\r\nConverts an OpenAPI 3.0.x specification into an Insomnia v5 collection ready to import and run tests.\r\n\r\nGenerates one test case (TC) per operation response code — base success TC, per-parameter variants, and error TCs (400, 401, 403, 404) — each with an `afterResponse` validation script that checks the status code and validates the response body against the schema.\r\n\r\n---\r\n\r\n## Requirements\r\n\r\n- Node.js >= 20\r\n- pnpm >= 9 (development only)\r\n\r\n## Installation\r\n\r\n```bash\r\nnpm install -g openapi2insomnia\r\n```\r\n\r\n### Development setup\r\n\r\n```bash\r\ngit clone https://github.com/apiaddicts/openapi2insomnia\r\ncd openapi2insomnia\r\npnpm install\r\npnpm build\r\n```\r\n\r\n---\r\n\r\n## Usage\r\n\r\n### Installed from npm\r\n\r\n```bash\r\no2i convert -i <path|url> [options]\r\n```\r\n\r\n### Local development\r\n\r\n```bash\r\nnode dist/index.js convert -i <path|url> [options]\r\n```\r\n\r\n### Flags\r\n\r\n| Flag | Required | Description |\r\n|------|----------|-------------|\r\n| `-i, --input <path\\|url>` | yes | Path to a local file or an HTTPS URL |\r\n| `-o, --output <path>` | no | Output file path. If omitted, writes to stdout |\r\n| `-c, --config <path>` | no | Path to an `o2i.config.json` file |\r\n\r\n### Examples\r\n\r\n```bash\r\n# Output to stdout\r\no2i convert -i openapi.yaml\r\n\r\n# Output to a file\r\no2i convert -i openapi.yaml -o collection.yaml\r\n\r\n# With config (generates one file per environment)\r\no2i convert -i openapi.yaml -c o2i.config.json\r\n\r\n# From a remote URL\r\no2i convert -i https://api.example.com/openapi.yaml -o collection.yaml\r\n```\r\n\r\n---\r\n\r\n## Config file\r\n\r\nWithout a config file the tool generates a single collection using the spec's server URL as `base_url`.\r\n\r\nWith a config file you can generate one collection per environment, each with its own URL, OAuth2 credentials, and generation options.\r\n\r\n```json\r\n{\r\n  \"minimal_endpoints\": false,\r\n  \"generate_oneOf_anyOf\": false,\r\n  \"examples\": {\r\n    \"correct\": {\r\n      \"string\": \"goodstring\",\r\n      \"integer\": 1,\r\n      \"number\": 1.0,\r\n      \"boolean\": true,\r\n      \"date\": \"2020-01-01\",\r\n      \"date-time\": \"2020-01-01T23:59:59\"\r\n    },\r\n    \"wrong\": {\r\n      \"string\": \"badstring\",\r\n      \"integer\": \"badstring\",\r\n      \"number\": \"badstring\",\r\n      \"boolean\": \"badboolean\",\r\n      \"date\": \"2020-40-40\",\r\n      \"date-time\": \"2020-40-40T00:00:00\"\r\n    }\r\n  },\r\n  \"environments\": [\r\n    {\r\n      \"name\": \"DEV\",\r\n      \"base_url\": \"https://dev.api.example.com/v1\",\r\n      \"host_server_pattern\": \"%dev%\",\r\n      \"token_url\": \"https://dev.keycloak.example.com/token\",\r\n      \"authorization_url\": \"https://dev.keycloak.example.com/auth\",\r\n      \"client_id\": \"my-client-dev\",\r\n      \"client_secret\": \"\",\r\n      \"target_folder\": \"out\",\r\n      \"microcks_headers\": true,\r\n      \"read_only\": false,\r\n      \"has_scopes\": true,\r\n      \"application_token\": true,\r\n      \"number_of_scopes\": 2\r\n    }\r\n  ]\r\n}\r\n```\r\n\r\n### Global options\r\n\r\n| Field | Type | Default | Description |\r\n|-------|------|---------|-------------|\r\n| `minimal_endpoints` | boolean | `false` | Generate only the base success TC per operation, skipping optional-parameter and wrong-body variants. Error TCs (401, 403, 404) and one 400 are still generated. |\r\n| `generate_oneOf_anyOf` | boolean | `false` | When a request body uses `oneOf`/`anyOf`, generate a TC set per schema variant instead of using only the first. |\r\n| `examples.correct` | object | — | Values used as valid inputs in success TCs and environment variables. |\r\n| `examples.wrong` | object | — | Values used in 400 TCs to intentionally violate schema constraints. |\r\n\r\n### Environment options\r\n\r\n| Field | Type | Default | Description |\r\n|-------|------|---------|-------------|\r\n| `name` | string | — | Environment name in Insomnia and output filename suffix. |\r\n| `base_url` | string | `''` | Base URL of the API. Overridden if `host_server_pattern` finds a match. |\r\n| `host_server_pattern` | string | — | SQL-LIKE pattern (`%` = wildcard) matched against the spec's `servers[]` list to pick the right URL automatically. Case-insensitive. |\r\n| `token_url` | string | from spec | OAuth2 token endpoint. Overrides the value from the spec. |\r\n| `authorization_url` | string | from spec | OAuth2 authorization endpoint. |\r\n| `client_id` | string | `''` | OAuth2 client ID. |\r\n| `client_secret` | string | `''` | OAuth2 client secret. |\r\n| `target_folder` | string | `'.'` | Directory where the output YAML is written. Created if it does not exist. |\r\n| `microcks_headers` | boolean | `false` | Add `X-Microcks-Response-Name` header to every request, using the example name defined in the spec response. |\r\n| `read_only` | boolean | `false` | Generate TCs only for GET operations. |\r\n| `has_scopes` | boolean | `false` | Duplicate each 2xx TC for every configured token type (user scopes, application token). |\r\n| `application_token` | boolean | `false` | Include an `application_token` variant in scope clones. Requires `has_scopes: true`. |\r\n| `number_of_scopes` | integer | `0` | Number of user token scopes to generate (`user_token_scope_1` … `user_token_scope_N`). |\r\n\r\n---\r\n\r\n## Development\r\n\r\n```bash\r\npnpm build        # compile TypeScript → dist/\r\npnpm dev          # compile in watch mode\r\npnpm test         # run unit tests\r\npnpm typecheck    # type-check without emitting\r\n```\r\n\r\n---\r\n\r\n## License\r\n\r\n[GNU Lesser General Public License v3.0](LICENSE)\r\n","readmeFilename":"README.md"}