Skip to content

feat(cloud): refactor deploy server API to manifests/deployments#142

Open
Dav-14 wants to merge 3 commits into
mainfrom
feat/deploy-server-api-refactor
Open

feat(cloud): refactor deploy server API to manifests/deployments#142
Dav-14 wants to merge 3 commits into
mainfrom
feat/deploy-server-api-refactor

Conversation

@Dav-14
Copy link
Copy Markdown
Contributor

@Dav-14 Dav-14 commented Apr 20, 2026

Summary

  • Adopt updated OpenAPI spec from terraform-hcp-proxy feat/app-stack-assignment branch
  • Replace runs and versions subcommands with first-class deployments and manifests resources
  • Apps now use name + optional stackId instead of organizationId
  • Move deploy action under deployments create
  • Regenerate Speakeasy SDK client

Breaking changes

  • apps runs command removed (replaced by apps deployments)
  • apps versions command removed (replaced by apps manifests)
  • apps deploy command removed (replaced by apps deployments create)
  • apps create now requires --name flag
  • apps show no longer shows run status

New command tree

apps
├── list / create / show / delete
├── deployments (list, show, logs, create)
├── manifests (list, show, create, delete, update)
│   └── versions (list, show, push)
└── variables (list, create, delete)

Test plan

  • Verify apps list works with new API
  • Verify apps create --name test creates an app
  • Verify apps deployments create --app-id <id> --path manifest.yaml triggers a deployment
  • Verify apps manifests create --name test --path manifest.yaml creates a manifest
  • Verify apps manifests versions push --manifest-id <id> --path manifest.yaml pushes a version
  • Verify polling/wait logic in deployments create works end-to-end

🤖 Generated with Claude Code

Adopt the new OpenAPI spec from terraform-hcp-proxy feat/app-stack-assignment
branch which replaces runs/versions with first-class manifests and deployments.

- Replace `runs` subcommand with `deployments` (list, show, logs, create)
- Replace `versions` subcommand with `manifests` (list, show, create, delete, update, versions)
- Update `apps create` to use name + optional stack-id instead of organization-id
- Update `apps show` to use ReadApp with include=state
- Move deploy command under deployments as `create`
- Regenerate Speakeasy SDK client from updated OpenAPI spec

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Apr 20, 2026

Important

Review skipped

Too many files!

This PR contains 207 files, which is 57 over the limit of 150.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 2ddb2d37-d0c3-48d3-9e33-d2d2cd2aa439

📥 Commits

Reviewing files that changed from the base of the PR and between 91b3fe9 and e443eb6.

⛔ Files ignored due to path filters (6)
  • go.mod is excluded by !**/*.mod
  • internal/deployserverclient/.speakeasy/gen.lock is excluded by !**/*.lock, !**/*.lock
  • internal/deployserverclient/.speakeasy/gen.yaml is excluded by !**/*.yaml
  • internal/deployserverclient/.speakeasy/workflow.lock is excluded by !**/*.lock, !**/*.lock
  • openapi/deployserver.yaml is excluded by !**/*.yaml
  • openapi/schemas/application.json is excluded by !**/*.json
