hosting

POST /v1/bulk-jobs

Run one operation across many sites.

Todos os endpoints de hosting

Autenticação

Envie uma chave de API como um token de portador. A chave deve ter a permissão sites.view; uma chave sem ela é recusada com 403, e não 404.

Este endpoint não requer um ID de organização. Sua chave já identifica a organização à qual pertence, e a resposta é delimitada a ela.

Experimente

Substitua qualquer item entre colchetes por seus próprios valores e o espaço reservado para a chave por uma chave do seu painel.

curl -X POST https://api.zinndigital.com/v1/bulk-jobs \
  -H "Authorization: Bearer zdk_live_…" \
  -H "Content-Type: application/json" \
  -d '{ "operation": <BulkOperation>, "selector": <BulkSelector> }'

Conectado? O console da API no seu painel preenche o ID da sua organização real e a sua própria chave, e executa a requisição contra a API de produção para que você possa ver a resposta real. Abra este endpoint no console da API

Detalhes

Freezes the selection into a per-site work-list and starts a durable, idempotent workflow. **The submit is instant and the work is not** — this returns `202` as soon as the rows are written, and nothing a person is watching waits on the job itself. Only **eligible** sites are enrolled; ineligible ones are not written as pre-failed rows, because a report padded with rows that never had a chance makes the failures that matter harder to find. `previewBulkJob` is where you see them. A selection that enrolls **nothing** is a `422`, not a job that completes instantly: "completed, 0 of 0" is indistinguishable from success on every screen that renders it. ⛔ A typed `confirm` phrase is required when the selector is wider than an explicit list (`product_line`, `org`) **or** the operation is weighty (`plugin_remove`, `plugin_deactivate`, `blueprint_apply`) at any size. `previewBulkJob` returns the exact phrase in `confirmation_phrase`. ⛔ All the selected sites must belong to **one** organization. A mixed selection is a `422` naming the problem rather than a job whose owner is a guess. Requires `sites.view` plus the operation's own key (see the tag description).

Parâmetros

NomeTipoObrigatórioO que é
Idempotency-Key (header)stringNãoClient-generated key that makes an unsafe request replay-safe: the server stores the first response and returns it verbatim for repeats.

Corpo da requisição

NomeTipoObrigatórioO que é
operationBulkOperationSimWhat a bulk job does to each of its sites. ⛔ One job model with an operation discriminator, not eight job models. A selection, a frozen work-list, a durable pass and a per-site…
selectorBulkSelectorSimWhich sites a job targets. ⛔ There is no `all`. A job belongs to exactly one organization and `all` would span every tenant on the platform; the fleet-wide act is a staff operat…
selector_valuestringNãoThe selector's argument — a product-line code for `product_line`, an organization id for `org`, a site-group id for `group`. Ignored for `sites`, whose members are `site_ids`.
site_idsUuid[]NãoThe explicit selection, for `selector: sites`. Every id is fenced to the organizations you can reach, so one belonging to somebody else resolves to nothing rather than to a cros…
paramsBulkJobParamsNãoThe operation's arguments. Which keys are read depends on `operation`: `plugin_install` takes `slugs` + `activate`; `plugin_activate`, `plugin_deactivate` and `plugin_remove` ta…
confirmstringNãoThe typed confirmation phrase, required when `previewBulkJob` answers `confirmation_required: true`. Send exactly the value it returned in `confirmation_phrase`. ⛔ Whether it is…
notestringNãoFree text kept with the job, for whoever reads the report later.

Resposta

NomeTipoObrigatórioO que é
idUuidSimUUIDv7 identifier — sortable by creation time (docs/02 §8).
org_idUuidSimUUIDv7 identifier — sortable by creation time (docs/02 §8).
operationBulkOperationSimWhat a bulk job does to each of its sites. ⛔ One job model with an operation discriminator, not eight job models. A selection, a frozen work-list, a durable pass and a per-site…
paramsBulkJobParamsSimThe operation's arguments. Which keys are read depends on `operation`: `plugin_install` takes `slugs` + `activate`; `plugin_activate`, `plugin_deactivate` and `plugin_remove` ta…
selectorBulkSelectorSimWhich sites a job targets. ⛔ There is no `all`. A job belongs to exactly one organization and `all` would span every tenant on the platform; the fleet-wide act is a staff operat…
selector_valuestringSim
statusBulkJobStatusSim⛔ `partial` is a real outcome, not a rounding of the other two. A job where 4 of 900 sites failed is neither a success nor a failure, and reporting it as either is how a bulk ac…
requested_bystringSimWho asked for it.
notestringSim
created_atstringSim
updated_atstringSim
settled_atobjectSimWhen the job finished; `null` while it is still running.
countsBulkJobCountsSim
progressBulkJobProgressSimHow far along a job is, how fast it is going and how much longer it has. ⛔⛔ **Every estimate here is nullable, and a `null` must never be rendered as `0`.** `rate_per_minute: 0`…

Erros que este endpoint pode retornar

401 · 403 · 409 · 422 · 429