Buscar en la documentación

Usuarios y roles

Personas, roles, permisos por persona y restablecimiento de acceso.

16 endpointsGET · 5POST · 5PATCH · 2PUT · 2DELETE · 2
GET/usersPágina de personas (search, sort, filter[role], filter[status], filter[mfa])
Permiso
users.view
Código de quien administra
—

Cabeceras de la petición

CabeceraValorPara qué
AuthorizationBearer trazo_…Token de sesión que entrega el ingreso
Acceptapplication/jsonLa API siempre responde JSON (o un archivo, en la exportación)

Parámetros

NombreDóndeTipoObligatorio
pageConsultaentero · ≥ 1No
per_pageConsultaentero · ≥ 1 · ≤ 100No
sortConsulta"name" | "email" | "created_at" | "last_login_at" | "-name" | "-email" | "-created_at" | "-last_login_at"No
searchConsultatexto · máx. 100No
filter[role][]Consultalista de textoNo
filter[status]Consulta"active" | "inactive"No
filter[mfa]Consulta"enabled" | "disabled"No

Respuesta 200

CampoTipo
datalista de objeto
metaobjeto
meta.pageentero
meta.per_pageentero
meta.totalentero
meta.last_pageentero
{
  "data": [
    "texto"
  ],
  "meta": {
    "page": 1,
    "per_page": 1,
    "total": 12,
    "last_page": 1
  }
}
Cabecera de la respuestaPara qué
X-Request-IdIdentificador de la petición; es el trace_id de los errores

Errores posibles

  • 401Sin sesión o la sesión expiró (UNAUTHENTICATED)
  • 403Sin permiso para esta acción
  • 422Algún dato no es válido (VALIDATION_FAILED, con el detalle por campo)

Todos llegan en formato RFC 9457 con su code y trace_id: ver Errores de la API.

Ver el módulo en la biblioteca
POST/users201 con la ficha; admite Idempotency-Key
Permiso
users.create
Código de quien administra
Si el rol trae permisos sensibles

Cabeceras de la petición

CabeceraValorPara qué
AuthorizationBearer trazo_…Token de sesión que entrega el ingreso
Acceptapplication/jsonLa API siempre responde JSON (o un archivo, en la exportación)
Content-Typeapplication/jsonCuerpo en JSON
X-Socket-IDopcionalPara no recibir en tiempo real el aviso de tu propio cambio

Cuerpo

CampoTipoObligatorio
given_namestexto · máx. 80Sí
family_namestexto · máx. 80Sí
nameNo se envía: el nombre completo lo arma la base—No se acepta
emailtexto · email · máx. 191Sí
roletextoSí
mfa_codetexto | nullNo
{
  "given_names": "Andrés Castro",
  "family_names": "Andrés Castro",
  "email": "agente1@trazo.test",
  "role": "texto",
  "mfa_code": "482913"
}

Respuesta 201

CampoTipo
dataobjeto
data.idtexto
data.nametexto
data.given_namestexto
data.family_namestexto
data.emailtexto
data.is_activesí/no
data.roleobjeto | null
data.role.codetexto
data.role.nametexto
data.role.levelentero
data.mfa_enabledsí/no
data.last_login_attexto | null
data.created_attexto
data.permissionsobjeto
data.permissions.effectivelista de texto
data.permissions.rolelista de texto
data.permissions.grantedlista de texto
data.permissions.deniedlista de texto
data.pending_assigned_incidentsentero
data.is_selfsí/no
data.actionsobjeto
{
  "data": {
    "id": "01jbzk8m3q9w2e5r7t1y4u6i0p",
    "name": "Andrés Castro",
    "given_names": "Andrés Castro",
    "family_names": "Andrés Castro",
    "email": "agente1@trazo.test",
    "is_active": true,
    "role": {
      "code": "in_progress",
      "name": "Andrés Castro",
      "level": 60
    },
    "mfa_enabled": true,
    "last_login_at": "2026-11-01T14:30:00Z",
    "created_at": "2026-11-01T14:30:00Z",
    "permissions": {
      "effective": [
        "texto"
      ],
      "role": [
        "texto"
      ],
      "granted": [
        "texto"
      ],
      "denied": [
        "texto"
      ]
    },
    "pending_assigned_incidents": 1,
    "is_self": true,
    "actions": {}
  }
}
Cabecera de la respuestaPara qué
X-Request-IdIdentificador de la petición; es el trace_id de los errores

