Feedjoltdocs
DesenvolupadorsAPI

Autenticació de l'API

Autentica l'API de Feedjolt amb claus API enviades com a token Bearer a la capçalera Authorization. Crea, limita i revoca claus, només servidor a servidor.

L'API fa servir claus de workspace. Envia la clau com Authorization: Bearer <key> o com X-API-Key: <key>. Les sessions del tauler per cookie segueixen funcionant sense clau.

Crear una clau

Panell -> Configuració -> Claus API -> Nova clau.

Configuraràs:

  • Nom - per la teva sanitat. production-zapier, local-dev-marc. No "key", "test", "asdf".
  • Scopes - què pot fer la clau (emmagatzemat com un array JSON a la clau).

La clau completa es mostra un sol cop en generar-se. Desa-la; només desem un hash. Clau perduda = fes-ne una de nova.

Format

fjk_<random>

El prefix fjk_ és intencional:

  • Fàcil de detectar als teus logs (i a la nostra detecció de filtracions de git).
  • Fàcil escriure un regex / hook de pre-commit contra ell.
  • Et permet saber a primera vista "aquesta és una clau de Feedjolt, no de Stripe".

Tracta la clau completa com un secret. No posis claus a: codi del client, apps mòbils, repos públics, tickets de suport, captures.

Enviar la clau

Prefereix Bearer. X-API-Key és la mateixa credencial.

Authorization: Bearer fjk_abc123...
X-API-Key: fjk_abc123...

Una clau pertany a un sol workspace. GET /api/v1/workspaces retorna aquest workspace.

Exemples:

curl -H "Authorization: Bearer $FEEDJOLT_KEY" \
     "https://api.feedjolt.com/api/v1/workspaces"
fetch("https://api.feedjolt.com/api/v1/workspaces", {
  headers: { Authorization: `Bearer ${process.env.FEEDJOLT_KEY}` }
});
import os, httpx
r = httpx.get(
    "https://api.feedjolt.com/api/v1/workspaces",
    headers={"Authorization": f"Bearer {os.environ['FEEDJOLT_KEY']}"}
)

Scopes

Les claus porten una llista de scopes. Els strings exactes de scope i les comprovacions per endpoint estan documentats a la referència OpenAPI sota la secció "security" de cada endpoint - aquesta és la font de veritat.

En triar scopes, parteix de només lectura i expandeix només segons necessitis. Les crides sense el scope adequat retornen 403.

Revocar

Configuració -> Claus API -> Revocar. Immediat.

Si una clau es filtra:

  1. Revoca-la.
  2. Genera una clau nova.
  3. Actualitza el teu store de secrets.
  4. Redesplega.
  5. Considera rotar qualsevol dada que hagi pogut llegir-se.

Només servidor a servidor

No existeix un flux de clau API per a client. Les claus han de quedar-se al servidor. Les crides des del navegador han de passar pel teu backend.

Per a accés client sense auth (dades públiques només lectura), fes servir el widget o les URLs estàndard del portal públic - estan indexades i sense requisit d'auth.

Estat de la subscripció

Les claus API necessiten un pla amb dret (Startup o Scale) i un estat amb dret. Files cancel·lades, impagades, incompletes o mai pagades retornen 403 SUBSCRIPTION_INACTIVE a cada crida, també a GET. past_due manté accés complet 7 dies després de la primera marca de renovació fallida (past_due_since); després les lectures segueixen i les escriptures retornen el mateix 403. El current_period_end renovat no allarga aquesta finestra. Els espais compensats (comped) no es bloquegen mai. Les sessions cookie del panell queden en només lectura si estan cancel·lades; no usen aquesta porta de claus API.

Administració des del panell

La gestió de membres, les connexions d'integracions, les claus API, la facturació i la configuració JWT requereixen una sessió iniciada al panell. Les claus API no poden accedir a aquests recursos, encara que tinguin tots els permisos. Una petició que inclogui tant una clau API com una cookie del panell continua subjecta a les restriccions de la clau API.

Fes servir el panell per convidar companys o connectar Slack, Linear o GitHub. L'accés de l'API als recursos de feedback continua disponible segons els permisos de la clau.

On this page