Clientes

Ver en Markdown

Agrupa las zonas por los clientes finales de una agencia y limita miembros y tokens a las zonas de un cliente.

En esta página

Los clientes son los clientes finales de una agencia. Cada zona puede ser de un cliente, y los miembros, las invitaciones y los tokens de API limitados a un cliente solo ven sus zonas. Estas rutas aún no tienen métodos en los SDK; los ejemplos usan curl.

OperaciónRuta
Listar clientesGET /v1/orgs/{org}/clients
Crear un clientePOST /v1/orgs/{org}/clients
Ver un clienteGET /v1/orgs/{org}/clients/{client}
Modificar un clientePATCH /v1/orgs/{org}/clients/{client}
Borrar un clienteDELETE /v1/orgs/{org}/clients/{client}
Asignar el cliente de una zonaPATCH /v1/orgs/{org}/zones/{zone}

Listar clientes

GET /v1/orgs/{org}/clients

Lista los clientes de la organización con su número de zonas.

Rol necesario: readonly o superior. Un token limitado a un cliente solo ve el suyo.

Parámetros

NombreEnTipoObligatorioDescripción
orgrutastring (uuid)SíId de la organización. Cada ruta comprueba que es la del token (si no, 404).

Respuesta

  • 200: Devuelve items, un array de Client.
CampoTipoDescripción
items[].idstring (uuid)Id.
items[].org_idstring (uuid)Id de la organización.
items[].namestringNombre del cliente, único en la organización.
items[].contact_emailstringCorreo de contacto (puede estar vacío).
items[].notestringNota interna de la agencia.
items[].zone_countintegerNúmero de zonas del cliente (en cualquier estado).
items[].created_atstring (date-time)Fecha de creación.
items[].updated_atstring (date-time)Último cambio.

Errores

EstadoDescripción
403El rol o los límites del token no lo permiten (forbidden).

Ejemplo

Aún sin método en los SDK: usa la petición HTTP.

curl "https://dash.openwaf.dev/v1/orgs/$OPENWAF_ORG/clients" \
  -H "Authorization: Bearer $OPENWAF_TOKEN"
200
{
  "items": [
    {
      "id": "a5614527-0ce6-43be-ad1d-d012b7394867",
      "org_id": "1e7c9a3b-5d2f-4b8a-9c6e-0f2a4b6c8d1e",
      "name": "example.com",
      "contact_email": "[email protected]",
      "note": "Managed by the platform team",
      "zone_count": 128,
      "created_at": "2026-10-27T09:30:00Z",
      "updated_at": "2026-10-27T09:30:00Z"
    }
  ]
}

Crear un cliente

POST /v1/orgs/{org}/clients

Crea un cliente. name es obligatorio y único en la organización (sin distinguir mayúsculas).

Rol necesario: tech o superior. De toda la organización.

Parámetros

NombreEnTipoObligatorioDescripción
orgrutastring (uuid)SíId de la organización. Cada ruta comprueba que es la del token (si no, 404).

Cuerpo de la petición

Tipo de contenido application/json. Esquema: ClientInput.

CampoTipoObligatorioDescripción
namestringNoObligatorio al crear; sin comas ni saltos de línea. Como mucho 200 caracteres.
contact_emailstring (email)NoComo mucho 320 caracteres.
notestringNoComo mucho 2000 caracteres.

Respuesta

CampoTipoDescripción
idstring (uuid)Id.
org_idstring (uuid)Id de la organización.
namestringNombre del cliente, único en la organización.
contact_emailstringCorreo de contacto (puede estar vacío).
notestringNota interna de la agencia.
zone_countintegerNúmero de zonas del cliente (en cualquier estado).
created_atstring (date-time)Fecha de creación.
updated_atstring (date-time)Último cambio.

Errores

EstadoDescripción
400Petición mal formada (bad_request).
403El rol o los límites del token no lo permiten (forbidden).
409conflict: ya hay un cliente con ese nombre.
422Error de validación (invalid).

Ejemplo

Aún sin método en los SDK: usa la petición HTTP.

curl -X POST "https://dash.openwaf.dev/v1/orgs/$OPENWAF_ORG/clients" \
  -H "Authorization: Bearer $OPENWAF_TOKEN" \
  -H "Content-Type: application/json" \
  --data '{
    "name": "Acme Retail",
    "contact_email": "[email protected]"
  }'
201
{
  "id": "a5614527-0ce6-43be-ad1d-d012b7394867",
  "org_id": "1e7c9a3b-5d2f-4b8a-9c6e-0f2a4b6c8d1e",
  "name": "example.com",
  "contact_email": "[email protected]",
  "note": "Managed by the platform team",
  "zone_count": 128,
  "created_at": "2026-10-27T09:30:00Z",
  "updated_at": "2026-10-27T09:30:00Z"
}

Ver un cliente

GET /v1/orgs/{org}/clients/{client}

Devuelve un cliente.

Rol necesario: readonly o superior.

