Tokeny API
Generuj i zarządzaj tokenami API do programatycznego dostępu do workspace — serwer MCP, content delivery API i SDK @cmssy/react. Model wyłącznie uwierzytelniania z prefixem `cs_`.
Przegląd
Tokeny API to credentiale cs_ uwierzytelniające programatyczny dostęp do workspace. Tworzysz je w adminie cmssy i używasz wszędzie tam, gdzie treść trzeba odczytać lub zapisać poza UI admina w przeglądarce:
- Serwer MCP — Claude i inne klienty AI łączą się tokenem aby czytać i zapisywać Twoją treść (strony, bloki, modele, rekordy, formularze).
- Content delivery / GraphQL API oraz klient danych
@cmssy/react(createCmssyClient) — pobieraj treść, modele, rekordy i formularze do własnej aplikacji Next.js. - Dowolne wywołanie API server-to-server które piszesz do publicznego GraphQL API.
Każdy token jest powiązany z konkretnym kontem użytkownika. Co token może zrobić zależy od roli tego użytkownika w workspace i flagi isSuperAdmin — token sam nie niesie uprawnień.
Format tokena: cs_ + ~32 znaków base64url (np. cs_abc1234...). Tokeny są przechowywane jako hash (bcrypt). Tylko prefix cs_ + pierwsze 7 znaków zostaje w plaintext do wyświetlania w UI.
Tworzenie tokena
- Otwórz Settings → API / Tokens w adminie.
- Kliknij Create token.
- Uzupełnij:
- Name — dla Twojej referencji (np. local dev, ci pipeline, production mcp).
- Expires in (days) — opcjonalne. Puste = bez wygasania.
- Kliknij Create. Pełna wartość tokena pokaże się w dialogu z przyciskiem kopiowania.
Pełna wartość tokena pokazywana jest tylko raz. Jeśli stracisz, odwołaj i wygeneruj nowy.
Używanie tokena
Z serwerem MCP
Podłącz Claude (lub dowolny klient MCP) do workspace dodając token do MCP configu edytora (.mcp.json):
{
"mcpServers": {
"cmssy": {
"command": "npx",
"args": [
"-y", "@cmssy/mcp-server@latest",
"--token", "cs_your_token_here",
"--workspace-id", "507f1f77bcf86cd799439011"
]
}
}
}Pełny setup: MCP Server.
Z SDK @cmssy/react
Użyj tokena aby utworzyć klienta delivery i pobierać treść do aplikacji Next.js:
import { createCmssyClient } from "@cmssy/react";
const client = createCmssyClient({
token: process.env.CMSSY_TOKEN!,
workspaceId: process.env.CMSSY_WORKSPACE_ID!,
});
const page = await client.getPage("/about");
const posts = await client.listRecords("blog");Z surowym GraphQL
Przekaż token w headerze Bearer. Dodaj x-workspace-id aby zascope'ować request do konkretnego workspace:
curl https://api.cmssy.io/graphql \
-H "Authorization: Bearer cs_your_token_here" \
-H "x-workspace-id: 507f1f77bcf86cd799439011" \
-H "Content-Type: application/json" \
-d '{"query":"{ me { email } }"}'Token vs sesja
| Cookie sesji | Token API | |
|---|---|---|
| Tworzony przez | Formularz logowania | Settings → API / Tokens |
| Używany przez | UI admina w przeglądarce | MCP / delivery API / SDK |
| Wygasa | Przy wylogowaniu | Opcjonalnie per token |
| Odwołanie | Wylogowanie lub zmiana hasła | Ręczne, natychmiastowe |
| Scope workspace | Header per request | Header per request |
Dostęp do odczytu vs zapisu
Token API uwierzytelnia — potwierdza że jesteś użytkownikiem X. Co użytkownik X może zrobić zależy od:
- Roli w workspace — Twojej roli w docelowym workspace (zobacz Członkowie i role po szczegóły). Rola tylko do odczytu pozwala pobierać treść przez delivery API i SDK, ale nie modyfikować jej; rola edytora lub admina pozwala czytać i zapisywać treść przez serwer MCP lub mutacje GraphQL.
- Flagi
isSuperAdmin— platform adminowie (staff cmssy) mają podwyższone uprawnienia do operacji na poziomie platformy.
Tokeny NIE niosą własnych uprawnień. To oznacza że:
- Odwołanie Twojej roli w workspace natychmiast odwołuje wszystko co Twoje tokeny mogą zrobić w tym workspace.
- Dodanie uprawnienia do roli propaguje się do wszystkich tokenów użytkowników z tą rolą.
- Nie możesz wydać tokena z mniejszymi uprawnieniami niż Twoje konto — sens to delegacja, nie manipulacja uprawnieniami.
Tokeny są zawsze scope'owane do tenanta: każdy request musi nieść header
x-workspace-id(lub--workspace-id), a dostęp jest sprawdzany względem Twojego członkostwa w tym konkretnym workspace.
Odwołanie i rotacja
Odwołanie jest natychmiastowe — bez cache. Usunięcie tokena z Settings → API / Tokens usuwa go z bazy, a następny request go używający zwraca 401.
Jeśli token wyciekł:
- Odwołaj natychmiast w Settings → API / Tokens.
- Utwórz zastępczy.
- Zaktualizuj MCP config, SDK
.envlub secret CI nową wartością.
Dobre praktyki
- Jeden token na integrację. Oddziel dev / prod / każdy pipeline CI. Odwołanie wyciekłego tokena nie powinno zepsuć trzech innych integracji.
- Daty wygaśnięcia dla krótkotrwałych tokenów (pipeline CI, środowiska demo, preview deployments).
- Rotuj tokeny produkcyjne okresowo — 90 dni to popularny cadence.
- Nigdy nie commituj tokenów do git. Użyj
.env(gitignored) lokalnie i secret managera Twojej platformy w CI.
Troubleshooting
„Not authenticated” (401)
Token został odwołany, wygasł lub nigdy nie istniał. Sprawdź status w Settings → API / Tokens i potwierdź że prefix cs_ pasuje do wartości w Twoim kliencie.
„Permission denied” / „Forbidden” (403)
Token jest ważny, ale rola uwierzytelnionego użytkownika nie pozwala na daną akcję — np. rola tylko do odczytu próbująca zapisu. Sprawdź rolę członka workspace w Settings → Members. Zobacz Uwierzytelnianie członków jak role mapują się na uprawnienia.
„Workspace not found”
Header x-workspace-id brakuje, jest nieprawidłowy, albo użytkownik nie jest członkiem tego workspace. Zweryfikuj ID w Settings → Workspace.
Token działa w jednym narzędziu ale nie w innym
Różne narzędzia mogą wysyłać różne wartości x-workspace-id. Potwierdź że każde narzędzie używa workspace jaki oczekujesz.