📒 Files selected for processing (207)
  • cmd/cloud/apps/bind_manifest.go
  • cmd/cloud/apps/bind_manifest_test.go
  • cmd/cloud/apps/create.go
  • cmd/cloud/apps/delete.go
  • cmd/cloud/apps/deploy.go
  • cmd/cloud/apps/deployments/create.go
  • cmd/cloud/apps/deployments/create_test.go
  • cmd/cloud/apps/deployments/download.go
  • cmd/cloud/apps/deployments/list.go
  • cmd/cloud/apps/deployments/logs.go
  • cmd/cloud/apps/deployments/root.go
  • cmd/cloud/apps/deployments/show.go
  • cmd/cloud/apps/list.go
  • cmd/cloud/apps/manifests/create.go
  • cmd/cloud/apps/manifests/create_test.go
  • cmd/cloud/apps/manifests/delete.go
  • cmd/cloud/apps/manifests/delete_test.go
  • cmd/cloud/apps/manifests/download.go
  • cmd/cloud/apps/manifests/list.go
  • cmd/cloud/apps/manifests/root.go
  • cmd/cloud/apps/manifests/show.go
  • cmd/cloud/apps/manifests/update.go
  • cmd/cloud/apps/manifests/versions/list.go
  • cmd/cloud/apps/manifests/versions/push.go
  • cmd/cloud/apps/manifests/versions/push_test.go
  • cmd/cloud/apps/manifests/versions/root.go
  • cmd/cloud/apps/manifests/versions/show.go
  • cmd/cloud/apps/root.go
  • cmd/cloud/apps/show.go
  • cmd/cloud/apps/show_test.go
  • cmd/cloud/apps/unbind_manifest.go
  • cmd/cloud/apps/versions/archive.go
  • cmd/cloud/apps/versions/manifest.go
  • cmd/cloud/apps/versions/show.go
  • internal/deployserverclient/README.md
  • internal/deployserverclient/USAGE.md
  • internal/deployserverclient/deployserver.go
  • internal/deployserverclient/docs/models/apierrors/error.md
  • internal/deployserverclient/docs/models/components/app.md
  • internal/deployserverclient/docs/models/components/appcurrentmanifest.md
  • internal/deployserverclient/docs/models/components/application.md
  • internal/deployserverclient/docs/models/components/appmanifestdivergence.md
  • internal/deployserverclient/docs/models/components/appversionresponse.md
  • internal/deployserverclient/docs/models/components/attachmanifestrequest.md
  • internal/deployserverclient/docs/models/components/configurationversion.md
  • internal/deployserverclient/docs/models/components/connector.md
  • internal/deployserverclient/docs/models/components/createapprequest.md
  • internal/deployserverclient/docs/models/components/createdeploymentrequest.md
  • internal/deployserverclient/docs/models/components/createmanifestresponse.md
  • internal/deployserverclient/docs/models/components/createmanifestresponsedata.md
  • internal/deployserverclient/docs/models/components/deleteappresponse.md
  • internal/deployserverclient/docs/models/components/deploymentresource.md
  • internal/deployserverclient/docs/models/components/deploymentresponse.md
  • internal/deployserverclient/docs/models/components/kind.md
  • internal/deployserverclient/docs/models/components/ledger.md
  • internal/deployserverclient/docs/models/components/listdeploymentsresponse.md
  • internal/deployserverclient/docs/models/components/listdeploymentsresponsedata.md
  • internal/deployserverclient/docs/models/components/listmanifestsresponse.md
  • internal/deployserverclient/docs/models/components/listmanifestsresponsedata.md
  • internal/deployserverclient/docs/models/components/listmanifestversionsresponse.md
  • internal/deployserverclient/docs/models/components/listmanifestversionsresponsedata.md
  • internal/deployserverclient/docs/models/components/listrunsresponse.md
  • internal/deployserverclient/docs/models/components/listrunsresponsedata.md
  • internal/deployserverclient/docs/models/components/listversionsresponse.md
  • internal/deployserverclient/docs/models/components/listversionsresponsedata.md
  • internal/deployserverclient/docs/models/components/manifest.md
  • internal/deployserverclient/docs/models/components/manifestresponse.md
  • internal/deployserverclient/docs/models/components/manifestversion.md
  • internal/deployserverclient/docs/models/components/manifestversionresponse.md
  • internal/deployserverclient/docs/models/components/payments.md
  • internal/deployserverclient/docs/models/components/readstateresponse.md
  • internal/deployserverclient/docs/models/components/reconciliationpolicy.md
  • internal/deployserverclient/docs/models/components/regionselector.md
  • internal/deployserverclient/docs/models/components/run.md
  • internal/deployserverclient/docs/models/components/runresponse.md
  • internal/deployserverclient/docs/models/components/stack.md
  • internal/deployserverclient/docs/models/components/status.md
  • internal/deployserverclient/docs/models/components/updateapprequest.md
  • internal/deployserverclient/docs/models/components/updatemanifestrequest.md
  • internal/deployserverclient/docs/models/components/v2chartsegment.md
  • internal/deployserverclient/docs/models/components/v2schemadata.md
  • internal/deployserverclient/docs/models/components/v2transactiontemplate.md
  • internal/deployserverclient/docs/models/components/webhook.md
  • internal/deployserverclient/docs/models/operations/attachappmanifestrequest.md
  • internal/deployserverclient/docs/models/operations/attachappmanifestresponse.md
  • internal/deployserverclient/docs/models/operations/createdeploymentresponse.md
  • internal/deployserverclient/docs/models/operations/createmanifestrawrequest.md
  • internal/deployserverclient/docs/models/operations/createmanifestrawresponse.md
  • internal/deployserverclient/docs/models/operations/createmanifestrequest.md
  • internal/deployserverclient/docs/models/operations/createmanifestrequestbody.md
  • internal/deployserverclient/docs/models/operations/createmanifestresponse.md
  • internal/deployserverclient/docs/models/operations/deleteapprequest.md
  • internal/deployserverclient/docs/models/operations/deleteappresponse.md
  • internal/deployserverclient/docs/models/operations/deletemanifestrequest.md
  • internal/deployserverclient/docs/models/operations/deletemanifestresponse.md
  • internal/deployserverclient/docs/models/operations/deployappconfigurationrawresponse.md
  • internal/deployserverclient/docs/models/operations/deployappconfigurationrequest.md
  • internal/deployserverclient/docs/models/operations/detachappmanifestrequest.md
  • internal/deployserverclient/docs/models/operations/detachappmanifestresponse.md
  • internal/deployserverclient/docs/models/operations/from.md
  • internal/deployserverclient/docs/models/operations/listappsrequest.md
  • internal/deployserverclient/docs/models/operations/listdeploymentsrequest.md
  • internal/deployserverclient/docs/models/operations/listdeploymentsresponse.md
  • internal/deployserverclient/docs/models/operations/listmanifestsrequest.md
  • internal/deployserverclient/docs/models/operations/listmanifestsresponse.md
  • internal/deployserverclient/docs/models/operations/listmanifestversionsrequest.md
  • internal/deployserverclient/docs/models/operations/listmanifestversionsresponse.md
  • internal/deployserverclient/docs/models/operations/pushmanifestversionrawrequest.md
  • internal/deployserverclient/docs/models/operations/pushmanifestversionrawresponse.md
  • internal/deployserverclient/docs/models/operations/pushmanifestversionrequest.md
  • internal/deployserverclient/docs/models/operations/pushmanifestversionrequestbody.md
  • internal/deployserverclient/docs/models/operations/pushmanifestversionresponse.md
  • internal/deployserverclient/docs/models/operations/readappcurrentstateversionrequest.md
  • internal/deployserverclient/docs/models/operations/readappcurrentstateversionresponse.md
  • internal/deployserverclient/docs/models/operations/readappinclude.md
  • internal/deployserverclient/docs/models/operations/readapprequest.md
  • internal/deployserverclient/docs/models/operations/readappversionsresponse.md
  • internal/deployserverclient/docs/models/operations/readcurrentappversionrequest.md
  • internal/deployserverclient/docs/models/operations/readcurrentrunlogsrequest.md
  • internal/deployserverclient/docs/models/operations/readdeploymentinclude.md
  • internal/deployserverclient/docs/models/operations/readdeploymentlogsrequest.md
  • internal/deployserverclient/docs/models/operations/readdeploymentlogsresponse.md
  • internal/deployserverclient/docs/models/operations/readdeploymentrequest.md
  • internal/deployserverclient/docs/models/operations/readdeploymentresponse.md
  • internal/deployserverclient/docs/models/operations/readmanifestrequest.md
  • internal/deployserverclient/docs/models/operations/readmanifestresponse.md
  • internal/deployserverclient/docs/models/operations/readmanifestversionrequest.md
  • internal/deployserverclient/docs/models/operations/readmanifestversionresponse.md
  • internal/deployserverclient/docs/models/operations/readrunrequest.md
  • internal/deployserverclient/docs/models/operations/readversionrequest.md
  • internal/deployserverclient/docs/models/operations/updatemanifestrequest.md
  • internal/deployserverclient/docs/models/operations/updatemanifestresponse.md
  • internal/deployserverclient/docs/sdks/deployserver/README.md
  • internal/deployserverclient/models/apierrors/error.go
  • internal/deployserverclient/models/components/app.go
  • internal/deployserverclient/models/components/appcurrentmanifest.go
  • internal/deployserverclient/models/components/application.go
  • internal/deployserverclient/models/components/appmanifestdivergence.go
  • internal/deployserverclient/models/components/appversionresponse.go
  • internal/deployserverclient/models/components/attachmanifestrequest.go
  • internal/deployserverclient/models/components/configurationversion.go
  • internal/deployserverclient/models/components/createapprequest.go
  • internal/deployserverclient/models/components/createdeploymentrequest.go
  • internal/deployserverclient/models/components/createmanifestresponse.go
  • internal/deployserverclient/models/components/deleteappresponse.go
  • internal/deployserverclient/models/components/deploymentresource.go
  • internal/deployserverclient/models/components/deploymentresponse.go
  • internal/deployserverclient/models/components/dotself.go
  • internal/deployserverclient/models/components/ledger.go
  • internal/deployserverclient/models/components/listdeploymentsresponse.go
  • internal/deployserverclient/models/components/listmanifestsresponse.go
  • internal/deployserverclient/models/components/listmanifestversionsresponse.go
  • internal/deployserverclient/models/components/listversionsresponse.go
  • internal/deployserverclient/models/components/manifest.go
  • internal/deployserverclient/models/components/manifestresponse.go
  • internal/deployserverclient/models/components/manifestversion.go
  • internal/deployserverclient/models/components/manifestversionresponse.go
  • internal/deployserverclient/models/components/payments.go
  • internal/deployserverclient/models/components/pool.go
  • internal/deployserverclient/models/components/readstateresponse.go
  • internal/deployserverclient/models/components/reconciliation.go
  • internal/deployserverclient/models/components/reconciliationledger.go
  • internal/deployserverclient/models/components/reconciliationpolicy.go
  • internal/deployserverclient/models/components/regionselector.go
  • internal/deployserverclient/models/components/run.go
  • internal/deployserverclient/models/components/runresponse.go
  • internal/deployserverclient/models/components/stack.go
  • internal/deployserverclient/models/components/updateapprequest.go
  • internal/deployserverclient/models/components/updatemanifestrequest.go
  • internal/deployserverclient/models/components/v2chartaccountmetadata.go
  • internal/deployserverclient/models/components/v2chartaccountrules.go
  • internal/deployserverclient/models/components/v2chartsegment.go
  • internal/deployserverclient/models/components/v2schemadata.go
  • internal/deployserverclient/models/components/v2transactiontemplate.go
  • internal/deployserverclient/models/components/webhook.go
  • internal/deployserverclient/models/operations/attachappmanifest.go
  • internal/deployserverclient/models/operations/createdeployment.go
  • internal/deployserverclient/models/operations/createmanifest.go
  • internal/deployserverclient/models/operations/createmanifestraw.go
  • internal/deployserverclient/models/operations/deleteapp.go
  • internal/deployserverclient/models/operations/deletemanifest.go
  • internal/deployserverclient/models/operations/deployappconfiguration.go
  • internal/deployserverclient/models/operations/deployappconfigurationraw.go
  • internal/deployserverclient/models/operations/detachappmanifest.go
  • internal/deployserverclient/models/operations/listapps.go
  • internal/deployserverclient/models/operations/listdeployments.go
  • internal/deployserverclient/models/operations/listmanifests.go
  • internal/deployserverclient/models/operations/listmanifestversions.go
  • internal/deployserverclient/models/operations/options.go
  • internal/deployserverclient/models/operations/pushmanifestversion.go
  • internal/deployserverclient/models/operations/pushmanifestversionraw.go
  • internal/deployserverclient/models/operations/readapp.go
  • internal/deployserverclient/models/operations/readappcurrentstateversion.go
  • internal/deployserverclient/models/operations/readappruns.go
  • internal/deployserverclient/models/operations/readappversions.go
  • internal/deployserverclient/models/operations/readcurrentappversion.go
  • internal/deployserverclient/models/operations/readcurrentrun.go
  • internal/deployserverclient/models/operations/readdeployment.go
  • internal/deployserverclient/models/operations/readdeploymentlogs.go
  • internal/deployserverclient/models/operations/readmanifest.go
  • internal/deployserverclient/models/operations/readmanifestversion.go
  • internal/deployserverclient/models/operations/readrun.go
  • internal/deployserverclient/models/operations/readrunlogs.go
  • internal/deployserverclient/models/operations/readversion.go
  • internal/deployserverclient/models/operations/updatemanifest.go
  • pkg/clients.go
  • pkg/flags.go

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/deploy-server-api-refactor