Parámetros

NombreEnTipoObligatorioDescripción
orgrutastring (uuid)SíId de la organización. Cada ruta comprueba que es la del token (si no, 404).
clientrutastring (uuid)SíId del cliente.

Respuesta

CampoTipoDescripción
idstring (uuid)Id.
org_idstring (uuid)Id de la organización.
namestringNombre del cliente, único en la organización.
contact_emailstringCorreo de contacto (puede estar vacío).
notestringNota interna de la agencia.
zone_countintegerNúmero de zonas del cliente (en cualquier estado).
created_atstring (date-time)Fecha de creación.
updated_atstring (date-time)Último cambio.

Errores

EstadoDescripción
404No existe o el token no lo ve (not_found).

Ejemplo

Aún sin método en los SDK: usa la petición HTTP.

curl "https://dash.openwaf.dev/v1/orgs/$OPENWAF_ORG/clients/7c1e3a5d-9b2f-4d6a-8e0c-2f4a6c8e0b1d" \
  -H "Authorization: Bearer $OPENWAF_TOKEN"
200
{
  "id": "a5614527-0ce6-43be-ad1d-d012b7394867",
  "org_id": "1e7c9a3b-5d2f-4b8a-9c6e-0f2a4b6c8d1e",
  "name": "example.com",
  "contact_email": "[email protected]",
  "note": "Managed by the platform team",
  "zone_count": 128,
  "created_at": "2026-10-27T09:30:00Z",
  "updated_at": "2026-10-27T09:30:00Z"
}

Modificar un cliente

PATCH /v1/orgs/{org}/clients/{client}

Cambia el nombre, el correo de contacto o la nota de un cliente. Los campos ausentes conservan su valor.

Rol necesario: admin o superior. De toda la organización.

Parámetros

NombreEnTipoObligatorioDescripción
orgrutastring (uuid)SíId de la organización. Cada ruta comprueba que es la del token (si no, 404).
clientrutastring (uuid)SíId del cliente.

Cuerpo de la petición

Tipo de contenido application/json. Esquema: ClientInput.

CampoTipoObligatorioDescripción
namestringNoObligatorio al crear; sin comas ni saltos de línea. Como mucho 200 caracteres.
contact_emailstring (email)NoComo mucho 320 caracteres.
notestringNoComo mucho 2000 caracteres.

Respuesta

CampoTipoDescripción
idstring (uuid)Id.
org_idstring (uuid)Id de la organización.
namestringNombre del cliente, único en la organización.
contact_emailstringCorreo de contacto (puede estar vacío).
notestringNota interna de la agencia.
zone_countintegerNúmero de zonas del cliente (en cualquier estado).
created_atstring (date-time)Fecha de creación.
updated_atstring (date-time)Último cambio.

Errores

EstadoDescripción
400Petición mal formada (bad_request).
403El rol o los límites del token no lo permiten (forbidden).
404No existe o el token no lo ve (not_found).
409conflict: ya hay un cliente con ese nombre.
422Error de validación (invalid).

Ejemplo

Aún sin método en los SDK: usa la petición HTTP.

curl -X PATCH "https://dash.openwaf.dev/v1/orgs/$OPENWAF_ORG/clients/7c1e3a5d-9b2f-4d6a-8e0c-2f4a6c8e0b1d" \
  -H "Authorization: Bearer $OPENWAF_TOKEN" \
  -H "Content-Type: application/json" \
  --data '{
    "note": "Renewal in March"
  }'
200
{
  "id": "a5614527-0ce6-43be-ad1d-d012b7394867",
  "org_id": "1e7c9a3b-5d2f-4b8a-9c6e-0f2a4b6c8d1e",
  "name": "example.com",
  "contact_email": "[email protected]",
  "note": "Managed by the platform team",
  "zone_count": 128,
  "created_at": "2026-10-27T09:30:00Z",
  "updated_at": "2026-10-27T09:30:00Z"
}

Borrar un cliente

DELETE /v1/orgs/{org}/clients/{client}

Borra un cliente sin zonas. Antes hay que mover sus zonas a otro cliente (o a ninguno) con Asignar el cliente de una zona, o borrarlas.

Rol necesario: admin o superior. De toda la organización.

Parámetros

NombreEnTipoObligatorioDescripción
orgrutastring (uuid)SíId de la organización. Cada ruta comprueba que es la del token (si no, 404).
clientrutastring (uuid)SíId del cliente.

Respuesta

  • 204: Borrado. Sin cuerpo.

Errores

EstadoDescripción
403El rol o los límites del token no lo permiten (forbidden).
404No existe o el token no lo ve (not_found).
409client_has_zones: el cliente aún tiene zonas; muévelas a otro cliente o bórralas antes.

Ejemplo

Aún sin método en los SDK: usa la petición HTTP.

curl -X DELETE "https://dash.openwaf.dev/v1/orgs/$OPENWAF_ORG/clients/7c1e3a5d-9b2f-4d6a-8e0c-2f4a6c8e0b1d" \
  -H "Authorization: Bearer $OPENWAF_TOKEN"

