{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/epicdirectories/json-schema/epicdirectories-create-listing-dto-schema.json",
  "title": "CreateListingDto",
  "x-generated": "2026-11-10",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/epicdirectories-listings-api-openapi.yml#/components/schemas/CreateListingDto",
  "type": "object",
  "properties": {
    "listingType": {
      "type": "string",
      "description": "Type of listing (e.g., event, series, tool)"
    },
    "slug": {
      "type": "string",
      "description": "URL-friendly slug for the listing"
    },
    "title": {
      "type": "string",
      "description": "Title of the listing"
    },
    "status": {
      "type": "string",
      "description": "Listing status",
      "enum": [
        "draft",
        "published",
        "hidden"
      ],
      "default": "draft"
    },
    "parentId": {
      "type": [
        "object",
        "null"
      ],
      "description": "Parent listing ID for hierarchical relationships. Pass null to clear."
    },
    "relationshipType": {
      "type": [
        "object",
        "null"
      ],
      "description": "Relationship type (e.g., series_of, brand_of, chapter_of). Pass null to clear."
    },
    "geo": {
      "type": "object",
      "description": "Geographic data (country, admin1, city, neighborhood, coordinates)"
    },
    "canonicalFields": {
      "type": "object",
      "description": "Canonical fields (queryable, indexable)"
    },
    "editorialFields": {
      "type": "object",
      "description": "Editorial fields (descriptions, notes)"
    },
    "publishAt": {
      "type": [
        "object",
        "null"
      ],
      "description": "Scheduled publish time (ISO 8601). When set on a status:draft listing, public read endpoints surface it as published once the time has passed — no cron required, status column stays as draft until manually published. Pass null to clear."
    }
  },
  "required": [
    "listingType",
    "slug",
    "title"
  ]
}