UpsertProductListingData
Data for synchronously upserting one ProductListing. Only `sourceListingId` is required. Title, description, availability, price, and each price estimate are tri-state: omitted preserves an existing value, `null` clears it, and a concrete value replaces it. The nested Auction/lot-facts patch is omitted to preserve stored facts or supplied as a leaf patch; `null` is invalid. Within an asserted patch, lot/timing leaves omit to preserve, use `null` to clear, or provide a value to set. `auctionId` must identify an existing Auction for this ListingSource; omit it to preserve membership, send `null` to clear it, or send an ID to set it. Upsert restores a withdrawn listing before current facts apply. Images and URL use the field-specific rules documented below.
Properties
| Name | Type | Description |
|---|---|---|
| sourceListingId | string | The listing source's own identifier for the product. Must be unique within the listing source. |
| title | object | Localized title patch. Omit to preserve; null clears; a value sets text and source language. The title is normalized; styled letters and digits become ordinary text and emoji and ornamental symbols ar |
| description | object | Localized description patch. Omit to preserve; null clears; a value sets text and source language. |
| price | object | Optional current asking-price assertion. Omit to leave it unchanged; send null to clear it; send a tagged monetary or on-request value to set it. On creation, omitted and null both mean no assertion. |
| priceEstimateMin | object | Optional lower bound of the estimated price range. On an existing listing, omit to preserve, send `null` to clear, or send a value to set. On creation, omitted and `null` both mean no lower bound. |
| priceEstimateMax | object | Optional upper bound of the estimated price range. On an existing listing, omit to preserve, send `null` to clear, or send a value to set. On creation, omitted and `null` both mean no upper bound. |
| availability | object | Omit to preserve an existing assertion; send null to clear it; send a code to set it. |
| url | stringnull | URL to the product on the listing source's website. On an existing listing, omit or send `null` to preserve the current URL; send a value to replace it. URL is non-clearable. |
| images | array | List of image URLs for the product. On an existing listing, omit to preserve the stored image set, send `[]` to clear it, or send an array to replace it. `null` is invalid. |
| auction | object | Omit to preserve the current context or send an object to apply nested leaf patches. `auctionId` must identify an existing Auction for this ListingSource; omit it to preserve membership, send null to |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://artifacts.apis.io/aura-historia-com/json-schema/aura-historia-com-upsert-product-listing-data-schema.json",
"title": "UpsertProductListingData",
"description": "Data for synchronously upserting one ProductListing. Only `sourceListingId` is required.\nTitle, description, availability, price, and each price estimate are tri-state: omitted preserves an existing\nvalue, `null` clears it, and a concrete value replaces it. The nested Auction/lot-facts patch is omitted\nto preserve stored facts or supplied as a leaf patch; `null` is invalid. Within an asserted patch, lot/timing leaves\nomit to preserve, use `null` to clear, or provide a value to set. `auctionId` must identify an existing Auction for this ListingSource; omit it to preserve membership, send `null` to clear it, or send an ID to set it. Upsert restores a withdrawn listing before current\nfacts apply. Images and URL use the field-specific rules documented below.\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/UpsertProductListingData",
"type": "object",
"additionalProperties": false,
"required": [
"sourceListingId"
],
"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": "Localized title patch. Omit to preserve; null clears; a value sets text and source language. 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": "Localized description patch. Omit to preserve; null clears; a value sets text and source language."
},
"price": {
"allOf": [
{
"$ref": "#/$defs/ProductListingPriceData"
}
],
"nullable": true,
"description": "Optional current asking-price assertion. Omit to leave it unchanged; send null to clear it; send a tagged monetary or on-request value to set it. On creation, omitted and null both mean no assertion."
},
"priceEstimateMin": {
"allOf": [
{
"$ref": "#/$defs/PriceData"
}
],
"nullable": true,
"description": "Optional lower bound of the estimated price range. On an existing listing, omit to preserve, send `null` to clear, or send a value to set. On creation, omitted and `null` both mean no lower bound."
},
"priceEstimateMax": {
"allOf": [
{
"$ref": "#/$defs/PriceData"
}
],
"nullable": true,
"description": "Optional upper bound of the estimated price range. On an existing listing, omit to preserve, send `null` to clear, or send a value to set. On creation, omitted and `null` both mean no upper bound."
},
"availability": {
"allOf": [
{
"$ref": "#/$defs/ListingAvailabilityData"
}
],
"nullable": true,
"description": "Omit to preserve an existing assertion; send null to clear it; send a code to set it."
},
"url": {
"type": [
"string",
"null"
],
"format": "uri",
"description": "URL to the product on the listing source's website. On an existing listing, omit or send `null` to preserve the current URL; send a value to replace it. URL is non-clearable."
},
"images": {
"type": "array",
"items": {
"type": "string",
"format": "uri"
},
"description": "List of image URLs for the product. On an existing listing, omit to preserve the stored image set, send `[]` to clear it, or send an array to replace it. `null` is invalid."
},
"auction": {
"allOf": [
{
"$ref": "#/$defs/ProductListingAuctionData"
}
],
"description": "Omit to preserve the current context or send an object to apply nested leaf patches. `auctionId` must identify an existing Auction for this ListingSource; omit it to preserve membership, send null to clear it, or send an ID to set it. `null` for `auction` is invalid."
}
},
"$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"
]
}
}
}
]
}
}
}
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
curl "https://apis.io/api/v1/json-schemas/aura-historia-com-upsert-product-listing-data"
curl "https://apis.io/api/v1/json-schemas?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.