> For the complete Lynkow documentation index in agent-friendly format, see [llms.txt](/llms.txt).

# SDK Types: Json-ld

**Publié le** : 2026-08-20
**Catégorie** : Types

# SDK Types: Json-ld

## `JsonLdGraphConfig`

*Interface*

Cascade configuration stored at any level (site, category, page, content).

This is the wire shape persisted in the Lynkow database. The public API
exposes the already-resolved graph on `structuredData.graph`; SDK consumers
normally read that resolved array rather than reconstructing one from the
raw configs at each level.

| Property | Type | Optional | Description |
| --- | --- | --- | --- |
| `exclusions` | `string[]` | No | Parent-level `@id` values this level opts out of. Accepts both<br>user-provided ids (e.g. `"site-org"`) and the reserved<br>`auto:article` / `auto:faqpage` / `auto:breadcrumb` / `auto:webpage`<br>identifiers to suppress Lynkow's implicit nodes. Empty array when no<br>parent node is excluded. |
| `graph` | `JsonLdNode[]` | No | Nodes declared at this cascade level. Order is preserved in the emitted<br>`@graph` but is not semantically significant for schema.org consumers.<br>Empty array when no nodes are declared. |


---

## `JsonLdNode`

*Interface*

A single JSON-LD node as stored at one cascade level.

This is the shape the admin / MCP writes into the cascade columns. The
public API materializes each entry into a fully resolved schema.org object
(adding `@context`, `@id`, and preset-driven fields) before returning it
under `structuredData.graph`.

| Property | Type | Optional | Description |
| --- | --- | --- | --- |
| `data` | `Record<string, unknown>` | No | Node payload. The accepted shape depends on source:<br><br>- `preset`: only the fields documented for the matching preset<br>  (e.g. `name`, `address`, `geo` for `LocalBusiness`). Unknown keys are<br>  ignored. Missing context fields (url, inLanguage, etc.) are filled<br>  from the page context at render time.<br>- `custom`: the full schema.org object, minus `@context` and `@id`<br>  which the server injects. Passed through verbatim after basic sanity<br>  checks (non-empty `@type`, no prototype-pollution keys). |
| `id` | `string` | No | Stable `@id` for this node. Server-generated (pattern `own-<8hex>`) when<br>the caller omits it on create. Safe to treat as an opaque string; the<br>public API rewrites it to an absolute URL in the resolved graph,<br>with the prefix determined by the node's effective scope<br>(`<site-url>#<id>` for site-scoped entries like `Organization`,<br>`<page-url>#<id>` for page-scoped entries like `Article`).<br>Never starts with the reserved `auto:` prefix, which is reserved<br>for nodes Lynkow injects automatically. |
| `scope` | `"site" \| "page"` | Yes | Optional `@id` scope override. When omitted, the cascade infers<br>the default from the level the entry was declared at:<br>- `site` for entries at site or category level (Organization,<br>  LocalBusiness for a section, Publisher).<br>- `page` for entries at page or content level (Article, Product,<br>  custom Person).<br>Set explicitly to opt out of the default - e.g. `scope: 'site'`<br>on a content-level Organization that should still be stable<br>across pages. The resolved `@id` becomes `<site-url>#<id>` for<br>`site` scope and `<page-url>#<id>` for `page` scope. |
| `source` | `JsonLdNodeSource` | No | Whether the node was created from a Lynkow typed preset or from raw JSON-LD. |
| `type` | `string` | No | schema.org `@type` identifier (e.g. `"Organization"`, `"LocalBusiness"`,<br>`"Product"`). Any schema.org type is accepted; 27 first-class presets<br>get typed field mapping server-side, unknown types pass through via<br>`source: 'custom'`. |


---

## `JsonLdNodeSource`

*TypeAlias*

Source of a JSON-LD node.

- `preset`: the node was created from a Lynkow typed preset (Organization,
LocalBusiness, Product, etc.). The server fills unspecified fields from
the page context and mapped preset schema.
- `custom`: the node is a raw JSON-LD object supplied verbatim by the
caller. The server only performs basic sanity checks (non-empty `@type`,
prototype-pollution guard).

```typescript
type JsonLdNodeSource = "preset" | "custom"
```