Hanzo AI
OpenapiDeploy

Sync applications

Asks the operator to reconcile ONE application now.

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

Addresshttps://api.hanzo.ai/v1/deploy/applications/{name}/sync
MethodPOST
Operationpost_deploy_applications_by_name_sync
AuthAuthorization: Bearer $HANZO_API_KEY

Asks the operator to reconcile ONE application now.

It stamps a sync-requested timestamp onto the application's App CR, which the operator's watch observes, and answers the application re-projected. It ASKS, it does not apply: the operator reconciles on its own clock, so a 200 means the request landed, not that the rollout finished — the returned row's running version still lags until it does.

SuperAdmin-only and fail-closed, and the gate is INSIDE the op rather than in middleware wrapped around the route. That is a correctness requirement, not a preference: this op is also reached by POST /mcp and by the by-name call plane, neither of which runs route middleware, so a gate that only the REST projection runs would publish an unguarded alias of a fleet-mutating write. It reads no request body — the URL names the application and nothing else does. An unknown name is a 404 (never a 403, which would confirm the application exists), a name that is not a DNS-1123 label is a 400, and no cluster client is a 503.

Request

1 field.

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

Response

StatusBodyMeaning
200argoAppok

200 body — 39 fields.

FieldInTypeAlwaysDescription
apiVersionbodystringAPIVersion is the constant "argoproj.io/v1alpha1" — the shape, not the source.
kindbodystringKind is the constant "Application".
metadatabodyargoMeta
metadata.creationTimestampbodystringCreationTimestamp is when the source object was created, RFC 3339 to the second.
metadata.labelsbodyobjectLabels are the labels this projection puts on the row, not the source object's full label set.
metadata.labels.*bodystring
metadata.namebodystringName is the projected object's name: the App CR's metadata.name for an application, the CD Application's name for a CD row, and the IAM project name for a…
metadata.namespacebodystringNamespace is the namespace the source object was read from — the tenant or platform namespace for an App CR, CD's controller namespace for a CD row.
metadata.uidbodystringUID is the k8s metadata.uid of the source object, which is what the SPA keys a row on across refreshes.
specbodyargoSpec
spec.destinationbodyargoDestination
spec.destination.namebodystringArgoCD allows a destination by cluster name; omitted for the in-cluster projection.
spec.destination.namespacebodystringNamespace is where in that cluster the workload lands.
spec.destination.serverbodystringServer is the cluster API URL the application reconciles into.
spec.projectbodystringProject is the AppProject this application is grouped and filtered under.
spec.sourcebodyargoSource
spec.source.pathbodystringPath is the directory within RepoURL.
spec.source.repoURLbodystringRepoURL is the git repository the desired state comes from.
spec.source.targetRevisionbodystringTargetRevision is the git ref tracked there — a branch such as "main".
statusbodyargoStatus
status.healthbodyargoHealth
status.health.messagebodystringMessage is why the status is what it is — "Running: no replicas ready", "iam: CrashLoopBackOff".
status.health.statusbodystringStatus is the ArgoCD health vocabulary, Capitalized: Healthy, Progressing, Degraded, Suspended, Missing or Unknown.
status.reconciledAtbodystringReconciledAt is when the desired state was last compared against the cluster, RFC 3339.
status.resourcesbodyargoResourceStatus[]Resources are the objects the application owns.
status.resources[].groupbodystringGroup is the object's API group: empty for the core group (Pod, Service, ConfigMap), otherwise apps, networking.k8s.io, autoscaling or policy — and hanzo.ai…
status.resources[].healthbodyargoHealth
status.resources[].health.messagebodystringMessage is why the status is what it is — "Running: no replicas ready", "iam: CrashLoopBackOff".
status.resources[].health.statusbodystringStatus is the ArgoCD health vocabulary, Capitalized: Healthy, Progressing, Degraded, Suspended, Missing or Unknown.
status.resources[].kindbodystringKind is the object kind — App, Deployment, ReplicaSet, Pod, Service, Ingress, HorizontalPodAutoscaler, PodDisruptionBudget, ConfigMap.
status.resources[].namebodystringName is the object's metadata.name.
status.resources[].namespacebodystringNamespace is the namespace the object was found in — the same one for every entry of an application, since the walk is confined to it.
status.resources[].statusbodystringStatus is the APPLICATION's sync verdict repeated on every row, not a per-object one.
status.resources[].versionbodystringVersion is the object's API version as the live object reports it: v1 for every kind here except the HorizontalPodAutoscaler, which is autoscaling/v2.
status.summarybodyargoSummary
status.summary.imagesbodystring[]Images are the container images the application runs.
status.syncbodyargoSyncStatus
status.sync.revisionbodystringRevision is what Status was reached against. For an App CR that is the declared IMAGE TAG, not a commit — the CR is image-pinned.
status.sync.statusbodystringStatus is the ArgoCD sync vocabulary, Capitalized: Synced, OutOfSync or Unknown.

Failure carries the platform error shape — see Errors.

Examples

hanzo deploy applications sync <name>

Deploy API · All Hanzo APIs · Interactive reference

How is this guide?

On this page