Public API

    API Dokumentation

    Integrieren Sie ContentScaler CMS-Inhalte in Ihre Website mit unserer Cognitor-kompatiblen REST API.

    Basis-URL
    https://fzdkwesryxdrecbpwqhy.supabase.co/functions/v1/cms-public-api

    Schnellstart

    Alle Anfragen erfordern einen API-Schlüssel im X-API-Key-Header. Jeder Schlüssel ist auf eine bestimmte Domain beschränkt – Inhalte werden automatisch gefiltert.

    Authentifizierungs-Header
    curl -X GET "https://fzdkwesryxdrecbpwqhy.supabase.co/functions/v1/cms-public-api?action=pages" \
      -H "X-API-Key: csapi_your_api_key_here"

    Kein Bearer-Token benötigt

    Endpoints nutzen --no-verify-jwt

    Domain-spezifische Schlüssel

    Inhalte automatisch gefiltert

    Schlüssel erhalten

    ContentScaler > Kunden > CMS API Keys

    Endpoints-Referenz

    GET
    /cms-public-api?action=pages

    List all published (Active) pages for your domain.

    Query Parameters

    ParameterTypeDefaultDescription
    limitnumber100Max pages to return (max: 100)
    skipnumber0Pagination offset
    tagsstringFilter by tags (comma-separated)

    Response

    JSON Response
    [
      {
        "id": 905898700,
        "title": "ISO 27001 Implementation Guide",
        "slug": "iso-27001-implementation-guide",
        "description": "Complete guide to implementing ISO 27001...",
        "published": true,
        "created_at": "2025-11-05T16:22:01.580648+00:00",
        "updated_at": "2025-12-20T15:31:38.245453+00:00",
        "tags": ["Blog", "Guides"],
        "content_type": "article",
        "element_count": 0,
        "parent_id": null,
        "not_in_menu": false
      }
    ]

    Content-Element-Leitfaden

    Jedes page_element enthält ein content_element mit einem type_identifier, der bestimmt, welches Datenfeld zu verwenden ist.

    Element-Struktur
    {
      "section": "Description",
      "content_element": {
        "type_identifier": "Short Text",
        "data": {
          "content_text": "...",
          "content_url": "...",
          "content_json": {...}
        }
      }
    }

    Textbasierte Elemente

    content_text
    type_identifierDescription
    Short TextTitles, descriptions, single-line text
    Long TextMarkdown/HTML articles, multi-line content
    Rating"high", "medium", "low", "6-12 months"
    Label"Mandatory", "Voluntary"
    Top x ListNumbered list (line-break separated)
    Feature ListBulleted feature list

    Medien-Elemente

    content_url
    type_identifierDescription
    ImageImage file URL
    VideoVideo file URL
    PodcastAudio file URL
    LinkExternal link URL

    Strukturierte Daten-Elemente

    content_json
    type_identifierDescription
    JSON StructureCustom JSON objects
    TableTable data with rows and columns
    ComparisonProduct/feature comparison data

    Seitentypen-Referenz

    Jeder Seitentyp hat eine spezifische Menge von Content-Elementen. Erweitern Sie einen Typ unten, um seine Elementstruktur zu sehen.

    Code-Beispiele

    Hilfsfunktionen
    function getElement(page, section) {
      return page.page_elements.find(el => el.section === section);
    }
    
    function getText(page, section) {
      const el = getElement(page, section);
      return el?.content_element.data.content_text ?? null;
    }
    
    function getJson(page, section) {
      const el = getElement(page, section);
      return el?.content_element.data.content_json ?? null;
    }
    
    function getUrl(page, section) {
      const el = getElement(page, section);
      return el?.content_element.data.content_url ?? null;
    }

    Fehler-Referenz

    StatusFehlerBeschreibung
    401
    UnauthorizedMissing or invalid API key
    400
    Invalid API keyAPI key not found or inactive
    400
    CMS not enabledCMS not enabled for domain
    400
    slug or id requiredMissing page identifier
    400
    Search query requiredMissing or too short search query
    404
    Page not foundPage doesn't exist or isn't Active
    500
    Database errorInternal server error
    500
    Search failedSearch operation encountered an error

    Caching & Rate Limits

    Seitenlisten

    5 minutes

    max-age=300

    Seiten-Details

    10 minutes

    max-age=600

    Standards

    1 hour

    max-age=3600

    Suchergebnisse

    1 minute

    max-age=60

    Rate Limiting

    Derzeit wird kein Rate Limiting durchgesetzt. Bitte seien Sie rücksichtsvoll: Bündeln Sie Anfragen, nutzen Sie clientseitiges Caching, vermeiden Sie Polling und nutzen Sie Webhooks für Echtzeit-Updates.

    Der X-Total-Count-Header ist in Listenantworten und Suchergebnissen enthalten.

    Häufig gestellte Fragen

    API-Dokumentation - REST-API-Referenz | ContentScaler