Hanzo

Deploy

Package deploy is Hanzo CD: see what each app is running, sync it, and roll back a bad release.

Package deploy is Hanzo CD: see what each app is running, sync it, and roll back a bad release.

Base URLhttps://api.hanzo.ai
Operations21
AuthAuthorization: Bearer $HANZO_API_KEY

deploy

get_v1_deploy_account_can-i_by_wildcard1

GET /v1/deploy/account/can-i/{wildcard1}

ParameterInTypeRequiredDescription
wildcard1pathstringyes

GetDeployResourceTree returns one application's argocd ApplicationTree: the objects the operator reconciled from its App CR, reached by ownerRef — the Deployment and, under it, the ReplicaSet and Pods, plus the Service, Ingress, HorizontalPodAutoscaler, PodDisruptionBudget and ConfigMaps it owns — each node carrying its parent edges and its health.

GET /v1/deploy/applications/{name}/resource-tree

GetDeployResourceTree returns one application's argocd ApplicationTree: the objects the operator reconciled from its App CR, reached by ownerRef — the Deployment and, under it, the ReplicaSet and Pods, plus the Service, Ingress, HorizontalPodAutoscaler, PodDisruptionBudget and ConfigMaps it owns — each node carrying its parent edges and its health.

Secrets are DELIBERATELY not walked, so no materialized environment can ever appear in the tree. Tenant-scoped exactly like the application read: another org's name is not found, a malformed name is a 400.

ParameterInTypeRequiredDescription
namepathstringyesName is the application to read, from the path.

GetDeployRevisionMetadata returns the argocd RevisionMetadata for one revision of one application — what the detail view shows beside a revision.

GET /v1/deploy/applications/{name}/revisions/{revision}/metadata

GetDeployRevisionMetadata returns the argocd RevisionMetadata for one revision of one application — what the detail view shows beside a revision.

An App CR is IMAGE-pinned rather than commit-pinned: the deploy names an image tag, and the git source this projection reports is the display-only manifest repo, not the application's own source. Nothing in this process can read a commit's author or message for an arbitrary revision. So rather than 404 (which the SPA turns into an error toast) or invent a git author, it answers the HONEST minimum: date is when the App CR was created, message is the revision asked for — with the empty revision and "HEAD" resolving to the image tag the CR declares — and author is empty. An over-long revision is truncated before it is echoed back.

Tenant-scoped exactly like the application read.

ParameterInTypeRequiredDescription
namepathstringyesName is the application to read, from the path.
revisionpathstringyesRevision is the revision to describe, from the path.

post_v1_deploy_applications_by_name_rollback

POST /v1/deploy/applications/{name}/rollback

ParameterInTypeRequiredDescription
namepathstringyes

post_v1_deploy_applications_by_name_sync

POST /v1/deploy/applications/{name}/sync

ParameterInTypeRequiredDescription
namepathstringyes

GetDeploySyncWindows returns one application's argocd ApplicationSyncWindowState — the answer to "is anything blocking a sync of this application right now?".

GET /v1/deploy/applications/{name}/syncwindows

GetDeploySyncWindows returns one application's argocd ApplicationSyncWindowState — the answer to "is anything blocking a sync of this application right now?".

This platform runs NO sync windows, so the answer is always the permissive empty one: canSync true, with no active and no assigned windows. The application is still resolved first, so a name that is not the caller's is not found rather than handed the static body — the endpoint discloses nothing about another tenant's fleet.

ParameterInTypeRequiredDescription
namepathstringyesName is the application to read, from the path.

GetDeployApplication returns ONE projected argocd Application by name, with status.resources filled in from its reconciled resource tree — which is what makes it the detail view rather than a row of the list.

GET /v1/deploy/applications/{name}

GetDeployApplication returns ONE projected argocd Application by name, with status.resources filled in from its reconciled resource tree — which is what makes it the detail view rather than a row of the list.

It is TENANT-SCOPED, and a name that belongs to another org is reported NOT FOUND rather than refused: a 403 would confirm the application exists, so the route would become a cross-tenant existence oracle. A name that is not a DNS-1123 label is a 400 before any cluster read.

ParameterInTypeRequiredDescription
namepathstringyesName is the application to read, from the path.

