{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/dealermax-app/json-schema/dealermax-app-dealer-public-content-listing-response-schema.json",
  "title": "DealerPublicContentListingResponse",
  "description": "A paginated page of editorial content items of a single content type.",
  "x-generated": "2026-11-05",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/dealermax-app-openapi.json#/components/schemas/DealerPublicContentListingResponse",
  "type": "object",
  "required": [
    "content_type",
    "page",
    "page_size",
    "total",
    "has_next",
    "items"
  ],
  "properties": {
    "content_type": {
      "type": "string",
      "enum": [
        "faq",
        "news",
        "glossary",
        "guides",
        "videos",
        "podcasts"
      ],
      "description": "Editorial content type of this page (news, guides, glossary or faq). Deprecated for `guides` and `glossary`: those dealer pages are retired and now 301-redirect to https://autousatebenissimo.it, which hosts the same corpus at the same paths. The data stays served until the Sunset date announced in the response headers (Deprecation as an RFC 9745 structured Date, Sunset as an RFC 8594 HTTP-date, and Link with rel=sunset plus rel=successor-version); listing and detail payloads of those two types also carry `deprecated`, `deprecation`, `sunset` and `successor_version`."
    },
    "page": {
      "type": "integer",
      "minimum": 1,
      "description": "Current 1-based page number."
    },
    "page_size": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "description": "Number of items per page."
    },
    "total": {
      "type": "integer",
      "minimum": 0,
      "description": "Total number of items across all pages."
    },
    "has_next": {
      "type": "boolean",
      "description": "True if a further page exists after this one."
    },
    "deprecated": {
      "type": "boolean",
      "description": "Present and true only for the retired `guides` / `glossary` types."
    },
    "deprecation": {
      "type": "string",
      "description": "RFC 9745 structured Date (`@<unix-timestamp>`) at which the deprecation took effect."
    },
    "sunset": {
      "type": "string",
      "description": "HTTP-date after which a deprecated content type may stop being served."
    },
    "successor_version": {
      "type": "string",
      "format": "uri",
      "description": "Canonical home of the corpus for a deprecated content type."
    },
    "q": {
      "type": "string",
      "description": "Free-text query echoed back when the listing was filtered by search."
    },
    "filters": {
      "type": "object",
      "additionalProperties": true,
      "description": "Filters applied to the listing, echoed back (free-form JSON object)."
    },
    "meta": {
      "type": "object",
      "additionalProperties": true,
      "description": "Identifying metadata about the dealer that owns the returned content.",
      "properties": {
        "dealer": {
          "type": "object",
          "additionalProperties": true,
          "description": "The dealer the content belongs to.",
          "properties": {
            "id": {
              "type": "integer",
              "description": "Internal dealer id."
            },
            "name": {
              "type": "string",
              "description": "Dealer legal/registered name."
            },
            "brand_name": {
              "type": "string",
              "description": "Dealer commercial brand name, as shown to end users."
            },
            "city": {
              "type": "string",
              "description": "Dealer city."
            },
            "province": {
              "type": "string",
              "description": "Dealer province (Italian two-letter code, e.g. 'MI')."
            },
            "primary_domain": {
              "type": "string",
              "description": "Dealer primary public website domain."
            }
          }
        }
      }
    },
    "items": {
      "type": "array",
      "description": "Content items on this page.",
      "items": {
        "$ref": "#/$defs/DealerPublicContentItem"
      }
    }
  },
  "$defs": {
    "DealerPublicContentItem": {
      "type": "object",
      "additionalProperties": true,
      "description": "One editorial content item (news, guide, glossary term or FAQ) published on the dealer site.",
      "properties": {
        "id": {
          "type": "integer",
          "description": "Internal content item id."
        },
        "slug": {
          "type": "string",
          "description": "URL-friendly unique slug identifying the content item."
        },
        "topic": {
          "type": "string",
          "description": "Topic / category the content item belongs to."
        },
        "title": {
          "type": "string",
          "description": "Content title."
        },
        "h1": {
          "type": "string",
          "description": "Page H1 heading (may differ from the title)."
        },
        "meta_description": {
          "type": "string",
          "description": "SEO meta description for the content page."
        },
        "excerpt": {
          "type": "string",
          "description": "Short summary/teaser of the content."
        },
        "body_text_preview": {
          "type": "string",
          "description": "Plain-text preview of the body (truncated; full body served on the dealer site)."
        },
        "source_provider": {
          "type": "string",
          "description": "News editions only: provenance class. dealer_editorial identifies first-party local editions; historical/external editions remain readable but are excluded from discovery."
        },
        "url": {
          "type": "string",
          "format": "uri",
          "description": "Absolute URL of the content page on the dealer site."
        },
        "updated_at": {
          "type": "string",
          "format": "date-time",
          "description": "Timestamp of the last content update (ISO 8601)."
        }
      }
    }
  }
}