Errores posibles

  • 401Sin sesión o la sesión expiró (UNAUTHENTICATED)
  • 403Sin permiso para esta acción
  • 422Algún dato no es válido (VALIDATION_FAILED, con el detalle por campo)

Todos llegan en formato RFC 9457 con su code y trace_id: ver Errores de la API.

Ver el módulo en la biblioteca
GET/users/{user}Ficha con permisos, incidentes pendientes asignados y actions
Permiso
users.view
Código de quien administra
—

Cabeceras de la petición

CabeceraValorPara qué
AuthorizationBearer trazo_…Token de sesión que entrega el ingreso
Acceptapplication/jsonLa API siempre responde JSON (o un archivo, en la exportación)

Parámetros

NombreDóndeTipoObligatorio
userRutatextoSí

Respuesta 200

CampoTipo
dataobjeto
data.idtexto
data.nametexto
data.given_namestexto
data.family_namestexto
data.emailtexto
data.is_activesí/no
data.roleobjeto | null
data.role.codetexto
data.role.nametexto
data.role.levelentero
data.mfa_enabledsí/no
data.last_login_attexto | null
data.created_attexto
data.permissionsobjeto
data.permissions.effectivelista de texto
data.permissions.rolelista de texto
data.permissions.grantedlista de texto
data.permissions.deniedlista de texto
data.pending_assigned_incidentsentero
data.is_selfsí/no
data.actionsobjeto
{
  "data": {
    "id": "01jbzk8m3q9w2e5r7t1y4u6i0p",
    "name": "Andrés Castro",
    "given_names": "Andrés Castro",
    "family_names": "Andrés Castro",
    "email": "agente1@trazo.test",
    "is_active": true,
    "role": {
      "code": "in_progress",
      "name": "Andrés Castro",
      "level": 60
    },
    "mfa_enabled": true,
    "last_login_at": "2026-11-01T14:30:00Z",
    "created_at": "2026-11-01T14:30:00Z",
    "permissions": {
      "effective": [
        "texto"
      ],
      "role": [
        "texto"
      ],
      "granted": [
        "texto"
      ],
      "denied": [
        "texto"
      ]
    },
    "pending_assigned_incidents": 1,
    "is_self": true,
    "actions": {}
  }
}
Cabecera de la respuestaPara qué
X-Request-IdIdentificador de la petición; es el trace_id de los errores

Errores posibles

  • 401Sin sesión o la sesión expiró (UNAUTHENTICATED)
  • 404No existe o quien pregunta no puede verlo

Todos llegan en formato RFC 9457 con su code y trace_id: ver Errores de la API.

Ver el módulo en la biblioteca
PATCH/users/{user}Ficha; si cambió el correo, avisa a la dirección anterior
Permiso
users.update
Código de quien administra
—

Cabeceras de la petición

CabeceraValorPara qué
AuthorizationBearer trazo_…Token de sesión que entrega el ingreso
Acceptapplication/jsonLa API siempre responde JSON (o un archivo, en la exportación)
Content-Typeapplication/jsonCuerpo en JSON
X-Socket-IDopcionalPara no recibir en tiempo real el aviso de tu propio cambio

Parámetros

NombreDóndeTipoObligatorio
userRutatextoSí

Cuerpo

CampoTipoObligatorio
given_namestexto · máx. 80Sí
family_namestexto · máx. 80Sí
nameNo se envía: el nombre completo lo arma la base—No se acepta
emailtexto · email · máx. 191Sí
roleNo se envía: el rol tiene su propio endpoint—No se acepta
mfa_codeNo se envía: editar los datos no pide el código de quien administra—No se acepta
{
  "given_names": "Andrés Castro",
  "family_names": "Andrés Castro",
  "email": "agente1@trazo.test"
}

Respuesta 200

