Skip to content

Recursos

Todas las rutas son relativas a la dirección de la cuenta, https://<subdominio>.safetypanel.com.ar/api/v1/, y todas requieren una key.

Cuenta

GET /api/v1/account

La cuenta a la que pertenece la key. Es la primera llamada para comprobar que una credencial funciona.

CampoTipoQué contiene
identeroIdentificador de la cuenta.
nametextoNombre de la cuenta.
subdomaintextoSubdominio de la cuenta.
account_typetextoagency (consultora) o company (empresa).
countrytextoPaís de la cuenta, en código de dos letras (por ejemplo, AR).
time_zonetextoZona horaria en la que opera la cuenta (por ejemplo, Buenos Aires). Los instantes de la API van igual en UTC.

Sitios

GET /api/v1/sites
GET /api/v1/sites/:id

Los sitios de la cuenta. El listado se pagina y acepta los filtros status y updated_since. Un sitio pedido por su id se devuelve en cualquier estado.

json
{
  "id": 12,
  "name": "Planta Norte",
  "cuit": "30-71234567-8",
  "street": "Av. Siempreviva 742",
  "city": "Springfield",
  "province": "Buenos Aires",
  "postal_code": "1414",
  "status": "active",
  "slug": "planta-norte",
  "site_group": { "id": 3, "name": "Grupo Taller" },
  "responsible_professional_id": 45,
  "professional_ids": [45, 51],
  "created_at": "2026-03-02T14:05:11Z",
  "updated_at": "2026-09-20T18:30:00Z"
}
CampoTipoQué contiene
identeroIdentificador del sitio. Es el único identificador que acepta /sites/:id.
nametextoNombre del sitio.
cuittexto o nullCUIT resuelto del sitio (ver abajo).
street, city, province, postal_codetexto o nullDirección del sitio.
statustextoactive, inactive o deleted.
slugtextoIdentificador legible que el panel usa en sus direcciones.
site_groupobjeto o nullEl grupo de sitios al que pertenece, con su id y su name, o null si no pertenece a ninguno.
responsible_professional_identero o nullEl profesional responsable del sitio.
professional_idslista de enterosLos profesionales asignados al sitio. Para saber qué profesionales acceden a un sitio, ver a qué sitios accede un profesional.
created_at, updated_atinstanteCuándo se creó y cuándo cambió por última vez.

El CUIT es un valor resuelto

Un sitio puede tener un CUIT propio o heredar el de su grupo. El campo cuit ya trae el que corresponde: el propio del sitio si lo tiene y, si no, el del grupo. Es null solo cuando no hay ninguno de los dos.

Usá el cuit del sitio tal como llega, sin recalcularlo a partir del grupo. Por eso site_group no trae el CUIT del grupo.

Estados

statusQué significa
activeActivo en el panel. Es el único estado que devuelve el listado por defecto.
inactiveInactivo en el panel.
deletedArchivado en el panel. El sitio se conserva con toda su información.

Para enterarte de los cambios de estado al sincronizar, pedí también status=inactive y status=deleted junto con updated_since.

Qué mueve updated_at

Además de cualquier cambio en los datos del propio sitio, el updated_at de un sitio cambia cuando:

  • se asigna o se quita un profesional;
  • el sitio entra o sale de un grupo, o su grupo cambia de nombre o se elimina;
  • su grupo cambia de CUIT y el sitio no tiene CUIT propio.

Así, updated_since alcanza para enterarse de todo lo que cambió en un sitio.

Grupos de sitios

GET /api/v1/site_groups
GET /api/v1/site_groups/:id

Los grupos de sitios de la cuenta: los sitios que una consultora atiende bajo un mismo contrato. Las empresas no tienen grupos, así que en sus cuentas el listado viene vacío.

El listado se pagina y acepta el filtro updated_since. Los grupos no tienen estado, así que no aceptan status.

json
{
  "id": 3,
  "name": "Grupo Taller",
  "cuit": "30-71234567-8",
  "site_ids": [12, 14, 20],
  "created_at": "2026-02-10T09:00:00Z",
  "updated_at": "2026-09-18T11:22:03Z"
}
CampoTipoQué contiene
identeroIdentificador del grupo.
nametextoNombre del grupo.
cuittexto o nullCUIT propio del grupo. Es el que heredan sus sitios sin CUIT propio.
site_idslista de enterosTodos los sitios del grupo, en cualquier estado.
created_at, updated_atinstanteCuándo se creó y cuándo cambió por última vez.

El updated_at de un grupo también cambia cuando un sitio entra o sale de él.

Un grupo eliminado deja de aparecer en la API. Sus sitios siguen existiendo: su updated_at cambia y su site_group pasa a ser null, así que una sincronización con updated_since sobre los sitios se entera.

Profesionales

GET /api/v1/professionals
GET /api/v1/professionals/:id

Los profesionales de la cuenta. Sirve, por ejemplo, para que otra plataforma deje entrar a un profesional si su email está en esta lista.

El listado se pagina y acepta los filtros status y updated_since. Un profesional pedido por su id se devuelve en cualquier estado.

json
{
  "id": 45,
  "dni": "30123456",
  "first_name": "Ana",
  "last_name": "Pérez",
  "email": "[email protected]",
  "phone": "+54 11 5555-0000",
  "status": "active",
  "full_client_access": false,
  "created_at": "2026-01-15T13:00:00Z",
  "updated_at": "2026-09-19T20:10:42Z"
}
CampoTipoQué contiene
identeroIdentificador del profesional. Es el que aparece en responsible_professional_id y professional_ids de los sitios.
dnitextoDocumento del profesional.
first_name, last_nametextoNombre y apellido.
emailtexto o nullEmail del profesional.
phonetexto o nullTeléfono.
statustextoactive, inactive o deleted.
full_client_accessbooleanoSi el profesional tiene acceso a todos los sitios de la cuenta (ver abajo).
created_at, updated_atinstanteCuándo se creó y cuándo cambió por última vez.

Estados

statusQué significa
activeActivo en el panel. Es el único estado que devuelve el listado por defecto.
inactiveInactivo en el panel.
deletedEliminado en el panel: dado de baja. Se conserva con todo su historial y puede restaurarse.

Un profesional dado de baja no aparece en el listado por defecto. Para enterarte de las bajas al sincronizar, pedí también status=deleted junto con updated_since.

A qué sitios accede un profesional

La API no trae una lista de sitios por profesional. Se arma con dos recursos:

  • Si full_client_access es true, el profesional accede a todos los sitios de la cuenta, incluidos los que se creen después.
  • Si es false, accede a los sitios que lo nombran como responsable (responsible_professional_id) o que lo incluyen entre los asignados (professional_ids).

Asignar o quitar un profesional cambia el updated_at del sitio, no el del profesional. Para mantener sincronizado el acceso, seguí los cambios de los dos recursos: full_client_access con updated_since sobre los profesionales, y las asignaciones con updated_since sobre los sitios.

Documentación de Safety Panel, software de gestión de seguridad e higiene.