{"id":18302319,"url":"https://github.com/outscale/oapi-cli","last_synced_at":"2026-04-01T17:32:50.972Z","repository":{"id":154193200,"uuid":"585563647","full_name":"outscale/oapi-cli","owner":"outscale","description":"OUTSCALE API CLI","archived":false,"fork":false,"pushed_at":"2026-03-18T12:47:29.000Z","size":2819,"stargazers_count":25,"open_issues_count":9,"forks_count":0,"subscribers_count":5,"default_branch":"master","last_synced_at":"2026-03-19T03:28:23.952Z","etag":null,"topics":["maturity-incubating"],"latest_commit_sha":null,"homepage":"https://docs.outscale.com/fr/userguide/Installer-et-configurer-oapi-cli.html","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/outscale.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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":"2023-01-05T13:48:06.000Z","updated_at":"2026-03-18T12:47:08.000Z","dependencies_parsed_at":"2025-06-12T16:23:31.223Z","dependency_job_id":"c024c900-c03b-42d0-b48f-c6835b01d5f6","html_url":"https://github.com/outscale/oapi-cli","commit_stats":null,"previous_names":[],"tags_count":17,"template":false,"template_full_name":null,"purl":"pkg:github/outscale/oapi-cli","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/outscale%2Foapi-cli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/outscale%2Foapi-cli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/outscale%2Foapi-cli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/outscale%2Foapi-cli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/outscale","download_url":"https://codeload.github.com/outscale/oapi-cli/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/outscale%2Foapi-cli/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31290537,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T13:12:26.723Z","status":"ssl_error","status_checked_at":"2026-04-01T13:12:25.102Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["maturity-incubating"],"created_at":"2024-11-05T15:19:13.967Z","updated_at":"2026-04-01T17:32:50.908Z","avatar_url":"https://github.com/outscale.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# oapi-cli\n\n[![Project Incubating](https://docs.outscale.com/fr/userguide/_images/Project-Incubating-blue.svg)](https://docs.outscale.com/en/userguide/Open-Source-Projects.html)\n[![](https://dcbadge.limes.pink/api/server/HUVtY5gT6s?style=flat\u0026theme=default-inverted)](https://discord.gg/HUVtY5gT6s)\n\n\u003cp align=\"center\"\u003e\n  \u003cimg alt=\"Terminal Icon\" src=\"https://img.icons8.com/ios-filled/100/console.png\" width=\"100px\"\u003e\n\u003c/p\u003e\n\n---\n\n## 🌐 Links\n\n* 📘 Documentation: [Variable usage](./variable.md)\n* 🧪 Nightly builds: [Latest AppImage](https://github.com/outscale/oapi-cli/releases/tag/nightly-linux)\n* 🤝 Discussions \u0026 Feedback: [Discord](https://discord.gg/HUVtY5gT6s)\n\n---\n\n## 📄 Table of Contents\n\n* [Overview](#-overview)\n* [Requirements](#-requirements)\n* [Installation](#-installation)\n\n  * [macOS](#macos)\n  * [Linux](#linux)\n  * [Windows](#windows)\n* [Usage](#-usage)\n\n  * [Command Syntax](#command-syntax)\n  * [Autocompletion](#autocompletion)\n  * [Variable System](#variable-system)\n* [Configuration](#-configuration)\n\n  * [Config File](#config-file)\n  * [Environment Variables](#environment-variables)\n* [Notes](#-notes)\n* [License](#-license)\n\n---\n\n## 🧭 Overview\n\n**oapi-cli** is a command-line interface for interacting with OUTSCALE APIs.\nIt supports advanced argument syntax, response chaining, JSON file inputs, and a built-in variable system to streamline complex workflows.\n\nThe CLI is fully self-contained, with prebuilt packages for Linux (AppImage), macOS (Homebrew), and Windows (zip archive).\n\n---\n\n## ✅ Requirements\n\n* Outscale API access (AK/SK or login/password)\n* Config file or environment variables for authentication\n* AppImage support (Linux only, see notes if FUSE is not installed)\n\n---\n\n## 💻 Installation\n\n### macOS\n\n```bash\nbrew tap outscale/tap\nbrew install outscale/tap/oapi-cli\n```\n\nOr manually:\n\n```bash\ngit clone https://github.com/outscale/homebrew-tap\ncd homebrew-tap\nbrew install Formula/oapi-cli.rb\n```\n\n---\n\n### Linux\n\nDownload the AppImage from the [nightly build](https://github.com/outscale/oapi-cli/releases/tag/nightly-linux).\n\n```bash\nchmod a+x ./oapi-cli-x86_64.AppImage\n./oapi-cli-x86_64.AppImage\n```\n\nOptional installation:\n\n```bash\nsudo mv oapi-cli-x86_64.AppImage /usr/local/bin/oapi-cli\n```\n\n**Note:** If you see FUSE-related errors, use:\n\n```bash\n./oapi-cli-x86_64.AppImage --appimage-extract-and-run ReadImages\n```\n\n---\n\n### Windows\n\nDownload `oapi-cli-x86_64-windows.zip` from [Releases](https://github.com/outscale/oapi-cli/releases/latest).\nExtract and run `oapi-cli.exe`.\n\n\u003e ⚠️ Config is read from `.\\config.json` in the current directory.\n\n---\n\n## 🚀 Usage\n\n### 🧾 Command Syntax\n\n```bash\noapi-cli \u003cOperation\u003e [OPTIONS]\n```\n\nGet general help:\n\n```bash\noapi-cli --help\n```\n\nGet help for a specific operation:\n\n```bash\noapi-cli --help DeleteTags\n```\n\n### Examples\n\n#### Complex arguments\n\n```bash\noapi-cli DeleteTags --ResourceIds '[\"ID0\", \"ID1\"]' --Tags '[{\"Key\": \"k0\", \"Value\": \"v0\"}, {\"Key\": \"k1\", \"Value\": \"v1\"}]'\n```\n\nAlternative syntax:\n\n```bash\noapi-cli --color DeleteTags \\\n  --ResourceIds[] \"ID0\" --ResourceIds[] \"ID1\" \\\n  --Tags.0.Key k0 --Tags.0.Value v0 \\\n  --Tags.1.Key k1 --Tags.1.Value v1\n```\n\nZsh workaround (for brackets):\n\n```bash\noapi-cli --color DeleteTags '--ResourceIds[]' \"ID0\" '--ResourceIds[]' \"ID1\" ...\n```\n\nVerbose mode:\n\n```bash\noapi-cli --verbose ReadVms\n```\n\nUse `--file` to pass argument from a file:\n\n```bash\necho -n false \u003e false.txt\noapi-cli ReadVms --DryRun --file false.txt\n```\n\n### CreatePolicy with JSON string\n\n```bash\noapi-cli CreatePolicy --PolicyName please \\\n  --Document --jsonstr-file ./policy.json\n```\n\n---\n\n## 🧩 Autocompletion\n\n### Bash\n\n```bash\nsource \u003c(oapi-cli-x86_64.AppImage --bash-completion)\n```\n\nOr source `oapi-cli-completion.bash`.\n\n### Zsh\n\n```zsh\nautoload bashcompinit\nbashcompinit\nsource ~/oapi-cli-completion.bash\n\nautoload -Uz compinit \u0026\u0026 compinit  # if not already in .zshrc\n```\n\n---\n\n## 🔁 Variable System\n\noapi-cli supports internal variables between chained calls.\n\n```bash\noapi-cli CreateVms --ImageId IMG_ID --set-var vm_id=Vms.0.VmId \\\n  CreateTags --ResourceIds[] --var vm_id --Tags.0.Key Name ..Value \"my vm\"\n```\n\nThis captures the `VmId` from the first call and reuses it in the second.\n\nMore examples in [variable.md](./variable.md)\n\n---\n\n## 🛠 Configuration\n\n### 📄 Config File\n\nLocated at:\n\n* Unix/macOS: `~/.osc/config.json`\n* Windows: `.\\\\config.json` (same folder as binary)\n\nExample:\n\n```json\n{\n  \"default\": {\n    \"access_key\": \"MYACCESSKEY\",\n    \"secret_key\": \"MYSECRETKEY\",\n    \"region\": \"eu-west-2\"\n  },\n  \"us\": {\n    \"access_key\": \"MYACCESSKEY\",\n    \"secret_key\": \"MYSECRETKEY\",\n    \"region\": \"us-east-2\"\n  }\n}\n```\n\nSupported keys: `access_key`, `secret_key`, `region`, `x509_client_cert`, `client_certificate`, `x509_client_sslkey`, `proxy`, `endpoint`, `endpoints`\n\n---\n\n### 🌍 Environment Variables\n\n```bash\n# AK/SK authentication\nexport OSC_ACCESS_KEY=...\nexport OSC_SECRET_KEY=...\n\n# Login/password authentication\nexport OSC_LOGIN=...\nexport OSC_PASSWORD=...\n\n# Region (default: eu-west-2)\nexport OSC_REGION=...\n\n# Profile\nexport OSC_PROFILE=default\n\n# Override endpoint\nexport OSC_ENDPOINT_API=https://...\n```\n\n---\n\n## 📝 Notes\n\n* The CLI supports multiple argument styles (cascaded, OSC-style, JSON).\n* SDK is generated from [COGNAC](https://github.com/outscale/COGNAC) using [osc-api](https://github.com/outscale/osc-api).\n* If AppImage FUSE fails, try `--appimage-extract-and-run`.\n\n---\n\n## 📜 License\n\n**oapi-cli** is licensed under BSD-3-Clause.\n\n© Outscale SAS\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foutscale%2Foapi-cli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foutscale%2Foapi-cli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foutscale%2Foapi-cli/lists"}