CampoTipo
dataobjeto
data.idtexto
data.nametexto
data.given_namestexto
data.family_namestexto
data.emailtexto
data.is_activesí/no
data.roleobjeto | null
data.role.codetexto
data.role.nametexto
data.role.levelentero
data.mfa_enabledsí/no
data.last_login_attexto | null
data.created_attexto
data.permissionsobjeto
data.permissions.effectivelista de texto
data.permissions.rolelista de texto
data.permissions.grantedlista de texto
data.permissions.deniedlista de texto
data.pending_assigned_incidentsentero
data.is_selfsí/no
data.actionsobjeto
{
  "data": {
    "id": "01jbzk8m3q9w2e5r7t1y4u6i0p",
    "name": "Andrés Castro",
    "given_names": "Andrés Castro",
    "family_names": "Andrés Castro",
    "email": "agente1@trazo.test",
    "is_active": true,
    "role": {
      "code": "in_progress",
      "name": "Andrés Castro",
      "level": 60
    },
    "mfa_enabled": true,
    "last_login_at": "2026-11-01T14:30:00Z",
    "created_at": "2026-11-01T14:30:00Z",
    "permissions": {
      "effective": [
        "texto"
      ],
      "role": [
        "texto"
      ],
      "granted": [
        "texto"
      ],
      "denied": [
        "texto"
      ]
    },
    "pending_assigned_incidents": 1,
    "is_self": true,
    "actions": {}
  }
}
Cabecera de la respuestaPara qué
X-Request-IdIdentificador de la petición; es el trace_id de los errores

Errores posibles

  • 401Sin sesión o la sesión expiró (UNAUTHENTICATED)
  • 403Sin permiso para esta acción
  • 404No existe o quien pregunta no puede verlo
  • 422Algún dato no es válido (VALIDATION_FAILED, con el detalle por campo)

Todos llegan en formato RFC 9457 con su code y trace_id: ver Errores de la API.

Ver el módulo en la biblioteca
PUT/users/{user}/rolesFicha
Permiso
users.roles.assign
Código de quien administra
Si el rol anterior o el nuevo traen permisos sensibles

Cabeceras de la petición

CabeceraValorPara qué
AuthorizationBearer trazo_…Token de sesión que entrega el ingreso
Acceptapplication/jsonLa API siempre responde JSON (o un archivo, en la exportación)
Content-Typeapplication/jsonCuerpo en JSON
X-Socket-IDopcionalPara no recibir en tiempo real el aviso de tu propio cambio

Parámetros

NombreDóndeTipoObligatorio
userRutatextoSí

Cuerpo

CampoTipoObligatorio
mfa_codetexto | nullNo
roletextoSí
{
  "mfa_code": "482913",
  "role": "texto"
}

Respuesta 200

CampoTipo
dataobjeto
data.idtexto
data.nametexto
data.given_namestexto
data.family_namestexto
data.emailtexto
data.is_activesí/no
data.roleobjeto | null
data.role.codetexto
data.role.nametexto
data.role.levelentero
data.mfa_enabledsí/no
data.last_login_attexto | null
data.created_attexto
data.permissionsobjeto
data.permissions.effectivelista de texto
data.permissions.rolelista de texto
data.permissions.grantedlista de texto
data.permissions.deniedlista de texto
data.pending_assigned_incidentsentero
data.is_selfsí/no
data.actionsobjeto
{
  "data": {
    "id": "01jbzk8m3q9w2e5r7t1y4u6i0p",
    "name": "Andrés Castro",
    "given_names": "Andrés Castro",
    "family_names": "Andrés Castro",
    "email": "agente1@trazo.test",
    "is_active": true,
    "role": {
      "code": "in_progress",
      "name": "Andrés Castro",
      "level": 60
    },
    "mfa_enabled": true,
    "last_login_at": "2026-11-01T14:30:00Z",
    "created_at": "2026-11-01T14:30:00Z",
    "permissions": {
      "effective": [
        "texto"
      ],
      "role": [
        "texto"
      ],
      "granted": [
        "texto"
      ],
      "denied": [
        "texto"
      ]
    },
    "pending_assigned_incidents": 1,
    "is_self": true,
    "actions": {}
  }
}
Cabecera de la respuestaPara qué
X-Request-IdIdentificador de la petición; es el trace_id de los errores

Errores posibles

  • 401Sin sesión o la sesión expiró (UNAUTHENTICATED)
  • 403Sin permiso para esta acción
  • 404No existe o quien pregunta no puede verlo
  • 422Algún dato no es válido (VALIDATION_FAILED, con el detalle por campo)

Todos llegan en formato RFC 9457 con su code y trace_id: ver Errores de la API.

Ver el módulo en la biblioteca
PUT/users/{user}/permissionsFicha. Recibe los permisos que debe tener; el back calcula las excepciones
Permiso
users.permissions.grant
Código de quien administra
Si cambia un permiso sensible

Cabeceras de la petición