Asignar el cliente de una zona

PATCH /v1/orgs/{org}/zones/{zone}

Asigna una zona a un cliente, o a ninguno con null. El cliente forma parte de la configuración de la zona, así que el cambio crea una versión.

Rol necesario: tech o superior. De toda la organización.

Controles de cambio: dry_run · If-Match (opcional) · X-Change-Reason (obligatorio)

Parámetros

NombreEnTipoObligatorioDescripción
orgrutastring (uuid)SíId de la organización. Cada ruta comprueba que es la del token (si no, 404).
zonerutastring (uuid)SíId de la zona (consulta Listar zonas).
X-Change-ReasoncabecerastringSíMotivo del cambio: 1-500 caracteres UTF-8 tras recortar espacios, sin caracteres de control. Si falta o no es válido: 422 reason_required. De 1 a 500 caracteres.
If-MatchcabecerastringNoVersión de configuración esperada, p. ej. "12" (se admite W/). Si no es la actual: 412 version_conflict.
dry_runconsultastringNo1/true simula el cambio: responde 200 con el plan (Applied) y no guarda nada. Admite 0/false; otro valor: 400. Uno de 1, true, 0, false.

Cuerpo de la petición

Tipo de contenido application/json.

CampoTipoObligatorioDescripción
client_idstring (uuid) o nullSíId del cliente, o null para que la zona no sea de ningún cliente.

Respuesta

  • 200: Zona modificada (con X-Config-Version y ETag) o, con dry_run, el plan (Applied). Devuelve Zone o Applied.
CampoTipoDescripción
idstring (uuid)Id.
org_idstring (uuid)Id de la organización.
namestringNombre.
statusstringUno de pending, active, moved, disabled.
dns_modestringdelegated: NS de OpenWAF. external: el cliente conserva su DNS y apunta sus sitios al borde (CNAME/A). Uno de delegated, external. Por defecto delegated.
ns_pairarray de stringServidores de nombres que usan las zonas delegadas. Exactamente 2 elementos.
delegation_checked_atstring (date-time)Última comprobación de la delegación.
delegationCheckResult o VerifyResultÚltima comprobación: CheckResult (delegada) o VerifyResult (externa).
activated_atstring (date-time)Cuándo pasó a activa.
moved_atstring (date-time)Cuándo dejó de estar delegada en OpenWAF.
disabled_atstring (date-time)Cuándo se desactivó.
verificationZoneVerification
cname_targetstringSolo zonas externas: destino del CNAME de cada sitio.
edge_addressesEdgeAddresses
config_versionintegerVersión de configuración actual (también en ETag).
proxied_namesintegerNombres con registro con proxy.
merged_intostring (uuid)Solo zonas fusionadas (status disabled): zona padre.
merged_atstring (date-time)Solo zonas fusionadas; se purgan a los 14 días.
created_atstring (date-time)Fecha de creación.
updated_atstring (date-time)Último cambio.
client_idstring (uuid) o nullCliente de la organización al que pertenece la zona; null = ninguno.

Cabeceras de la respuesta: ETag, X-Config-Version.

Errores

EstadoDescripción
400Petición mal formada (bad_request).
403El rol o los límites del token no lo permiten (forbidden).
404No existe o el token no lo ve (not_found).
412version_conflict: If-Match no coincide con la versión actual.
422Error de validación (invalid) o motivo ausente/no válido (reason_required).

Ejemplo

Aún sin método en los SDK: usa la petición HTTP.

curl -X PATCH "https://dash.openwaf.dev/v1/orgs/$OPENWAF_ORG/zones/6f1d2c3b-8a4e-4b7d-9c21-5e3f7a8b9c0d" \
  -H "Authorization: Bearer $OPENWAF_TOKEN" \
  -H "X-Change-Reason: Move the zone to its client" \
  -H 'If-Match: "12"' \
  -H "Content-Type: application/json" \
  --data '{
    "client_id": "7c1e3a5d-9b2f-4d6a-8e0c-2f4a6c8e0b1d"
  }'
200
{
  "id": "6f1d2c3b-8a4e-4b7d-9c21-5e3f7a8b9c0d",
  "org_id": "1e7c9a3b-5d2f-4b8a-9c6e-0f2a4b6c8d1e",
  "name": "example.com",
  "status": "active",
  "dns_mode": "delegated",
  "ns_pair": [
    "ns1.example-dns.net",
    "ns2.example-dns.net"
  ],
  "delegation_checked_at": "2026-10-27T09:00:00Z",
  "activated_at": "2026-03-02T11:40:00Z",
  "config_version": 12,
  "proxied_names": 3,
  "client_id": null,
  "created_at": "2026-03-02T10:20:00Z",
  "updated_at": "2026-10-27T09:00:00Z"
}

Última actualización:

↑↓ para moverte↵ para abriresc para cerrar