{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/emile-wine/json-schema/emile-wine-render-request-schema.json",
  "title": "RenderRequest",
  "description": "Inputs to /internal/blog/render. n8n maps Notion properties + the\nGDoc markdown body straight onto this schema.",
  "x-generated": "2026-11-06",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/emile-wine-openapi.json#/components/schemas/RenderRequest",
  "properties": {
    "markdown": {
      "type": "string",
      "minLength": 50,
      "title": "Markdown",
      "description": "The article markdown body, exactly as written into the GDoc."
    },
    "language": {
      "type": "string",
      "pattern": "^(fr|en)$",
      "title": "Language"
    },
    "slug": {
      "type": "string",
      "minLength": 1,
      "title": "Slug",
      "description": "kebab-case slug for the URL/file path."
    },
    "pillar": {
      "type": "string",
      "minLength": 1,
      "title": "Pillar",
      "description": "One of: vins, viticulture, cave, sommellerie, accord, appellations."
    },
    "target_keyword": {
      "type": "string",
      "minLength": 1,
      "title": "Target Keyword",
      "description": "The SEO keyword the article targets."
    },
    "date_iso": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "title": "Date Iso",
      "description": "YYYY-MM-DD publication date."
    },
    "description": {
      "type": "string",
      "maxLength": 320,
      "minLength": 20,
      "title": "Description",
      "description": "Meta description (~155 chars ideal)."
    },
    "equivalent_url": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Equivalent Url",
      "description": "Full URL of the article in the other language, for hreflang cross-linking."
    },
    "equivalent_lang": {
      "anyOf": [
        {
          "type": "string",
          "pattern": "^(fr|en)$"
        },
        {
          "type": "null"
        }
      ],
      "title": "Equivalent Lang"
    }
  },
  "type": "object",
  "required": [
    "markdown",
    "language",
    "slug",
    "pillar",
    "target_keyword",
    "date_iso",
    "description"
  ]
}