Skip to content

Ruoli e Permessi

Gestisci i ruoli personalizzati e consulta il catalogo dei permessi che alimenta il controllo degli accessi basato sui ruoli (RBAC) di Replicer.

Endpoint della dashboard

Questi endpoint sono serviti dalla dashboard di Replicer sotto /api/roles e sono autenticati con la sessione della dashboard (il cookie auth_token), non con una chiave API /v1. L'accesso è regolato dai permessi RBAC anziché dagli scope delle chiavi API. I proprietari dell'organizzazione dispongono implicitamente di tutti i permessi.

Ogni endpoint di modifica richiede il permesso roles.manage. L'elenco dei ruoli è disponibile anche a chi possiede team.manage (così i team manager possono assegnare i ruoli).


Elenca i ruoli

GET /api/roles

Recupera tutti i ruoli dell'organizzazione corrente, con i ruoli di sistema per primi.

Permesso richiesto: roles.manage oppure team.manage

Risposta 200 OK

json
{
  "success": true,
  "roles": [
    {
      "id": "clx-role-001",
      "name": "Administrator",
      "description": "Full access to all organization features",
      "permissions": ["agents.manage", "team.manage", "roles.manage"],
      "isSystem": true,
      "memberCount": 3,
      "invitationCount": 0,
      "createdAt": "2026-03-01T10:00:00Z",
      "updatedAt": "2026-03-01T10:00:00Z"
    }
  ]
}

memberCount è il numero di utenti distinti assegnati al ruolo (un utente è contato una sola volta anche se il ruolo è sia il suo ruolo nell'organizzazione sia il suo ruolo attivo). invitationCount è il numero di inviti in sospeso per il ruolo.


Elenca i permessi disponibili

GET /api/roles/permissions

Restituisce il catalogo completo dei permessi e i gruppi usati per l'editor dei ruoli. Leggibile da qualsiasi utente autenticato.

Permesso richiesto: nessuno (solo autenticazione)

Risposta 200 OK

json
{
  "success": true,
  "permissions": [
    "agents.manage",
    "calls.create",
    "campaigns.create",
    "campaigns.start",
    "team.manage",
    "roles.manage"
  ],
  "groups": [
    { "id": "ai", "permissions": ["agents.manage", "knowledge.manage", "tts.manage"] },
    { "id": "organization", "permissions": ["billing.manage", "team.manage", "roles.manage"] }
  ]
}

Crea un ruolo

POST /api/roles

Crea un ruolo personalizzato per l'organizzazione.

Permesso richiesto: roles.manage

Corpo della richiesta

CampoTipoObbligatorioDescrizione
namestringNome univoco del ruolo (1–64 caratteri)
descriptionstringNoDescrizione opzionale (max 256 caratteri)
permissionsstring[]Almeno una chiave di permesso dal catalogo

Esempio

bash
curl -X POST https://replicer.ai/api/roles \
  -H "Content-Type: application/json" \
  --cookie "auth_token=your_session_token" \
  -d '{
    "name": "Support Agent",
    "description": "Can manage agents and create calls",
    "permissions": ["agents.manage", "calls.create"]
  }'

Risposta 200 OK

json
{
  "success": true,
  "role": {
    "id": "clx-role-010",
    "name": "Support Agent",
    "description": "Can manage agents and create calls",
    "permissions": ["agents.manage", "calls.create"],
    "isSystem": false,
    "organizationId": "clx-org-001",
    "createdAt": "2026-04-05T10:00:00Z",
    "updatedAt": "2026-04-05T10:00:00Z"
  }
}

Errori

StatoQuando
400Chiave di permesso non valida, o esiste già un ruolo con lo stesso nome
403Manca il permesso roles.manage

Aggiorna un ruolo

PATCH /api/roles/:id

Aggiorna nome, descrizione o permessi di un ruolo. Tutti i campi sono opzionali; vengono modificati solo i campi forniti.

Permesso richiesto: roles.manage

Corpo della richiesta

CampoTipoObbligatorioDescrizione
namestringNoNuovo nome univoco (1–64 caratteri)
descriptionstring | nullNoNuova descrizione (max 256 caratteri)
permissionsstring[]NoElenco di permessi sostitutivo (min 1 voce)

Risposta 200 OK

json
{
  "success": true,
  "role": {
    "id": "clx-role-010",
    "name": "Support Agent",
    "description": "Updated description",
    "permissions": ["agents.manage", "calls.create", "campaigns.create"],
    "isSystem": false,
    "organizationId": "clx-org-001",
    "createdAt": "2026-04-05T10:00:00Z",
    "updatedAt": "2026-04-06T09:00:00Z"
  }
}

Errori

StatoQuando
400Chiave di permesso non valida, nome duplicato, o rimozione di roles.manage dall'ultimo ruolo che lo possiede
403Manca il permesso roles.manage
404Ruolo non trovato in questa organizzazione

Elimina un ruolo

DELETE /api/roles/:id

Elimina un ruolo personalizzato.

Permesso richiesto: roles.manage

Risposta 200 OK

json
{
  "success": true
}

Errori

StatoQuando
400I ruoli di sistema non possono essere eliminati, il ruolo è ancora assegnato a membri o inviti, oppure è l'ultimo ruolo con roles.manage
403Manca il permesso roles.manage
404Ruolo non trovato in questa organizzazione

Replicer API Documentation