ListDeployApplications returns the fleet as an argocd ApplicationList: one projected Application per operator App CR, carrying the image tag the CR DECLARES, the tag actually RUNNING in the cluster's Deployment, the reconciled health, and the sync verdict those two produce (declared == running ⇒ Synced, both known and different ⇒ OutOfSync, either unknown ⇒ Unknown).

GET /v1/deploy/applications

ListDeployApplications returns the fleet as an argocd ApplicationList: one projected Application per operator App CR, carrying the image tag the CR DECLARES, the tag actually RUNNING in the cluster's Deployment, the reconciled health, and the sync verdict those two produce (declared == running ⇒ Synced, both known and different ⇒ OutOfSync, either unknown ⇒ Unknown).

It is TENANT-SCOPED: a platform SuperAdmin reads every platform namespace, a validated org member reads only its own org's tenant namespace and only the App CRs labelled with its org, and anyone else is refused. A cross-tenant CR is never projected into an answer.

get_v1_deploy_callback

GET /v1/deploy/callback

ListDeployClusters returns the argocd ClusterList of the destinations the caller's applications reconcile into: one entry per distinct destination server, carrying the count of applications reconciling into it.

GET /v1/deploy/clusters

ListDeployClusters returns the argocd ClusterList of the destinations the caller's applications reconcile into: one entry per distinct destination server, carrying the count of applications reconciling into it. The in-cluster destination is always present, so an empty fleet still answers one cluster, and no cluster credential can appear — the projected type physically has no config field.

It is TENANT-SCOPED and reads the SAME App CRs the applications list reads: a platform SuperAdmin counts the whole fleet, a validated org member counts only its own org's applications, anyone else is refused.

GetDeployGitOps lists every Hanzo CD Application in the cluster: the git source each one polls, the commit it last APPLIED, how its last sync operation ended, and its recent deploy history — newest deploy first, ordered by namespace then name.

GET /v1/deploy/gitops

GetDeployGitOps lists every Hanzo CD Application in the cluster: the git source each one polls, the commit it last APPLIED, how its last sync operation ended, and its recent deploy history — newest deploy first, ordered by namespace then name.

This is the layer ABOVE the application board, and the two disagree in exactly the case an operator most needs to see: main carries a new image pin, CD has not applied that commit yet, so every App CR still declares the old tag and the application board is legitimately "Synced" while the deploy has not landed. Only the applied revision here can show that.

installed is false — with a reason and an empty list — when the CD CRD is not served in this cluster. That is a FACT about the cluster rather than a failure of the request, so the caller can say "no CD plane here" instead of rendering an error it cannot act on; a genuine transport or RBAC failure still errors.

Read-only, and platform SuperAdmin only: the CD plane is fleet infrastructure with no tenant dimension. This view observes CD and never drives it — the sync policy is automated with self-heal, and the actionable verb an operator has is the per-application reconcile at POST /v1/deploy/applications/{name}/sync.

get_v1_deploy_health

GET /v1/deploy/health

get_v1_deploy_login

GET /v1/deploy/login

post_v1_deploy_logout

POST /v1/deploy/logout

ListDeployProjects returns the argocd AppProjectList this console groups and filters applications by.

GET /v1/deploy/projects

ListDeployProjects returns the argocd AppProjectList this console groups and filters applications by. Projects are owned by Hanzo IAM rather than by argocd, so they are REFLECTED read-only from the IAM project store and nothing is persisted here: a validated org member gets its own organization's projects and a platform SuperAdmin gets every organization's.

A SuperAdmin whose IAM store is not reachable falls back to the real argoproj.io AppProject CRs when that CRD is served, and otherwise to one permissive synthesized project per distinct project name the App CRs declare. A project named "default" is always present, because that is what an App CR carrying no project label projects to.

post_v1_deploy_reconcile

POST /v1/deploy/reconcile

GetDeploySession answers "is this browser signed in, and if not where does it sign in?" — the dashboard SPA's bootstrap question, and the only route on this plane that answers for an anonymous caller.

GET /v1/deploy/session/userinfo

GetDeploySession answers "is this browser signed in, and if not where does it sign in?" — the dashboard SPA's bootstrap question, and the only route on this plane that answers for an anonymous caller.