CabeceraValorPara qué
AuthorizationBearer trazo_…Token de sesión que entrega el ingreso
Acceptapplication/jsonLa API siempre responde JSON (o un archivo, en la exportación)
Content-Typeapplication/jsonCuerpo en JSON
X-Socket-IDopcionalPara no recibir en tiempo real el aviso de tu propio cambio

Parámetros

NombreDóndeTipoObligatorio
userRutatextoSí

Cuerpo

CampoTipoObligatorio
mfa_codetexto | nullNo
permissionslista de textoSí
{
  "mfa_code": "482913",
  "permissions": [
    "texto"
  ]
}

Respuesta 200

CampoTipo
dataobjeto
data.idtexto
data.nametexto
data.given_namestexto
data.family_namestexto
data.emailtexto
data.is_activesí/no
data.roleobjeto | null
data.role.codetexto
data.role.nametexto
data.role.levelentero
data.mfa_enabledsí/no
data.last_login_attexto | null
data.created_attexto
data.permissionsobjeto
data.permissions.effectivelista de texto
data.permissions.rolelista de texto
data.permissions.grantedlista de texto
data.permissions.deniedlista de texto
data.pending_assigned_incidentsentero
data.is_selfsí/no
data.actionsobjeto
{
  "data": {
    "id": "01jbzk8m3q9w2e5r7t1y4u6i0p",
    "name": "Andrés Castro",
    "given_names": "Andrés Castro",
    "family_names": "Andrés Castro",
    "email": "agente1@trazo.test",
    "is_active": true,
    "role": {
      "code": "in_progress",
      "name": "Andrés Castro",
      "level": 60
    },
    "mfa_enabled": true,
    "last_login_at": "2026-11-01T14:30:00Z",
    "created_at": "2026-11-01T14:30:00Z",
    "permissions": {
      "effective": [
        "texto"
      ],
      "role": [
        "texto"
      ],
      "granted": [
        "texto"
      ],
      "denied": [
        "texto"
      ]
    },
    "pending_assigned_incidents": 1,
    "is_self": true,
    "actions": {}
  }
}
Cabecera de la respuestaPara qué
X-Request-IdIdentificador de la petición; es el trace_id de los errores

Errores posibles

  • 401Sin sesión o la sesión expiró (UNAUTHENTICATED)
  • 403Sin permiso para esta acción
  • 404No existe o quien pregunta no puede verlo
  • 422Algún dato no es válido (VALIDATION_FAILED, con el detalle por campo)

Todos llegan en formato RFC 9457 con su code y trace_id: ver Errores de la API.

Ver el módulo en la biblioteca
POST/users/{user}/activateFicha; desactivar cierra sus sesiones al instante
Permiso
users.activate
Código de quien administra
—

Cabeceras de la petición

CabeceraValorPara qué
AuthorizationBearer trazo_…Token de sesión que entrega el ingreso
Acceptapplication/jsonLa API siempre responde JSON (o un archivo, en la exportación)
Content-Typeapplication/jsonCuerpo en JSON
X-Socket-IDopcionalPara no recibir en tiempo real el aviso de tu propio cambio

Parámetros

NombreDóndeTipoObligatorio
userRutatextoSí

Cuerpo

CampoTipoObligatorio
mfa_codetexto | nullNo
{
  "mfa_code": "482913"
}

Respuesta 200

CampoTipo
dataobjeto
data.idtexto
data.nametexto
data.given_namestexto
data.family_namestexto
data.emailtexto
data.is_activesí/no
data.roleobjeto | null
data.role.codetexto
data.role.nametexto
data.role.levelentero
data.mfa_enabledsí/no
data.last_login_attexto | null
data.created_attexto
data.permissionsobjeto
data.permissions.effectivelista de texto
data.permissions.rolelista de texto
data.permissions.grantedlista de texto
data.permissions.deniedlista de texto
data.pending_assigned_incidentsentero
data.is_selfsí/no
data.actionsobjeto
{
  "data": {
    "id": "01jbzk8m3q9w2e5r7t1y4u6i0p",
    "name": "Andrés Castro",
    "given_names": "Andrés Castro",
    "family_names": "Andrés Castro",
    "email": "agente1@trazo.test",
    "is_active": true,
    "role": {
      "code": "in_progress",
      "name": "Andrés Castro",
      "level": 60
    },
    "mfa_enabled": true,
    "last_login_at": "2026-11-01T14:30:00Z",
    "created_at": "2026-11-01T14:30:00Z",
    "permissions": {
      "effective": [
        "texto"
      ],
      "role": [
        "texto"
      ],
      "granted": [
        "texto"
      ],
      "denied": [
        "texto"
      ]
    },
    "pending_assigned_incidents": 1,
    "is_self": true,
    "actions": {}
  }
}
Cabecera de la respuestaPara qué
X-Request-IdIdentificador de la petición; es el trace_id de los errores

