# Organizaciones

> Consulta y renombra tu organización, la cuenta a la que pertenecen las zonas, los miembros y los tokens.

Una organización es la cuenta a la que pertenecen las zonas, los miembros, los clientes y los tokens de API. Un token es de una sola organización, así que `GET /v1/orgs` devuelve la organización del propio token.

| Operación | Ruta |
|---|---|
| [Listar organizaciones](https://developers.openwaf.dev/es/api/organizations/#list-orgs) | `GET /v1/orgs` |
| [Ver la organización](https://developers.openwaf.dev/es/api/organizations/#get-org) | `GET /v1/orgs/{org}` |
| [Renombrar la organización](https://developers.openwaf.dev/es/api/organizations/#rename-org) | `PATCH /v1/orgs/{org}` |

## Listar organizaciones

```http
GET /v1/orgs
```

Devuelve la organización del token. Un token es de una sola organización, así que la lista siempre tiene un elemento; su `id` es el `{org}` de las demás rutas.

**Rol necesario:** `readonly` o superior.

#### Respuesta

- `200`: Devuelve `items`, un array de [Organization](https://developers.openwaf.dev/es/api/schemas/#organization).

| Campo | Tipo | Descripción |
|---|---|---|
| `items[].id` | string (uuid) | Id. |
| `items[].name` | string | Nombre. |
| `items[].ns_pair` | array de string | Servidores de nombres que usan las zonas delegadas. Exactamente 2 elementos. |
| `items[].created_at` | string (date-time) | Fecha de creación. |
| `items[].updated_at` | string (date-time) | Último cambio. |
| `items[].pending_approval` | boolean | Alta pendiente de aprobación (sin escrituras). |
| `items[].suspended_at` | string (date-time) o null | Suspendida (sin escrituras; sus zonas no se sirven). |
| `items[].suspended_reason` | string o null |  |
| `items[].features` | array de string | Funciones activadas en la organización (`egress`: egress de IA). Elementos: uno de `egress`. |

#### Errores

| Estado | Descripción |
|---|---|
| `401` | Token ausente, no válido o caducado (`unauthorized`). |

#### Ejemplo

**curl**


```sh
curl "https://dash.openwaf.dev/v1/orgs" \
  -H "Authorization: Bearer $OPENWAF_TOKEN"
```

**TypeScript**


```ts
import { OpenWAF } from "./openwaf";

const owf = new OpenWAF({ baseUrl: "https://dash.openwaf.dev" }); // token de OPENWAF_TOKEN
const result = await owf.listOrgs();
```

**Python**


```py
from openwaf import OpenWAF

owf = OpenWAF(base_url="https://dash.openwaf.dev")  # token de OPENWAF_TOKEN
result = owf.list_orgs()
```



```json
{
  "items": [
    {
      "id": "1e7c9a3b-5d2f-4b8a-9c6e-0f2a4b6c8d1e",
      "name": "Acme Digital",
      "ns_pair": [
        "ns1.example-dns.net",
        "ns2.example-dns.net"
      ],
      "created_at": "2026-03-02T10:15:00Z",
      "updated_at": "2026-10-01T08:00:00Z",
      "pending_approval": false,
      "suspended_at": null,
      "suspended_reason": null,
      "features": [
        "egress"
      ]
    }
  ]
}
```

## Ver la organización

```http
GET /v1/orgs/{org}
```

Devuelve la organización, con la pareja de servidores de nombres (`ns_pair`) que usan sus zonas delegadas.

**Rol necesario:** `readonly` o superior.

#### Parámetros

| Nombre | En | Tipo | Obligatorio | Descripción |
|---|---|---|---|---|
| `org` | ruta | string (uuid) | Sí | Id de la organización. Cada ruta comprueba que es la del token (si no, `404`). |

#### Respuesta

- `200`: Devuelve [Organization](https://developers.openwaf.dev/es/api/schemas/#organization).

| Campo | Tipo | Descripción |
|---|---|---|
| `id` | string (uuid) | Id. |
| `name` | string | Nombre. |
| `ns_pair` | array de string | Servidores de nombres que usan las zonas delegadas. Exactamente 2 elementos. |
| `created_at` | string (date-time) | Fecha de creación. |
| `updated_at` | string (date-time) | Último cambio. |
| `pending_approval` | boolean | Alta pendiente de aprobación (sin escrituras). |
| `suspended_at` | string (date-time) o null | Suspendida (sin escrituras; sus zonas no se sirven). |
| `suspended_reason` | string o null |  |
| `features` | array de string | Funciones activadas en la organización (`egress`: egress de IA). Elementos: uno de `egress`. |

#### Errores

| Estado | Descripción |
|---|---|
| `404` | No existe o el token no lo ve (`not_found`). |

#### Ejemplo

**curl**


```sh
curl "https://dash.openwaf.dev/v1/orgs/$OPENWAF_ORG" \
  -H "Authorization: Bearer $OPENWAF_TOKEN"
```

**TypeScript**


```ts
import { OpenWAF } from "./openwaf";

const owf = new OpenWAF({ baseUrl: "https://dash.openwaf.dev" }); // token de OPENWAF_TOKEN
const result = await owf.getOrg();
```

**Python**


```py
from openwaf import OpenWAF

owf = OpenWAF(base_url="https://dash.openwaf.dev")  # token de OPENWAF_TOKEN
result = owf.get_org()
```



```json
{
  "id": "1e7c9a3b-5d2f-4b8a-9c6e-0f2a4b6c8d1e",
  "name": "Acme Digital",
  "ns_pair": [
    "ns1.example-dns.net",
    "ns2.example-dns.net"
  ],
  "created_at": "2026-03-02T10:15:00Z",
  "updated_at": "2026-10-01T08:00:00Z",
  "pending_approval": false,
  "suspended_at": null,
  "suspended_reason": null,
  "features": [
    "egress"
  ]
}
```

## Renombrar la organización

```http
PATCH /v1/orgs/{org}
```

Cambia el nombre de la organización.

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

#### Parámetros

| Nombre | En | Tipo | Obligatorio | Descripción |
|---|---|---|---|---|
| `org` | ruta | string (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`.

| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| `name` | string | Sí | Nombre. |

#### Respuesta

- `200`: Devuelve [Organization](https://developers.openwaf.dev/es/api/schemas/#organization).

| Campo | Tipo | Descripción |
|---|---|---|
| `id` | string (uuid) | Id. |
| `name` | string | Nombre. |
| `ns_pair` | array de string | Servidores de nombres que usan las zonas delegadas. Exactamente 2 elementos. |
| `created_at` | string (date-time) | Fecha de creación. |
| `updated_at` | string (date-time) | Último cambio. |
| `pending_approval` | boolean | Alta pendiente de aprobación (sin escrituras). |
| `suspended_at` | string (date-time) o null | Suspendida (sin escrituras; sus zonas no se sirven). |
| `suspended_reason` | string o null |  |
| `features` | array de string | Funciones activadas en la organización (`egress`: egress de IA). Elementos: uno de `egress`. |

#### Errores

| Estado | Descripción |
|---|---|
| `403` | El rol o los límites del token no lo permiten (`forbidden`). |

#### Ejemplo

**curl**


```sh
curl -X PATCH "https://dash.openwaf.dev/v1/orgs/$OPENWAF_ORG" \
  -H "Authorization: Bearer $OPENWAF_TOKEN" \
  -H "Content-Type: application/json" \
  --data '{
    "name": "Acme Digital"
  }'
```

**TypeScript**


```ts
import { OpenWAF } from "./openwaf";

const owf = new OpenWAF({ baseUrl: "https://dash.openwaf.dev" }); // token de OPENWAF_TOKEN
const result = await owf.renameOrg({
  body: {
    name: "Acme Digital"
  }
});
```

**Python**


```py
from openwaf import OpenWAF

owf = OpenWAF(base_url="https://dash.openwaf.dev")  # token de OPENWAF_TOKEN
result = owf.rename_org(
    body={
        "name": "Acme Digital"
    },
)
```



```json
{
  "id": "1e7c9a3b-5d2f-4b8a-9c6e-0f2a4b6c8d1e",
  "name": "Acme Digital",
  "ns_pair": [
    "ns1.example-dns.net",
    "ns2.example-dns.net"
  ],
  "created_at": "2026-03-02T10:15:00Z",
  "updated_at": "2026-10-01T08:00:00Z",
  "pending_approval": false,
  "suspended_at": null,
  "suspended_reason": null,
  "features": [
    "egress"
  ]
}
```
