Automatisieren Sie OrbitPage, ohne eine Dashboard-Sitzung zu teilen.
Erstellen Sie bereichsbezogene Token und verwalten Sie das OrbitPage-Dashboard durchgängig über Skripte, n8n, Backends oder CI.
Letzte Revision: 4. August 2026Verwalten Sie OrbitPage mit persönlichen Tokens: Seiten bearbeiten und veröffentlichen sowie Medien, Domains, Analysen, KI, Shop, Newsletter und Abrechnung nutzen.
Drei Anmeldeinformationsgrenzen decken drei verschiedene Jobs ab.
Diese Seite dokumentiert die versionierte REST-Grenze. Ein OrbitPage-Token ist kein OpenAI-Anbieterschlüssel und authentifiziert niemals private Dashboard-Endpunkte.
| Oberfläche | Anmeldeinformationen | Zweck und Unterstützung |
|---|---|---|
| Automatisierungs-REST-API | op_pat_... | Unterstützte externe API für Skripte, n8n, Server-Backends und CI. Sie verwaltet den tokengebundenen Arbeitsbereich über /api/v1. |
| OrbitPage AI | op_pat_... + ai:read/ai:write | Der öffentliche Plan-/Commit-Flow bereitet validierte KI-Vorschläge vor und wendet diese an. Alle OpenAI-Anbieter-Anmeldeinformationen bleiben ein separates serverseitiges Anliegen und sind niemals ein OrbitPage-Inhaber-Token. |
| Dashboard-APIs | Firebase-Sitzung auf SaaS; Admin-Sitzung auf OSS | Private Browser-zu-App-Routen. Sie stellen keinen stabilen externen Integrationsvertrag dar und dürfen keine persönlichen API-Token erhalten. |
Versionierte Ressourcen decken das Dashboard ab; Die Link-Endpunkte zeigen die Safe-Update-Schleife.
Jede Anfrage ist an den Arbeitsbereich gebunden, der beim Erstellen des Tokens ausgewählt wurde. Ein Token kann keinen anderen Mandanten in der URL oder im Anforderungstext auswählen und die aktuellen Arbeitsbereichsberechtigungen werden bei jedem Aufruf erneut überprüft.
Der Vertrag verwendet Standard-HTTPS-JSON-Operationen – GET, POST, PUT, PATCH und DELETE – und unterstützt Curl, den HTTP-Request-Knoten von n8n und generierte OpenAPI-Clients.
GET/api/v1/linksJeden Seitenblock lesen
Gibt die geordnete Sammlung, die Workspace-Identität und die aktuelle Revision zurück.
Geltungsbereich:links:readPATCH/api/v1/links/{linkId}Einen vorhandenen Block ändern
Führt bearbeitbare Felder zusammen, validiert die gesamte Seite und veröffentlicht die neue Revision.
Geltungsbereich:links:writePUT/api/v1/linksErsetzen Sie die gesamte Sammlung
Verwenden Sie dies, um Blöcke nach dem Lesen und Beibehalten der aktuellen Sammlung hinzuzufügen, zu entfernen oder neu anzuordnen.
Geltungsbereich:links:write| Dashboard-Oberfläche | API-Pfade | Bereiche |
|---|---|---|
| Arbeitsbereich und vollständiger Entwurf | /workspace · /draft | workspace:read |
| Profil, Thema und Unterseiten | /profile · /theme · /pages | profile:* · theme:* · pages:* |
| Allgemeine, Datenschutz- und Menüeinstellungen | /settings/* | settings:* |
| Veröffentlichung, Versionen und Backup | /publication · /versions · /backup | publication:* · backup:* |
| Medien und benutzerdefinierte Domänen | /media/* · /domains/* | media:* · domains:* |
| Analysen und überprüfte KI-Änderungen | /analytics · /ai/* | analytics:read · ai:* |
| Shop und Newsletter | /shop/* · /newsletter/* | shop:* · newsletter:* |
| Team und Abrechnung | /team/* · /billing/* | team:* · billing:* |
Alle unterstützten Dashboard-Vorgänge, gruppiert nach der Oberfläche, die sie steuert.
Die folgenden Pfade beziehen sich auf https://orbitpage.com/api/v1. Methode, Weg und Umfang sind der stabile Integrationsvertrag; Anforderungsschemata, Formate, Aufzählungswerte und Antwortmodelle befinden sich live im verknüpften OpenAPI 3.1-Dokument. Unbekannte Routen geben 404 zurück und nicht unterstützte Methoden werden niemals stillschweigend konvertiert.
01Arbeitsbereich, Inhalt und ErscheinungsbildUntersuchen Sie den tokengebundenen Arbeitsbereich und verwalten Sie seinen vollständigen Entwurf, sein Profil, seine Blöcke, sein Thema und seine Unterseiten.11 Operationen
| Methode und Pfad | Betrieb | Erforderlicher Bereich | Eingabe und Steuerung |
|---|---|---|---|
GET/workspace | Arbeitsbereich, Plan, Zugriff, Nutzung und Revision lesen | workspace:read | — |
GET/draft | Lesen Sie den vollständigen bearbeitbaren Seitenentwurf | workspace:read | — |
GET/links | Seitenblöcke und die aktuelle Revision auflisten | links:read | — |
PUT/links | Ersetzen Sie die vollständige geordnete Blocksammlung | links:write | LinksReplaceRequest · If-Match |
PATCH/links/{linkId} | Bearbeitbare Felder in einem Block aktualisieren | links:write | LinkPatch · If-Match |
GET/profile | Profilidentität und Metadaten lesen | profile:read | — |
PATCH/profile | Profilfelder aktualisieren | profile:write | JSON · If-Match · ?publish=1 |
GET/theme | Lesen Sie den aktiven Entwurf des Themas | theme:read | — |
PUT/theme | Ersetzen Sie den Designentwurf | theme:write | JSON · If-Match · ?publish=1 |
GET/pages | Listet konfigurierte Unterseiten auf | pages:read | — |
PUT/pages | Konfigurierte Unterseiten ersetzen | pages:write | array | { pages } · If-Match · ?publish=1 |
02Einstellungen und VeröffentlichungKontrollmenüs, Datenschutz, verwaltete öffentliche Dateien, Sitemap-Generierung und der explizite Lebenszyklus vom Entwurf zur Öffentlichkeit.9 Operationen
| Methode und Pfad | Betrieb | Erforderlicher Bereich | Eingabe und Steuerung |
|---|---|---|---|
GET/settings | Menü-, Datenschutz-, Textdatei- und Sitemap-Einstellungen lesen | settings:read | — |
PUT/settings/menu | Menüeinstellungen aktualisieren | settings:write | JSON · If-Match · ?publish=1 |
PUT/settings/privacy | Einwilligungs- und Datenschutzeinstellungen aktualisieren | settings:write | JSON · If-Match · ?publish=1 |
POST/settings/text-files | Erstellen Sie eine verwaltete öffentliche Textdatei | settings:write | TextFileCreateRequest · If-Match |
PUT/settings/text-files/{key} | Eine verwaltete öffentliche Textdatei aktualisieren | settings:write | TextFileUpdateRequest · If-Match |
DELETE/settings/text-files/{key} | Eine verwaltete öffentliche Textdatei löschen | settings:write | If-Match |
POST/settings/sitemap | Generieren Sie die verwaltete Sitemap neu | settings:write | If-Match |
GET/publication | Entwurfs- und Veröffentlichungsstatus lesen | publication:read | — |
POST/publication | Veröffentlichen Sie den neuesten validierten Entwurf | publication:write | — |
03Versionen, Backups und MedienStellen Sie überarbeitete Inhalte wieder her, exportieren oder importieren Sie Arbeitsbereichsdaten und führen Sie den Medienlebenszyklus „Reservieren-Hochladen-Abschließen“ aus.9 Operationen
| Methode und Pfad | Betrieb | Erforderlicher Bereich | Eingabe und Steuerung |
|---|---|---|---|
GET/versions | Wiederherstellbare veröffentlichte Seitenversionen auflisten | backup:read | — |
POST/versions/{revision}/restore | Stellen Sie eine historische Version wieder her und veröffentlichen Sie sie sofort | backup:write | If-Match |
GET/backup | Exportieren Sie eine verwaltete Arbeitsbereichssicherung | backup:read | ?sections=profile,links,… |
POST/backup/restore | Ein verwaltetes Backup validieren, wiederherstellen und sofort veröffentlichen | backup:write | BackupRestoreRequest · If-Match |
GET/media | Metadaten und Verwendung von Arbeitsbereichsmedien auflisten | media:read | — |
POST/media/cleanup | Sehen Sie sich nicht referenzierte Medien in der Vorschau an oder löschen Sie sie | media:write | MediaCleanupRequest |
POST/media/uploads/reserve | Reservieren Sie einen direkten Medien-Upload | media:write | MediaUploadReserveRequest |
POST/media/uploads/finalize | Finalisieren und registrieren Sie ein hochgeladenes Objekt | media:write | UploadTokenRequest |
DELETE/media/uploads | Einen reservierten Medien-Upload abbrechen | media:write | UploadTokenRequest |
04Domänen, Analysen und KIVerwalten Sie die DNS-Aktivierung, lesen Sie plangebundene Leistungsberichte und wenden Sie KI-Änderungen erst nach einer validierten Vorschau an.8 Operationen
| Methode und Pfad | Betrieb | Erforderlicher Bereich | Eingabe und Steuerung |
|---|---|---|---|
GET/domains | Domänenstatus und DNS-Anforderungen lesen | domains:read | — |
POST/domains | Verbinden Sie eine benutzerdefinierte Domäne | domains:write | DomainConnectRequest |
POST/domains/refresh | Überprüfung und Aktivierung aktualisieren | domains:write | — |
DELETE/domains | Trennen Sie die benutzerdefinierte Domäne | domains:write | — |
GET/analytics | Lesen Sie den Dashboard-Analysebericht | analytics:read | ?days=7|30|90 |
GET/ai/allowance | Lesen Sie die AI-Zulage und die aktuelle Nutzung | ai:read | — |
POST/ai/plan | Generieren Sie eine validierte KI-Änderungsvorschau | ai:write | AiPlanRequest |
POST/ai/commit | Übertragen Sie eine zuvor validierte KI-Vorschau | ai:write | AiCommitRequest |
05ShopVerbinden Sie den Handel, verwalten Sie Produkte und Erscheinungsbild, laden Sie geschützte Dateien hoch und veröffentlichen Sie dann den synchronisierten Shop-Block oder heben Sie die Veröffentlichung auf.10 Operationen
| Methode und Pfad | Betrieb | Erforderlicher Bereich | Eingabe und Steuerung |
|---|---|---|---|
GET/shop | Produkte, Bestellungen, Kunden und Shop-Status lesen; kann private Shop-Daten initialisieren und den Stripe-Status aktualisieren | shop:read | ?refresh=0|1 |
POST/shop/connect | Stripe Connect-Onboarding erstellen oder fortsetzen | shop:write | — |
POST/shop/products | Erstellen oder aktualisieren Sie ein Shop-Produkt | shop:write | ShopProductRequest |
DELETE/shop/products/{productId} | Ein Shop-Produkt löschen | shop:write | — |
PUT/shop/appearance | Das gesamte Erscheinungsbild des Shops ersetzen | shop:write | ShopAppearanceRequest |
POST/shop/publish | Shop und synchronisierten Seitenblock veröffentlichen | shop:write | — |
POST/shop/unpublish | Veröffentlichung des Shops aufheben | shop:write | — |
POST/shop/uploads/reserve | Reservieren Sie einen Produktdatei-Upload | shop:write | ShopFileUploadReserveRequest |
POST/shop/uploads/finalize | Schließen Sie den Upload einer Produktdatei ab | shop:write | ShopUploadTokenRequest |
DELETE/shop/uploads | Reservierten Produktdatei-Upload abbrechen | shop:write | ShopUploadTokenRequest |
06NewsletterKonfigurieren Sie die verschlüsselte SMTP-Zustellung, verwalten Sie zugestimmte Abonnenten und steuern Sie den gesamten Kampagnenlebenszyklus.9 Operationen
| Methode und Pfad | Betrieb | Erforderlicher Bereich | Eingabe und Steuerung |
|---|---|---|---|
GET/newsletter | Abonnenten, Kampagnen und SMTP-Status lesen | newsletter:read | — |
PUT/newsletter/settings | Verschlüsselte SMTP-Einstellungen aktualisieren | newsletter:write | NewsletterSmtpRequest |
POST/newsletter/settings/test | Senden Sie einen Konfigurationstest | newsletter:write | EmailRecipientRequest |
POST/newsletter/subscribers | Fügen Sie einen zugestimmten Abonnenten hinzu oder aktualisieren Sie ihn | newsletter:write | NewsletterSubscriberRequest |
DELETE/newsletter/subscribers/{subscriberId} | Entfernen Sie einen Abonnenten | newsletter:write | — |
POST/newsletter/campaigns | Erstellen oder aktualisieren Sie eine Kampagne | newsletter:write | NewsletterCampaignRequest |
DELETE/newsletter/campaigns/{campaignId} | Eine Kampagne löschen | newsletter:write | — |
POST/newsletter/campaigns/{campaignId}/send | Stellen Sie eine Kampagne in die Warteschlange oder planen Sie sie | newsletter:write | NewsletterSendRequest |
DELETE/newsletter/campaigns/{campaignId}/send | Brechen Sie eine Kampagne in der Warteschlange ab | newsletter:write | — |
07Team und AbrechnungVerwalten Sie Mitarbeiter und Einladungen, überprüfen Sie Abonnements und öffnen Sie authentifizierte Stripe-Checkout- oder Portalsitzungen.9 Operationen
| Methode und Pfad | Betrieb | Erforderlicher Bereich | Eingabe und Steuerung |
|---|---|---|---|
GET/team | Mitglieder und ausstehende Einladungen auflisten | team:read | — |
POST/team/invitations | Erstellen Sie einen Workspace-Einladungslink, ohne eine E-Mail zu senden | team:write | TeamInvitationRequest |
PATCH/team/members/{memberUid} | Eine Mitgliedsrolle aktualisieren | team:write | TeamRoleRequest |
DELETE/team/members/{memberUid} | Ein Arbeitsbereichsmitglied entfernen | team:write | — |
DELETE/team/invitations/{invitationId} | Eine ausstehende Einladung widerrufen | team:write | — |
GET/billing | Plan- und Abonnementstatus lesen | billing:read | — |
POST/billing/checkout | Erstellen Sie einen Stripe-Plan-Checkout | billing:write | BillingCheckoutRequest |
POST/billing/portal | Erstellen Sie eine Stripe-Abrechnungsportalsitzung | billing:write | BillingPortalRequest |
POST/billing/promotion-code | Einen Promotionscode einlösen und die damit verbundenen Tarifberechtigungen synchronisieren | billing:write | PromotionCodeRedeemRequest |
Erstellen Sie ein Token für eine Automatisierung und eine Umgebung.
Öffnen Sie Dashboard > Konto > Persönliche API-Tokens. Geben Sie dem Token einen Namen, der seinen Besitzer und Zweck identifiziert, wählen Sie vollständigen Arbeitsbereich, schreibgeschützten Arbeitsbereich, Nur-Links oder einzelne Ressourcenbereiche und wählen Sie dann einen Ablauf von 30, 90 oder 365 Tagen – oder keinen Ablauf, wenn bereits ein dokumentierter Rotationsprozess vorhanden ist.
Bestätigen Sie Ihre Identität
Die Token-Erstellung ist eine vertrauliche Kontoaktion und erfordert eine aktuelle Google- oder Passwort-Authentifizierung.
Wählen Sie den kleinsten Bereich
Lese- und Schreibbereiche sind beispielsweise für jede Ressource getrennt theme:read, theme:write, shop:read und shop:write. Ein Schreibbereich schließt automatisch seinen passenden Lesebereich ein.
Kopieren Sie das Geheimnis einmal
OrbitPage speichert einen SHA-256-Hash, nicht das wiederherstellbare Geheimnis. Wenn es verloren geht, widerrufen Sie es und erstellen Sie ein neues Token.
Speichern Sie es außerhalb des Codes
Verwenden Sie eine Umgebungsvariable oder einen CI-Geheimnisspeicher. Fügen Sie das Token niemals in eine URL, ein Repository, einen Screenshot, ein Browser-Bundle oder ein Build-Protokoll ein.
export ORBITPAGE_TOKEN='op_pat_...'
curl --silent --show-error --include \
--header "Authorization: Bearer $ORBITPAGE_TOKEN" \
https://orbitpage.com/api/v1/links$env:ORBITPAGE_TOKEN = 'op_pat_...'
$headers = @{ Authorization = "Bearer $env:ORBITPAGE_TOKEN" }
Invoke-RestMethod -Uri 'https://orbitpage.com/api/v1/links' -Headers $headersLesen Sie die Sammlung und erfassen Sie ihre Überarbeitung vor jeder Änderung.
Der Antworttext enthält die geordneten Datenblöcke und die aktuelle numerische Revision. Die gleiche Revision erscheint in X-OrbitPage-Revision und als schwacher ETag. Speichern Sie einen der beiden Werte für If-Match. Raten Sie es nicht und speichern Sie es nicht über unabhängige Läufe hinweg.
HTTP/2 200
etag: W/"42"
x-orbitpage-revision: 42
content-type: application/json; charset=utf-8
{
"object": "list",
"data": [
{
"id": "portfolio-main",
"type": "link",
"title": "Selected work",
"description": "Recent projects and case studies",
"url": "https://example.com/work",
"isActive": true,
"status": "live",
"availability": "available",
"clickCount": 18,
"position": 0
}
],
"revision": 42,
"workspace": {
"tenantId": "tenant_...",
"pageId": "page_...",
"username": "your-page"
}
}dataDie vollständige geordnete Blocksammlung. Die Array-Reihenfolge ist die visuelle Seitenreihenfolge.revisionDie optimistische Parallelitätsversion, die von jedem Schreibvorgang verwendet wird.workspaceDer Mandant, die Seite und der Benutzername sind dauerhaft an dieses Token gebunden.ETagDer sicherste Wert, der direkt als nächster If-Match-Header übergeben werden kann.Verwenden Sie PATCH für die kleinste Änderung an einem vorhandenen Block.
URL-kodieren Sie die von GET zurückgegebene ID und senden Sie nur die Felder, die sich ändern sollen. OrbitPage fügt den Patch in den vorhandenen Block ein, schützt Identitäts- und Analysefelder, validiert die gesamte Seite anhand ihres Schemas und Plans und veröffentlicht sie dann sofort.
curl --request PATCH \
--url https://orbitpage.com/api/v1/links/portfolio-main \
--header "Authorization: Bearer $ORBITPAGE_TOKEN" \
--header 'Content-Type: application/json' \
--header 'If-Match: W/"42"' \
--data '{
"title": "Book a consultation",
"url": "https://example.com/book",
"isActive": true
}'| Feldgruppe | Beispiele | Verhalten |
|---|---|---|
| Inhalt | title, description, url, content, textItems | Editierbar, wenn gültig für den vorhandenen Blocktyp. |
| Sichtbarkeit und Timing | isActive, status, availability, startDate, endDate, timezone | Validiert zusammen mit Planungs- und Planregeln. |
| Aussehen und Medien | icon, coverImage, backgroundColor, alignment, size | Wird nur akzeptiert, wenn die Werte mit dem Seitenschema übereinstimmen. |
| Geschützt | id, type, clickCount, ctaClicks, systemKey | Ignoriert oder abgelehnt. Vom System verwaltete Blöcke können nicht gepatcht werden. |
Verwenden Sie PUT nur, wenn die Sammlung selbst geändert werden muss.
PUT ersetzt die gesamte geordnete Sammlung. Dabei handelt es sich um den Vorgang zum Hinzufügen eines Blocks, Entfernen eines Blocks oder Ändern der Seitenreihenfolge. Es handelt sich nicht um eine Abkürzung zum Aktualisieren eines Titels: Durch das Weglassen eines Blocks wird dieser von der Seite entfernt.
const token = process.env.ORBITPAGE_TOKEN;
if (!token) throw new Error("ORBITPAGE_TOKEN is missing");
const endpoint = "https://orbitpage.com/api/v1/links";
const authorization = { Authorization: `Bearer ${token}` };
const read = await fetch(endpoint, { headers: authorization });
if (!read.ok) throw new Error(`GET failed: ${read.status} ${await read.text()}`);
const current = await read.json();
const revision = read.headers.get("etag") ?? String(current.revision);
// Preserve the full collection and change only the intended block.
const links = current.data.map((block) =>
block.id === "portfolio-main"
? { ...block, title: "Work and case studies" }
: block
);
const write = await fetch(endpoint, {
method: "PUT",
headers: {
...authorization,
"Content-Type": "application/json",
"If-Match": revision
},
body: JSON.stringify({ links })
});
if (!write.ok) throw new Error(`PUT failed: ${write.status} ${await write.text()}`);
console.log(await write.json());Verwenden Sie den nativen n8n-Knoten oder denselben Vertrag von einem HTTP-Client, generierten Client, Backend oder CI-Runner.
OrbitPage erfordert kein SDK: Jeder HTTPS-Client, der JSON, Bearer-Authentifizierung und Standard-GET-, POST-, PUT-, PATCH- und DELETE-Anfragen senden kann, ist kompatibel. Die folgenden Muster decken die zustandsbehafteten Teile ab, die eine Integration explizit verarbeiten muss.
Nativer n8n-Knoten
Installieren Sie n8n-nodes-orbitpage und erstellen Sie OrbitPage API-Zugangsdaten mit dem persönlichen Token und der Base URL. Der Verbindungstest führt eine sichere Leseabfrage des Arbeitsbereichs aus; geführte Aktionen verwalten anschließend Pfade, Berechtigungen, Elementverknüpfungen und revisionssichere Schreibvorgänge, ohne das Geheimnis im Workflow-JSON zu speichern.
Entwurf und Veröffentlichung
Profil-, Theme-, Seiten- und unterstützte Einstellungsschreibvorgänge erfordern If-Match und aktualisieren den Entwurf standardmäßig. Fügen Sie ?publish=1 für eine geeignete sofortige Veröffentlichung hinzu oder überprüfen Sie mehrere verzögerte Änderungen und rufen Sie POST /publication einmal auf. Link PATCH und PUT sofort veröffentlichen.
Direkter Medien-Upload
Zuerst reservieren, Bytes zur zurückgegebenen Speicher-URL hochladen und dann abschließen. Senden Sie den OrbitPage-Bearer-Token nur an orbitpage.com; Verwenden Sie nur die für die Speicheranforderung zurückgegebenen Methoden- und temporären Header.
KI-Commit überprüft
Plan gibt eine validierte Vorschau zurück, ohne die Seite zu ändern. Speichern und prüfen Sie previewToken und übernehmen Sie dann genau diesen Vorschlag. Setzen Sie publish im Commit-Body nur, wenn die Automatisierung das Ergebnis veröffentlichen darf.
Install community node: n8n-nodes-orbitpage
Credential: OrbitPage API
OrbitPage API Token: op_pat_...
OrbitPage Base URL: https://orbitpage.com
Connection test: GET /api/v1/workspace
First safe workflow step:
Node: OrbitPage
Resource: Workspace & Draft
Operation: Get Workspace Overview
First revision-controlled write:
Resource: Theme
Operation: Replace Entire Theme Draft
Revision Check: Use Latest Automatically (Recommended)# 1. Reserve an upload and receive uploadUrl, slot and uploadToken
POST /api/v1/media/uploads/reserve
{ "filename": "cover.jpg", "contentType": "image/jpeg", "sizeBytes": 245760 }
# 2. Upload the bytes directly using the returned URL, method and headers
# Do not forward the OrbitPage Authorization header to the storage URL.
# 3. Register the uploaded object in the workspace
POST /api/v1/media/uploads/finalize
{ "slot": "<slot>", "uploadToken": "<uploadToken>" }# 1. Generate a validated preview without changing the page
POST /api/v1/ai/plan
{ "message": "Make the primary CTA clearer" }
# 2. Review the returned operations and previewToken
# 3. Apply the exact reviewed preview; publishing remains explicit
POST /api/v1/ai/commit
{ "previewToken": "<previewToken>", "publish": false }Verwenden Sie die Base URL https://orbitpage.com ohne /api/v1. Beim erfolgreichen Speichern liest der Test /api/v1/workspace und prüft Token, Arbeitsbereichszuordnung und die Berechtigung workspace:read, ohne Daten zu ändern.
Ein 401-Fehler erfordert ein gültiges Ersatztoken, ein 403-Fehler die fehlende Berechtigung. Prüfen Sie bei wiederholten Weiterleitungen die Base URL oder den Reverse-Proxy. Teilen Sie Status und JSON-Code mit dem Support, niemals das Geheimnis.
Behandeln Sie Automatisierungs-Anmeldeinformationen als kurze, beobachtbare Lebenszyklen.
Ein Arbeitsbereich unterstützt bis zu zehn aktive persönliche Token pro Benutzer. In der Kontoliste werden für jedes Token das Präfix, die Gültigkeitsbereiche, das Erstellungs- und Ablaufdatum sowie die letzte Verwendung angezeigt. Zuletzt verwendete Zeitstempel werden absichtlich höchstens alle fünf Minuten geschrieben.
name: Update OrbitPage
on: workflow_dispatch
jobs:
update:
runs-on: ubuntu-latest
env:
ORBITPAGE_TOKEN: ${{ secrets.ORBITPAGE_TOKEN }}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
- run: node scripts/update-orbitpage.mjs- Benennen Sie Token nach System und Umgebung – zum Beispiel „GitHub Actions · Produktion“.
- Rotieren Sie, indem Sie den Ersatz erstellen, den geheimen Speicher aktualisieren, einen Lesevorgang testen und dann das alte Token widerrufen.
- Sofort nach mutmaßlicher Offenlegung, Eigentümerwechsel oder Einstellung des Arbeitsablaufs widerrufen. Der Widerruf wird mit der nächsten Anfrage wirksam.
- Erstellen Sie kein langlebiges gemeinsames Token. Separate Anmeldeinformationen machen Protokolle, Rotation und Reaktion auf Vorfälle verständlich.
Verzweigung nach HTTP-Status und maschinenlesbarem Code.
Fehler verwenden JSON mit Fehler und Code. Analysieren Sie den menschlichen Satz nicht, um einen Arbeitsablauf zu steuern. Die meisten 4xx-Antworten erfordern eine Änderung der Anfrage oder der Anmeldeinformationen. Nur Revisionskonflikte und Ratenbeschränkungen gehören in einen automatischen Wiederholungspfad.
INVALID_JSON · LINKS_REQUIRED · LINK_PATCH_INVALIDKorrigieren Sie den Anforderungstext oder die vom Seitenschema abgelehnten Felder.PERSONAL_TOKEN_*Ersetzen Sie ein fehlendes, ungültiges, abgelaufenes oder widerrufenes Token. Versuchen Sie es nicht erneut mit demselben Geheimnis.PERSONAL_TOKEN_SCOPE_DENIED · SYSTEM_LINK_PROTECTEDErforderlichen Bereich verwenden oder stoppen: Die aktuelle Identität darf diesen Vorgang nicht ausführen.LINK_NOT_FOUNDAktualisieren Sie die Sammlung; Die Block-ID wurde möglicherweise entfernt oder ersetzt.revision_conflictGET erneut, wenden Sie die beabsichtigte Änderung erneut auf den neuen Status an und versuchen Sie es erneut mit der neuen Revision.REQUEST_TOO_LARGEBehalten Sie den JSON-Körper bei oder unter 768 KiB.UNSUPPORTED_CONTENT_ENCODINGSenden Sie einen unkomprimierten JSON-Anfragetext.revision_requiredIf-Match mit der Revision oder dem ETag hinzufügen, die vom letzten GET zurückgegeben wurden.RATE_LIMITEDWarten Sie auf „Retry-After“ und versuchen Sie es dann erneut mit exponentiellem Backoff und Jitter.Aktuelle Leitplanken erlauben 120 Anfragen pro Minute und 5.000 Anfragen pro Tag und Token. Beim Missbrauchsschutz können die Grenzwerte strenger werden; Berücksichtigen Sie immer Retry-After.
Eine sichere Integration ist eng, geheim und revisionsbewusst.
Geringste Berechtigung
Schreibgeschützt verwenden, es sei denn, der Job muss veröffentlicht werden. Die Token-Funktionen können niemals die aktuelle Arbeitsbereichsrolle des Eigentümers überschreiten.
Nur serverseitig
Rufen Sie die API von einem vertrauenswürdigen Skript, Backend oder CI-Runner aus auf. Ein Browser-Bundle, ein mobiler Client oder ein öffentliches Repository können den Träger nicht geheim halten.
Keine blinden Schreibvorgänge
Führen Sie unmittelbar vor dem Schreiben eine GET-Anfrage aus und verwenden Sie If-Match. Wenn ein 409-Fehler revision_conflict zurückgibt, lesen Sie die Ressource erneut und wenden Sie die beabsichtigte Änderung wieder an; beheben Sie bei jedem anderen Code die dokumentierte fachliche Ursache.
Ergebnisse validieren
Überprüfen Sie den Antwortstatus, die Revision und die zurückgegebenen Daten. Öffnen Sie bei wichtigen Änderungen die öffentliche Seite nach der Veröffentlichung und warnen Sie bei Fehlern, ohne das Token zu protokollieren.
Die Personal-Token-Automation-REST-API ist eine verwaltete SaaS-Funktion.
Das Open-Source-Repository enthält eine Express-API, die von seinem gebündelten Dashboard verwendet wird, aber diese interne Admin-Sitzungs-API ist nicht derselbe versionierte Automatisierungsvertrag. Senden Sie kein op_pat-Token an einen selbstgehosteten Server und kein selbstgehostetes Administrator-JWT an orbitpage.com/api/v1.
Verwenden Sie dieses Handbuch, den OpenAPI-Vertrag und die im Konto erstellten persönlichen Token.
Verwenden Sie das gebündelte Dashboard auf demselben vertrauenswürdigen Ursprung. In der Repository-Dokumentation werden die internen Grenzen für Mitwirkende und Betreuer erläutert.