Errores posibles

  • 401Sin sesión o la sesión expiró (UNAUTHENTICATED)
  • 403Sin permiso para esta acción
  • 404No existe o quien pregunta no puede verlo
  • 422Algún dato no es válido (VALIDATION_FAILED, con el detalle por campo)

Todos llegan en formato RFC 9457 con su code y trace_id: ver Errores de la API.

Ver el módulo en la biblioteca
POST/users/{user}/deactivateFicha; desactivar cierra sus sesiones al instante
Permiso
users.activate
Código de quien administra
—

Cabeceras de la petición

CabeceraValorPara qué
AuthorizationBearer trazo_…Token de sesión que entrega el ingreso
Acceptapplication/jsonLa API siempre responde JSON (o un archivo, en la exportación)
Content-Typeapplication/jsonCuerpo en JSON
X-Socket-IDopcionalPara no recibir en tiempo real el aviso de tu propio cambio

Parámetros

NombreDóndeTipoObligatorio
userRutatextoSí

Cuerpo

CampoTipoObligatorio
mfa_codetexto | nullNo
{
  "mfa_code": "482913"
}

Respuesta 200

CampoTipo
dataobjeto
data.idtexto
data.nametexto
data.given_namestexto
data.family_namestexto
data.emailtexto
data.is_activesí/no
data.roleobjeto | null
data.role.codetexto
data.role.nametexto
data.role.levelentero
data.mfa_enabledsí/no
data.last_login_attexto | null
data.created_attexto
data.permissionsobjeto
data.permissions.effectivelista de texto
data.permissions.rolelista de texto
data.permissions.grantedlista de texto
data.permissions.deniedlista de texto
data.pending_assigned_incidentsentero
data.is_selfsí/no
data.actionsobjeto
{
  "data": {
    "id": "01jbzk8m3q9w2e5r7t1y4u6i0p",
    "name": "Andrés Castro",
    "given_names": "Andrés Castro",
    "family_names": "Andrés Castro",
    "email": "agente1@trazo.test",
    "is_active": true,
    "role": {
      "code": "in_progress",
      "name": "Andrés Castro",
      "level": 60
    },
    "mfa_enabled": true,
    "last_login_at": "2026-11-01T14:30:00Z",
    "created_at": "2026-11-01T14:30:00Z",
    "permissions": {
      "effective": [
        "texto"
      ],
      "role": [
        "texto"
      ],
      "granted": [
        "texto"
      ],
      "denied": [
        "texto"
      ]
    },
    "pending_assigned_incidents": 1,
    "is_self": true,
    "actions": {}
  }
}
Cabecera de la respuestaPara qué
X-Request-IdIdentificador de la petición; es el trace_id de los errores

Errores posibles

  • 401Sin sesión o la sesión expiró (UNAUTHENTICATED)
  • 403Sin permiso para esta acción
  • 404No existe o quien pregunta no puede verlo
  • 422Algún dato no es válido (VALIDATION_FAILED, con el detalle por campo)

Todos llegan en formato RFC 9457 con su code y trace_id: ver Errores de la API.

Ver el módulo en la biblioteca
DELETE/users/{user}/mfaFicha
Permiso
users.mfa.reset
Código de quien administra
Siempre

Cabeceras de la petición

CabeceraValorPara qué
AuthorizationBearer trazo_…Token de sesión que entrega el ingreso
Acceptapplication/jsonLa API siempre responde JSON (o un archivo, en la exportación)
X-Socket-IDopcionalPara no recibir en tiempo real el aviso de tu propio cambio

Parámetros

NombreDóndeTipoObligatorio
userRutatextoSí
mfa_codeConsultatexto | nullNo

Respuesta 200

