fix
This commit is contained in:
@@ -118,8 +118,9 @@ info:
|
||||
- GET /products data[].id = processed_products.id (enriched row)
|
||||
- GET /products data[].raw_product_id = raw_products.id (use this for raw_product_ids)
|
||||
- POST ... raw_product_ids[] must be raw_products.id — never PresentProduct.id
|
||||
- GET /products/process/{id} COMPLETED items[].id = processed_products.id (legacy);
|
||||
additive processed_product_id (same as id) and raw_product_id (raw_products.id)
|
||||
- GET /products/process/{id} COMPLETED items[] omit internal UUIDs (id /
|
||||
processed_product_id / raw_product_id). Use GET /products when a UUID is needed.
|
||||
Display name is items[].name (title omitted when identical).
|
||||
|
||||
Note: Dashboard JSON under /api/* uses session cookies + CSRF and is separate
|
||||
from this public API-key surface. Other legacy path aliases
|
||||
@@ -895,9 +896,10 @@ paths:
|
||||
Completed jobs return items[] (EAN-keyed enrichment). In-progress and failed
|
||||
jobs omit items. Not the same shape as GET /process/{id} (flat ProcessingJob).
|
||||
|
||||
On COMPLETED items, id is the processed_products UUID (legacy). Additive aliases:
|
||||
processed_product_id (same value as id), raw_product_id (raw_products.id), and
|
||||
name (same value as title) for dual-mode clients / scorecards.
|
||||
On COMPLETED items, name is the product display name (title is omitted when
|
||||
identical). Internal UUIDs (id / processed_product_id / raw_product_id) are
|
||||
omitted — use GET /products for those. A1 cohort / Platform Demo / A1-prompt
|
||||
companies omit meta_title and meta_description even if stored.
|
||||
parameters:
|
||||
- name: id
|
||||
in: path
|
||||
@@ -925,17 +927,11 @@ paths:
|
||||
processing_type: full
|
||||
items:
|
||||
- ean: '8606019604493'
|
||||
id: bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb
|
||||
processed_product_id: bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb
|
||||
raw_product_id: cccccccc-cccc-cccc-cccc-cccccccccccc
|
||||
status: processed
|
||||
category: Cookers
|
||||
category_id: '50'
|
||||
category_name: Cookers
|
||||
title: VOX electric cooker EHT 6020 WG
|
||||
name: VOX electric cooker EHT 6020 WG
|
||||
meta_title: VOX electric cooker EHT 6020 WG | 50
|
||||
meta_description: Affordable electric cooker with four plates and a 65 L fan oven.
|
||||
description: "Vox Electronics electric cooker EHT 6020 WG offers strong value with four electric hobs and a 65 L fan oven."
|
||||
attributes:
|
||||
brand: Vox
|
||||
@@ -6207,12 +6203,24 @@ components:
|
||||
process_id:
|
||||
type: string
|
||||
format: uuid
|
||||
status:
|
||||
type: string
|
||||
description: |
|
||||
Job lifecycle status on enqueue. Always pending (or processing if the
|
||||
worker already picked it up). Never COMPLETED on start — poll GET
|
||||
/products/process/{id} for completion.
|
||||
example: pending
|
||||
message:
|
||||
type: string
|
||||
total_items:
|
||||
type: integer
|
||||
description: Number of products accepted into the job (enqueue size).
|
||||
processed_items:
|
||||
type: integer
|
||||
description: |
|
||||
Count of items that finished processing. Always 0 on start while the
|
||||
job is pending/processing; increments as the worker completes products.
|
||||
example: 0
|
||||
job_count:
|
||||
type: integer
|
||||
description: Present when StartJob auto-splits
|
||||
@@ -6282,35 +6290,19 @@ components:
|
||||
expose category as the human-readable display name (category_id holds
|
||||
categories.unique_id), a description string that may include category formula
|
||||
HTML (h1/h2/h3/h4, p, ul — never a JSON array), optional SEO meta_title /
|
||||
meta_description (plain text; omitted for A1 cohort), optional eprel object or
|
||||
null, clean attributes, images, and dual-mode ids.
|
||||
Product display name is title; additive name mirrors the same processed title
|
||||
(dual-mode for scorecards / legacy clients that read name).
|
||||
Property order prefers human-readable fields first (ean, title, category,
|
||||
description, attributes, images, eprel) with internal ids last.
|
||||
meta_description (plain text; omitted for A1 cohort, Platform Demo, and any
|
||||
company with A1-style category role-section prompts — even if stored in DB),
|
||||
optional eprel object or null, clean attributes, and images.
|
||||
Product display name is name (primary). title is omitted when identical to name.
|
||||
Internal UUIDs (id, processed_product_id, raw_product_id) are omitted from this
|
||||
public shape — use catalog APIs when a product UUID is required.
|
||||
Property order prefers human-readable fields first (ean, name, category,
|
||||
description, attributes, images, eprel).
|
||||
required:
|
||||
- ean
|
||||
properties:
|
||||
ean:
|
||||
type: string
|
||||
id:
|
||||
type: string
|
||||
format: uuid
|
||||
description: |
|
||||
Legacy field: processed_products.id when enrichment succeeded.
|
||||
Do not treat as raw_products.id. Same value as processed_product_id.
|
||||
processed_product_id:
|
||||
type: string
|
||||
format: uuid
|
||||
description: |
|
||||
Explicit alias of id (processed_products.id). Prefer this name in new
|
||||
dual-mode clients; id remains for backward compatibility.
|
||||
raw_product_id:
|
||||
type: string
|
||||
format: uuid
|
||||
description: |
|
||||
raw_products.id for this job line. Use with POST /process raw_product_ids
|
||||
or dashboard catalog APIs. Present whenever the job product row exists.
|
||||
category:
|
||||
type: string
|
||||
nullable: true
|
||||
@@ -6330,32 +6322,32 @@ components:
|
||||
nullable: true
|
||||
description: |
|
||||
Human-readable category display name (mirrors category when both are set).
|
||||
title:
|
||||
type: string
|
||||
nullable: true
|
||||
description: |
|
||||
Product display name (processed title). Primary legacy field; same value
|
||||
as name when present.
|
||||
name:
|
||||
type: string
|
||||
nullable: true
|
||||
description: |
|
||||
Additive alias of title (same processed display name). Prefer title in
|
||||
new clients; name remains for scorecards and legacy readers.
|
||||
Product display name (processed title). Primary field for clients.
|
||||
title:
|
||||
type: string
|
||||
nullable: true
|
||||
description: |
|
||||
Optional legacy alias of name. Omitted when identical to name.
|
||||
meta_title:
|
||||
type: string
|
||||
nullable: true
|
||||
description: |
|
||||
SEO title. Filled from processing meta or synthesized from title / category
|
||||
when empty so successful items are not left with null meta.
|
||||
Omitted for A1 cohort (SEO meta is not used).
|
||||
Omitted for A1 cohort, Platform Demo, and companies with A1-style category
|
||||
prompts (SEO meta is not used).
|
||||
meta_description:
|
||||
type: string
|
||||
nullable: true
|
||||
description: |
|
||||
SEO description (word-safe truncate). Distinct from body description when
|
||||
possible; synthesized from plain description when DB meta is empty.
|
||||
Omitted for A1 cohort (SEO meta is not used).
|
||||
Omitted for A1 cohort, Platform Demo, and companies with A1-style category
|
||||
prompts (SEO meta is not used).
|
||||
description:
|
||||
type: string
|
||||
nullable: true
|
||||
@@ -6477,17 +6469,11 @@ components:
|
||||
processing_type: full
|
||||
items:
|
||||
- ean: '8606019604493'
|
||||
id: bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb
|
||||
processed_product_id: bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb
|
||||
raw_product_id: cccccccc-cccc-cccc-cccc-cccccccccccc
|
||||
status: processed
|
||||
category: Cookers
|
||||
category_id: '50'
|
||||
category_name: Cookers
|
||||
title: VOX electric cooker EHT 6020 WG
|
||||
name: VOX electric cooker EHT 6020 WG
|
||||
meta_title: VOX electric cooker EHT 6020 WG | 50
|
||||
meta_description: Affordable electric cooker with four plates and a 65 L fan oven.
|
||||
description: "Vox Electronics electric cooker EHT 6020 WG offers strong value with four electric hobs and a 65 L fan oven. Energy class A with practical everyday capacity."
|
||||
attributes:
|
||||
brand: Vox
|
||||
|
||||
Reference in New Issue
Block a user