The anonymous answer carries loggedIn:false and a URL and NOTHING else: no username, no org, no groups, no issuer, no hint about who the caller might be or what exists in the cluster. Answering it costs nothing (the caller already knows whether it holds a cookie) and withholding it costs the whole sign-in journey.

The predicate is the platform SuperAdmin fact — the SAME one every other route here gates on, minted from a validated principal whose org is the reserved admin org — so a validated-but-not-SuperAdmin caller is reported as NOT signed in, which is the truth as this console defines it: they cannot use it.

GetDeploySettings returns the argocd AuthSettings object the dashboard SPA awaits before its first render.

GET /v1/deploy/settings

GetDeploySettings returns the argocd AuthSettings object the dashboard SPA awaits before its first render.

Every value is a CONSTANT of this projection rather than configuration read from anywhere: the SPA's own login form is reported disabled and its OIDC config null because Hanzo IAM owns identity at the edge and this console's sign-in is GET /v1/deploy/login, and every argocd feature the projection does not implement — status badges, Dex connectors, config-management plugins, kustomize versions, the exec terminal, apps-in-any-namespace, the hydrator, sync-with-replace — is reported off. Platform SuperAdmin only.

get_v1_deploy_stream_applications_by_name_resource-tree

GET /v1/deploy/stream/applications/{name}/resource-tree

ParameterInTypeRequiredDescription
namepathstringyes

get_v1_deploy_stream_applications

GET /v1/deploy/stream/applications

GetDeployVersion returns the argocd VersionMessage the dashboard SPA reads at bootstrap.

GET /v1/deploy/version

GetDeployVersion returns the argocd VersionMessage the dashboard SPA reads at bootstrap. There is no argocd binary behind this plane — it is a projection over operator App CRs — so the fields say so rather than describing a build: Version names the projection, BuildDate is the moment this response was generated, and Compiler/Platform/GoVersion are the constants the SPA tolerates rather than facts about this process. Platform SuperAdmin only.


All Hanzo APIs · Interactive reference

How is this guide?

On this page

deployget_v1_deploy_account_can-i_by_wildcard1GetDeployResourceTree returns one application's argocd ApplicationTree: the objects the operator reconciled from its App CR, reached by ownerRef — the Deployment and, under it, the ReplicaSet and Pods, plus the Service, Ingress, HorizontalPodAutoscaler, PodDisruptionBudget and ConfigMaps it owns — each node carrying its parent edges and its health.GetDeployRevisionMetadata returns the argocd RevisionMetadata for one revision of one application — what the detail view shows beside a revision.post_v1_deploy_applications_by_name_rollbackpost_v1_deploy_applications_by_name_syncGetDeploySyncWindows returns one application's argocd ApplicationSyncWindowState — the answer to "is anything blocking a sync of this application right now?".GetDeployApplication returns ONE projected argocd Application by name, with status.resources filled in from its reconciled resource tree — which is what makes it the detail view rather than a row of the list.ListDeployApplications returns the fleet as an argocd ApplicationList: one projected Application per operator App CR, carrying the image tag the CR DECLARES, the tag actually RUNNING in the cluster's Deployment, the reconciled health, and the sync verdict those two produce (declared == running ⇒ Synced, both known and different ⇒ OutOfSync, either unknown ⇒ Unknown).get_v1_deploy_callbackListDeployClusters returns the argocd ClusterList of the destinations the caller's applications reconcile into: one entry per distinct destination server, carrying the count of applications reconciling into it.GetDeployGitOps lists every Hanzo CD Application in the cluster: the git source each one polls, the commit it last APPLIED, how its last sync operation ended, and its recent deploy history — newest deploy first, ordered by namespace then name.get_v1_deploy_healthget_v1_deploy_loginpost_v1_deploy_logoutListDeployProjects returns the argocd AppProjectList this console groups and filters applications by.post_v1_deploy_reconcileGetDeploySession answers "is this browser signed in, and if not where does it sign in?" — the dashboard SPA's bootstrap question, and the only route on this plane that answers for an anonymous caller.GetDeploySettings returns the argocd AuthSettings object the dashboard SPA awaits before its first render.get_v1_deploy_stream_applications_by_name_resource-treeget_v1_deploy_stream_applicationsGetDeployVersion returns the argocd VersionMessage the dashboard SPA reads at bootstrap.