{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "anyOf": [ { "type": "object", "properties": { "schema_version": { "$ref": "#/$defs/__schema0" }, "as_of": { "$ref": "#/$defs/__schema1" }, "currency": { "$ref": "#/$defs/__schema2" }, "locale": { "$ref": "#/$defs/__schema3" }, "warnings": { "$ref": "#/$defs/__schema4" }, "brain": { "type": "object", "properties": { "projection_version": { "type": "string", "pattern": "^bestprice_mcp_decision_v[1-9][0-9]*$", "description": "Version of this MCP projection of the decision. Currently bestprice_mcp_decision_v1; a later bestprice_mcp_decision_v is returned without a tools/list change." }, "decision_version": { "type": "string", "pattern": "^bestprice_decision_v[1-9][0-9]*$", "description": "Shopping Brain decision contract version. Currently bestprice_decision_v1; a later bestprice_decision_v is returned without a tools/list change." }, "decision_id": { "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, "evidence_fingerprint": { "type": "string", "pattern": "^[a-f0-9]{64}$", "description": "Fingerprint of the original, unmodified Brain evidence; the public evidence below is a returned-product subset." } }, "required": [ "projection_version", "decision_version", "decision_id", "evidence_fingerprint" ] }, "outcome": { "type": "string", "enum": [ "recommendation", "no_match", "clarification", "answer", "comparison", "basket" ] }, "status": { "type": "string", "enum": [ "ready", "no_match", "needs_input" ] }, "answer": { "type": "string", "maxLength": 8000 }, "reason": { "anyOf": [ { "type": "string", "maxLength": 160 }, { "type": "null" } ] }, "message": { "anyOf": [ { "type": "string", "maxLength": 8000 }, { "type": "null" } ] }, "blocking_constraints": { "maxItems": 24, "type": "array", "items": { "$ref": "#/$defs/__schema6" } }, "near_miss": { "type": "object", "properties": { "over_by_eur": { "type": "number" } }, "required": [ "over_by_eur" ] }, "recommended_product_id": { "anyOf": [ { "$ref": "#/$defs/__schema7" }, { "type": "null" } ] }, "alternatives": { "maxItems": 2, "type": "array", "items": { "$ref": "#/$defs/__schema8" } }, "products": { "maxItems": 4, "type": "array", "items": { "$ref": "#/$defs/__schema28" } }, "constraints": { "type": "object", "propertyNames": { "$ref": "#/$defs/__schema36" }, "additionalProperties": { "$ref": "#/$defs/__schema37" } }, "reasons": { "maxItems": 24, "type": "array", "items": { "$ref": "#/$defs/__schema38" } }, "tradeoffs": { "maxItems": 24, "type": "array", "items": { "$ref": "#/$defs/__schema39" } }, "offer_summary": { "$ref": "#/$defs/__schema9" }, "comparison": { "anyOf": [ { "type": "object", "properties": { "comparison_type": { "type": "string", "enum": [ "specifications", "delivered_cost" ] }, "evaluation": { "type": "string", "enum": [ "selected", "no_eligible_compared_product", "not_evaluated_budget", "unavailable" ] }, "products": { "minItems": 2, "maxItems": 4, "type": "array", "items": { "$ref": "#/$defs/__schema40" } }, "feature_rows": { "maxItems": 12, "type": "array", "items": { "$ref": "#/$defs/__schema42" } }, "price_spread_eur": { "anyOf": [ { "type": "number", "minimum": 0 }, { "type": "null" } ] }, "postal_code": { "anyOf": [ { "$ref": "#/$defs/__schema10" }, { "type": "null" } ] }, "warnings": { "$ref": "#/$defs/__schema4" }, "as_of": { "anyOf": [ { "$ref": "#/$defs/__schema1" }, { "type": "null" } ] } }, "required": [ "comparison_type", "products", "feature_rows", "price_spread_eur", "postal_code", "warnings", "as_of" ] }, { "type": "null" } ] }, "basket": { "anyOf": [ { "type": "object", "properties": { "schema_version": { "$ref": "#/$defs/__schema0" }, "as_of": { "$ref": "#/$defs/__schema1" }, "currency": { "$ref": "#/$defs/__schema2" }, "locale": { "$ref": "#/$defs/__schema3" }, "warnings": { "$ref": "#/$defs/__schema4" }, "preferred_plan": { "anyOf": [ { "type": "string", "enum": [ "cheapest", "fewer_merchants", "balanced" ] }, { "type": "null" } ] }, "methodology_id": { "type": "string", "maxLength": 100, "pattern": "^[a-z][a-z0-9_]*_v[1-9][0-9]*$", "description": "Basket planning method. Currently bestprice_basket_bounded_v1; a revised method is returned as a new _v id without a tools/list change." }, "plans": { "maxItems": 3, "type": "array", "items": { "$ref": "#/$defs/__schema44" } }, "unavailable_items": { "maxItems": 20, "type": "array", "items": { "$ref": "#/$defs/__schema7" } } }, "required": [ "schema_version", "as_of", "currency", "locale", "warnings", "preferred_plan", "methodology_id", "plans", "unavailable_items" ] }, { "type": "null" } ] }, "basket_request": { "anyOf": [ { "type": "object", "properties": { "version": { "type": "string", "pattern": "^bestprice_basket_request_v[1-9][0-9]*$", "description": "Basket request version. Currently bestprice_basket_request_v1; a later bestprice_basket_request_v is returned without a tools/list change." }, "requested_slots": { "maxItems": 20, "type": "array", "items": { "$ref": "#/$defs/__schema48" } }, "resolved_slots": { "maxItems": 20, "type": "array", "items": { "$ref": "#/$defs/__schema50" } }, "unresolved_slots": { "maxItems": 20, "type": "array", "items": { "$ref": "#/$defs/__schema52" } }, "total_budget_eur": { "anyOf": [ { "type": "number", "exclusiveMinimum": 0, "maximum": 1000000 }, { "type": "null" } ] } }, "required": [ "version", "requested_slots", "resolved_slots", "unresolved_slots", "total_budget_eur" ] }, { "type": "null" } ] }, "clarifications": { "maxItems": 3, "type": "array", "items": { "$ref": "#/$defs/__schema53" } }, "price_verdict": { "type": "object", "properties": { "verdict": { "type": "string", "enum": [ "good", "typical", "high", "insufficient_evidence" ] }, "reason": { "type": "string", "maxLength": 100 }, "source_ids": { "maxItems": 32, "type": "array", "items": { "$ref": "#/$defs/__schema54" } }, "predicts_future_price": { "type": "boolean", "const": false } }, "required": [ "verdict", "reason", "source_ids", "predicts_future_price" ] }, "next_action": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "compare", "create_alert", "provide_context" ], "description": "Advisory step for the shopper, never an action for the agent. compare: review current offers at bestprice_url. create_alert: the current price is above its typical 180-day price; the shopper may set a price alert on the BestPrice page at bestprice_url (no tool creates alerts). provide_context: the request needs a change or more detail from the shopper." }, "reason": { "type": "string", "maxLength": 100 }, "requires_user_action": { "type": "boolean", "const": true }, "bestprice_url": { "anyOf": [ { "$ref": "#/$defs/__schema34" }, { "type": "null" } ] } }, "required": [ "type", "reason", "requires_user_action", "bestprice_url" ] }, "ranking_policy": { "type": "object", "properties": { "version": { "type": "string", "pattern": "^bestprice_shopping_policy_v[1-9][0-9]*$", "description": "Ranking policy version. Currently bestprice_shopping_policy_v1; a later bestprice_shopping_policy_v is returned without a tools/list change." }, "product": { "type": "string", "maxLength": 100, "pattern": "^[a-z][a-z0-9_]*$", "description": "Product ranking rule. Known values: hard_constraints_then_fit_and_marginal_value. New values are added without a tools/list change." }, "merchant": { "type": "string", "maxLength": 100, "pattern": "^[a-z][a-z0-9_]*$", "description": "Merchant ranking rule. Known values: lowest_known_comparable_cost, basket_objective. New values are added without a tools/list change." }, "commercial_signals_used": { "type": "boolean", "const": false } }, "required": [ "version", "product", "merchant", "commercial_signals_used" ] }, "retrieval": { "type": "object", "properties": { "scope": { "type": "string", "enum": [ "returned_page", "exact_products", "not_searched" ] }, "candidate_count": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 }, "complete_catalog": { "type": "boolean", "const": false }, "search_calls": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 }, "receipt": { "anyOf": [ { "type": "object", "properties": { "version": { "type": "string", "pattern": "^bestprice_retrieval_v[1-9][0-9]*$", "description": "Retrieval receipt version. Currently bestprice_retrieval_v1; a later bestprice_retrieval_v is returned without a tools/list change." }, "policy": { "type": "string", "maxLength": 100, "pattern": "^[a-z][a-z0-9_]*_v[1-9][0-9]*$", "description": "Catalog retrieval policy. Currently single_catalog_page_v1; a revised method is returned as a new _v id without a tools/list change." }, "backend": { "type": "string", "maxLength": 100, "pattern": "^[a-z][a-z0-9_]*(?:\\.[a-z][a-z0-9_-]*)*$", "description": "Catalog search backend that served the page. Known values: n.products.search, bp.search. New values are added without a tools/list change." }, "checked_at": { "$ref": "#/$defs/__schema55" }, "source_observed_at": { "anyOf": [ { "$ref": "#/$defs/__schema55" }, { "type": "null" } ] }, "search_calls": { "type": "integer", "exclusiveMinimum": 0, "maximum": 9007199254740991, "description": "Catalog searches the retrieval policy made; currently always 1." }, "trinity_calls": { "anyOf": [ { "type": "integer", "minimum": 0, "maximum": 9007199254740991 }, { "type": "null" } ] }, "page": { "type": "integer", "exclusiveMinimum": 0, "maximum": 9007199254740991 }, "page_size": { "type": "integer", "exclusiveMinimum": 0, "maximum": 9007199254740991 }, "catalog_total": { "anyOf": [ { "type": "integer", "minimum": 0, "maximum": 9007199254740991 }, { "type": "null" } ] }, "candidate_count": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 }, "eligible_count": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 }, "returned_count": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 }, "category_id": { "anyOf": [ { "type": "integer", "exclusiveMinimum": 0, "maximum": 9007199254740991 }, { "type": "null" } ] }, "protected_term_mismatch": { "type": "boolean" }, "ranking_scope": { "type": "string", "const": "returned_page" } }, "required": [ "version", "policy", "backend", "checked_at", "source_observed_at", "search_calls", "trinity_calls", "page", "page_size", "catalog_total", "candidate_count", "eligible_count", "returned_count", "category_id", "protected_term_mismatch", "ranking_scope" ] }, { "type": "null" } ] } }, "required": [ "scope", "candidate_count", "complete_catalog", "search_calls", "receipt" ] }, "shopping_context": { "type": "object", "properties": { "version": { "type": "string", "pattern": "^bestprice_shopping_context_v[1-9][0-9]*$", "description": "Shopping-context projection version. Currently bestprice_shopping_context_v29; a later bestprice_shopping_context_v is returned without a tools/list change." }, "products": { "maxItems": 48, "type": "array", "items": { "$ref": "#/$defs/__schema56" } }, "market": { "maxItems": 48, "type": "array", "items": { "$ref": "#/$defs/__schema61" } } }, "required": [ "version", "products", "market" ] }, "search_handoff": { "type": "object", "properties": { "url": { "type": "string", "format": "uri" }, "label": { "type": "string", "minLength": 1, "maxLength": 120 } }, "required": [ "url", "label" ] }, "catalog_candidates": { "type": "object", "properties": { "basis": { "$ref": "#/$defs/__schema67" }, "note": { "$ref": "#/$defs/__schema68" }, "query": { "$ref": "#/$defs/__schema69" }, "price_min_eur": { "$ref": "#/$defs/__schema70" }, "price_max_eur": { "$ref": "#/$defs/__schema71" }, "products": { "$ref": "#/$defs/__schema72" } }, "required": [ "basis", "note", "query", "price_min_eur", "price_max_eur", "products" ], "description": "Present only on a no_match that returns no product: one bounded BestPrice catalog search page for the request, with signed product links. Search results, not a recommendation; the Shopping Brain did not rank or verify them against the request." }, "evidence": { "type": "object", "properties": { "scope": { "type": "string", "const": "returned_products" }, "detail": { "type": "string", "const": "summary" }, "note": { "type": "string", "maxLength": 400 }, "omitted_claim_count": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 }, "omitted_source_count": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 }, "sources": { "maxItems": 256, "type": "array", "items": { "$ref": "#/$defs/__schema75" } }, "claims": { "maxItems": 2048, "type": "array", "items": { "$ref": "#/$defs/__schema76" } } }, "required": [ "scope", "sources", "claims" ] }, "uncertainty": { "maxItems": 64, "type": "array", "items": { "$ref": "#/$defs/__schema79" } } }, "required": [ "schema_version", "as_of", "currency", "locale", "warnings", "brain", "outcome", "status", "answer", "reason", "message", "blocking_constraints", "recommended_product_id", "alternatives", "products", "constraints", "reasons", "tradeoffs", "offer_summary", "comparison", "basket", "basket_request", "clarifications", "price_verdict", "next_action", "ranking_policy", "retrieval", "shopping_context", "evidence", "uncertainty" ] }, { "type": "object", "properties": { "schema_version": { "$ref": "#/$defs/__schema0" }, "as_of": { "$ref": "#/$defs/__schema1" }, "currency": { "$ref": "#/$defs/__schema2" }, "locale": { "$ref": "#/$defs/__schema3" }, "warnings": { "$ref": "#/$defs/__schema4" }, "error": { "type": "object", "properties": { "code": { "type": "string", "pattern": "^[A-Z][A-Z0-9_]{2,63}$" }, "message": { "type": "string", "minLength": 1, "maxLength": 240 }, "retryable": { "type": "boolean" } }, "required": [ "code", "message", "retryable" ] } }, "required": [ "schema_version", "as_of", "currency", "locale", "warnings", "error" ] } ], "$defs": { "__schema0": { "type": "string", "pattern": "^[1-9][0-9]*\\.[0-9]+$", "description": "Result schema version. Currently 2.0; a later . is returned without a tools/list change." }, "__schema1": { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" }, "__schema2": { "type": "string", "const": "EUR" }, "__schema3": { "type": "string", "const": "el-GR" }, "__schema4": { "maxItems": 20, "type": "array", "items": { "$ref": "#/$defs/__schema5" } }, "__schema5": { "type": "string", "minLength": 1, "maxLength": 240 }, "__schema6": { "type": "string", "maxLength": 200 }, "__schema7": { "type": "string", "pattern": "^bp_[0-9]{10}$" }, "__schema8": { "type": "object", "properties": { "product_id": { "$ref": "#/$defs/__schema7" }, "label": { "type": "string", "maxLength": 240 }, "tradeoff": { "anyOf": [ { "type": "string", "maxLength": 500 }, { "type": "null" } ] }, "requires_constraint_change": { "type": "boolean" }, "offer_summary": { "$ref": "#/$defs/__schema9" } }, "required": [ "product_id", "label", "tradeoff", "requires_constraint_change", "offer_summary" ] }, "__schema9": { "anyOf": [ { "type": "object", "properties": { "postal_code": { "anyOf": [ { "$ref": "#/$defs/__schema10" }, { "type": "null" } ] }, "price_basis": { "type": "string", "enum": [ "item_price", "delivered_total" ] }, "affordability": { "type": "string", "enum": [ "unknown", "not_requested", "over_budget", "within_delivered_budget", "within_item_budget_delivery_unknown" ] }, "offer_scope": { "type": "string", "const": "returned_sample" }, "delivery_affordability_proven": { "type": "boolean" }, "recommended": { "anyOf": [ { "$ref": "#/$defs/__schema11" }, { "type": "null" } ] }, "cheapest": { "anyOf": [ { "$ref": "#/$defs/__schema11" }, { "type": "null" } ] }, "same_offer": { "type": "boolean" }, "recommendation_reason": { "anyOf": [ { "type": "string", "maxLength": 240 }, { "type": "null" } ] }, "budget_eur": { "anyOf": [ { "type": "number", "minimum": 0 }, { "type": "null" } ] }, "recommended_within_budget": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ] }, "cheapest_within_budget": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ] }, "compared_offer_count": { "type": "integer", "minimum": 0, "maximum": 10 }, "unknown_shipping_count": { "type": "integer", "minimum": 0, "maximum": 10 } }, "required": [ "postal_code", "price_basis", "recommended", "cheapest", "same_offer", "recommendation_reason", "budget_eur", "recommended_within_budget", "cheapest_within_budget", "compared_offer_count", "unknown_shipping_count" ] }, { "type": "null" } ] }, "__schema10": { "type": "string", "pattern": "^(?:[1-7][0-9]{4}|8[0-5][0-9]{3})$" }, "__schema11": { "type": "object", "properties": { "offer_id": { "type": "string", "pattern": "^bp_offer_[0-9]+$" }, "merchant_id": { "anyOf": [ { "type": "string", "pattern": "^bp_merchant_[0-9]+$" }, { "type": "null" } ] }, "merchant_name": { "$ref": "#/$defs/__schema12" }, "merchant_logo_url": { "description": "BestPrice CDN logo of the store; null when the store has none.", "$ref": "#/$defs/__schema13" }, "merchant_rating": { "$ref": "#/$defs/__schema14" }, "merchant_rating_count": { "$ref": "#/$defs/__schema15" }, "verified_merchant": { "$ref": "#/$defs/__schema16" }, "certification_level": { "$ref": "#/$defs/__schema17" }, "item_price": { "$ref": "#/$defs/__schema19" }, "shipping_price": { "$ref": "#/$defs/__schema21" }, "shipping_status": { "$ref": "#/$defs/__schema23" }, "shipping_unknown_cause": { "description": "Why shipping is unknown: missing when the store published no usable shipping cost, invalid when it published one this service refuses to trust. Null whenever shipping_status is known or estimated.", "$ref": "#/$defs/__schema24" }, "total_price": { "$ref": "#/$defs/__schema25" }, "availability": { "$ref": "#/$defs/__schema26" }, "condition": { "type": "string", "maxLength": 100, "pattern": "^[a-z][a-z0-9_]*$", "description": "Item condition; treat an unrecognized value as unknown. Known values: new, refurbished, used, open_box, unknown. New values are added without a tools/list change." }, "bundle_status": { "type": "string", "enum": [ "single", "bundle", "unknown" ] }, "delivery_estimate": { "$ref": "#/$defs/__schema27" }, "price_checked_at": { "anyOf": [ { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$" }, { "type": "null" } ] } }, "required": [ "offer_id", "merchant_id", "merchant_name", "merchant_rating", "merchant_rating_count", "verified_merchant", "item_price", "shipping_price", "shipping_status", "total_price", "availability", "condition", "bundle_status", "delivery_estimate", "price_checked_at" ] }, "__schema12": { "type": "string", "minLength": 1, "maxLength": 100, "description": "Sanitized public BestPrice store name." }, "__schema13": { "anyOf": [ { "type": "string", "format": "uri" }, { "type": "null" } ] }, "__schema14": { "anyOf": [ { "type": "number", "minimum": 0, "maximum": 5 }, { "type": "null" } ] }, "__schema15": { "anyOf": [ { "type": "integer", "minimum": 0, "maximum": 9007199254740991 }, { "type": "null" } ] }, "__schema16": { "type": "boolean", "description": "True when this is a BestPrice-certified store (Πιστοποιημένο κατάστημα)." }, "__schema17": { "description": "BestPrice certification tier of the store (php/classes/Merchant.php verification_level 1..4); null when not certified.", "$ref": "#/$defs/__schema18" }, "__schema18": { "anyOf": [ { "type": "string", "enum": [ "bronze", "silver", "gold", "platinum" ] }, { "type": "null" } ] }, "__schema19": { "description": "Current item price in EUR before shipping.", "$ref": "#/$defs/__schema20" }, "__schema20": { "type": "number", "minimum": 0, "maximum": 10000000 }, "__schema21": { "description": "Known or estimated shipping price in EUR; null means unknown.", "$ref": "#/$defs/__schema22" }, "__schema22": { "anyOf": [ { "$ref": "#/$defs/__schema20" }, { "type": "null" } ] }, "__schema23": { "type": "string", "enum": [ "known", "estimated", "unknown" ] }, "__schema24": { "anyOf": [ { "type": "string", "enum": [ "missing", "invalid" ] }, { "type": "null" } ] }, "__schema25": { "description": "Delivered total in EUR; null whenever shipping is unknown.", "$ref": "#/$defs/__schema22" }, "__schema26": { "type": "string", "maxLength": 100, "pattern": "^[a-z][a-z0-9_]*$", "description": "Offer availability; treat an unrecognized value as unknown. Known values: in_stock, delivery_1_3_days, delivery_4_7_days, delivery_4_10_days, delivery_8_14_days, by_order, to_order, preorder, out_of_stock, unknown. New values are added without a tools/list change." }, "__schema27": { "anyOf": [ { "type": "string", "minLength": 1, "maxLength": 80 }, { "type": "null" } ] }, "__schema28": { "type": "object", "properties": { "product_id": { "$ref": "#/$defs/__schema7" }, "title": { "$ref": "#/$defs/__schema29" }, "brand": { "$ref": "#/$defs/__schema30" }, "category_title": { "$ref": "#/$defs/__schema31" }, "price_from": { "$ref": "#/$defs/__schema32" }, "decision_id": { "$ref": "#/$defs/__schema33" }, "bestprice_url": { "$ref": "#/$defs/__schema34" }, "image_url": { "$ref": "#/$defs/__schema35" } }, "required": [ "product_id", "title", "brand", "category_title", "price_from", "decision_id", "bestprice_url", "image_url" ] }, "__schema29": { "type": "string", "minLength": 1, "maxLength": 220 }, "__schema30": { "anyOf": [ { "type": "string", "minLength": 1, "maxLength": 80 }, { "type": "null" } ] }, "__schema31": { "anyOf": [ { "type": "string", "minLength": 1, "maxLength": 100 }, { "type": "null" } ] }, "__schema32": { "description": "Catalog lowest listed item price in EUR before shipping. Same identity as compare_offers.catalog_price_from. Not a buyable quote; it may be a promoted, out-of-stock, or filtered offer that compare_offers omits. Never subtract this from another product compare_offers item_price.", "$ref": "#/$defs/__schema22" }, "__schema33": { "type": "string", "pattern": "^d1\\.[a-f0-9]{32}\\.[A-Za-z0-9_-]{43}$", "description": "Signed, anonymous id joining this recommendation to its BestPrice landing and outbound-click telemetry." }, "__schema34": { "type": "string", "format": "uri" }, "__schema35": { "anyOf": [ { "type": "string", "format": "uri" }, { "type": "null" } ] }, "__schema36": { "type": "string" }, "__schema37": {}, "__schema38": { "type": "string" }, "__schema39": { "type": "string" }, "__schema40": { "type": "object", "properties": { "product_id": { "$ref": "#/$defs/__schema7" }, "badges": { "maxItems": 4, "type": "array", "items": { "$ref": "#/$defs/__schema41" } }, "delivered_offer": { "anyOf": [ { "type": "object", "properties": { "merchant_name": { "$ref": "#/$defs/__schema12" }, "merchant_rating": { "$ref": "#/$defs/__schema14" }, "merchant_rating_count": { "$ref": "#/$defs/__schema15" }, "verified_merchant": { "$ref": "#/$defs/__schema16" }, "certification_level": { "$ref": "#/$defs/__schema17" }, "item_price": { "$ref": "#/$defs/__schema19" }, "shipping_price": { "$ref": "#/$defs/__schema21" }, "shipping_status": { "$ref": "#/$defs/__schema23" }, "total_price": { "$ref": "#/$defs/__schema25" }, "availability": { "$ref": "#/$defs/__schema26" }, "delivery_estimate": { "$ref": "#/$defs/__schema27" }, "postal_code": { "anyOf": [ { "$ref": "#/$defs/__schema10" }, { "type": "null" } ] } }, "required": [ "merchant_name", "merchant_rating", "merchant_rating_count", "verified_merchant", "item_price", "shipping_price", "shipping_status", "total_price", "availability", "delivery_estimate", "postal_code" ] }, { "type": "null" } ] } }, "required": [ "product_id", "badges", "delivered_offer" ] }, "__schema41": { "type": "string", "maxLength": 100 }, "__schema42": { "type": "object", "properties": { "id": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, "label": { "type": "string", "maxLength": 100 }, "group": { "anyOf": [ { "type": "string", "maxLength": 80 }, { "type": "null" } ] }, "values": { "maxItems": 4, "type": "array", "items": { "$ref": "#/$defs/__schema43" } }, "differs": { "type": "boolean" } }, "required": [ "id", "label", "group", "values", "differs" ] }, "__schema43": { "type": "object", "properties": { "product_id": { "$ref": "#/$defs/__schema7" }, "value": { "anyOf": [ { "type": "string", "maxLength": 2000 }, { "type": "null" } ] } }, "required": [ "product_id", "value" ] }, "__schema44": { "type": "object", "properties": { "plan_type": { "type": "string", "enum": [ "cheapest", "fewer_merchants", "balanced" ] }, "merchant_count": { "type": "integer", "exclusiveMinimum": 0, "maximum": 8 }, "item_subtotal": { "$ref": "#/$defs/__schema20" }, "shipping_total": { "$ref": "#/$defs/__schema22" }, "shipping_status": { "type": "string", "enum": [ "known", "estimated", "unknown", "mixed" ] }, "total_price": { "$ref": "#/$defs/__schema22" }, "reliability_score": { "anyOf": [ { "type": "number", "minimum": 0, "maximum": 5 }, { "type": "null" } ] }, "ranking_reason": { "type": "string", "minLength": 1, "maxLength": 180 }, "merchants": { "minItems": 1, "maxItems": 8, "type": "array", "items": { "$ref": "#/$defs/__schema45" } } }, "required": [ "plan_type", "merchant_count", "item_subtotal", "shipping_total", "shipping_status", "total_price", "reliability_score", "ranking_reason", "merchants" ] }, "__schema45": { "type": "object", "properties": { "merchant_id": { "type": "string", "pattern": "^bp_merchant_[0-9]+$" }, "merchant_name": { "type": "string", "minLength": 1, "maxLength": 100 }, "merchant_rating": { "anyOf": [ { "type": "number", "minimum": 0, "maximum": 5 }, { "type": "null" } ] }, "verified_merchant": { "type": "boolean", "description": "True when this is a BestPrice-certified store (Πιστοποιημένο κατάστημα)." }, "certification_level": { "description": "BestPrice certification tier of the store (php/classes/Merchant.php verification_level 1..4); null when not certified.", "$ref": "#/$defs/__schema46" }, "item_subtotal": { "$ref": "#/$defs/__schema20" }, "shipping_price": { "$ref": "#/$defs/__schema22" }, "shipping_status": { "type": "string", "enum": [ "known", "estimated", "unknown" ] }, "total_price": { "$ref": "#/$defs/__schema22" }, "reason": { "type": "string", "minLength": 1, "maxLength": 100 }, "items": { "minItems": 1, "maxItems": 20, "type": "array", "items": { "$ref": "#/$defs/__schema47" } } }, "required": [ "merchant_id", "merchant_name", "merchant_rating", "verified_merchant", "item_subtotal", "shipping_price", "shipping_status", "total_price", "reason", "items" ] }, "__schema46": { "anyOf": [ { "type": "string", "enum": [ "bronze", "silver", "gold", "platinum" ] }, { "type": "null" } ] }, "__schema47": { "type": "object", "properties": { "product_id": { "$ref": "#/$defs/__schema7" }, "title": { "type": "string", "minLength": 1, "maxLength": 220 }, "quantity": { "type": "integer", "exclusiveMinimum": 0, "maximum": 9007199254740991 }, "unit_price": { "$ref": "#/$defs/__schema20" }, "line_total": { "$ref": "#/$defs/__schema20" }, "decision_id": { "$ref": "#/$defs/__schema33" }, "bestprice_url": { "$ref": "#/$defs/__schema34" } }, "required": [ "product_id", "title", "quantity", "unit_price", "line_total", "decision_id", "bestprice_url" ] }, "__schema48": { "type": "object", "properties": { "slot_id": { "type": "string", "pattern": "^slot_[1-9][0-9]?$" }, "family": { "$ref": "#/$defs/__schema49" }, "label": { "type": "string", "minLength": 1, "maxLength": 80 }, "quantity": { "type": "integer", "minimum": 1, "maximum": 20 }, "requirements": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} } }, "required": [ "slot_id", "family", "label", "quantity", "requirements" ] }, "__schema49": { "type": "string", "maxLength": 100, "pattern": "^[a-z][a-z0-9_]*$", "description": "Ask product family of the basket slot. Known values: air_conditioner, air_fryer, espresso, filter_coffee, headphones, laptop, monitor, mouse, phone, tablet, powerbank, smartwatch, printer, router, refrigerator, tv, vacuum, stick_vacuum, wet_dry_vacuum, washer, accessories, peripherals, dishwasher, consoles, projector, drone, scanner, kettle, toaster, bicycle, fan, blender, mixer, kitchen_machine, microwave, oven, mini_oven, bread_maker, rice_cooker, steamer, grill, teppanyaki, hob, deep_fryer, robot_chef, juicer, waffle, ice_cream_maker, citrus_press, sandwich_maker, crepe_maker, chocolate_fountain, popcorn_maker, donut_maker, sewing_machine, egg_boiler, ice_maker, water_cooler, dehumidifier, humidifier, ionizer, fireplace, wood_stove, pellet_stove, air_curtain, fan_heater, water_heater, halogen_stove, convector, gas_stove, oil_stove, outdoor_stove, infrared_panel, foldable_phone, robot_vacuum, tv_remote, clothes_dryer, washer_dryer, speakers, desktop, freezer, software, games, shoes, books, clothing, beauty, baby_transport, unknown. New values are added without a tools/list change." }, "__schema50": { "type": "object", "properties": { "slot_id": { "type": "string", "pattern": "^slot_[1-9][0-9]?$" }, "family": { "$ref": "#/$defs/__schema49" }, "label": { "type": "string", "minLength": 1, "maxLength": 80 }, "quantity": { "type": "integer", "minimum": 1, "maximum": 20 }, "product_id": { "$ref": "#/$defs/__schema51" }, "catalog_price_eur": { "anyOf": [ { "type": "number", "minimum": 0 }, { "type": "null" } ] }, "selection_reason": { "type": "string", "minLength": 1, "maxLength": 100 } }, "required": [ "slot_id", "family", "label", "quantity", "product_id", "catalog_price_eur", "selection_reason" ] }, "__schema51": { "type": "string", "pattern": "^bp_[0-9]{10}$" }, "__schema52": { "type": "object", "properties": { "slot_id": { "type": "string", "pattern": "^slot_[1-9][0-9]?$" }, "family": { "$ref": "#/$defs/__schema49" }, "label": { "type": "string", "minLength": 1, "maxLength": 80 }, "quantity": { "type": "integer", "minimum": 1, "maximum": 20 }, "reason": { "type": "string", "minLength": 1, "maxLength": 100 }, "candidate_product_id": { "$ref": "#/$defs/__schema51" } }, "required": [ "slot_id", "family", "label", "quantity", "reason" ] }, "__schema53": { "type": "object", "properties": { "question": { "type": "string", "maxLength": 2000 }, "reason": { "type": "string", "maxLength": 100 } }, "required": [ "question", "reason" ] }, "__schema54": { "type": "string" }, "__schema55": { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$" }, "__schema56": { "type": "object", "properties": { "product_id": { "$ref": "#/$defs/__schema51" }, "family": { "type": "string", "maxLength": 100, "pattern": "^[a-z][a-z0-9_]*$", "description": "Catalog attribute family of the product. Known values: laptops, phones, televisions, air_conditioners, air_fryers, espresso_machines, headphones, monitors, mice, refrigerators, vacuums, washing_machines, dishwashers, chairs, tablets, power_banks, smartwatches, printers, routers, desktops, freezers, microwaves, kettles, fans, bicycles, unknown. New values are added without a tools/list change." }, "attributes": { "maxItems": 12, "type": "array", "items": { "$ref": "#/$defs/__schema57" } } }, "required": [ "product_id", "family", "attributes" ] }, "__schema57": { "type": "object", "properties": { "key": { "type": "string", "maxLength": 64 }, "unit": { "anyOf": [ { "type": "string", "maxLength": 32 }, { "type": "null" } ] }, "status": { "type": "string", "enum": [ "known", "unknown", "conflicting" ] }, "value": { "$ref": "#/$defs/__schema58" }, "claim_ids": { "maxItems": 96, "type": "array", "items": { "$ref": "#/$defs/__schema59" } }, "source_ids": { "maxItems": 32, "type": "array", "items": { "$ref": "#/$defs/__schema60" } } }, "required": [ "key", "unit", "status", "value", "claim_ids", "source_ids" ] }, "__schema58": { "anyOf": [ { "type": "string", "maxLength": 2000 }, { "type": "number" }, { "type": "boolean" }, { "type": "null" } ] }, "__schema59": { "type": "string", "maxLength": 160 }, "__schema60": { "type": "string", "maxLength": 160 }, "__schema61": { "type": "object", "properties": { "product_id": { "type": "string", "pattern": "^bp_[0-9]{10}$" }, "offers": { "type": "object", "properties": { "status": { "type": "string", "enum": [ "available", "unavailable", "not_checked", "stale", "unverified" ] }, "scope": { "type": "string", "const": "bounded_returned_offers" }, "offer_count": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 }, "merchant_count": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 }, "merchant_identity_unknown_count": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 }, "explicitly_in_stock_count": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 }, "shipping": { "type": "object", "properties": { "known": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 }, "estimated": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 }, "unknown": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 } }, "required": [ "known", "estimated", "unknown" ] }, "item_price": { "$ref": "#/$defs/__schema62" }, "known_delivered_price": { "$ref": "#/$defs/__schema62" }, "estimated_delivered_price": { "$ref": "#/$defs/__schema62" }, "source_ids": { "$ref": "#/$defs/__schema63" }, "claim_ids": { "$ref": "#/$defs/__schema63" }, "source_count": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 }, "claim_count": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 } }, "required": [ "status", "scope", "offer_count", "merchant_count", "merchant_identity_unknown_count", "explicitly_in_stock_count", "shipping", "item_price", "known_delivered_price", "estimated_delivered_price", "source_ids" ] }, "history": { "type": "object", "properties": { "status": { "type": "string", "enum": [ "available", "unavailable", "not_checked", "stale", "unverified" ] }, "basis": { "type": "string", "const": "daily_item_minimum" }, "windows": { "maxItems": 3, "type": "array", "items": { "$ref": "#/$defs/__schema64" } }, "source_ids": { "$ref": "#/$defs/__schema63" }, "claim_ids": { "$ref": "#/$defs/__schema63" } }, "required": [ "status", "basis", "windows", "source_ids", "claim_ids" ] }, "not_collected": { "maxItems": 32, "type": "array", "items": { "$ref": "#/$defs/__schema66" }, "description": "Offer facts BestPrice does not collect: currently returns_policy, warranty, payment_fees, pickup, merchant_feed_updated_at, guaranteed_postcode_delivery. The list changes as facts are collected, without a tools/list change." }, "compatibility": { "type": "string", "maxLength": 100, "pattern": "^[a-z][a-z0-9_]*$", "description": "Product compatibility assessment. Known values: not_assessed. New values are added without a tools/list change." } }, "required": [ "product_id", "offers", "history", "not_collected", "compatibility" ] }, "__schema62": { "anyOf": [ { "type": "object", "properties": { "minimum": { "type": "number", "minimum": 0 }, "median": { "type": "number", "minimum": 0 }, "maximum": { "type": "number", "minimum": 0 }, "count": { "type": "integer", "exclusiveMinimum": 0, "maximum": 9007199254740991 } }, "required": [ "minimum", "median", "maximum", "count" ] }, { "type": "null" } ] }, "__schema63": { "type": "array", "items": { "type": "string", "maxLength": 160 } }, "__schema64": { "type": "object", "properties": { "days": { "anyOf": [ { "type": "number", "const": 30 }, { "type": "number", "const": 90 }, { "type": "number", "const": 180 } ] }, "minimum_price": { "$ref": "#/$defs/__schema65" }, "median_price": { "$ref": "#/$defs/__schema65" }, "observations": { "anyOf": [ { "type": "integer", "minimum": 0, "maximum": 9007199254740991 }, { "type": "null" } ] }, "coverage_pct": { "anyOf": [ { "type": "number", "minimum": 0, "maximum": 100 }, { "type": "null" } ] }, "claim_ids": { "$ref": "#/$defs/__schema63" } }, "required": [ "days", "minimum_price", "median_price", "observations", "coverage_pct", "claim_ids" ] }, "__schema65": { "anyOf": [ { "type": "number", "minimum": 0 }, { "type": "null" } ] }, "__schema66": { "type": "string", "maxLength": 100, "pattern": "^[a-z][a-z0-9_]*$" }, "__schema67": { "type": "string", "const": "catalog_search_unranked" }, "__schema68": { "type": "string", "maxLength": 400 }, "__schema69": { "type": "string", "minLength": 2, "maxLength": 200 }, "__schema70": { "anyOf": [ { "type": "number", "exclusiveMinimum": 0 }, { "type": "null" } ] }, "__schema71": { "anyOf": [ { "type": "number", "exclusiveMinimum": 0 }, { "type": "null" } ] }, "__schema72": { "minItems": 1, "maxItems": 4, "type": "array", "items": { "$ref": "#/$defs/__schema73" } }, "__schema73": { "type": "object", "properties": { "product_id": { "$ref": "#/$defs/__schema7" }, "title": { "$ref": "#/$defs/__schema29" }, "brand": { "$ref": "#/$defs/__schema30" }, "category_title": { "$ref": "#/$defs/__schema31" }, "price_from": { "$ref": "#/$defs/__schema32" }, "availability": { "type": "string", "enum": [ "available", "unavailable", "unknown" ] }, "offer_count": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 }, "rating": { "anyOf": [ { "$ref": "#/$defs/__schema74" }, { "type": "null" } ], "description": "BestPrice shopper rating for this product: average of count first-party ratings. Null when the product has none." }, "decision_id": { "$ref": "#/$defs/__schema33" }, "bestprice_url": { "$ref": "#/$defs/__schema34" }, "image_url": { "$ref": "#/$defs/__schema35" } }, "required": [ "product_id", "title", "brand", "category_title", "price_from", "availability", "offer_count", "rating", "decision_id", "bestprice_url", "image_url" ] }, "__schema74": { "type": "object", "properties": { "average": { "type": "number", "minimum": 0, "maximum": 5 }, "count": { "type": "integer", "exclusiveMinimum": 0, "maximum": 9007199254740991 } }, "required": [ "average", "count" ] }, "__schema75": { "type": "object", "properties": { "source_id": { "type": "string", "maxLength": 160 }, "kind": { "type": "string", "maxLength": 100, "pattern": "^[a-z][a-z0-9_]*$", "description": "Evidence source kind. Known values: catalog_snapshot, merchant_offer, basket_quote, price_history, review_sample, decision_policy. New values are added without a tools/list change." }, "record_id": { "type": "string", "maxLength": 160 }, "product_id": { "$ref": "#/$defs/__schema51" }, "scope": { "type": "string", "enum": [ "cluster", "offer", "product_family" ] }, "capability": { "type": "string", "maxLength": 40 }, "checked_at": { "$ref": "#/$defs/__schema55" }, "source_observed_at": { "anyOf": [ { "$ref": "#/$defs/__schema55" }, { "type": "null" } ] }, "freshness": { "type": "string", "enum": [ "fresh", "stale", "unknown" ] }, "max_age_seconds": { "type": "integer", "exclusiveMinimum": 0, "maximum": 9007199254740991 } }, "required": [ "source_id", "kind", "record_id", "product_id", "scope", "capability", "checked_at", "source_observed_at", "freshness", "max_age_seconds" ] }, "__schema76": { "type": "object", "properties": { "claim_id": { "type": "string", "maxLength": 160 }, "product_id": { "$ref": "#/$defs/__schema51" }, "field": { "type": "string", "maxLength": 100 }, "value": { "$ref": "#/$defs/__schema58" }, "kind": { "type": "string", "enum": [ "observed", "derived" ] }, "source_ids": { "minItems": 1, "maxItems": 32, "type": "array", "items": { "$ref": "#/$defs/__schema77" } }, "validation": { "type": "string", "maxLength": 100 }, "supporting_claim_ids": { "minItems": 1, "maxItems": 8, "type": "array", "items": { "$ref": "#/$defs/__schema78" } }, "feature": { "type": "object", "properties": { "id": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, "label": { "type": "string", "maxLength": 100 }, "group": { "type": "string", "maxLength": 80 } }, "required": [ "id", "label", "group" ] } }, "required": [ "claim_id", "product_id", "field", "value", "kind", "source_ids", "validation" ] }, "__schema77": { "type": "string", "maxLength": 160 }, "__schema78": { "type": "string", "maxLength": 160 }, "__schema79": { "type": "object", "properties": { "code": { "type": "string", "maxLength": 100 }, "product_id": { "anyOf": [ { "$ref": "#/$defs/__schema51" }, { "type": "null" } ] }, "message": { "type": "string", "maxLength": 500 } }, "required": [ "code", "product_id", "message" ] } } }