Skip to content

feat: cover the latest v3 API and make Ingot the default build type - #15

Merged
kotapeter merged 2 commits into
mainfrom
feat/latest-api-coverage
Oct 29, 2026
Merged

kotapeter merged 2 commits into
mainfrom
feat/latest-api-coverage

Conversation

@kotapeter

@kotapeter kotapeter commented Oct 29, 2026 •

Copy link
Copy Markdown
Contributor

Covers every operation in the current v3 OpenAPI spec. 32 operations had no command; they do now. The spec deprecates nixpacks in favour of ingot, which new Git applications use by default.

New commands:

  • apps edge-cache-toggle, apps egress-ips, apps maintenance-mode get|update, apps internal-connections list|create|delete
  • apps dockerfiles list|get: the Dockerfiles Ingot generated, or the repository's own, one version per change
  • apps repository and static-sites repository: get|tree|contents|search
  • apps processes runs (cron run history), exec (exits with the command's exit code) and terminal (interactive shell over WebSocket)
  • databases backup-targets list|create|update|delete and databases external-backups list|create|delete|restore|download-url; restore needs --confirm
  • resources db-versions, object-storage purge-cache, api-keys current

Changed commands:

  • apps update --build-type lists ingot as the default and warns on stderr that nixpacks is deprecated
  • apps processes create|update: --concurrency-policy and --max-run-time; update also takes --schedule and --job-start-policy
  • --search and status/type/project filters on apps, databases, pipelines and projects lists; --type on databases backups list
  • --from, --to, --search, --filters, --order and --limit on the five log commands
  • --percent on app and static site metrics response-time
  • apps processes get showed a blank name and status (fields the API doesn't return); it now shows the display name, key and cron settings. deployments get shows the Dockerfile ID, apps get shows CDN and edge cache.

Testing

  • Each new and changed command's request was recorded against a local server and checked against the spec (method, path, query, body fields, required fields, enums): 51 requests, 0 mismatches
  • apps processes terminal tested against a local WebSocket server in a pseudo-terminal: input and output, close codes, refused handshake, no TTY (resize messages not tested)
  • Unit tests (104), pentest (54), lint, format and typecheck pass
  • E2E cases added for every new and changed command. Not run yet against the dev API.

- apps edge-cache-toggle, egress-ips, maintenance-mode get|update,
  internal-connections list|create|delete, dockerfiles list|get and
  repository get|tree|contents|search
- apps processes runs, exec (exits with the command's exit code) and
  terminal (interactive shell over WebSocket)
- static-sites repository get|tree|contents|search
- databases backup-targets list|create|update|delete and external-backups
  list|create|delete|restore|download-url; restore needs --confirm
- resources db-versions, object-storage purge-cache, api-keys current
- apps update --build-type lists ingot as the default and warns that
  nixpacks is deprecated
- apps processes create/update take --concurrency-policy and --max-run-time;
  update also takes --schedule and --job-start-policy
- --search and status/type/project filters on apps, databases, pipelines
  and projects lists; --type on databases backups list
- --from, --to, --search, --filters, --order and --limit on log commands
- --percent on app and static site response-time metrics
- apps processes get shows display_name and the cron settings instead of
  fields the API doesn't return; deployments get shows the Dockerfile ID;
  apps get shows CDN and edge cache
- rollback and cron trigger descriptions follow the updated spec
…the API URL for terminal

- node_modules was committed as a symlink: .gitignore had node_modules/,
  which only matches directories; it now matches the link too
- apps processes exec rejects a --timeout that isn't a whole number of
  seconds from 1 to 60 instead of crashing on the request timeout
- apps processes terminal drops a trailing slash from the API URL, as
  every other command does
@kotapeter
kotapeter merged commit d49a757 into main Oct 29, 2026
3 checks passed
@kotapeter
kotapeter deleted the feat/latest-api-coverage branch October 29, 2026 15:15
@github-actions

Copy link
Copy Markdown

🎉 This PR is included in version 2.1.0 🎉

The release is available on:

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants