API: membri ai echipei, roluri și tokenuri de acces
Echipa ta (team) este formată din persoanele care lucrează în spațiul de lucru. Fiecare membru are un rol (predefinit sau personalizat) care stabilește ce poate face, creatorii pe care îi gestionează și o cheie personală de acces pentru autentificare. Tokenurile de acces sunt cheile API-ului și ale conexiunii MCP. Toate aceste endpoint-uri necesită un token de owner: în exemple, $LANACHAT_TOKEN conține unul.
Endpoint-uri #
| Method | Path | Description | Permission | Status |
|---|---|---|---|---|
| GET | /members | Listează membrii (status=active,disabled, role_id=, q=) | owner | Planned |
| POST | /members | Adaugă un membru cu rol și creatoare | owner | Planned |
| GET | /members/{id} | Un membru, ultima activitate și suprascrieri | owner | Planned |
| PATCH | /members/{id} | Schimbă rolul, creatoarele, suprascrierile; dezactivează sau activează | owner | Planned |
| DELETE | /members/{id} | Șterge un membru (mesajele anterioare păstrează numele) | owner | Planned |
| POST | /members/{id}/access-key | Creează o cheie personală de acces (afișată o singură dată) | owner | Planned |
| POST | /members/{id}/invitation | Trimite pe e-mail o cheie de acces membrului | owner | Planned |
| DELETE | /members/{id}/access-key | Revocă cheia membrului: acesta este deconectat | owner | Planned |
| GET | /roles | Roluri predefinite și personalizate cu tabelul de permisiuni | owner | Planned |
| POST | /roles | Creează un rol personalizat | owner | Planned |
| PATCH | /roles/{id} | Redenumește un rol sau schimbă permisiunile | owner | Planned |
| DELETE | /roles/{id} | Șterge un rol personalizat neatribuit niciunui membru | owner | Planned |
| GET | /tokens | Tokenuri de acces API și MCP (include_revoked=true) | owner | Planned |
| POST | /tokens | Creează un token cu permisiunile sale (afișat o singură dată) | owner | Planned |
| PATCH | /tokens/{id} | Redenumește un token sau schimbă permisiunile | owner | Planned |
| POST | /tokens/{id}/rotate | Înlocuiește secretul; cel vechi se oprește imediat | owner | Planned |
| DELETE | /tokens/{id} | Revocă un token | owner | Planned |
Obiectul membru #
{
"id": "mem_4",
"name": "Ana",
"email": "[email protected]",
"status": "active",
"role_id": "role_chatter",
"creator_ids": ["cr_lea", "cr_mia"],
"overrides": { "billing.read": false, "fans.export": true },
"access_key": { "active": true, "created_at": "2026-09-20T09:00:00Z" },
"last_active_at": "2026-10-06T13:40:00Z"
}
| Field | Type | Description |
|---|---|---|
id | string | Începe cu mem_ |
name | string | Numele lor în Console |
email | string sau null | Unde se trimite invitația |
status | string | active sau disabled |
role_id | string | Rolul lor |
creator_ids | array de stringuri | Creatoarele pe care le gestionează |
overrides | obiect | Permisiuni setate doar pentru acest membru, peste rol |
access_key | obiect | Dacă au o cheie personală de acces active și de când; niciodată cheia în sine |
last_active_at | string sau null | Ultima lor activitate |
Un membru dezactivat nu se poate autentifica și își păstrează istoricul, rolul și creatoarele.
Obiectul rol #
{
"id": "role_chatter",
"name": "Chatter",
"builtin": true,
"permissions": { "live.read": true, "live.reply": true, "fans.read": true, "fans.export": false, "billing.read": false },
"members": 6
}
| Field | Type | Description |
|---|---|---|
id | string | Rolul |
name | string | Numele său |
builtin | boolean | true pentru Owner, Manager și Chatter |
permissions | obiect | O cheie pentru fiecare rând din tabelul de permisiuni, true sau false |
members | integer | Câți membri îl au |
Cheile de permisiuni urmează rândurile din tabelul de permisiuni din Team Management › Roles, grupate pe domenii: Dashboard, Creators, AI Brain, Conversations, Vault, Scripts, Playground, Telegram și Employees. Owner are întotdeauna toate permisiunile și nu poate fi editat. Manager și Chatter sunt predefinite: poți schimba permisiunile lor, dar nu le poți redenumi sau șterge.
Obiectul token de acces #
{
"id": "tok_31",
"name": "Reporting script",
"permissions": ["can_fan_read", "can_sales_read"],
"status": "active",
"created_at": "2026-10-06T15:10:00Z",
"expires_at": "2027-01-04T15:10:00Z"
}
| Field | Type | Description |
|---|---|---|
id | string | Începe cu tok_ |
name | string | Până la 100 de caractere, obligatoriu |
permissions | array de stringuri | Permisiunile pe care le are (permissions) |
status | string | Activ, expirat sau revocat |
created_at, expires_at | string | ISO 8601, UTC |
token | string | Secretul, doar în răspunsul care îl creează sau rotește |
Membri #
Listează membrii #
GET /members · owner
| Parameter | Type | Required | Description |
|---|---|---|---|
status | string | Nu | active sau disabled; ambele separate prin virgulă |
role_id | string | Nu | Doar membrii cu acest rol |
q | string | Nu | Parte dintr-un nume |
limit, cursor | number, string | Nu | Paginare |
curl "https://api.lanachat.ai/v1/members?status=active&role_id=role_chatter" \
-H "Authorization: Bearer $LANACHAT_TOKEN"
{
"data": [
{ "id": "mem_4", "name": "Ana", "email": "[email protected]", "status": "active", "role_id": "role_chatter", "creator_ids": ["cr_lea", "cr_mia"], "overrides": {}, "access_key": { "active": true, "created_at": "2026-09-20T09:00:00Z" }, "last_active_at": "2026-10-06T13:40:00Z" }
],
"next_cursor": null
}
Adaugă un membru #
POST /members · owner
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | Da | Numele lor |
email | string | Nu | Necesare pentru trimiterea invitației |
role_id | string | Da | Un rol predefinit sau personalizat |
creator_ids | array de stringuri | Nu | Creatoarele pe care le gestionează |
curl -X POST https://api.lanachat.ai/v1/members \
-H "Authorization: Bearer $LANACHAT_TOKEN" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"name": "Ana", "email": "[email protected]", "role_id": "role_chatter", "creator_ids": ["cr_lea"]}'
Răspunsul este noul membru (201), activ, fără o cheie de acces încă.
Obține un membru #
GET /members/{id} · owner
curl https://api.lanachat.ai/v1/members/mem_4 \
-H "Authorization: Bearer $LANACHAT_TOKEN"
Răspunsul este obiectul membru. Un id necunoscut răspunde cu 404.
Actualizează un membru #
PATCH /members/{id} · owner
| Parameter | Type | Required | Description |
|---|---|---|---|
role_id | string | Nu | Rol nou |
creator_ids | array de stringuri | Nu | Înlocuiește lista lor de creatoare |
overrides | obiect | Nu | Permisiuni doar pentru acest membru |
status | string | Nu | active sau disabled |
curl -X PATCH https://api.lanachat.ai/v1/members/mem_4 \
-H "Authorization: Bearer $LANACHAT_TOKEN" \
-H "Content-Type: application/json" \
-d '{"creator_ids": ["cr_lea", "cr_mia"], "overrides": {"fans.export": true}}'
Răspunsul este membrul actualizat. status: "disabled" taie accesul imediat; rolul și creatoarele sunt păstrate.
Șterge un membru #
DELETE /members/{id} · owner
curl -X DELETE https://api.lanachat.ai/v1/members/mem_4 \
-H "Authorization: Bearer $LANACHAT_TOKEN"
Membrul este eliminat și creatoarele lor sunt dezalocate. Mesajele lor anterioare păstrează numele. Pentru a-i păstra pentru mai târziu, dezactivează-i în schimb.
Chei personale de acces #
Membrii echipei nu folosesc parolă: se autentifică cu o cheie personală de acces. Cheile încep cu emp_.
Creează o cheie de acces #
POST /members/{id}/access-key · owner
curl -X POST https://api.lanachat.ai/v1/members/mem_4/access-key \
-H "Authorization: Bearer $LANACHAT_TOKEN" \
-H "Idempotency-Key: $(uuidgen)"
{ "member_id": "mem_4", "sign_in_url": "https://app.lanachat.ai/login/?mode=employee", "access_key": "emp_6Yq2…", "shown_once": true }
Trimite atât adresa de autentificare, cât și cheia persoanei printr-un canal de încredere. Un membru dezactivat răspunde cu 409: activează-l mai întâi.
Trimite pe e-mail o cheie de acces #
POST /members/{id}/invitation · owner
curl -X POST https://api.lanachat.ai/v1/members/mem_4/invitation \
-H "Authorization: Bearer $LANACHAT_TOKEN" \
-H "Idempotency-Key: $(uuidgen)"
Cheia este trimisă pe adresa de e-mail din fișa lor. Un membru fără adresă de e-mail sau dezactivat răspunde cu 409.
Revocă o cheie de acces #
DELETE /members/{id}/access-key · owner
curl -X DELETE https://api.lanachat.ai/v1/members/mem_4/access-key \
-H "Authorization: Bearer $LANACHAT_TOKEN"
Cheia se oprește imediat și membrul este deconectat. Creează o cheie nouă pentru a-l lăsa să revină.
Roluri #
Listează rolurile #
GET /roles · owner
curl https://api.lanachat.ai/v1/roles \
-H "Authorization: Bearer $LANACHAT_TOKEN"
O listă de obiecte rol: Owner, Manager, Chatter și rolurile tale personalizate.
Creează un rol personalizat #
POST /roles · owner
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | Da | Numele rolului |
permissions | obiect | Nu | Rândurile activate; celelalte sunt dezactivate |
curl -X POST https://api.lanachat.ai/v1/roles \
-H "Authorization: Bearer $LANACHAT_TOKEN" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"name": "Night chatter", "permissions": {"live.read": true, "live.reply": true, "fans.read": true}}'
Răspunsul este noul rol (201) cu builtin: false.
Actualizează un rol #
PATCH /roles/{id} · owner
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | Nu | Nume nou (doar roluri personalizate) |
permissions | obiect | Nu | Rândurile de schimbat; celelalte se păstrează |
curl -X PATCH https://api.lanachat.ai/v1/roles/role_chatter \
-H "Authorization: Bearer $LANACHAT_TOKEN" \
-H "Content-Type: application/json" \
-d '{"permissions": {"fans.export": false}}'
Schimbarea se aplică imediat tuturor membrilor cu acel rol, exceptând suprascrierile lor personale. Editarea Owner sau redenumirea Manager sau Chatter răspunde cu 409.
Șterge un rol personalizat #
DELETE /roles/{id} · owner
curl -X DELETE https://api.lanachat.ai/v1/roles/role_night \
-H "Authorization: Bearer $LANACHAT_TOKEN"
Ștergerea unui rol pe care îl au încă membri răspunde cu 409: atribuie-le mai întâi alt rol. Rolurile predefinite nu pot fi șterse.
Tokenuri de acces #
Listează tokenurile #
GET /tokens · owner
| Parameter | Type | Required | Description |
|---|---|---|---|
include_revoked | boolean | Nu | true listează și tokenurile revocate |
curl "https://api.lanachat.ai/v1/tokens?include_revoked=true" \
-H "Authorization: Bearer $LANACHAT_TOKEN"
O listă de obiecte token de acces, fără secretul lor.
Creează un token #
POST /tokens · owner
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | Da | Pentru ce este, până la 100 de caractere |
permissions | array de stringuri | Da | Permisiunile pe care le primește (permissions) |
expires_in_days | integer | Nu | Când expiră |
curl -X POST https://api.lanachat.ai/v1/tokens \
-H "Authorization: Bearer $LANACHAT_TOKEN" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"name": "Reporting script", "permissions": ["can_fan_read", "can_sales_read"], "expires_in_days": 90}'
{ "id": "tok_31", "name": "Reporting script", "token": "lc_live_8f2c1d0e9b7a4c6f", "permissions": ["can_fan_read", "can_sales_read"], "expires_at": "2027-01-04T15:10:00Z" }
token apare doar în acest răspuns. Un token nu poate oferi niciodată mai multe permisiuni decât tokenul owner care l-a creat. Lipsa numelui răspunde cu 400.
Actualizează un token #
PATCH /tokens/{id} · owner
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | Nu | Nume nou |
permissions | array de stringuri | Nu | Înlocuiește permisiunile |
curl -X PATCH https://api.lanachat.ai/v1/tokens/tok_31 \
-H "Authorization: Bearer $LANACHAT_TOKEN" \
-H "Content-Type: application/json" \
-d '{"permissions": ["can_sales_read"]}'
Răspunsul este tokenul, fără secretul său. Dezactivarea can_engine elimină și permisiunile de publicare, Advanced AI și raportare experiment. Un token revocat răspunde cu 409.
Rotește un token #
POST /tokens/{id}/rotate · owner
curl -X POST https://api.lanachat.ai/v1/tokens/tok_31/rotate \
-H "Authorization: Bearer $LANACHAT_TOKEN" \
-H "Idempotency-Key: $(uuidgen)"
Răspunsul este tokenul cu un nou secret token, afișat o singură dată. Secretul vechi se oprește imediat, deci actualizează-ți scriptul imediat după. Un token revocat răspunde cu 409.
Revocă un token #
DELETE /tokens/{id} · owner
curl -X DELETE https://api.lanachat.ai/v1/tokens/tok_31 \
-H "Authorization: Bearer $LANACHAT_TOKEN"
Tokenul se oprește imediat. Un token deja revocat răspunde cu 409.
Atenție Un token funcționează ca o parolă. Revocă-l imediat ce nu îl mai folosești sau dacă crezi că a fost compromis.