CampoTipo
dataobjeto
data.idtexto
data.nametexto
data.given_namestexto
data.family_namestexto
data.emailtexto
data.is_activesí/no
data.roleobjeto | null
data.role.codetexto
data.role.nametexto
data.role.levelentero
data.mfa_enabledsí/no
data.last_login_attexto | null
data.created_attexto
data.permissionsobjeto
data.permissions.effectivelista de texto
data.permissions.rolelista de texto
data.permissions.grantedlista de texto
data.permissions.deniedlista de texto
data.pending_assigned_incidentsentero
data.is_selfsí/no
data.actionsobjeto
{
  "data": {
    "id": "01jbzk8m3q9w2e5r7t1y4u6i0p",
    "name": "Andrés Castro",
    "given_names": "Andrés Castro",
    "family_names": "Andrés Castro",
    "email": "agente1@trazo.test",
    "is_active": true,
    "role": {
      "code": "in_progress",
      "name": "Andrés Castro",
      "level": 60
    },
    "mfa_enabled": true,
    "last_login_at": "2026-11-01T14:30:00Z",
    "created_at": "2026-11-01T14:30:00Z",
    "permissions": {
      "effective": [
        "texto"
      ],
      "role": [
        "texto"
      ],
      "granted": [
        "texto"
      ],
      "denied": [
        "texto"
      ]
    },
    "pending_assigned_incidents": 1,
    "is_self": true,
    "actions": {}
  }
}
Cabecera de la respuestaPara qué
X-Request-IdIdentificador de la petición; es el trace_id de los errores

Errores posibles

  • 401Sin sesión o la sesión expiró (UNAUTHENTICATED)
  • 403Sin permiso para esta acción
  • 404No existe o quien pregunta no puede verlo
  • 422Algún dato no es válido (VALIDATION_FAILED, con el detalle por campo)

Todos llegan en formato RFC 9457 con su code y trace_id: ver Errores de la API.

Ver el módulo en la biblioteca
POST/users/{user}/access-resetFicha
Permiso
users.access.reset
Código de quien administra
Siempre

Cabeceras de la petición

CabeceraValorPara qué
AuthorizationBearer trazo_…Token de sesión que entrega el ingreso
Acceptapplication/jsonLa API siempre responde JSON (o un archivo, en la exportación)
Content-Typeapplication/jsonCuerpo en JSON
X-Socket-IDopcionalPara no recibir en tiempo real el aviso de tu propio cambio

Parámetros

NombreDóndeTipoObligatorio
userRutatextoSí

Cuerpo

CampoTipoObligatorio
mfa_codetexto | nullNo
{
  "mfa_code": "482913"
}

Respuesta 200

CampoTipo
dataobjeto
data.idtexto
data.nametexto
data.given_namestexto
data.family_namestexto
data.emailtexto
data.is_activesí/no
data.roleobjeto | null
data.role.codetexto
data.role.nametexto
data.role.levelentero
data.mfa_enabledsí/no
data.last_login_attexto | null
data.created_attexto
data.permissionsobjeto
data.permissions.effectivelista de texto
data.permissions.rolelista de texto
data.permissions.grantedlista de texto
data.permissions.deniedlista de texto
data.pending_assigned_incidentsentero
data.is_selfsí/no
data.actionsobjeto
{
  "data": {
    "id": "01jbzk8m3q9w2e5r7t1y4u6i0p",
    "name": "Andrés Castro",
    "given_names": "Andrés Castro",
    "family_names": "Andrés Castro",
    "email": "agente1@trazo.test",
    "is_active": true,
    "role": {
      "code": "in_progress",
      "name": "Andrés Castro",
      "level": 60
    },
    "mfa_enabled": true,
    "last_login_at": "2026-11-01T14:30:00Z",
    "created_at": "2026-11-01T14:30:00Z",
    "permissions": {
      "effective": [
        "texto"
      ],
      "role": [
        "texto"
      ],
      "granted": [
        "texto"
      ],
      "denied": [
        "texto"
      ]
    },
    "pending_assigned_incidents": 1,
    "is_self": true,
    "actions": {}
  }
}
Cabecera de la respuestaPara qué
X-Request-IdIdentificador de la petición; es el trace_id de los errores

Errores posibles

  • 401Sin sesión o la sesión expiró (UNAUTHENTICATED)
  • 403Sin permiso para esta acción
  • 404No existe o quien pregunta no puede verlo
  • 422Algún dato no es válido (VALIDATION_FAILED, con el detalle por campo)

Todos llegan en formato RFC 9457 con su code y trace_id: ver Errores de la API.