Tip

💬 Introducing Slack Agent: The best way for teams to turn conversations into code.

Slack Agent is built on CodeRabbit's deep understanding of your code, so your team can collaborate across the entire SDLC without losing context.

  • Generate code and open pull requests
  • Plan features and break down work
  • Investigate incidents and troubleshoot customer tickets together
  • Automate recurring tasks and respond to alerts with triggers
  • Summarize progress and report instantly

Built for teams:

  • Shared memory across your entire org—no repeating context
  • Per-thread sandboxes to safely plan and execute work
  • Governance built-in—scoped access, auditability, and budget controls

One agent for your entire SDLC. Right inside Slack.

👉 Get started


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

…state, soft-delete via develop SDK

- Add `fctl cloud app deployments download --id <dpl-...> [--format yaml|gzip] [--out file]`
  (yaml streams to stdout by default; gzip requires --out)
- Add `fctl cloud app manifests download --id <mnf-...> --out file` for the tar.gz archive
- Render `state.stack.*` in `deployments show` when --include-state is passed
- Refresh deploy-server OpenAPI spec from terraform-hcp-proxy develop and regenerate SDK
- Wire new soft-delete flow on `apps delete`: surface destroyDeploymentId, add --wait

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@Dav-14 Dav-14 marked this pull request as ready for review May 7, 2026 11:29
@Dav-14 Dav-14 requested a review from a team as a code owner May 7, 2026 11:29
…n deployment wait

- Drop app-id scoping on manifests; add bind-manifest/unbind-manifest commands on apps
- Show app's current manifest with divergence (undeployed/synced/behind/rebound) on `apps show`
- Require manifest-version on `deployments create` and add --wait-timeout with exponential backoff polling
- Regenerate deploy server SDK from updated OpenAPI (attach/detach manifest, App.currentManifest)
- Add unit tests for new bind/unbind/show/create/delete/push paths

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant