{"id":44334508,"url":"https://github.com/cjohnsto-nz/missio","last_synced_at":"2026-03-14T08:14:47.853Z","repository":{"id":336893495,"uuid":"1151252006","full_name":"cjohnsto-nz/missio","owner":"cjohnsto-nz","description":"A lightweight, OpenCollection compatible REST API client for VS Code.","archived":false,"fork":false,"pushed_at":"2026-02-11T11:22:36.000Z","size":835,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-11T16:57:11.130Z","etag":null,"topics":["apiclient","opencollection","restclient","vscode-extension"],"latest_commit_sha":null,"homepage":"https://getmissio.dev/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cjohnsto-nz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-06T08:32:11.000Z","updated_at":"2026-02-11T11:22:40.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/cjohnsto-nz/missio","commit_stats":null,"previous_names":["cjohnsto-nz/missio"],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/cjohnsto-nz/missio","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cjohnsto-nz%2Fmissio","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cjohnsto-nz%2Fmissio/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cjohnsto-nz%2Fmissio/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cjohnsto-nz%2Fmissio/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cjohnsto-nz","download_url":"https://codeload.github.com/cjohnsto-nz/missio/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cjohnsto-nz%2Fmissio/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29566656,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-18T00:47:08.760Z","status":"online","status_checked_at":"2026-02-18T02:00:09.468Z","response_time":162,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["apiclient","opencollection","restclient","vscode-extension"],"created_at":"2026-02-11T11:09:01.617Z","updated_at":"2026-02-22T10:02:31.069Z","avatar_url":"https://github.com/cjohnsto-nz.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Missio REST Client\n\nA lightweight, [OpenCollection](https://www.opencollection.com) compatible REST API client for VS Code.\n\nMissio uses the OpenCollection standard, which is file based (and AI friendly). Collaboration is supported via Git and external secret providers.\n\n\u003cimg \n  alt=\"Missio Editor Screenshot\" \n  src=\"https://github.com/user-attachments/assets/2e9d38e9-ce60-45ce-b294-573773690772\"\n/\u003e\n\n\n\n## Missio is a REST Client without an identity crisis\n\n### What Missio Is:\n- **A VSCode Extension**\n- **A REST Client**\n- **Local, Git Native**\n\n### What Missio Is Not:\n- **A Standalone IDE**\n- **A SAAS Platform**\n- **Cloud Synced**\n- **A Monthly Subscription**\n- **Feature Complete vs Postman**\n\nMissio aims to use VSCode functionality whereever possible.\n\nGit integration, Workspaces, Commands, are all provided by VSCode. \n\nBYO Agentic Coding tools. \n\n### Please Note\n\nMissio is still in alpha. Key missing features from Postman include:\n- Scripting\n- Websockets\n- GraphQL\n\nWe aim to support these in the coming weeks.\n\n## Features\n\n### Collections \u0026 Requests\n- **OpenCollection v1.0.0 compatible (partially at least)** — YAML-based collections, requests, folder, and environments\n- **Auto-detect collections** — scans workspace for `collection.yml` / `workspace.yml`\n- **Custom editors** — visual editors for requests, folders, and collections with native dirty indicators, Ctrl+S save, and undo/redo\n- **Tree view sidebar** — browse collections, folders, and requests with inline actions\n- **CodeLens** — send requests directly from YAML files\n- **Import from Postman** — import Postman v2.0/v2.1 collections and environments\n- **Import requests** — paste a cURL, wget, or raw HTTP request and import it directly into a collection\n\n### Request Editor\n- **Visual request builder** — method selector, URL bar, headers, query params, body (raw, form-encoded, multipart)\n- **Send with Ctrl+Enter** — keyboard shortcut to send requests\n- **Response viewer** — formatted body (JSON, XML, HTML) with syntax highlighting, word wrap, line numbers, headers, status, timing, and size\n- **Response preview** — PDF and image responses render inline with an option to open in browser\n- **Cancel requests** — cancel in-flight requests from the command palette or UI\n- **Request timer** — live elapsed time display while a request is in progress, with the previous response dimmed until the new one arrives\n- **Auto headers** — `Content-Type` and `Content-Length` are calculated automatically and shown as read-only (override by specifying your own)\n- **Unresolved variable prompts** — if any `{{variables}}` remain unresolved after interpolation, a modal prompts you to fill them in before sending\n- **Save examples** — save response snapshots and load them later\n\n#### Large Response Handling\n\nVery large responses (for example, large OData `$metadata` payloads) can be expensive to syntax-highlight and render in a webview.\n\nMissio includes safeguards to keep the editor responsive:\n\n- **Automatic virtualization** — large text responses are rendered using a windowed/virtualized view instead of creating DOM nodes for every line.\n- **Header notice** — when virtualization is active, the response bar shows: `Large response was virtualized`.\n- **Timing waterfall** — the timing tooltip includes virtualization phases such as `Split Lines` and `Virtualize`.\n\nIf you still need a hard escape hatch, you can disable response rendering entirely:\n\n- **Setting**: `missio.disableResponseRendering` — when enabled, the response body is downloaded but not rendered (status/headers/timing/size still show).\n\n### Variables \u0026 Environments\n- **Environment management** — switch between dev/staging/prod with `{{variable}}` interpolation\n- **Variable inheritance** — Collection \u003e Folder \u003e Environment (each layer overrides the previous)\n- **Variable highlighting** — source-colored overlays on all input fields (URL, headers, params, body, auth)\n- **Click-to-inspect** — click any `{{variable}}` to see its resolved value, source, and actions\n- **Toggle resolved values** — `{{}}` button shows actual resolved values in-place across all fields\n- **Autocomplete** — type `{{` to get variable suggestions with source labels\n- **`.env` file support** — automatically loads `.env` files from collection directories\n\n### Authentication\n- **Auth types** — None, Bearer Token, Basic Auth, API Key, OAuth 2.0\n- **Auth inheritance** — Request \u003e Folder \u003e Collection (first non-inherit wins)\n- **OAuth 2.0** — client credentials, password, and authorization code (PKCE) flows with automatic token management\n- **Token status display** — live token expiry countdown with Get Token / Refresh buttons in request, folder, and collection editors\n- **Token caching** — tokens stored securely per collection, environment, and credentials\n- **Refresh on 4xx** — helper button on 4xx responses to clear a stale OAuth token and retry\n\n### Folder Defaults\n- **Folder editor** — configure folder-level auth, headers, and variables via `folder.yml`\n- **Folder inheritance** — folder defaults apply to all requests in the folder\n- **New folders default to inherit** — auth set to `inherit` by default\n\n### Collection Editor\n- **Visual collection editor** — overview, auth, headers, variables, and environments tabs\n- **Environment editor** — add, remove, rename environments with variable key-value editing\n- **Collection-level defaults** — set default auth and headers for all requests\n- **Validate collection** — right-click a collection to validate all files against the OpenCollection JSON schema\n\n### Secret Providers\n- **Azure Key Vault** — fetch secrets at runtime via `az cli` (no SDK required)\n- **Collection-scoped config** — secret providers defined in `collection.yml`, fully portable\n- **`$secret` syntax** — reference secrets with `{{$secret.providerName.secretName}}` in any field\n- **Secret autocomplete** — type `{{$secret.` to get provider and secret name suggestions\n- **On-demand reveal** — click a secret variable to see its source, then click \"Reveal Value\" to fetch and display it\n- **Test connection** — verify vault access and RBAC from the collection editor's Secrets tab\n\n## Secret Providers\n\nSecret providers are configured per-collection in `collection.yml`. Secrets are resolved at runtime — no secret values are stored in files.\n\n### Azure Key Vault\n\nPrerequisites: `az login` and RBAC access (Key Vault Secrets User) on the vault.\n\nAdd a provider to your collection:\n\n```yaml\nconfig:\n  secretProviders:\n    - name: my-vault\n      type: azure-keyvault\n      namespace: my-vault\n```\n\nThe namespace supports variables — useful for per-environment vaults:\n\n```yaml\nconfig:\n  secretProviders:\n    - name: kv\n      type: azure-keyvault\n      namespace: \"{{vault_name}}\"\n```\n\nFor cross-subscription vaults, specify the subscription:\n\n```yaml\nconfig:\n  secretProviders:\n    - name: kv\n      type: azure-keyvault\n      namespace: \"{{vault_name}}\"\n      subscription: \"{{subscription_id}}\"\n```\n\nThen reference secrets anywhere you'd use a variable:\n\n```yaml\nhttp:\n  auth:\n    type: bearer\n    token: \"{{$secret.my-vault.api-key}}\"\n```\n\nSecrets are resolved at send time and during OAuth2 token acquisition. The collection editor's **Secrets** tab lets you test connections and see available secret names.\n\n## Commands\n\n| Command | Description |\n|---------|-------------|\n| `Missio: Send Request` | Execute the current request |\n| `Missio: Select Active Environment` | Choose the active environment |\n| `Missio: New Collection` | Scaffold a new collection |\n| `Missio: Import Collection` | Import from Postman (v2.0/v2.1) |\n| `Missio: Import Request` | Import a request from cURL, wget, or raw HTTP format |\n| `Missio: Import Environment` | Import environment from Postman |\n| `Missio: New Request` | Create a new request YAML file |\n| `Missio: New Folder` | Create a new folder in a collection |\n| `Missio: New Environment` | Add an environment to a collection |\n| `Missio: Configure Collection` | Open the collection editor |\n| `Missio: Configure Folder` | Open the folder editor |\n| `Missio: Refresh Collections` | Re-scan the workspace |\n| `Missio: Configure Secret Provider` | Set up secret providers in collection |\n| `Missio: Validate Collection` | Validate collection files against the OpenCollection schema |\n| `Missio: Cancel Request` | Cancel all in-flight requests |\n\n## Keyboard Shortcuts\n\n| Shortcut | Action |\n|----------|--------|\n| `Ctrl+Enter` | Send request (in request editor) |\n\n## OpenCollection Spec\n\nThis extension implements the [OpenCollection v1.0.0 specification](https://spec.opencollection.com). All unknown/unsupported fields in YAML files are preserved on save (round-trip safe).\n\n- Schema: `https://schema.opencollection.com/json/draft-07/opencollection/v1.0.0`\n- Workspace schema: `https://schema.opencollection.com/json/draft-07/opencollection-workspace/v1.0.0`\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcjohnsto-nz%2Fmissio","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcjohnsto-nz%2Fmissio","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcjohnsto-nz%2Fmissio/lists"}