Ver el módulo en la biblioteca
GET/rolesRoles de mayor a menor nivel, con permisos, política de MFA, personas que lo tienen, si quien consulta lo puede dar (assignable) y actions
Permiso
users.view o roles.manage
Código de quien administra
—

Cabeceras de la petición

CabeceraValorPara qué
AuthorizationBearer trazo_…Token de sesión que entrega el ingreso
Acceptapplication/jsonLa API siempre responde JSON (o un archivo, en la exportación)

Respuesta 200

CampoTipo
datalista de objeto
{
  "data": [
    "texto"
  ]
}
Cabecera de la respuestaPara qué
X-Request-IdIdentificador de la petición; es el trace_id de los errores

Errores posibles

  • 401Sin sesión o la sesión expiró (UNAUTHENTICATED)

Todos llegan en formato RFC 9457 con su code y trace_id: ver Errores de la API.

Ver el módulo en la biblioteca
GET/roles/{role}Un rol
Permiso
users.view o roles.manage
Código de quien administra
—

Cabeceras de la petición

CabeceraValorPara qué
AuthorizationBearer trazo_…Token de sesión que entrega el ingreso
Acceptapplication/jsonLa API siempre responde JSON (o un archivo, en la exportación)

Parámetros

NombreDóndeTipoObligatorio
roleRutatextoSí

Respuesta 200

CampoTipo
dataobjeto
data.codetexto
data.nametexto
data.levelentero
data.is_systemsí/no
data.permissionslista de texto
data.mfaobjeto
data.mfa.requiredsí/no
data.mfa.grace_loginsentero
data.membersentero
data.assignablesí/no
data.actionsobjeto
{
  "data": {
    "code": "in_progress",
    "name": "Andrés Castro",
    "level": 60,
    "is_system": true,
    "permissions": [
      "texto"
    ],
    "mfa": {
      "required": true,
      "grace_logins": 1
    },
    "members": 1,
    "assignable": true,
    "actions": {}
  }
}
Cabecera de la respuestaPara qué
X-Request-IdIdentificador de la petición; es el trace_id de los errores

Errores posibles

  • 401Sin sesión o la sesión expiró (UNAUTHENTICATED)
  • 404No existe o quien pregunta no puede verlo

Todos llegan en formato RFC 9457 con su code y trace_id: ver Errores de la API.

Ver el módulo en la biblioteca
POST/roles201 con el rol; admite Idempotency-Key
Permiso
roles.manage
Código de quien administra
Si trae permisos sensibles

Cabeceras de la petición

CabeceraValorPara qué
AuthorizationBearer trazo_…Token de sesión que entrega el ingreso
Acceptapplication/jsonLa API siempre responde JSON (o un archivo, en la exportación)
Content-Typeapplication/jsonCuerpo en JSON
X-Socket-IDopcionalPara no recibir en tiempo real el aviso de tu propio cambio

Cuerpo

CampoTipoObligatorio
codetexto · mín. 3 · máx. 40Sí
nametexto · mín. 2 · máx. 80Sí
levelentero · ≥ 1 · ≤ 99Sí
permissionslista de textoSí
mfa_requiredsí/noSí
grace_loginsentero · ≥ 0 · ≤ 5Sí
mfa_codetexto | nullNo
{
  "code": "in_progress",
  "name": "Andrés Castro",
  "level": 60,
  "permissions": [
    "texto"
  ],
  "mfa_required": true,
  "grace_logins": 0,
  "mfa_code": "482913"
}

Respuesta 201

CampoTipo
dataobjeto
data.codetexto
data.nametexto
data.levelentero
data.is_systemsí/no
data.permissionslista de texto
data.mfaobjeto
data.mfa.requiredsí/no
data.mfa.grace_loginsentero
data.membersentero
data.assignablesí/no
data.actionsobjeto
{
  "data": {
    "code": "in_progress",
    "name": "Andrés Castro",
    "level": 60,
    "is_system": true,
    "permissions": [
      "texto"
    ],
    "mfa": {
      "required": true,
      "grace_logins": 1
    },
    "members": 1,
    "assignable": true,
    "actions": {}
  }
}
Cabecera de la respuestaPara qué
X-Request-IdIdentificador de la petición; es el trace_id de los errores

Errores posibles

  • 401Sin sesión o la sesión expiró (UNAUTHENTICATED)
  • 403Sin permiso para esta acción
  • 422Algún dato no es válido (VALIDATION_FAILED, con el detalle por campo)

Todos llegan en formato RFC 9457 con su code y trace_id: ver Errores de la API.

Ver el módulo en la biblioteca
PATCH/roles/{role}El rol
Permiso
roles.manage
Código de quien administra
Si cambian permisos sensibles, el nivel o la política de MFA se vuelve más permisiva

Cabeceras de la petición

CabeceraValorPara qué
AuthorizationBearer trazo_…Token de sesión que entrega el ingreso
Acceptapplication/jsonLa API siempre responde JSON (o un archivo, en la exportación)
Content-Typeapplication/jsonCuerpo en JSON
X-Socket-IDopcionalPara no recibir en tiempo real el aviso de tu propio cambio

Parámetros

NombreDóndeTipoObligatorio
roleRutatextoSí

Cuerpo

CampoTipoObligatorio
codeNo se envía: el código de un rol no cambia—No se acepta
nametexto · mín. 2 · máx. 80Sí
levelentero · ≥ 1 · ≤ 99Sí
permissionslista de textoSí
mfa_requiredsí/noSí
grace_loginsentero · ≥ 0 · ≤ 5Sí
mfa_codetexto | nullNo
{
  "name": "Andrés Castro",
  "level": 60,
  "permissions": [
    "texto"
  ],
  "mfa_required": true,
  "grace_logins": 0,
  "mfa_code": "482913"
}

Respuesta 200

CampoTipo
dataobjeto
data.codetexto
data.nametexto
data.levelentero
data.is_systemsí/no
data.permissionslista de texto
data.mfaobjeto
data.mfa.requiredsí/no
data.mfa.grace_loginsentero
data.membersentero
data.assignablesí/no
data.actionsobjeto
{
  "data": {
    "code": "in_progress",
    "name": "Andrés Castro",
    "level": 60,
    "is_system": true,
    "permissions": [
      "texto"
    ],
    "mfa": {
      "required": true,
      "grace_logins": 1
    },
    "members": 1,
    "assignable": true,
    "actions": {}
  }
}
Cabecera de la respuestaPara qué
X-Request-IdIdentificador de la petición; es el trace_id de los errores

Errores posibles

  • 401Sin sesión o la sesión expiró (UNAUTHENTICATED)
  • 403Sin permiso para esta acción
  • 404No existe o quien pregunta no puede verlo
  • 422Algún dato no es válido (VALIDATION_FAILED, con el detalle por campo)

Todos llegan en formato RFC 9457 con su code y trace_id: ver Errores de la API.

Ver el módulo en la biblioteca
DELETE/roles/{role}204; solo un rol creado que nadie tiene
Permiso
roles.manage
Código de quien administra
—

Cabeceras de la petición

CabeceraValorPara qué
AuthorizationBearer trazo_…Token de sesión que entrega el ingreso
Acceptapplication/jsonLa API siempre responde JSON (o un archivo, en la exportación)
X-Socket-IDopcionalPara no recibir en tiempo real el aviso de tu propio cambio

Parámetros

NombreDóndeTipoObligatorio
roleRutatextoSí

Respuesta 204

Sin cuerpo: la operación salió bien.

Cabecera de la respuestaPara qué
X-Request-IdIdentificador de la petición; es el trace_id de los errores

Errores posibles

  • 401Sin sesión o la sesión expiró (UNAUTHENTICATED)
  • 404No existe o quien pregunta no puede verlo

Todos llegan en formato RFC 9457 con su code y trace_id: ver Errores de la API.

Ver el módulo en la biblioteca
GET/permissionsPermisos con su módulo, si son sensibles y si quien consulta los puede conceder (grantable)
Permiso
users.view o roles.manage
Código de quien administra
—

Cabeceras de la petición

CabeceraValorPara qué
AuthorizationBearer trazo_…Token de sesión que entrega el ingreso
Acceptapplication/jsonLa API siempre responde JSON (o un archivo, en la exportación)

Respuesta 200

CampoTipo
datalista de objeto
{
  "data": [
    "texto"
  ]
}
Cabecera de la respuestaPara qué
X-Request-IdIdentificador de la petición; es el trace_id de los errores

Errores posibles

  • 401Sin sesión o la sesión expiró (UNAUTHENTICATED)

Todos llegan en formato RFC 9457 con su code y trace_id: ver Errores de la API.

Ver el módulo en la biblioteca