{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/aura-historia-com/json-schema/aura-historia-com-create-product-listing-data-schema.json",
  "title": "CreateProductListingData",
  "description": "Data for creating a single product via the partner batch-create endpoint.\n",
  "x-generated": "2026-10-29",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/aura-historia-com-openapi.yml#/components/schemas/CreateProductListingData",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "sourceListingId",
    "url",
    "images"
  ],
  "properties": {
    "sourceListingId": {
      "type": "string",
      "description": "The listing source's own identifier for the product. Must be unique within the listing source."
    },
    "title": {
      "allOf": [
        {
          "$ref": "#/$defs/LocalizedTextData"
        }
      ],
      "nullable": true,
      "description": "Optional localized title. Omit or send `null` when no title is available. The title is normalized; styled letters and digits become ordinary text and emoji and ornamental symbols are removed. A title without remaining text, such as a blank or emoji-only title, is rejected with `BAD_BODY_VALUE`: synchronous batches fail with `400`, asynchronous batches report that item as a failure."
    },
    "description": {
      "allOf": [
        {
          "$ref": "#/$defs/LocalizedTextData"
        }
      ],
      "nullable": true,
      "description": "Optional localized description. Omit or send `null` when no description is available."
    },
    "price": {
      "allOf": [
        {
          "$ref": "#/$defs/ProductListingPriceData"
        }
      ],
      "nullable": true,
      "description": "Optional asking-price assertion for the product."
    },
    "priceEstimateMin": {
      "allOf": [
        {
          "$ref": "#/$defs/PriceData"
        }
      ],
      "nullable": true,
      "description": "Optional lower bound of the estimated price range"
    },
    "priceEstimateMax": {
      "allOf": [
        {
          "$ref": "#/$defs/PriceData"
        }
      ],
      "nullable": true,
      "description": "Optional upper bound of the estimated price range"
    },
    "availability": {
      "allOf": [
        {
          "$ref": "#/$defs/ListingAvailabilityData"
        }
      ],
      "nullable": true,
      "description": "Omit or send `null` when Aura has no reliable current availability assertion."
    },
    "url": {
      "type": "string",
      "format": "uri",
      "description": "URL to the product on the listing source's website"
    },
    "images": {
      "type": "array",
      "items": {
        "type": "string",
        "format": "uri"
      },
      "description": "List of image URLs for the product. May be empty."
    },
    "auction": {
      "allOf": [
        {
          "$ref": "#/$defs/ProductListingAuctionData"
        }
      ],
      "description": "Omit for no Auction or lot changes, or send an asserted nested Auction/lot-facts patch. `null` is invalid. `auctionId` must identify an existing Auction for this ListingSource."
    }
  },
  "$defs": {
    "CurrencyData": {
      "type": "string",
      "enum": [
        "EUR",
        "GBP",
        "USD",
        "AUD",
        "CAD",
        "NZD",
        "CNY",
        "BRL",
        "PLN",
        "TRY",
        "JPY",
        "CZK",
        "RUB",
        "AED",
        "SAR",
        "HKD",
        "SGD",
        "CHF",
        "ZAR",
        "SEK",
        "DKK",
        "NOK",
        "KRW",
        "INR",
        "TWD",
        "HUF",
        "RON",
        "MXN",
        "THB",
        "ARS"
      ],
      "description": "Supported currencies (ISO 4217 codes):\n- EUR: Euro\n- GBP: British Pound\n- USD: US Dollar\n- AUD: Australian Dollar\n- CAD: Canadian Dollar\n- NZD: New Zealand Dollar\n- CNY: Chinese Yuan\n- BRL: Brazilian Real\n- PLN: Polish Złoty\n- TRY: Turkish Lira\n- JPY: Japanese Yen\n- CZK: Czech Koruna\n- RUB: Russian Ruble\n- AED: UAE Dirham\n- SAR: Saudi Riyal\n- HKD: Hong Kong Dollar\n- SGD: Singapore Dollar\n- CHF: Swiss Franc\n- ZAR: South African Rand\n- SEK: Swedish Krona\n- DKK: Danish Krone\n- NOK: Norwegian Krone\n- KRW: South Korean Won\n- INR: Indian Rupee\n- TWD: New Taiwan Dollar\n- HUF: Hungarian Forint\n- RON: Romanian Leu\n- MXN: Mexican Peso\n- THB: Thai Baht\n- ARS: Argentine Peso (2 minor-unit decimal places)\n",
      "default": "EUR"
    },
    "LanguageData": {
      "type": "string",
      "enum": [
        "de",
        "en",
        "fr",
        "es",
        "it",
        "zh",
        "pt",
        "pl",
        "tr",
        "nl",
        "cs",
        "ja",
        "ru",
        "ar"
      ],
      "description": "Supported language codes (ISO 639-1 canonical values):\n- de: German (includes de-DE, de-AT, de-CH, de-LU, de-LI)\n- en: English (includes en-US, en-GB, en-AU, en-CA, en-NZ, and backend-specific accepted alias en_IE)\n- fr: French (includes fr-FR, fr-CA, fr-BE, fr-CH, fr-LU)\n- es: Spanish (includes es-ES, es-MX, es-AR, es-CO, es-CL, es-PE, es-VE)\n- it: Italian (includes it-IT, it-CH)\n- zh: Chinese (Simplified) (includes zh-CN, zh-Hans)\n- pt: Portuguese (includes pt-PT, pt-BR)\n- pl: Polish (includes pl-PL)\n- tr: Turkish (includes tr-TR)\n- nl: Dutch (includes nl-NL, nl-BE)\n- cs: Czech (includes cs-CZ)\n- ja: Japanese (includes ja-JP)\n- ru: Russian (includes ru-RU)\n- ar: Arabic (includes ar-SA, ar-EG, ar-AE)\n\n`de`, `en`, `fr`, `es`, and `it` are fully supported localization/translation-target languages.\n`zh`, `pt`, `pl`, `tr`, `nl`, `cs`, `ja`, `ru`, and `ar` are ingestion-only languages:\nthey can appear in stored/native content and are accepted anywhere `LanguageData` is used,\nbut backend-generated translations and fallback localized strings are not produced in these languages.\n",
      "default": "en"
    },
    "ListingAvailabilityData": {
      "type": "string",
      "enum": [
        "AVAILABLE",
        "IN_STOCK",
        "LIMITED_AVAILABILITY",
        "BACK_ORDER",
        "MADE_TO_ORDER",
        "PRE_ORDER",
        "PRE_SALE",
        "UNAVAILABLE",
        "RESERVED",
        "OUT_OF_STOCK",
        "SOLD_OUT"
      ],
      "description": "Current reliable source assertion of listing purchase availability. Omitted or `null` means Aura has no reliable current assertion."
    },
    "LocalizedTextData": {
      "type": "object",
      "description": "Text content with language information",
      "required": [
        "text",
        "language"
      ],
      "properties": {
        "text": {
          "type": "string",
          "description": "The text content"
        },
        "language": {
          "$ref": "#/$defs/LanguageData"
        }
      }
    },
    "PriceData": {
      "type": "object",
      "description": "Price information with currency",
      "required": [
        "currency",
        "amount"
      ],
      "properties": {
        "currency": {
          "$ref": "#/$defs/CurrencyData"
        },
        "amount": {
          "type": "integer",
          "description": "Price amount in minor currency units (e.g., cents for most supported currencies, whole yen for JPY)",
          "minimum": 0
        }
      }
    },
    "ProductListingAuctionData": {
      "type": "object",
      "additionalProperties": false,
      "description": "Partner ProductListing nested write patch. `auctionId` must identify an existing Auction for the same ListingSource. Omit it to preserve membership, send null to clear membership, or send a value to set it. Omit a lot/timing leaf to preserve it, send null to clear a clearable leaf, or send a value to set it.",
      "properties": {
        "auctionId": {
          "type": [
            "string",
            "null"
          ],
          "description": "Existing same-ListingSource Aura Auction TypeID. Omit to preserve membership; send null to clear it."
        },
        "lotNumber": {
          "type": [
            "string",
            "null"
          ],
          "maxLength": 128,
          "description": "Omit to preserve the lot label; send null to clear it; send a value to set it."
        },
        "cataloguePosition": {
          "type": [
            "integer",
            "null"
          ],
          "format": "int64",
          "minimum": 1,
          "maximum": 4294967295,
          "description": "Omit to preserve the catalogue position; send null to clear it; send a value to set it."
        },
        "timing": {
          "allOf": [
            {
              "$ref": "#/$defs/ProductListingAuctionTimesData"
            }
          ],
          "nullable": true
        }
      }
    },
    "ProductListingAuctionTimesData": {
      "type": "object",
      "additionalProperties": false,
      "description": "Omit each leaf to preserve it; send null to clear it; values are RFC3339 instants.",
      "properties": {
        "biddingOpens": {
          "type": [
            "string",
            "null"
          ],
          "format": "date-time"
        },
        "scheduledCloses": {
          "type": [
            "string",
            "null"
          ],
          "format": "date-time"
        },
        "reportedClosedAt": {
          "type": [
            "string",
            "null"
          ],
          "format": "date-time"
        }
      }
    },
    "ProductListingPriceData": {
      "oneOf": [
        {
          "type": "object",
          "required": [
            "type",
            "currency",
            "amount"
          ],
          "additionalProperties": false,
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "MONETARY"
              ]
            },
            "currency": {
              "$ref": "#/$defs/CurrencyData"
            },
            "amount": {
              "type": "integer",
              "minimum": 0
            }
          }
        },
        {
          "type": "object",
          "required": [
            "type"
          ],
          "additionalProperties": false,
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "ON_REQUEST"
              ]
            }
          }
        }
      ]
    }
  }
}