{"items":[{"type":"link","label":"Mercura API","link":"/openapi","routeSlug":"/openapi","content":{"contentType":"overview","meta":{"name":"Mercura API"},"children":[{"nodeType":"container","panels":[{"title":"Download OpenAPI description","titleTranslationKey":"download.description.title","children":[{"kind":"download","label":"openapi.json","url":"/_bundle/openapi.json?download"},{"kind":"download","label":"openapi.yaml","url":"/_bundle/openapi.yaml?download"}]},{"title":"Overview","titleTranslationKey":"info.title","children":[]},{"title":"Languages","titleTranslationKey":"languages.title","children":[{"kind":"languages","options":[{"key":"curl","title":"curl","lang":"curl"},{"key":"javascript","title":"JavaScript","lang":"JavaScript"},{"key":"node","title":"Node.js","lang":"Node.js"},{"key":"python","title":"Python","lang":"Python"},{"key":"java","title":"Java","lang":"Java"},{"key":"csharp","title":"C#","lang":"C#"},{"key":"php","title":"PHP","lang":"PHP"},{"key":"go","title":"Go","lang":"Go"},{"key":"ruby","title":"Ruby","lang":"Ruby"},{"key":"r","title":"R","lang":"R"},{"key":"payload","title":"Payload","lang":"Payload"}]}]},{"title":"Servers","titleTranslationKey":"servers.title","children":[{"kind":"servers","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"mode":"default"}]}],"children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"header","level":1,"label":"Mercura API (1.33.0)","showPageActions":true},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[]}],"sectionId":"/openapi"}],"sectionId":"/openapi"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":1,"id":"section/getting-started"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Getting Started"},"children":[]}]}]}]}],"sectionId":"/openapi/section/getting-started"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"section/getting-started/what-this-api-is"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"What this API is"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Mercura"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is an AI-powered platform for processing inquiries — bills"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"of materials, tenders, RFQs — in wholesale distribution, manufacturing,"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"and technical sales. The "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Mercura API"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is the integration surface"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"your organisation uses to plug Mercura into the rest of your software"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"landscape."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The API is bidirectional by design:"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Master data flows in"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — your articles, customers, and suppliers"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"are pushed into Mercura so that incoming inquiries can be processed"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"against them."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Structured offers flow out"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — each inquiry, once Mercura has read"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"the LV, captured the positions, and matched each one to an article"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"from your catalogue, is returned as a fully structured offer ready"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"for your downstream system to pick up."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The source system on your side does not have to be a specific ERP. Any"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"system that owns master data — an ERP, a PIM, a custom catalogue, a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"spreadsheet export pipeline — can be the integration partner."},"children":[]}]}]}]}],"sectionId":"/openapi/section/getting-started/what-this-api-is"}],"sectionId":"/openapi/section/getting-started/what-this-api-is"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"section/getting-started/main-use-case"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Main use case"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The end-to-end flow is four steps:"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":true,"marker":"."},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Push master data."},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /articles"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /customers"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", and"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /suppliers"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" accept bulk payloads of up to 100,000 rows each"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"and return a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"JobAck"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" immediately. Sending one large request per"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"resource is preferred over many small ones."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Get notified when the jobs finish."},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Each "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" returns a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"job_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". The recommended path is a "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"webhook"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": register a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"subscription once (admin UI, see "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Webhooks"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" below) and Mercura"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"delivers a signed "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"job.finished"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" event to your endpoint as soon"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"as the job reaches a terminal state. If a webhook receiver is not"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"an option, fall back to polling "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /jobs/{job_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Read completed tenders and orders back."},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" This is the payoff. A"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"tender.completed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (or "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"order.completed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") webhook fires the moment a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Mercura user releases a record to your system (the "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Finalize"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" /"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Export → API action) — your endpoint then calls "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /tenders/{tender_id}"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"(or "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /orders/{order_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") to pull the full structured record"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"(positions, matched articles, quantities, prices, totals)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /tenders"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /orders"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" are the cursor-paginated list views"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"for catch-up scans; pass "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"?completed_since=…"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for the completion feed."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Acknowledge the import."},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Once the record is committed to your"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"ERP/CRM, "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /tenders/{tender_id}/acknowledgements"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (or"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"/orders/{order_id}/acknowledgements"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status: \"SUCCESS\""},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"your ERP document id in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"external_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — Mercura stores it on the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"record's "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"erp_offer_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (latest-wins) and surfaces the outcome in the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"app. Report "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status: \"FAILED\""},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" with a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"message"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when the import is"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"rejected."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A typical integration runs step 1 nightly (delta-sync new and changed"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"master-data rows) and reacts to "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"tender.completed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"order.completed"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"webhooks in step 3 to drive new offers into the downstream system in"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"real-time, acknowledging each import in step 4."},"children":[]}]}]}]}],"sectionId":"/openapi/section/getting-started/main-use-case"}],"sectionId":"/openapi/section/getting-started/main-use-case"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"section/getting-started/integration-patterns:-webhook-vs-polling"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Integration patterns: webhook vs polling"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Steps 3–4 above can be driven two ways. "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Webhook (push)"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"recommended path — Mercura notifies your endpoint the instant a tender"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"or order completes, so you react in real time. "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Polling (pull)"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"fallback when your side cannot expose an inbound HTTPS endpoint — you"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"scan the completion feed on a schedule. Both end the same way: fetch the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"full record, write it to your ERP/CRM, and acknowledge the import."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The sequences below show the "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"tender"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" flow. "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Orders are identical"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" —"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"swap "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"tender.completed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" → "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"order.completed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /tenders/{id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" →"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /orders/{id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", and the acknowledgements path."},"children":[]}]}]}]}],"sectionId":"/openapi/section/getting-started/integration-patterns:-webhook-vs-polling"}],"sectionId":"/openapi/section/getting-started/integration-patterns:-webhook-vs-polling"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"section/getting-started/webhook-(push)"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Webhook (push)"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"image","inline":true,"attributes":{"alt":"Webhook (push) sequence — Mercura user finalizes a record; Mercura POSTs an HMAC-signed tender.completed to your endpoint; you GET /tenders/{tender_id}, write the offer to your ERP, then POST the acknowledgement.","src":"https://prod-euapi.mercura.ai/api/public/v1/docs-assets/webhook.svg"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The webhook payload is intentionally small — it identifies "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"which"},"children":[]}]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"tender changed and "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"when"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; you always fetch the current state with"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /tenders/{tender_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". See the "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Webhooks"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" chapter for the wire"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"format, the HMAC-SHA256 signature recipe, and the retry schedule."},"children":[]}]}]}]}],"sectionId":"/openapi/section/getting-started/webhook-(push)"}],"sectionId":"/openapi/section/getting-started/webhook-(push)"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"section/getting-started/polling-(pull)"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Polling (pull)"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"image","inline":true,"attributes":{"alt":"Polling (pull) sequence — your poller GETs /tenders?completed_since=… and pages via cursor; each item is a full tender; you write the offer to your ERP, then POST the acknowledgement.","src":"https://prod-euapi.mercura.ai/api/public/v1/docs-assets/polling.svg"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Poll "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"?completed_since=…"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" on a schedule (every few minutes is typical)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"completed_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" refreshes on every completion, so a re-exported tender"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"reappears in the feed — key off "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"tender_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and keep your ERP writes"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"idempotent. Keep "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"completed_since"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" on every request; once you hold a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"next_cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", send only the cursor."},"children":[]}]}]}]}],"sectionId":"/openapi/section/getting-started/polling-(pull)"}],"sectionId":"/openapi/section/getting-started/polling-(pull)"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"section/getting-started/webhooks"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Webhooks"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"If you would rather "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not poll"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", Mercura can push events to an HTTPS"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"endpoint on your side as soon as something happens — a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"job.finished"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"event replaces the polling loop above, and a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"tender.completed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" /"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"order.completed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" event tells you the moment a record has been released"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"to your system (see "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Integration patterns: webhook vs polling"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" above"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"for the full push-vs-pull sequence)."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Subscriptions are set up by an org admin in the Mercura web app under"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Settings → Organisation → Webhooks"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — there are no"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"/webhook_subscriptions"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" endpoints in this API. Once a subscription"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"exists, the wire format, HMAC-SHA256 signature recipe, retry schedule,"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"and example payloads are documented in the "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Webhooks"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" chapter"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"further down."},"children":[]}]}]}]}],"sectionId":"/openapi/section/getting-started/webhooks"}],"sectionId":"/openapi/section/getting-started/webhooks"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":1,"id":"section/authentication"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Authentication"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The API uses "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"bearer tokens"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" issued in the Mercura admin UI under"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Settings → Organisation → API Keys"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"Authorization: Bearer mrc_live_<token>\n"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Authorization: Bearer mrc_live_<token>\n"},"children":[]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Missing, malformed, expired, or revoked tokens return"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"401 UNAUTHORIZED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]}],"sectionId":"/openapi/section/authentication"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":1,"id":"section/operations"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Operations"},"children":[]}]}]}]}],"sectionId":"/openapi/section/operations"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"section/operations/data-conventions"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Data conventions"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A few conventions hold across every resource:"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Embedded addresses, standalone contacts."},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Customer and"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"supplier payloads carry their "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"addresses[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" inline — there is no"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"separate "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"/addresses"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" endpoint, and the wire format hides the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"internal address table so each parent push is a single snapshot."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Contacts"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", by contrast, are managed via the dedicated "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"/contacts"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"resource and carry their own "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"parent_type"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"customer"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" or "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"supplier"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"parent_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", so adding or updating a contact does not require"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"re-sending the entire parent — see the "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Contacts"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" chapter for the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"full model and upsert rules."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Stable partner-supplied identifiers."},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"article_number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":","},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"customer_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"supplier_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" are the keys you assign in your"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"source system. They must remain stable across sync cycles — Mercura"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"uses them to upsert: same id → existing row updated; new id → new"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"row created."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Timestamps in ISO-8601 UTC."},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" All timestamps on the wire are"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"ISO-8601 with an explicit "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Z"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (or "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"+00:00"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") suffix."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"custom_fields"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" on every master-data resource."},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Use it for any"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"source-system field that doesn't fit the standard schema. Mercura"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"preserves the value alongside the row; matching uses it where"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"appropriate."},"children":[]}]}]}]}]}],"sectionId":"/openapi/section/operations/data-conventions"}],"sectionId":"/openapi/section/operations/data-conventions"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"section/operations/errors"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Errors"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Every non-2xx response uses one envelope:"},"children":[]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"{\n  \"error\": {\n    \"code\": \"VALIDATION_FAILED\",\n    \"message\": \"Request validation failed\",\n    \"details\": [ { \"loc\": [\"query\", \"cursor\"], \"msg\": \"Invalid cursor\", \"type\": \"value_error\" } ],\n    \"request_id\": \"9a3b...e2\"\n  }\n}\n","language":"json"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"{\n  \"error\": {\n    \"code\": \"VALIDATION_FAILED\",\n    \"message\": \"Request validation failed\",\n    \"details\": [ { \"loc\": [\"query\", \"cursor\"], \"msg\": \"Invalid cursor\", \"type\": \"value_error\" } ],\n    \"request_id\": \"9a3b...e2\"\n  }\n}\n"},"children":[]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Branch on "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"code"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — it is stable. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"message"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is human-readable and may"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"change between versions. The full list of codes ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"VALIDATION_FAILED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":","},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"UNAUTHORIZED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"FORBIDDEN"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"NOT_FOUND"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"IDEMPOTENCY_KEY_MISMATCH"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":","},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"RATE_LIMITED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"INTERNAL_ERROR"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", …) is documented per endpoint."},"children":[]}]}]}]}],"sectionId":"/openapi/section/operations/errors"}],"sectionId":"/openapi/section/operations/errors"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"section/operations/request-ids"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Request IDs"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Every response carries an "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X-Request-Id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" header (echoed if you supply"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"one, generated otherwise) and the same id is embedded in every error"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"envelope. Quote it in support tickets — it is the fastest way for"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Mercura's team to look up the exact request in our logs."},"children":[]}]}]}]}],"sectionId":"/openapi/section/operations/request-ids"}],"sectionId":"/openapi/section/operations/request-ids"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"section/operations/versioning"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Versioning"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The API follows "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantic Versioning"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"MAJOR.MINOR.PATCH"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Only the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"MAJOR"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" number lives in the URL path ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"/v1"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", future "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"/v2"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", …). The full"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"SemVer string is published in the OpenAPI "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"info.version"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" field and on"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"every response as the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X-API-Version"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" header."},"children":[]}]}]},{"$$mdtype":"Node","type":"table","attributes":{},"children":[{"$$mdtype":"Node","type":"thead","attributes":{},"children":[{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"th","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Bump"},"children":[]}]}]},{"$$mdtype":"Node","type":"th","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"What it means"},"children":[]}]}]}]}]},{"$$mdtype":"Node","type":"tbody","attributes":{},"children":[{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"PATCH"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Bugfix / doc fix. OpenAPI shape unchanged."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"MINOR"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Additive only: new optional field, new endpoint, relaxed constraint. Existing clients keep working unchanged."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"MAJOR"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Breaking: removed field, renamed field, narrower constraint. A new URL prefix is published; the previous "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"MAJOR"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" remains available during a migration period."},"children":[]}]}]}]}]}]}]}],"sectionId":"/openapi/section/operations/versioning"}],"sectionId":"/openapi/section/operations/versioning"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"section/operations/rate-limits"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Rate limits"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Each API key has its own budget. "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Every request counts as one"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" against"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"the matching limiter — reads draw from the read bucket, writes from the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"write bucket, and each in-flight bulk-write job holds one concurrency"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"slot. Defaults today:"},"children":[]}]}]},{"$$mdtype":"Node","type":"table","attributes":{},"children":[{"$$mdtype":"Node","type":"thead","attributes":{},"children":[{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"th","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Class"},"children":[]}]}]},{"$$mdtype":"Node","type":"th","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Limit"},"children":[]}]}]}]}]},{"$$mdtype":"Node","type":"tbody","attributes":{},"children":[{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Writes (POST)"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"60 / minute, burst 10"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Reads (GET)"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"600 / minute, burst 60"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Concurrent in-flight bulk-write jobs"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"5 per key"},"children":[]}]}]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Every response carries "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"RateLimit-Policy"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"RateLimit"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" headers (and"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"legacy "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X-RateLimit-*"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" headers) describing your current budget. On a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"429 RATE_LIMITED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" response, "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Retry-After"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" tells you how long to wait,"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X-RateLimit-Scope"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" tells you whether you hit the per-minute bucket"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"rate"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") or the concurrent-jobs cap ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"concurrency"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}]}],"sectionId":"/openapi/section/operations/rate-limits"}],"sectionId":"/openapi/section/operations/rate-limits"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"section/operations/read-endpoint-pagination"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Read-endpoint pagination"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Every "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" list endpoint — "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"/tenders"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"/orders"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"/supplier-requests"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":","},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"/articles"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"/customers"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"/suppliers"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"/projects"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"/contacts"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — is cursor"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"paginated. Pass "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"?modified_since=<ISO-8601>"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" on the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"first page to bound the lower edge of the scan by "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"updated_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (useful for"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"delta-sync). Mercura returns a page plus a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"next_cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — pass it back as"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"?cursor=…"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" to get the next page. Once you have a cursor, "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"modified_since"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"is ignored."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"On "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"/tenders"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"/orders"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" you can instead pass"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"?completed_since=<ISO-8601>"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" to pull the "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"completion feed"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — only records"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"completed at/after that instant, ordered by "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"completed_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"reconciliation twin of the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"tender.completed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"order.completed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" webhooks."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Both accept a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" filter; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"/contacts"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" additionally filters by"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"parent_type"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"parent_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"is_active"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The cursor is keyed on "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"(updated_at, id)"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", so it is stable under"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"concurrent writes: a row updated mid-scan may resurface on a later"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"page, but you will never silently skip or duplicate rows."},"children":[]}]}]}]}],"sectionId":"/openapi/section/operations/read-endpoint-pagination"}],"sectionId":"/openapi/section/operations/read-endpoint-pagination"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":1,"id":"section/alternative-integration"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Alternative integration"},"children":[]}]}]}]}],"sectionId":"/openapi/section/alternative-integration"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"section/alternative-integration/sftp-based-integration"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"SFTP-based integration"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The Mercura API documented here is the preferred channel because it is"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"synchronous, low-latency, and operationally light — status comes back"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"immediately, no file-watching is required on either side, and"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"master-data updates can flow event-driven. Where a direct API"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"integration is not feasible (network constraints, security policy,"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"ERP capability), Mercura also supports SFTP-based exchange in both"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"directions for the same payloads. Talk to your Mercura contact if you"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"need that path; the data shapes are identical to the ones documented"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"here."},"children":[]}]}]}]}],"sectionId":"/openapi/section/alternative-integration/sftp-based-integration"}],"sectionId":"/openapi/section/alternative-integration/sftp-based-integration"}]}]}},{"type":"group","label":"Getting Started","link":"/openapi/section/getting-started","routeSlug":"/openapi/section/getting-started","items":[{"type":"link","label":"What this API is","link":"/openapi/section/getting-started/what-this-api-is","routeSlug":"/openapi/section/getting-started/what-this-api-is","content":null},{"type":"link","label":"Main use case","link":"/openapi/section/getting-started/main-use-case","routeSlug":"/openapi/section/getting-started/main-use-case","content":null},{"type":"link","label":"Integration patterns: webhook vs polling","link":"/openapi/section/getting-started/integration-patterns:-webhook-vs-polling","routeSlug":"/openapi/section/getting-started/integration-patterns:-webhook-vs-polling","content":null},{"type":"link","label":"Webhook (push)","link":"/openapi/section/getting-started/webhook-(push)","routeSlug":"/openapi/section/getting-started/webhook-(push)","content":null},{"type":"link","label":"Polling (pull)","link":"/openapi/section/getting-started/polling-(pull)","routeSlug":"/openapi/section/getting-started/polling-(pull)","content":null},{"type":"link","label":"Webhooks","link":"/openapi/section/getting-started/webhooks","routeSlug":"/openapi/section/getting-started/webhooks","content":null}],"content":null},{"type":"link","label":"Authentication","link":"/openapi/section/authentication","routeSlug":"/openapi/section/authentication","content":null},{"type":"group","label":"Operations","link":"/openapi/section/operations","routeSlug":"/openapi/section/operations","items":[{"type":"link","label":"Data conventions","link":"/openapi/section/operations/data-conventions","routeSlug":"/openapi/section/operations/data-conventions","content":null},{"type":"link","label":"Errors","link":"/openapi/section/operations/errors","routeSlug":"/openapi/section/operations/errors","content":null},{"type":"link","label":"Request IDs","link":"/openapi/section/operations/request-ids","routeSlug":"/openapi/section/operations/request-ids","content":null},{"type":"link","label":"Versioning","link":"/openapi/section/operations/versioning","routeSlug":"/openapi/section/operations/versioning","content":null},{"type":"link","label":"Rate limits","link":"/openapi/section/operations/rate-limits","routeSlug":"/openapi/section/operations/rate-limits","content":null},{"type":"link","label":"Read-endpoint pagination","link":"/openapi/section/operations/read-endpoint-pagination","routeSlug":"/openapi/section/operations/read-endpoint-pagination","content":null}],"content":null},{"type":"group","label":"Alternative integration","link":"/openapi/section/alternative-integration","routeSlug":"/openapi/section/alternative-integration","items":[{"type":"link","label":"SFTP-based integration","link":"/openapi/section/alternative-integration/sftp-based-integration","routeSlug":"/openapi/section/alternative-integration/sftp-based-integration","content":null}],"content":null},{"type":"separator","label":"Masterdata","content":null},{"type":"group","label":"Articles","link":"/openapi/articles","routeSlug":"/openapi/articles","items":[{"type":"link","label":"Data depth and match quality","link":"/openapi/articles/data-depth-and-match-quality","routeSlug":"/openapi/articles/data-depth-and-match-quality","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Data depth and match quality"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"articles/data-depth-and-match-quality"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Data depth and match quality"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The precision of Mercura's article matching depends directly on the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"depth and structure"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" of the article data you push. The more you"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"send, the more accurately Mercura can resolve incoming LV positions"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"against your catalogue."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Articles that match well tend to carry:"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Identifying attributes"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — manufacturer name and article number,"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"supplier article number, EAN / GTIN."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Classifications"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — ETIM class, applicable norms (DIN / EN / ISO)."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Technical parameters"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — power, voltage, dimensions, IP rating,"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"and any other physical or electrical characteristics that distinguish"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"one variant from another."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Any field your source system carries but the standard schema does not"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"cover can be passed through the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"custom_fields"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" attribute available"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"on every master-data resource — no schema change required."},"children":[]}]}]}]}],"panels":[]}]}},{"type":"link","label":"About ","link":"/openapi/articles/about","routeSlug":"/openapi/articles/about","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"About "},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"articles/about"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"About "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"article_number"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Article numbers are partner-supplied and must match the character class"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"[A-Za-z0-9._\\-]{1,255}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" so they round-trip safely through URL path"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"segments. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"/"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"?"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"#"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", and whitespace are not allowed inside an"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"article number."},"children":[]}]}]}]}],"panels":[]}]}},{"type":"link","label":"Tags","link":"/openapi/articles/tags","routeSlug":"/openapi/articles/tags","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Tags"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"articles/tags"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Tags"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Articles carry "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"tags"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — short labels (e.g. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"\"LED\""},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"\"Eigenmarke\""},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"your team manages in the Mercura admin UI under "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Settings → Article"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"tags"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Send them by "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"name"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /articles"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" accepts a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"tags"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" array"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"of names, and the read endpoints return the same names — you never deal"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"with Mercura's internal numeric tag ids."},"children":[]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"{ \"article_number\": \"LEU-1500-50-840\", \"name\": \"LED-Feuchtraumleuchte 1500 mm 50 W 4000 K IP65\", \"tags\": [\"LED\", \"Eigenmarke\"] }\n","language":"json"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"{ \"article_number\": \"LEU-1500-50-840\", \"name\": \"LED-Feuchtraumleuchte 1500 mm 50 W 4000 K IP65\", \"tags\": [\"LED\", \"Eigenmarke\"] }\n"},"children":[]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Every name you send must "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"already exist"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for your organisation. An"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"unknown name fails the whole batch (the job ends "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"FAILED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" with a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"message listing the offending names) — create the tag in the admin UI"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"first, then retry."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Sending "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"tags"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"replaces"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" the article's current tags. "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Omit"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"field to leave the tags unchanged; send "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" to clear them."},"children":[]}]}]}]}]}],"panels":[]}]}},{"type":"link","label":"ETIM features","link":"/openapi/articles/etim-features","routeSlug":"/openapi/articles/etim-features","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"ETIM features"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"articles/etim-features"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"ETIM features"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Push ETIM classification features to sharpen how Mercura matches"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"incoming LV positions against your catalogue. Each feature is one"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"object:"},"children":[]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"{\n  \"article_number\": \"LEU-1500-50-840\",\n  \"name\": \"LED-Feuchtraumleuchte 1500 mm 50 W 4000 K IP65\",\n  \"etim_features\": [\n    { \"etim_code\": \"EF000008\", \"human_label\": \"Nennspannung\",         \"type\": \"number\",  \"value_number\": 230 },\n    { \"etim_code\": \"EF000007\", \"human_label\": \"Farbe\",                \"type\": \"string\",  \"value_string\": \"weiß\" },\n    { \"etim_code\": \"EF000131\", \"human_label\": \"Mit Anschlussleitung\", \"type\": \"boolean\", \"value_boolean\": true },\n    { \"etim_code\": \"EF000056\", \"human_label\": \"Leistungsbereich\",     \"type\": \"range\",   \"value_range\": { \"gte\": 18.0, \"lte\": 50.0 } }\n  ]\n}\n","language":"json"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"{\n  \"article_number\": \"LEU-1500-50-840\",\n  \"name\": \"LED-Feuchtraumleuchte 1500 mm 50 W 4000 K IP65\",\n  \"etim_features\": [\n    { \"etim_code\": \"EF000008\", \"human_label\": \"Nennspannung\",         \"type\": \"number\",  \"value_number\": 230 },\n    { \"etim_code\": \"EF000007\", \"human_label\": \"Farbe\",                \"type\": \"string\",  \"value_string\": \"weiß\" },\n    { \"etim_code\": \"EF000131\", \"human_label\": \"Mit Anschlussleitung\", \"type\": \"boolean\", \"value_boolean\": true },\n    { \"etim_code\": \"EF000056\", \"human_label\": \"Leistungsbereich\",     \"type\": \"range\",   \"value_range\": { \"gte\": 18.0, \"lte\": 50.0 } }\n  ]\n}\n"},"children":[]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Set the one "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"value_*"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" field that matches "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"type"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"value_string"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":","},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"value_number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"value_boolean"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", or "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"value_range"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"); leave the others"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"out. Sending "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"etim_features"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"replaces"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" the article's full feature"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"list; omit the field to leave it unchanged."},"children":[]}]}]}]}],"panels":[]}]}},{"type":"link","label":"Soft-deleting articles","link":"/openapi/articles/soft-deleting-articles","routeSlug":"/openapi/articles/soft-deleting-articles","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Soft-deleting articles"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"articles/soft-deleting-articles"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Soft-deleting articles"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Set "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"is_deleted: true"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" on an article in a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /articles"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" payload to"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"hide it everywhere in Mercura"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — it stops appearing in catalogue"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"search, AI matching suggestions, and selection candidates. The row is"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"kept (not destroyed), so any offer position that already selected the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"article in the past still shows it. Set "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"is_deleted: false"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" to restore"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"the article. Omitting the field leaves the current value unchanged."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Soft-deleted articles are excluded from "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /articles"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" by default; pass"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"include_deleted=true"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" to list them (for example, to confirm a delete or"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"find one to restore). "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /articles/{article_number}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" always returns the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"article, including its "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"is_deleted"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" state."},"children":[]}]}]}]}],"panels":[]}]}},{"type":"link","label":"Lifecycle flags","link":"/openapi/articles/lifecycle-flags","routeSlug":"/openapi/articles/lifecycle-flags","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Lifecycle flags"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"articles/lifecycle-flags"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Lifecycle flags"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Two more boolean flags are accepted on "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /articles"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and returned on the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"read endpoints (both default "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"false"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"):"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"is_diverse"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — marks a catch-all / placeholder (\"diverse\") article."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"is_legacy_article"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — marks a discontinued article that should stay"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"resolvable by id and visible on past selections but be kept out of new"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"matches. ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"is_deleted"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" hides it everywhere; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"is_legacy_article"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" only"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"demotes it from new matching.)"},"children":[]}]}]}]}]}],"panels":[]}]}},{"label":"Public Articles Bulk Upsert","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/articles/public_articles_bulk_upsert","routeSlug":"/openapi/articles/public_articles_bulk_upsert","metadata":{"seo":{"title":"Public Articles Bulk Upsert","description":"Bulk-upsert articles (async)."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"public_articles_bulk_upsert","name":"Public Articles Bulk Upsert","isWebhook":false,"pointer":"/paths/~1articles/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Public Articles Bulk Upsert","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Bulk-upsert articles (async)."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Accepts up to 100,000 articles per call. The body is validated"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"synchronously; the actual upsert runs out-of-band on a worker."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Response."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"202 Accepted"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"JobAck { job_id, status_url }"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" on the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"first call."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"200 OK"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" with the "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"same"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"JobAck"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" on an idempotent replay"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"(same "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" + same body). No second job runs."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"What to do next."},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Poll "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /jobs/{job_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status_url"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"is the canonical path) until "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"COMPLETED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" or"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"FAILED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". A "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"COMPLETED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" job with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"error_count > 0"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" means some"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"rows failed — see "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"errors[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for the per-row detail. The Jobs"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"chapter has the full polling guide."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Idempotency."},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Pass an "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" header (≤ 255 chars)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Same key with a "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"different"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" body returns"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 IDEMPOTENCY_KEY_MISMATCH"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"authorization","in":"header","schemaId":"schema_44","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Bearer <mrc_live_…> API key"},"children":[]}]}]}]},{"name":"Idempotency-Key","in":"header","schemaId":"schema_45","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Optional client-supplied key for safe retries; <= 255 chars"},"children":[]}]}]}]}],"pointer":"/paths/~1articles/post/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/BulkArticlesIn"}},"schemaId":"components/schemas/BulkArticlesIn","pointer":"/paths/~1articles/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/articles","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[{"name":"authorization","in":"header","required":false,"schemaId":"schema_44"},{"name":"Idempotency-Key","in":"header","required":false,"schemaId":"schema_45"}],"cookie":[]},"security":[],"requestBody":{"application/json":{"schemaId":"components/schemas/BulkArticlesIn"}},"responseCodes":["200","202","400","422"],"pointer":"/articles","href":"articles/public_articles_bulk_upsert","openApiOperationId":"public_articles_bulk_upsert","summary":"Public Articles Bulk Upsert"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"schemaId":"components/schemas/BulkArticlesIn","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/BulkArticlesIn"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Idempotent replay — same job returned"},"children":[]}]}]}],"mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/JobAck"}},"schemaId":"components/schemas/JobAck"},{"code":"202","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Accepted; poll status_url for completion"},"children":[]}]}]}]},{"code":"400","description":"Validation failed"},{"code":"422","description":"Idempotency-Key reused with a different body"}],"pointer":"/paths/~1articles/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/JobAck","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/JobAck"}}},{"code":"202"},{"code":"400"},{"code":"422"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/articles/public_articles_bulk_upsert"}],"panels":[]}]},"httpPath":"/articles"},{"label":"Public Articles List","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/articles/public_articles_list","routeSlug":"/openapi/articles/public_articles_list","metadata":{"seo":{"title":"Public Articles List","description":"Cursor-paginated list of articles."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"public_articles_list","name":"Public Articles List","isWebhook":false,"pointer":"/paths/~1articles/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Public Articles List","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Cursor-paginated list of articles."},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"cursor","in":"query","schemaId":"schema_46","description":"Opaque cursor from prior page"},{"name":"modified_since","in":"query","schemaId":"schema_47","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"ISO-8601 lower bound on "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"updated_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Applied only on the first page; the cursor is a strict super-set thereafter."},"children":[]}]}]}]},{"name":"limit","in":"query","schemaId":"schema_48"},{"name":"include_deleted","in":"query","schemaId":"schema_49","description":"When true, include soft-deleted articles (hidden by default)."}],"pointer":"/paths/~1articles/get/parameters"},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"authorization","in":"header","schemaId":"schema_44","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Bearer <mrc_live_…> API key"},"children":[]}]}]}]}],"pointer":"/paths/~1articles/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/articles","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"parameters":{"path":[],"query":[{"name":"cursor","in":"query","required":false,"schemaId":"schema_46"},{"name":"modified_since","in":"query","required":false,"schemaId":"schema_47"},{"name":"limit","in":"query","required":false,"schemaId":"schema_48"},{"name":"include_deleted","in":"query","required":false,"schemaId":"schema_49"}],"querystring":[],"header":[{"name":"authorization","in":"header","required":false,"schemaId":"schema_44"}],"cookie":[]},"security":[],"responseCodes":["200","422"],"pointer":"/articles","href":"articles/public_articles_list","openApiOperationId":"public_articles_list","summary":"Public Articles List"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Successful Response","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CursorPage_PublicArticleOut_"}},"schemaId":"components/schemas/CursorPage_PublicArticleOut_"},{"code":"422","description":"Validation Error","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/HTTPValidationError"}},"schemaId":"components/schemas/HTTPValidationError"}],"pointer":"/paths/~1articles/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/CursorPage_PublicArticleOut_","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CursorPage_PublicArticleOut_"}}},{"code":"422","schemaId":"components/schemas/HTTPValidationError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/HTTPValidationError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/articles/public_articles_list"}],"panels":[]}]},"httpPath":"/articles"},{"label":"Public Articles Get","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/articles/public_articles_get","routeSlug":"/openapi/articles/public_articles_get","metadata":{"seo":{"title":"Public Articles Get","description":"Fetch one article by its partner-supplied article_number."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"public_articles_get","name":"Public Articles Get","isWebhook":false,"pointer":"/paths/~1articles~1{article_number}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Public Articles Get","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Fetch one article by its partner-supplied "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"article_number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"article_number","in":"path","schemaId":"schema_50","required":true}],"pointer":"/paths/~1articles~1{article_number}/get/parameters"},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"authorization","in":"header","schemaId":"schema_44","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Bearer <mrc_live_…> API key"},"children":[]}]}]}]}],"pointer":"/paths/~1articles~1{article_number}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/articles/{article_number}","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"parameters":{"path":[{"name":"article_number","in":"path","required":true,"schemaId":"schema_50"}],"query":[],"querystring":[],"header":[{"name":"authorization","in":"header","required":false,"schemaId":"schema_44"}],"cookie":[]},"security":[],"responseCodes":["200","404","422"],"pointer":"/articles/{article_number}","href":"articles/public_articles_get","openApiOperationId":"public_articles_get","summary":"Public Articles Get"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Successful Response","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PublicArticleOut"}},"schemaId":"components/schemas/PublicArticleOut"},{"code":"404","description":"Article not found"},{"code":"422","description":"Validation Error","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/HTTPValidationError"}},"schemaId":"components/schemas/HTTPValidationError"}],"pointer":"/paths/~1articles~1{article_number}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/PublicArticleOut","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PublicArticleOut"}}},{"code":"404"},{"code":"422","schemaId":"components/schemas/HTTPValidationError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/HTTPValidationError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/articles/public_articles_get"}],"panels":[]}]},"httpPath":"/articles/{article_number}"}],"content":{"contentType":"group","meta":{"name":"Articles"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Articles","showPageActions":true},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"An "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Article"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is one row in your sales catalogue: a thing you sell,"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"keyed by the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"article_number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" you assign in your source system. Articles"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"are the most important resource in this API — Mercura matches every"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"position on every incoming customer LV against your articles, so the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"quality of the offers you read back depends directly on the quality of"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"the article catalogue you push."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"You can:"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /articles"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — bulk-upsert up to 100,000 articles in a single"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"call. Async — returns a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"JobAck"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; poll "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /jobs/{job_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"status. Rows with the same "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"article_number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" as an existing row are"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"updated in place; new rows are inserted. Recommend running this once"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"per night with the full delta since the last successful job."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /articles"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — cursor-paginated list of your articles. Use"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"modified_since"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" on the first page to fetch only the rows that"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"changed since your last sync."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /articles/{article_number}"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — fetch a single article by the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"partner-supplied "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"article_number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]}]}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/articles","summary":"Public Articles Bulk Upsert","prefix":{"name":"post","color":"post"},"badges":[],"link":"/articles/public_articles_bulk_upsert","deprecated":false},{"title":"/articles","summary":"Public Articles List","prefix":{"name":"get","color":"get"},"badges":[],"link":"/articles/public_articles_list","deprecated":false},{"title":"/articles/{article_number}","summary":"Public Articles Get","prefix":{"name":"get","color":"get"},"badges":[],"link":"/articles/public_articles_get","deprecated":false}]}]}]}]}},{"type":"group","label":"Accessories","link":"/openapi/accessories","routeSlug":"/openapi/accessories","items":[{"type":"link","label":"Fields","link":"/openapi/accessories/fields","routeSlug":"/openapi/accessories/fields","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Fields"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"accessories/fields"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Fields"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"multiplier"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — how many of the accessory are needed per unit of the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"source article (optional)."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"order"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — display order among a source article's accessories."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"is_mandatory"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"true"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" marks a required part rather than an optional"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"add-on."},"children":[]}]}]}]}]}],"panels":[]}]}},{"type":"link","label":"Upsert semantics (v1)","link":"/openapi/accessories/upsert-semantics-(v1)","routeSlug":"/openapi/accessories/upsert-semantics-(v1)","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Upsert semantics (v1)"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"accessories/upsert-semantics-(v1)"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Upsert semantics (v1)"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"inserts or updates"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" each "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"(source, accessory)"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" pair; it never"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"removes links. Re-sending the same pair is idempotent. There is "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"no"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"delete endpoint yet"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — omitting a previously sent accessory leaves it in"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"place. A row whose source or accessory "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"article_number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" does not exist in"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"your catalogue is "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"skipped"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (counted in the job's "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"skipped_count"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), not"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"an error. If any row is structurally invalid (missing a required field, a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"non-positive "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"multiplier"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", a negative "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"order"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") the whole batch is rejected"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"and the per-row detail appears in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /jobs/{job_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]}],"panels":[]}]}},{"label":"Public Accessories Bulk Upsert","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/accessories/public_accessories_bulk_upsert","routeSlug":"/openapi/accessories/public_accessories_bulk_upsert","metadata":{"seo":{"title":"Public Accessories Bulk Upsert","description":"Bulk-upsert accessory relationships (async)."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"public_accessories_bulk_upsert","name":"Public Accessories Bulk Upsert","isWebhook":false,"pointer":"/paths/~1articles~1accessories/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Public Accessories Bulk Upsert","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Bulk-upsert accessory relationships (async)."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Accepts up to 100,000 rows per call. Each row upserts the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"(source_article_number, accessory_article_number)"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" pair; rows whose"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"articles don't exist are skipped (see the job's "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"skipped_count"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Response."},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"202 Accepted"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"JobAck"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" on the first call;"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"200 OK"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" with the same "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"JobAck"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" on an idempotent replay. Poll"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /jobs/{job_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for terminal status."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Idempotency."},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Pass an "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" header (≤ 255 chars); the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"same key with a "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"different"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" body returns "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"authorization","in":"header","schemaId":"schema_44","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Bearer <mrc_live_…> API key"},"children":[]}]}]}]},{"name":"Idempotency-Key","in":"header","schemaId":"schema_45","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Optional client-supplied key for safe retries; <= 255 chars"},"children":[]}]}]}]}],"pointer":"/paths/~1articles~1accessories/post/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/BulkAccessoriesIn"}},"schemaId":"components/schemas/BulkAccessoriesIn","pointer":"/paths/~1articles~1accessories/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/articles/accessories","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[{"name":"authorization","in":"header","required":false,"schemaId":"schema_44"},{"name":"Idempotency-Key","in":"header","required":false,"schemaId":"schema_45"}],"cookie":[]},"security":[],"requestBody":{"application/json":{"schemaId":"components/schemas/BulkAccessoriesIn"}},"responseCodes":["200","202","400","422"],"pointer":"/articles/accessories","href":"accessories/public_accessories_bulk_upsert","openApiOperationId":"public_accessories_bulk_upsert","summary":"Public Accessories Bulk Upsert"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"schemaId":"components/schemas/BulkAccessoriesIn","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/BulkAccessoriesIn"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Idempotent replay — same job returned"},"children":[]}]}]}],"mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/JobAck"}},"schemaId":"components/schemas/JobAck"},{"code":"202","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Accepted; poll status_url for completion"},"children":[]}]}]}]},{"code":"400","description":"Validation failed"},{"code":"422","description":"Idempotency-Key reused with a different body"}],"pointer":"/paths/~1articles~1accessories/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/JobAck","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/JobAck"}}},{"code":"202"},{"code":"400"},{"code":"422"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/accessories/public_accessories_bulk_upsert"}],"panels":[]}]},"httpPath":"/articles/accessories"},{"label":"Public Accessories List","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/accessories/public_accessories_list","routeSlug":"/openapi/accessories/public_accessories_list","metadata":{"seo":{"title":"Public Accessories List","description":"Cursor-paginated list of accessory relationships."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"public_accessories_list","name":"Public Accessories List","isWebhook":false,"pointer":"/paths/~1articles~1accessories/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Public Accessories List","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Cursor-paginated list of accessory relationships."},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"cursor","in":"query","schemaId":"schema_46","description":"Opaque cursor from prior page"},{"name":"modified_since","in":"query","schemaId":"schema_47","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"ISO-8601 lower bound on "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"updated_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Applied only on the first page; the cursor is a strict super-set thereafter."},"children":[]}]}]}]},{"name":"limit","in":"query","schemaId":"schema_48"},{"name":"source_article_number","in":"query","schemaId":"schema_51","description":"Return only accessories of this source article."}],"pointer":"/paths/~1articles~1accessories/get/parameters"},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"authorization","in":"header","schemaId":"schema_44","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Bearer <mrc_live_…> API key"},"children":[]}]}]}]}],"pointer":"/paths/~1articles~1accessories/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/articles/accessories","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"parameters":{"path":[],"query":[{"name":"cursor","in":"query","required":false,"schemaId":"schema_46"},{"name":"modified_since","in":"query","required":false,"schemaId":"schema_47"},{"name":"limit","in":"query","required":false,"schemaId":"schema_48"},{"name":"source_article_number","in":"query","required":false,"schemaId":"schema_51"}],"querystring":[],"header":[{"name":"authorization","in":"header","required":false,"schemaId":"schema_44"}],"cookie":[]},"security":[],"responseCodes":["200","422"],"pointer":"/articles/accessories","href":"accessories/public_accessories_list","openApiOperationId":"public_accessories_list","summary":"Public Accessories List"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Successful Response","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CursorPage_PublicAccessoryOut_"}},"schemaId":"components/schemas/CursorPage_PublicAccessoryOut_"},{"code":"422","description":"Validation Error","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/HTTPValidationError"}},"schemaId":"components/schemas/HTTPValidationError"}],"pointer":"/paths/~1articles~1accessories/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/CursorPage_PublicAccessoryOut_","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CursorPage_PublicAccessoryOut_"}}},{"code":"422","schemaId":"components/schemas/HTTPValidationError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/HTTPValidationError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/accessories/public_accessories_list"}],"panels":[]}]},"httpPath":"/articles/accessories"}],"content":{"contentType":"group","meta":{"name":"Accessories"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Accessories","showPageActions":true},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Accessories"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" link a source article to accessory articles that are"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"fitted or ordered alongside it — an optional add-on, or a mandatory part."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Pushing them lets Mercura suggest the right accessories when it matches a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"customer position against your catalogue."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"You can:"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /articles/accessories"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — bulk-upsert up to 100,000 accessory links in a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"single call. Async — returns a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"JobAck"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; poll "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /jobs/{job_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"status. Each row upserts the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"(source_article_number, accessory_article_number)"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" pair."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /articles/accessories"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — cursor-paginated list of your accessory links."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Pass "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"source_article_number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" to list one article's accessories, or"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"modified_since"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" on the first page to fetch only what changed."},"children":[]}]}]}]}]}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/articles/accessories","summary":"Public Accessories Bulk Upsert","prefix":{"name":"post","color":"post"},"badges":[],"link":"/accessories/public_accessories_bulk_upsert","deprecated":false},{"title":"/articles/accessories","summary":"Public Accessories List","prefix":{"name":"get","color":"get"},"badges":[],"link":"/accessories/public_accessories_list","deprecated":false}]}]}]}]}},{"type":"group","label":"Alternatives","link":"/openapi/alternatives","routeSlug":"/openapi/alternatives","items":[{"type":"link","label":"Fields","link":"/openapi/alternatives/fields","routeSlug":"/openapi/alternatives/fields","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Fields"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"alternatives/fields"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Fields"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"order"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — display order among a source article's alternatives"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"(optional)."},"children":[]}]}]}]}]}],"panels":[]}]}},{"type":"link","label":"Upsert semantics (v1)","link":"/openapi/alternatives/upsert-semantics-(v1)","routeSlug":"/openapi/alternatives/upsert-semantics-(v1)","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Upsert semantics (v1)"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"alternatives/upsert-semantics-(v1)"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Upsert semantics (v1)"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"inserts or updates"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" each "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"(source, alternative)"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" pair; it never"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"removes links. Re-sending the same pair is idempotent. There is "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"no"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"delete endpoint yet"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — omitting a previously sent alternative leaves it in"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"place. A row whose source or alternative "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"article_number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" does not exist in"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"your catalogue is "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"skipped"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (counted in the job's "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"skipped_count"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), not"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"an error. If any row is structurally invalid (missing a required field, a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"negative "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"order"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") the whole batch is rejected and the per-row detail"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"appears in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /jobs/{job_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]}],"panels":[]}]}},{"label":"Public Alternatives Bulk Upsert","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/alternatives/public_alternatives_bulk_upsert","routeSlug":"/openapi/alternatives/public_alternatives_bulk_upsert","metadata":{"seo":{"title":"Public Alternatives Bulk Upsert","description":"Bulk-upsert alternative relationships (async)."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"public_alternatives_bulk_upsert","name":"Public Alternatives Bulk Upsert","isWebhook":false,"pointer":"/paths/~1articles~1alternatives/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Public Alternatives Bulk Upsert","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Bulk-upsert alternative relationships (async)."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Accepts up to 100,000 rows per call. Each row upserts the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"(source_article_number, alternative_article_number)"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" pair; rows"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"whose articles don't exist are skipped (see the job's "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"skipped_count"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Response."},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"202 Accepted"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"JobAck"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" on the first call;"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"200 OK"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" with the same "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"JobAck"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" on an idempotent replay. Poll"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /jobs/{job_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for terminal status."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Idempotency."},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Pass an "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" header (≤ 255 chars); the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"same key with a "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"different"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" body returns "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"authorization","in":"header","schemaId":"schema_44","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Bearer <mrc_live_…> API key"},"children":[]}]}]}]},{"name":"Idempotency-Key","in":"header","schemaId":"schema_45","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Optional client-supplied key for safe retries; <= 255 chars"},"children":[]}]}]}]}],"pointer":"/paths/~1articles~1alternatives/post/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/BulkAlternativesIn"}},"schemaId":"components/schemas/BulkAlternativesIn","pointer":"/paths/~1articles~1alternatives/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/articles/alternatives","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[{"name":"authorization","in":"header","required":false,"schemaId":"schema_44"},{"name":"Idempotency-Key","in":"header","required":false,"schemaId":"schema_45"}],"cookie":[]},"security":[],"requestBody":{"application/json":{"schemaId":"components/schemas/BulkAlternativesIn"}},"responseCodes":["200","202","400","422"],"pointer":"/articles/alternatives","href":"alternatives/public_alternatives_bulk_upsert","openApiOperationId":"public_alternatives_bulk_upsert","summary":"Public Alternatives Bulk Upsert"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"schemaId":"components/schemas/BulkAlternativesIn","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/BulkAlternativesIn"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Idempotent replay — same job returned"},"children":[]}]}]}],"mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/JobAck"}},"schemaId":"components/schemas/JobAck"},{"code":"202","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Accepted; poll status_url for completion"},"children":[]}]}]}]},{"code":"400","description":"Validation failed"},{"code":"422","description":"Idempotency-Key reused with a different body"}],"pointer":"/paths/~1articles~1alternatives/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/JobAck","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/JobAck"}}},{"code":"202"},{"code":"400"},{"code":"422"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/alternatives/public_alternatives_bulk_upsert"}],"panels":[]}]},"httpPath":"/articles/alternatives"},{"label":"Public Alternatives List","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/alternatives/public_alternatives_list","routeSlug":"/openapi/alternatives/public_alternatives_list","metadata":{"seo":{"title":"Public Alternatives List","description":"Cursor-paginated list of alternative relationships."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"public_alternatives_list","name":"Public Alternatives List","isWebhook":false,"pointer":"/paths/~1articles~1alternatives/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Public Alternatives List","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Cursor-paginated list of alternative relationships."},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"cursor","in":"query","schemaId":"schema_46","description":"Opaque cursor from prior page"},{"name":"modified_since","in":"query","schemaId":"schema_47","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"ISO-8601 lower bound on "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"updated_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Applied only on the first page; the cursor is a strict super-set thereafter."},"children":[]}]}]}]},{"name":"limit","in":"query","schemaId":"schema_48"},{"name":"source_article_number","in":"query","schemaId":"schema_52","description":"Return only alternatives of this source article."}],"pointer":"/paths/~1articles~1alternatives/get/parameters"},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"authorization","in":"header","schemaId":"schema_44","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Bearer <mrc_live_…> API key"},"children":[]}]}]}]}],"pointer":"/paths/~1articles~1alternatives/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/articles/alternatives","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"parameters":{"path":[],"query":[{"name":"cursor","in":"query","required":false,"schemaId":"schema_46"},{"name":"modified_since","in":"query","required":false,"schemaId":"schema_47"},{"name":"limit","in":"query","required":false,"schemaId":"schema_48"},{"name":"source_article_number","in":"query","required":false,"schemaId":"schema_52"}],"querystring":[],"header":[{"name":"authorization","in":"header","required":false,"schemaId":"schema_44"}],"cookie":[]},"security":[],"responseCodes":["200","422"],"pointer":"/articles/alternatives","href":"alternatives/public_alternatives_list","openApiOperationId":"public_alternatives_list","summary":"Public Alternatives List"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Successful Response","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CursorPage_PublicAlternativeOut_"}},"schemaId":"components/schemas/CursorPage_PublicAlternativeOut_"},{"code":"422","description":"Validation Error","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/HTTPValidationError"}},"schemaId":"components/schemas/HTTPValidationError"}],"pointer":"/paths/~1articles~1alternatives/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/CursorPage_PublicAlternativeOut_","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CursorPage_PublicAlternativeOut_"}}},{"code":"422","schemaId":"components/schemas/HTTPValidationError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/HTTPValidationError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/alternatives/public_alternatives_list"}],"panels":[]}]},"httpPath":"/articles/alternatives"}],"content":{"contentType":"group","meta":{"name":"Alternatives"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Alternatives","showPageActions":true},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Alternatives"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" link a source article to substitute articles a customer"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"could accept in its place. Pushing them lets Mercura offer a valid"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"alternative when the requested article is unavailable or less suitable."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"You can:"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /articles/alternatives"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — bulk-upsert up to 100,000 alternative links in"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"a single call. Async — returns a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"JobAck"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; poll "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /jobs/{job_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"status. Each row upserts the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"(source_article_number, alternative_article_number)"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" pair."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /articles/alternatives"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — cursor-paginated list of your alternative"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"links. Pass "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"source_article_number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" to list one article's alternatives,"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"or "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"modified_since"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" on the first page to fetch only what changed."},"children":[]}]}]}]}]}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/articles/alternatives","summary":"Public Alternatives Bulk Upsert","prefix":{"name":"post","color":"post"},"badges":[],"link":"/alternatives/public_alternatives_bulk_upsert","deprecated":false},{"title":"/articles/alternatives","summary":"Public Alternatives List","prefix":{"name":"get","color":"get"},"badges":[],"link":"/alternatives/public_alternatives_list","deprecated":false}]}]}]}]}},{"type":"group","label":"Successors","link":"/openapi/successors","routeSlug":"/openapi/successors","items":[{"type":"link","label":"One successor per article","link":"/openapi/successors/one-successor-per-article","routeSlug":"/openapi/successors/one-successor-per-article","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"One successor per article"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"successors/one-successor-per-article"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"One successor per article"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A source article has "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"exactly one"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" active successor. Re-sending a source"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"article with a different "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"successor_article_number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"replaces"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"previous successor — this is the intended way to update a chain. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"order"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"accepted for parity with the other relations but has no effect on a 1:1"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"link."},"children":[]}]}]}]}],"panels":[]}]}},{"type":"link","label":"Upsert semantics (v1)","link":"/openapi/successors/upsert-semantics-(v1)","routeSlug":"/openapi/successors/upsert-semantics-(v1)","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Upsert semantics (v1)"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"successors/upsert-semantics-(v1)"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Upsert semantics (v1)"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"There is "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"no delete endpoint yet"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". A row whose source or successor"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"article_number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" does not exist in your catalogue is "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"skipped"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (counted"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"in the job's "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"skipped_count"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), not an error. If any row is structurally"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"invalid (missing a required field, a negative "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"order"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") the whole batch is"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"rejected and the per-row detail appears in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /jobs/{job_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]}],"panels":[]}]}},{"label":"Public Successors Bulk Upsert","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/successors/public_successors_bulk_upsert","routeSlug":"/openapi/successors/public_successors_bulk_upsert","metadata":{"seo":{"title":"Public Successors Bulk Upsert","description":"Bulk-upsert successor relationships (async)."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"public_successors_bulk_upsert","name":"Public Successors Bulk Upsert","isWebhook":false,"pointer":"/paths/~1articles~1successors/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Public Successors Bulk Upsert","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Bulk-upsert successor relationships (async)."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Accepts up to 100,000 rows per call. Successors are 1:1 per source"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"article: re-sending a source with a new successor replaces the previous"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"one. Rows whose articles don't exist are skipped (see the job's"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"skipped_count"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Response."},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"202 Accepted"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"JobAck"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" on the first call;"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"200 OK"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" with the same "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"JobAck"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" on an idempotent replay. Poll"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /jobs/{job_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for terminal status."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Idempotency."},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Pass an "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" header (≤ 255 chars); the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"same key with a "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"different"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" body returns "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"authorization","in":"header","schemaId":"schema_44","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Bearer <mrc_live_…> API key"},"children":[]}]}]}]},{"name":"Idempotency-Key","in":"header","schemaId":"schema_45","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Optional client-supplied key for safe retries; <= 255 chars"},"children":[]}]}]}]}],"pointer":"/paths/~1articles~1successors/post/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/BulkSuccessorsIn"}},"schemaId":"components/schemas/BulkSuccessorsIn","pointer":"/paths/~1articles~1successors/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/articles/successors","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[{"name":"authorization","in":"header","required":false,"schemaId":"schema_44"},{"name":"Idempotency-Key","in":"header","required":false,"schemaId":"schema_45"}],"cookie":[]},"security":[],"requestBody":{"application/json":{"schemaId":"components/schemas/BulkSuccessorsIn"}},"responseCodes":["200","202","400","422"],"pointer":"/articles/successors","href":"successors/public_successors_bulk_upsert","openApiOperationId":"public_successors_bulk_upsert","summary":"Public Successors Bulk Upsert"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"schemaId":"components/schemas/BulkSuccessorsIn","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/BulkSuccessorsIn"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Idempotent replay — same job returned"},"children":[]}]}]}],"mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/JobAck"}},"schemaId":"components/schemas/JobAck"},{"code":"202","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Accepted; poll status_url for completion"},"children":[]}]}]}]},{"code":"400","description":"Validation failed"},{"code":"422","description":"Idempotency-Key reused with a different body"}],"pointer":"/paths/~1articles~1successors/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/JobAck","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/JobAck"}}},{"code":"202"},{"code":"400"},{"code":"422"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/successors/public_successors_bulk_upsert"}],"panels":[]}]},"httpPath":"/articles/successors"},{"label":"Public Successors List","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/successors/public_successors_list","routeSlug":"/openapi/successors/public_successors_list","metadata":{"seo":{"title":"Public Successors List","description":"Cursor-paginated list of successor relationships."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"public_successors_list","name":"Public Successors List","isWebhook":false,"pointer":"/paths/~1articles~1successors/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Public Successors List","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Cursor-paginated list of successor relationships."},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"cursor","in":"query","schemaId":"schema_46","description":"Opaque cursor from prior page"},{"name":"modified_since","in":"query","schemaId":"schema_47","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"ISO-8601 lower bound on "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"updated_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Applied only on the first page; the cursor is a strict super-set thereafter."},"children":[]}]}]}]},{"name":"limit","in":"query","schemaId":"schema_48"},{"name":"source_article_number","in":"query","schemaId":"schema_53","description":"Return only the successor of this source article."}],"pointer":"/paths/~1articles~1successors/get/parameters"},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"authorization","in":"header","schemaId":"schema_44","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Bearer <mrc_live_…> API key"},"children":[]}]}]}]}],"pointer":"/paths/~1articles~1successors/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/articles/successors","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"parameters":{"path":[],"query":[{"name":"cursor","in":"query","required":false,"schemaId":"schema_46"},{"name":"modified_since","in":"query","required":false,"schemaId":"schema_47"},{"name":"limit","in":"query","required":false,"schemaId":"schema_48"},{"name":"source_article_number","in":"query","required":false,"schemaId":"schema_53"}],"querystring":[],"header":[{"name":"authorization","in":"header","required":false,"schemaId":"schema_44"}],"cookie":[]},"security":[],"responseCodes":["200","422"],"pointer":"/articles/successors","href":"successors/public_successors_list","openApiOperationId":"public_successors_list","summary":"Public Successors List"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Successful Response","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CursorPage_PublicSuccessorOut_"}},"schemaId":"components/schemas/CursorPage_PublicSuccessorOut_"},{"code":"422","description":"Validation Error","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/HTTPValidationError"}},"schemaId":"components/schemas/HTTPValidationError"}],"pointer":"/paths/~1articles~1successors/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/CursorPage_PublicSuccessorOut_","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CursorPage_PublicSuccessorOut_"}}},{"code":"422","schemaId":"components/schemas/HTTPValidationError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/HTTPValidationError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/successors/public_successors_list"}],"panels":[]}]},"httpPath":"/articles/successors"}],"content":{"contentType":"group","meta":{"name":"Successors"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Successors","showPageActions":true},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Successors"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" mark the article that replaces a discontinued one"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"source_article_number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" → "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"successor_article_number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Pushing them lets"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Mercura retarget demand for a phased-out article onto its current"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"replacement."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"You can:"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /articles/successors"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — bulk-upsert up to 100,000 successor links in a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"single call. Async — returns a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"JobAck"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; poll "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /jobs/{job_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"status."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /articles/successors"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — cursor-paginated list of your successor links."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Pass "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"source_article_number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" to look up one article's successor, or"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"modified_since"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" on the first page to fetch only what changed."},"children":[]}]}]}]}]}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/articles/successors","summary":"Public Successors Bulk Upsert","prefix":{"name":"post","color":"post"},"badges":[],"link":"/successors/public_successors_bulk_upsert","deprecated":false},{"title":"/articles/successors","summary":"Public Successors List","prefix":{"name":"get","color":"get"},"badges":[],"link":"/successors/public_successors_list","deprecated":false}]}]}]}]}},{"type":"group","label":"Unit Conversions","link":"/openapi/unit-conversions","routeSlug":"/openapi/unit-conversions","items":[{"type":"link","label":"The ratio","link":"/openapi/unit-conversions/the-ratio","routeSlug":"/openapi/unit-conversions/the-ratio","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"The ratio"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"unit-conversions/the-ratio"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The ratio"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The conversion is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"1 alternative_unit = (numerator / denominator) base units"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Both must be positive. The ratio is stored and returned"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"exactly as sent — it is not collapsed to a single factor — so values like"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"3 pieces per pack ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"numerator = 1, denominator = 3"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") round-trip without"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"loss."},"children":[]}]}]}]}],"panels":[]}]}},{"type":"link","label":"Upsert semantics (v1)","link":"/openapi/unit-conversions/upsert-semantics-(v1)","routeSlug":"/openapi/unit-conversions/upsert-semantics-(v1)","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Upsert semantics (v1)"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"unit-conversions/upsert-semantics-(v1)"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Upsert semantics (v1)"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"inserts or updates"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" each "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"(article, alternative_unit)"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"conversion; it never removes conversions you stop sending, and there is"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"no delete endpoint yet"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". A row whose "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"article_number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" does not exist in"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"your catalogue is "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"skipped"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (counted in the job's "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"skipped_count"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), and"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"rows with a missing unit or a non-positive "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"numerator"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"denominator"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" are"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"skipped as well — unit-conversion batches do not fail as a whole."},"children":[]}]}]}]}],"panels":[]}]}},{"label":"Public Unit Conversions Bulk Upsert","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/unit-conversions/public_unit_conversions_bulk_upsert","routeSlug":"/openapi/unit-conversions/public_unit_conversions_bulk_upsert","metadata":{"seo":{"title":"Public Unit Conversions Bulk Upsert","description":"Bulk-upsert unit conversions (async)."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"public_unit_conversions_bulk_upsert","name":"Public Unit Conversions Bulk Upsert","isWebhook":false,"pointer":"/paths/~1articles~1unit-conversions/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Public Unit Conversions Bulk Upsert","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Bulk-upsert unit conversions (async)."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Accepts up to 100,000 rows per call. Each row upserts the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"(article_number, alternative_unit)"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" conversion; rows whose article"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"doesn't exist are skipped (see the job's "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"skipped_count"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Response."},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"202 Accepted"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"JobAck"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" on the first call;"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"200 OK"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" with the same "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"JobAck"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" on an idempotent replay. Poll"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /jobs/{job_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for terminal status."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Idempotency."},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Pass an "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" header (≤ 255 chars); the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"same key with a "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"different"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" body returns "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"authorization","in":"header","schemaId":"schema_44","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Bearer <mrc_live_…> API key"},"children":[]}]}]}]},{"name":"Idempotency-Key","in":"header","schemaId":"schema_45","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Optional client-supplied key for safe retries; <= 255 chars"},"children":[]}]}]}]}],"pointer":"/paths/~1articles~1unit-conversions/post/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/BulkUnitConversionsIn"}},"schemaId":"components/schemas/BulkUnitConversionsIn","pointer":"/paths/~1articles~1unit-conversions/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/articles/unit-conversions","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[{"name":"authorization","in":"header","required":false,"schemaId":"schema_44"},{"name":"Idempotency-Key","in":"header","required":false,"schemaId":"schema_45"}],"cookie":[]},"security":[],"requestBody":{"application/json":{"schemaId":"components/schemas/BulkUnitConversionsIn"}},"responseCodes":["200","202","400","422"],"pointer":"/articles/unit-conversions","href":"unit-conversions/public_unit_conversions_bulk_upsert","openApiOperationId":"public_unit_conversions_bulk_upsert","summary":"Public Unit Conversions Bulk Upsert"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"schemaId":"components/schemas/BulkUnitConversionsIn","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/BulkUnitConversionsIn"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Idempotent replay — same job returned"},"children":[]}]}]}],"mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/JobAck"}},"schemaId":"components/schemas/JobAck"},{"code":"202","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Accepted; poll status_url for completion"},"children":[]}]}]}]},{"code":"400","description":"Validation failed"},{"code":"422","description":"Idempotency-Key reused with a different body"}],"pointer":"/paths/~1articles~1unit-conversions/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/JobAck","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/JobAck"}}},{"code":"202"},{"code":"400"},{"code":"422"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/unit-conversions/public_unit_conversions_bulk_upsert"}],"panels":[]}]},"httpPath":"/articles/unit-conversions"},{"label":"Public Unit Conversions List","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/unit-conversions/public_unit_conversions_list","routeSlug":"/openapi/unit-conversions/public_unit_conversions_list","metadata":{"seo":{"title":"Public Unit Conversions List","description":"Cursor-paginated list of unit conversions."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"public_unit_conversions_list","name":"Public Unit Conversions List","isWebhook":false,"pointer":"/paths/~1articles~1unit-conversions/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Public Unit Conversions List","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Cursor-paginated list of unit conversions."},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"cursor","in":"query","schemaId":"schema_46","description":"Opaque cursor from prior page"},{"name":"modified_since","in":"query","schemaId":"schema_47","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"ISO-8601 lower bound on "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"updated_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Applied only on the first page; the cursor is a strict super-set thereafter."},"children":[]}]}]}]},{"name":"limit","in":"query","schemaId":"schema_48"},{"name":"article_number","in":"query","schemaId":"schema_54","description":"Return only conversions for this article."}],"pointer":"/paths/~1articles~1unit-conversions/get/parameters"},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"authorization","in":"header","schemaId":"schema_44","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Bearer <mrc_live_…> API key"},"children":[]}]}]}]}],"pointer":"/paths/~1articles~1unit-conversions/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/articles/unit-conversions","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"parameters":{"path":[],"query":[{"name":"cursor","in":"query","required":false,"schemaId":"schema_46"},{"name":"modified_since","in":"query","required":false,"schemaId":"schema_47"},{"name":"limit","in":"query","required":false,"schemaId":"schema_48"},{"name":"article_number","in":"query","required":false,"schemaId":"schema_54"}],"querystring":[],"header":[{"name":"authorization","in":"header","required":false,"schemaId":"schema_44"}],"cookie":[]},"security":[],"responseCodes":["200","422"],"pointer":"/articles/unit-conversions","href":"unit-conversions/public_unit_conversions_list","openApiOperationId":"public_unit_conversions_list","summary":"Public Unit Conversions List"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Successful Response","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CursorPage_PublicUnitConversionOut_"}},"schemaId":"components/schemas/CursorPage_PublicUnitConversionOut_"},{"code":"422","description":"Validation Error","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/HTTPValidationError"}},"schemaId":"components/schemas/HTTPValidationError"}],"pointer":"/paths/~1articles~1unit-conversions/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/CursorPage_PublicUnitConversionOut_","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CursorPage_PublicUnitConversionOut_"}}},{"code":"422","schemaId":"components/schemas/HTTPValidationError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/HTTPValidationError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/unit-conversions/public_unit_conversions_list"}],"panels":[]}]},"httpPath":"/articles/unit-conversions"}],"content":{"contentType":"group","meta":{"name":"Unit Conversions"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Unit Conversions","showPageActions":true},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Unit conversions"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" map an alternative unit to an article's base unit via"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"numerator"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"denominator"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" ratio — for example a carton of 6 pieces is"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"alternative_unit = \"CTN\", numerator = 6, denominator = 1"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Mercura uses"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"them to normalise ordered quantities across units."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"You can:"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /articles/unit-conversions"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — bulk-upsert up to 100,000 conversions in a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"single call. Async — returns a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"JobAck"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; poll "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /jobs/{job_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"status. Each row upserts the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"(article_number, alternative_unit)"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"conversion."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /articles/unit-conversions"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — cursor-paginated list of your conversions."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Pass "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"article_number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" to list one article's conversions, or"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"modified_since"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" on the first page to fetch only what changed."},"children":[]}]}]}]}]}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/articles/unit-conversions","summary":"Public Unit Conversions Bulk Upsert","prefix":{"name":"post","color":"post"},"badges":[],"link":"/unit-conversions/public_unit_conversions_bulk_upsert","deprecated":false},{"title":"/articles/unit-conversions","summary":"Public Unit Conversions List","prefix":{"name":"get","color":"get"},"badges":[],"link":"/unit-conversions/public_unit_conversions_list","deprecated":false}]}]}]}]}},{"type":"group","label":"Customers","link":"/openapi/customers","routeSlug":"/openapi/customers","items":[{"type":"link","label":"About ","link":"/openapi/customers/about","routeSlug":"/openapi/customers/about","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"About "},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"customers/about"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"About "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"customer_id"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Customer ids are partner-supplied and must match"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"[A-Za-z0-9._\\-]{1,255}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" so they round-trip safely through URL path"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"segments."},"children":[]}]}]}]}],"panels":[]}]}},{"type":"link","label":"About ","link":"/openapi/customers/about","routeSlug":"/openapi/customers/about","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"About "},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"customers/about"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"About "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"custom_fields"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Read responses ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /customers"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /customers/{customer_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", and the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"customer"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" block of every offer) return "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"custom_fields"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" keyed by the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"field's display "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"label"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — the same label you see in the Mercura admin UI"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"— rather than the internal column id. Columns with no active definition"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"are omitted. If two custom columns share a label, the one defined first"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"(by display order, then creation time) wins and the other's value is"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"dropped from the response; deduplicate colliding columns in the admin UI."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The same label-keying applies to suppliers."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"write"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" path is deliberately asymmetric: on "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /customers"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" send"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"custom_fields"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" keyed by the internal column "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"id"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (not the label). Only"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"reads are label-keyed."},"children":[]}]}]}]}],"panels":[]}]}},{"label":"Public Customers Bulk Upsert","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/customers/public_customers_bulk_upsert","routeSlug":"/openapi/customers/public_customers_bulk_upsert","metadata":{"seo":{"title":"Public Customers Bulk Upsert","description":"Bulk-upsert customers (async)."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"public_customers_bulk_upsert","name":"Public Customers Bulk Upsert","isWebhook":false,"pointer":"/paths/~1customers/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Public Customers Bulk Upsert","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Bulk-upsert customers (async)."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Accepts up to 100,000 customers per call. The body is validated"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"synchronously; the actual upsert runs out-of-band on a worker."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Response."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"202 Accepted"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"JobAck { job_id, status_url }"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" on the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"first call."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"200 OK"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" with the "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"same"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"JobAck"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" on an idempotent replay"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"(same "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" + same body). No second job runs."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"What to do next."},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Poll "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /jobs/{job_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status_url"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"is the canonical path) until "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"COMPLETED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" or"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"FAILED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". A "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"COMPLETED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" job with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"error_count > 0"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" means some"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"rows failed — see "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"errors[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for the per-row detail. The Jobs"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"chapter has the full polling guide."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Idempotency."},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Pass an "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" header (≤ 255 chars)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Same key with a "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"different"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" body returns"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 IDEMPOTENCY_KEY_MISMATCH"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"authorization","in":"header","schemaId":"schema_44","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Bearer <mrc_live_…> API key"},"children":[]}]}]}]},{"name":"Idempotency-Key","in":"header","schemaId":"schema_45","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Optional client-supplied key for safe retries; <= 255 chars"},"children":[]}]}]}]}],"pointer":"/paths/~1customers/post/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/BulkCustomersIn"}},"schemaId":"components/schemas/BulkCustomersIn","pointer":"/paths/~1customers/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/customers","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[{"name":"authorization","in":"header","required":false,"schemaId":"schema_44"},{"name":"Idempotency-Key","in":"header","required":false,"schemaId":"schema_45"}],"cookie":[]},"security":[],"requestBody":{"application/json":{"schemaId":"components/schemas/BulkCustomersIn"}},"responseCodes":["200","202","400","422"],"pointer":"/customers","href":"customers/public_customers_bulk_upsert","openApiOperationId":"public_customers_bulk_upsert","summary":"Public Customers Bulk Upsert"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"schemaId":"components/schemas/BulkCustomersIn","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/BulkCustomersIn"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Idempotent replay — same job returned"},"children":[]}]}]}],"mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/JobAck"}},"schemaId":"components/schemas/JobAck"},{"code":"202","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Accepted; poll status_url for completion"},"children":[]}]}]}]},{"code":"400","description":"Validation failed"},{"code":"422","description":"Idempotency-Key reused with a different body"}],"pointer":"/paths/~1customers/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/JobAck","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/JobAck"}}},{"code":"202"},{"code":"400"},{"code":"422"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/customers/public_customers_bulk_upsert"}],"panels":[]}]},"httpPath":"/customers"},{"label":"Public Customers List","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/customers/public_customers_list","routeSlug":"/openapi/customers/public_customers_list","metadata":{"seo":{"title":"Public Customers List","description":"Cursor-paginated list of customers."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"public_customers_list","name":"Public Customers List","isWebhook":false,"pointer":"/paths/~1customers/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Public Customers List","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Cursor-paginated list of customers."},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"cursor","in":"query","schemaId":"schema_46","description":"Opaque cursor from prior page"},{"name":"modified_since","in":"query","schemaId":"schema_47","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"ISO-8601 lower bound on "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"updated_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Applied only on the first page; the cursor is a strict super-set thereafter."},"children":[]}]}]}]},{"name":"limit","in":"query","schemaId":"schema_48"}],"pointer":"/paths/~1customers/get/parameters"},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"authorization","in":"header","schemaId":"schema_44","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Bearer <mrc_live_…> API key"},"children":[]}]}]}]}],"pointer":"/paths/~1customers/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/customers","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"parameters":{"path":[],"query":[{"name":"cursor","in":"query","required":false,"schemaId":"schema_46"},{"name":"modified_since","in":"query","required":false,"schemaId":"schema_47"},{"name":"limit","in":"query","required":false,"schemaId":"schema_48"}],"querystring":[],"header":[{"name":"authorization","in":"header","required":false,"schemaId":"schema_44"}],"cookie":[]},"security":[],"responseCodes":["200","422"],"pointer":"/customers","href":"customers/public_customers_list","openApiOperationId":"public_customers_list","summary":"Public Customers List"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Successful Response","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CursorPage_PublicCustomerOut_"}},"schemaId":"components/schemas/CursorPage_PublicCustomerOut_"},{"code":"422","description":"Validation Error","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/HTTPValidationError"}},"schemaId":"components/schemas/HTTPValidationError"}],"pointer":"/paths/~1customers/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/CursorPage_PublicCustomerOut_","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CursorPage_PublicCustomerOut_"}}},{"code":"422","schemaId":"components/schemas/HTTPValidationError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/HTTPValidationError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/customers/public_customers_list"}],"panels":[]}]},"httpPath":"/customers"},{"label":"Public Customers Get","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/customers/public_customers_get","routeSlug":"/openapi/customers/public_customers_get","metadata":{"seo":{"title":"Public Customers Get","description":"Fetch one customer by its partner-supplied customer_id."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"public_customers_get","name":"Public Customers Get","isWebhook":false,"pointer":"/paths/~1customers~1{customer_id}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Public Customers Get","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Fetch one customer by its partner-supplied "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"customer_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"customer_id","in":"path","schemaId":"schema_55","required":true}],"pointer":"/paths/~1customers~1{customer_id}/get/parameters"},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"authorization","in":"header","schemaId":"schema_44","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Bearer <mrc_live_…> API key"},"children":[]}]}]}]}],"pointer":"/paths/~1customers~1{customer_id}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/customers/{customer_id}","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"parameters":{"path":[{"name":"customer_id","in":"path","required":true,"schemaId":"schema_55"}],"query":[],"querystring":[],"header":[{"name":"authorization","in":"header","required":false,"schemaId":"schema_44"}],"cookie":[]},"security":[],"responseCodes":["200","404","422"],"pointer":"/customers/{customer_id}","href":"customers/public_customers_get","openApiOperationId":"public_customers_get","summary":"Public Customers Get"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Successful Response","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PublicCustomerOut"}},"schemaId":"components/schemas/PublicCustomerOut"},{"code":"404","description":"Customer not found"},{"code":"422","description":"Validation Error","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/HTTPValidationError"}},"schemaId":"components/schemas/HTTPValidationError"}],"pointer":"/paths/~1customers~1{customer_id}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/PublicCustomerOut","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PublicCustomerOut"}}},{"code":"404"},{"code":"422","schemaId":"components/schemas/HTTPValidationError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/HTTPValidationError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/customers/public_customers_get"}],"panels":[]}]},"httpPath":"/customers/{customer_id}"}],"content":{"contentType":"group","meta":{"name":"Customers"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Customers","showPageActions":true},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Customer"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is one of your B2B accounts — the party that sends you"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"the LVs Mercura processes. Each customer is keyed by the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"customer_id"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"you assign in your source system. Address is sent as an "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"addresses[]"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"array on write, but Mercura persists and returns exactly one (the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"is_default"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" entry, else the first); extra entries are dropped. Contact"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"persons live on the separate "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"/contacts"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" resource (each contact references"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"its parent by "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"parent_type"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" + "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"parent_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Mercura uses this data both to resolve"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"the customer on incoming LVs and to populate the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"customer"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" block of"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"every offer you read back."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"You can:"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /customers"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — bulk-upsert up to 100,000 customers in a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"single call. Async — returns a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"JobAck"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; poll "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /jobs/{job_id}"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"for status. Existing customers are updated in place by "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"customer_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":";"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"new ones are inserted."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /customers"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — cursor-paginated list of your customers. Use"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"modified_since"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for delta-sync."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /customers/{customer_id}"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — fetch a single customer by the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"partner-supplied id."},"children":[]}]}]}]}]}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/customers","summary":"Public Customers Bulk Upsert","prefix":{"name":"post","color":"post"},"badges":[],"link":"/customers/public_customers_bulk_upsert","deprecated":false},{"title":"/customers","summary":"Public Customers List","prefix":{"name":"get","color":"get"},"badges":[],"link":"/customers/public_customers_list","deprecated":false},{"title":"/customers/{customer_id}","summary":"Public Customers Get","prefix":{"name":"get","color":"get"},"badges":[],"link":"/customers/public_customers_get","deprecated":false}]}]}]}]}},{"type":"group","label":"Suppliers","link":"/openapi/suppliers","routeSlug":"/openapi/suppliers","items":[{"type":"link","label":"About ","link":"/openapi/suppliers/about","routeSlug":"/openapi/suppliers/about","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"About "},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"suppliers/about"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"About "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"supplier_id"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Supplier ids are partner-supplied and must match"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"[A-Za-z0-9._\\-]{1,255}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" so they round-trip safely through URL path"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"segments. Up to v1.6.x this field was called "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"external_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (see the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"v1.7.0 entry in the changelog)."},"children":[]}]}]}]}],"panels":[]}]}},{"type":"link","label":"About ","link":"/openapi/suppliers/about","routeSlug":"/openapi/suppliers/about","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"About "},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"suppliers/about"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"About "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"custom_fields"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Read responses ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /suppliers"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /suppliers/{supplier_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") return"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"custom_fields"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" keyed by the field's display "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"label"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — the same label you"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"see in the Mercura admin UI — rather than the internal column id. Columns"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"with no active definition are omitted, and on a label collision the column"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"defined first (by display order, then creation time) wins. On the "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"write"},"children":[]}]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"path ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /suppliers"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") send "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"custom_fields"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" keyed by the internal column"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"id"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; only reads are label-keyed."},"children":[]}]}]}]}],"panels":[]}]}},{"label":"Public Suppliers Bulk Upsert","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/suppliers/public_suppliers_bulk_upsert","routeSlug":"/openapi/suppliers/public_suppliers_bulk_upsert","metadata":{"seo":{"title":"Public Suppliers Bulk Upsert","description":"Bulk-upsert suppliers (async)."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"public_suppliers_bulk_upsert","name":"Public Suppliers Bulk Upsert","isWebhook":false,"pointer":"/paths/~1suppliers/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Public Suppliers Bulk Upsert","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Bulk-upsert suppliers (async)."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Accepts up to 100,000 suppliers per call. The body is validated"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"synchronously; the actual upsert runs out-of-band on a worker."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Response."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"202 Accepted"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"JobAck { job_id, status_url }"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" on the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"first call."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"200 OK"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" with the "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"same"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"JobAck"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" on an idempotent replay"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"(same "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" + same body). No second job runs."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"What to do next."},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Poll "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /jobs/{job_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status_url"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"is the canonical path) until "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"COMPLETED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" or"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"FAILED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". A "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"COMPLETED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" job with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"error_count > 0"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" means some"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"rows failed — see "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"errors[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for the per-row detail. The Jobs"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"chapter has the full polling guide."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Idempotency."},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Pass an "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" header (≤ 255 chars)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Same key with a "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"different"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" body returns"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 IDEMPOTENCY_KEY_MISMATCH"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"authorization","in":"header","schemaId":"schema_44","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Bearer <mrc_live_…> API key"},"children":[]}]}]}]},{"name":"Idempotency-Key","in":"header","schemaId":"schema_45","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Optional client-supplied key for safe retries; <= 255 chars"},"children":[]}]}]}]}],"pointer":"/paths/~1suppliers/post/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/BulkSuppliersIn"}},"schemaId":"components/schemas/BulkSuppliersIn","pointer":"/paths/~1suppliers/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/suppliers","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[{"name":"authorization","in":"header","required":false,"schemaId":"schema_44"},{"name":"Idempotency-Key","in":"header","required":false,"schemaId":"schema_45"}],"cookie":[]},"security":[],"requestBody":{"application/json":{"schemaId":"components/schemas/BulkSuppliersIn"}},"responseCodes":["200","202","400","422"],"pointer":"/suppliers","href":"suppliers/public_suppliers_bulk_upsert","openApiOperationId":"public_suppliers_bulk_upsert","summary":"Public Suppliers Bulk Upsert"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"schemaId":"components/schemas/BulkSuppliersIn","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/BulkSuppliersIn"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Idempotent replay — same job returned"},"children":[]}]}]}],"mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/JobAck"}},"schemaId":"components/schemas/JobAck"},{"code":"202","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Accepted; poll status_url for completion"},"children":[]}]}]}]},{"code":"400","description":"Validation failed"},{"code":"422","description":"Idempotency-Key reused with a different body"}],"pointer":"/paths/~1suppliers/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/JobAck","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/JobAck"}}},{"code":"202"},{"code":"400"},{"code":"422"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/suppliers/public_suppliers_bulk_upsert"}],"panels":[]}]},"httpPath":"/suppliers"},{"label":"Public Suppliers List","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/suppliers/public_suppliers_list","routeSlug":"/openapi/suppliers/public_suppliers_list","metadata":{"seo":{"title":"Public Suppliers List","description":"Cursor-paginated list of suppliers."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"public_suppliers_list","name":"Public Suppliers List","isWebhook":false,"pointer":"/paths/~1suppliers/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Public Suppliers List","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Cursor-paginated list of suppliers."},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"cursor","in":"query","schemaId":"schema_46","description":"Opaque cursor from prior page"},{"name":"modified_since","in":"query","schemaId":"schema_47","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"ISO-8601 lower bound on "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"updated_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Applied only on the first page; the cursor is a strict super-set thereafter."},"children":[]}]}]}]},{"name":"limit","in":"query","schemaId":"schema_48"}],"pointer":"/paths/~1suppliers/get/parameters"},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"authorization","in":"header","schemaId":"schema_44","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Bearer <mrc_live_…> API key"},"children":[]}]}]}]}],"pointer":"/paths/~1suppliers/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/suppliers","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"parameters":{"path":[],"query":[{"name":"cursor","in":"query","required":false,"schemaId":"schema_46"},{"name":"modified_since","in":"query","required":false,"schemaId":"schema_47"},{"name":"limit","in":"query","required":false,"schemaId":"schema_48"}],"querystring":[],"header":[{"name":"authorization","in":"header","required":false,"schemaId":"schema_44"}],"cookie":[]},"security":[],"responseCodes":["200","422"],"pointer":"/suppliers","href":"suppliers/public_suppliers_list","openApiOperationId":"public_suppliers_list","summary":"Public Suppliers List"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Successful Response","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CursorPage_PublicSupplierOut_"}},"schemaId":"components/schemas/CursorPage_PublicSupplierOut_"},{"code":"422","description":"Validation Error","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/HTTPValidationError"}},"schemaId":"components/schemas/HTTPValidationError"}],"pointer":"/paths/~1suppliers/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/CursorPage_PublicSupplierOut_","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CursorPage_PublicSupplierOut_"}}},{"code":"422","schemaId":"components/schemas/HTTPValidationError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/HTTPValidationError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/suppliers/public_suppliers_list"}],"panels":[]}]},"httpPath":"/suppliers"},{"label":"Public Suppliers Get","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/suppliers/public_suppliers_get","routeSlug":"/openapi/suppliers/public_suppliers_get","metadata":{"seo":{"title":"Public Suppliers Get","description":"Fetch one supplier by its partner-supplied supplier_id."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"public_suppliers_get","name":"Public Suppliers Get","isWebhook":false,"pointer":"/paths/~1suppliers~1{supplier_id}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Public Suppliers Get","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Fetch one supplier by its partner-supplied "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"supplier_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"supplier_id","in":"path","schemaId":"schema_56","required":true}],"pointer":"/paths/~1suppliers~1{supplier_id}/get/parameters"},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"authorization","in":"header","schemaId":"schema_44","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Bearer <mrc_live_…> API key"},"children":[]}]}]}]}],"pointer":"/paths/~1suppliers~1{supplier_id}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/suppliers/{supplier_id}","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"parameters":{"path":[{"name":"supplier_id","in":"path","required":true,"schemaId":"schema_56"}],"query":[],"querystring":[],"header":[{"name":"authorization","in":"header","required":false,"schemaId":"schema_44"}],"cookie":[]},"security":[],"responseCodes":["200","404","422"],"pointer":"/suppliers/{supplier_id}","href":"suppliers/public_suppliers_get","openApiOperationId":"public_suppliers_get","summary":"Public Suppliers Get"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Successful Response","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PublicSupplierOut"}},"schemaId":"components/schemas/PublicSupplierOut"},{"code":"404","description":"Supplier not found"},{"code":"422","description":"Validation Error","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/HTTPValidationError"}},"schemaId":"components/schemas/HTTPValidationError"}],"pointer":"/paths/~1suppliers~1{supplier_id}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/PublicSupplierOut","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PublicSupplierOut"}}},{"code":"404"},{"code":"422","schemaId":"components/schemas/HTTPValidationError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/HTTPValidationError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/suppliers/public_suppliers_get"}],"panels":[]}]},"httpPath":"/suppliers/{supplier_id}"}],"content":{"contentType":"group","meta":{"name":"Suppliers"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Suppliers","showPageActions":true},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Supplier"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is one of the vendors behind your article catalogue —"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"who you buy from. Each supplier is keyed by the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"supplier_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" you"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"assign in your source system. Mercura uses supplier data when sourcing"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"articles for an offer and when generating supplier requests (RFQs)."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"You can:"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /suppliers"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — bulk-upsert up to 100,000 suppliers in a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"single call. Async — returns a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"JobAck"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; poll "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /jobs/{job_id}"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"for status. Existing suppliers are updated in place by "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"supplier_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":";"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"new ones are inserted."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /suppliers"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — cursor-paginated list of your suppliers. Use"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"modified_since"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for delta-sync."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /suppliers/{supplier_id}"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — fetch a single supplier by the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"partner-supplied id."},"children":[]}]}]}]}]}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/suppliers","summary":"Public Suppliers Bulk Upsert","prefix":{"name":"post","color":"post"},"badges":[],"link":"/suppliers/public_suppliers_bulk_upsert","deprecated":false},{"title":"/suppliers","summary":"Public Suppliers List","prefix":{"name":"get","color":"get"},"badges":[],"link":"/suppliers/public_suppliers_list","deprecated":false},{"title":"/suppliers/{supplier_id}","summary":"Public Suppliers Get","prefix":{"name":"get","color":"get"},"badges":[],"link":"/suppliers/public_suppliers_get","deprecated":false}]}]}]}]}},{"type":"group","label":"Contacts","link":"/openapi/contacts","routeSlug":"/openapi/contacts","items":[{"type":"link","label":"Upsert key","link":"/openapi/contacts/upsert-key","routeSlug":"/openapi/contacts/upsert-key","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Upsert key"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"contacts/upsert-key"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Upsert key"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Each contact may carry its own optional "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"external_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — the stable"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"identifier from your source ERP (for example, Clage's "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"ASP_ID"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). The"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"upsert priority within a parent is:"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":true,"marker":"."},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"external_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when present on both sides — preferred because"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"email and name can drift on the source system."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"email"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for contacts without an "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"external_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"(name, phone)"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" as a last resort for email-less contacts."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A row whose "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"parent_type"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"parent_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" cannot be resolved fails at"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"the per-row level — the rest of the batch is unaffected."},"children":[]}]}]}]}],"panels":[]}]}},{"label":"Public Contacts Bulk Upsert","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/contacts/public_contacts_bulk_upsert","routeSlug":"/openapi/contacts/public_contacts_bulk_upsert","metadata":{"seo":{"title":"Public Contacts Bulk Upsert","description":"Bulk-upsert contacts (async)."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"public_contacts_bulk_upsert","name":"Public Contacts Bulk Upsert","isWebhook":false,"pointer":"/paths/~1contacts/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Public Contacts Bulk Upsert","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Bulk-upsert contacts (async)."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Each row carries its own "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"parent_type"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"customer"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" or"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"supplier"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"parent_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (the parent's partner-supplied"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"identifier — "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"customer_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for customers, "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"supplier_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"suppliers). A single batch may mix both kinds."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Upsert key."},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" When "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"external_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is set on a contact it is the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"primary upsert key against the parent. Without it, the worker"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"falls back to dedup by email, then "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"(name, phone)"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — same"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"priority as the internal ERP sync path. Rows whose parent cannot"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"be resolved fail at the per-row level and surface in the job's"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"errors[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; the rest of the batch is unaffected."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Response."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"202 Accepted"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"JobAck { job_id, status_url }"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" on the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"first call."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"200 OK"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" with the "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"same"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"JobAck"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" on an idempotent replay."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Idempotency."},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Pass an "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" header (≤ 255 chars)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Same key with a "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"different"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" body returns"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 IDEMPOTENCY_KEY_MISMATCH"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"authorization","in":"header","schemaId":"schema_44","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Bearer <mrc_live_…> API key"},"children":[]}]}]}]},{"name":"Idempotency-Key","in":"header","schemaId":"schema_45","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Optional client-supplied key for safe retries; <= 255 chars"},"children":[]}]}]}]}],"pointer":"/paths/~1contacts/post/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/BulkContactsIn"}},"schemaId":"components/schemas/BulkContactsIn","pointer":"/paths/~1contacts/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/contacts","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[{"name":"authorization","in":"header","required":false,"schemaId":"schema_44"},{"name":"Idempotency-Key","in":"header","required":false,"schemaId":"schema_45"}],"cookie":[]},"security":[],"requestBody":{"application/json":{"schemaId":"components/schemas/BulkContactsIn"}},"responseCodes":["200","202","400","422"],"pointer":"/contacts","href":"contacts/public_contacts_bulk_upsert","openApiOperationId":"public_contacts_bulk_upsert","summary":"Public Contacts Bulk Upsert"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"schemaId":"components/schemas/BulkContactsIn","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/BulkContactsIn"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Idempotent replay — same job returned"},"children":[]}]}]}],"mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/JobAck"}},"schemaId":"components/schemas/JobAck"},{"code":"202","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Accepted; poll status_url for completion"},"children":[]}]}]}]},{"code":"400","description":"Validation failed"},{"code":"422","description":"Idempotency-Key reused with a different body"}],"pointer":"/paths/~1contacts/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/JobAck","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/JobAck"}}},{"code":"202"},{"code":"400"},{"code":"422"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/contacts/public_contacts_bulk_upsert"}],"panels":[]}]},"httpPath":"/contacts"},{"label":"Public Contacts List","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/contacts/public_contacts_list","routeSlug":"/openapi/contacts/public_contacts_list","metadata":{"seo":{"title":"Public Contacts List","description":"Cursor-paginated list of contacts."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"public_contacts_list","name":"Public Contacts List","isWebhook":false,"pointer":"/paths/~1contacts/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Public Contacts List","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Cursor-paginated list of contacts."},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"parent_type","in":"query","schemaId":"schema_57","description":"Filter to contacts on a specific parent kind (customer or supplier)."},{"name":"parent_id","in":"query","schemaId":"schema_58","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Filter to contacts under one specific parent's partner-supplied id. Requires "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"parent_type"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" so the same id under both kinds cannot collide."},"children":[]}]}]}]},{"name":"is_active","in":"query","schemaId":"schema_59","description":"Filter by active flag. Omit to return both active and soft-deleted contacts."},{"name":"cursor","in":"query","schemaId":"schema_46","description":"Opaque cursor from prior page"},{"name":"modified_since","in":"query","schemaId":"schema_47","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"ISO-8601 lower bound on "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"updated_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Applied only on the first page; the cursor is a strict super-set thereafter."},"children":[]}]}]}]},{"name":"limit","in":"query","schemaId":"schema_48"}],"pointer":"/paths/~1contacts/get/parameters"},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"authorization","in":"header","schemaId":"schema_44","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Bearer <mrc_live_…> API key"},"children":[]}]}]}]}],"pointer":"/paths/~1contacts/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/contacts","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"parameters":{"path":[],"query":[{"name":"parent_type","in":"query","required":false,"schemaId":"components/schemas/ContactParentType"},{"name":"parent_id","in":"query","required":false,"schemaId":"schema_58"},{"name":"is_active","in":"query","required":false,"schemaId":"schema_59"},{"name":"cursor","in":"query","required":false,"schemaId":"schema_46"},{"name":"modified_since","in":"query","required":false,"schemaId":"schema_47"},{"name":"limit","in":"query","required":false,"schemaId":"schema_48"}],"querystring":[],"header":[{"name":"authorization","in":"header","required":false,"schemaId":"schema_44"}],"cookie":[]},"security":[],"responseCodes":["200","422"],"pointer":"/contacts","href":"contacts/public_contacts_list","openApiOperationId":"public_contacts_list","summary":"Public Contacts List"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Successful Response","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CursorPage_PublicContactOut_"}},"schemaId":"components/schemas/CursorPage_PublicContactOut_"},{"code":"422","description":"Validation Error","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/HTTPValidationError"}},"schemaId":"components/schemas/HTTPValidationError"}],"pointer":"/paths/~1contacts/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/CursorPage_PublicContactOut_","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CursorPage_PublicContactOut_"}}},{"code":"422","schemaId":"components/schemas/HTTPValidationError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/HTTPValidationError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/contacts/public_contacts_list"}],"panels":[]}]},"httpPath":"/contacts"},{"label":"Public Contacts Get","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/contacts/public_contacts_get","routeSlug":"/openapi/contacts/public_contacts_get","metadata":{"seo":{"title":"Public Contacts Get","description":"Fetch one contact by its Mercura id."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"public_contacts_get","name":"Public Contacts Get","isWebhook":false,"pointer":"/paths/~1contacts~1{contact_id}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Public Contacts Get","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Fetch one contact by its Mercura id."},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"contact_id","in":"path","schemaId":"schema_60","description":"Mercura contact id","required":true}],"pointer":"/paths/~1contacts~1{contact_id}/get/parameters"},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"authorization","in":"header","schemaId":"schema_44","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Bearer <mrc_live_…> API key"},"children":[]}]}]}]}],"pointer":"/paths/~1contacts~1{contact_id}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/contacts/{contact_id}","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"parameters":{"path":[{"name":"contact_id","in":"path","required":true,"schemaId":"schema_60"}],"query":[],"querystring":[],"header":[{"name":"authorization","in":"header","required":false,"schemaId":"schema_44"}],"cookie":[]},"security":[],"responseCodes":["200","404","422"],"pointer":"/contacts/{contact_id}","href":"contacts/public_contacts_get","openApiOperationId":"public_contacts_get","summary":"Public Contacts Get"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Successful Response","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PublicContactOut"}},"schemaId":"components/schemas/PublicContactOut"},{"code":"404","description":"Contact not found"},{"code":"422","description":"Validation Error","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/HTTPValidationError"}},"schemaId":"components/schemas/HTTPValidationError"}],"pointer":"/paths/~1contacts~1{contact_id}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/PublicContactOut","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PublicContactOut"}}},{"code":"404"},{"code":"422","schemaId":"components/schemas/HTTPValidationError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/HTTPValidationError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/contacts/public_contacts_get"}],"panels":[]}]},"httpPath":"/contacts/{contact_id}"},{"label":"Public Contacts Patch","deprecated":false,"httpVerb":"patch","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/contacts/public_contacts_patch","routeSlug":"/openapi/contacts/public_contacts_patch","metadata":{"seo":{"title":"Public Contacts Patch","description":"Partial update of a contact."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"public_contacts_patch","name":"Public Contacts Patch","isWebhook":false,"pointer":"/paths/~1contacts~1{contact_id}/patch","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Public Contacts Patch","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Partial update of a contact."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Only fields present in the payload are applied. Reassigning the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"parent is not supported — delete the contact and POST a new one."},"children":[]}]}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"contact_id","in":"path","schemaId":"schema_60","description":"Mercura contact id","required":true}],"pointer":"/paths/~1contacts~1{contact_id}/patch/parameters"},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"authorization","in":"header","schemaId":"schema_44","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Bearer <mrc_live_…> API key"},"children":[]}]}]}]}],"pointer":"/paths/~1contacts~1{contact_id}/patch/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/PublicContactPatch"}},"schemaId":"components/schemas/PublicContactPatch","pointer":"/paths/~1contacts~1{contact_id}/patch/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"PATCH","path":"/contacts/{contact_id}","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"parameters":{"path":[{"name":"contact_id","in":"path","required":true,"schemaId":"schema_60"}],"query":[],"querystring":[],"header":[{"name":"authorization","in":"header","required":false,"schemaId":"schema_44"}],"cookie":[]},"security":[],"requestBody":{"application/json":{"schemaId":"components/schemas/PublicContactPatch"}},"responseCodes":["200","404","422"],"pointer":"/contacts/{contact_id}","href":"contacts/public_contacts_patch","openApiOperationId":"public_contacts_patch","summary":"Public Contacts Patch"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"schemaId":"components/schemas/PublicContactPatch","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/PublicContactPatch"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Successful Response","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PublicContactOut"}},"schemaId":"components/schemas/PublicContactOut"},{"code":"404","description":"Contact not found"},{"code":"422","description":"Validation Error","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/HTTPValidationError"}},"schemaId":"components/schemas/HTTPValidationError"}],"pointer":"/paths/~1contacts~1{contact_id}/patch/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/PublicContactOut","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PublicContactOut"}}},{"code":"404"},{"code":"422","schemaId":"components/schemas/HTTPValidationError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/HTTPValidationError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/contacts/public_contacts_patch"}],"panels":[]}]},"httpPath":"/contacts/{contact_id}"},{"label":"Public Contacts Delete","deprecated":false,"httpVerb":"delete","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/contacts/public_contacts_delete","routeSlug":"/openapi/contacts/public_contacts_delete","metadata":{"seo":{"title":"Public Contacts Delete","description":"Soft-delete a contact (is_active=false)."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"public_contacts_delete","name":"Public Contacts Delete","isWebhook":false,"pointer":"/paths/~1contacts~1{contact_id}/delete","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Public Contacts Delete","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Soft-delete a contact ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"is_active=false"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"contact_id","in":"path","schemaId":"schema_60","description":"Mercura contact id","required":true}],"pointer":"/paths/~1contacts~1{contact_id}/delete/parameters"},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"authorization","in":"header","schemaId":"schema_44","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Bearer <mrc_live_…> API key"},"children":[]}]}]}]}],"pointer":"/paths/~1contacts~1{contact_id}/delete/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"DELETE","path":"/contacts/{contact_id}","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"parameters":{"path":[{"name":"contact_id","in":"path","required":true,"schemaId":"schema_60"}],"query":[],"querystring":[],"header":[{"name":"authorization","in":"header","required":false,"schemaId":"schema_44"}],"cookie":[]},"security":[],"responseCodes":["204","404","422"],"pointer":"/contacts/{contact_id}","href":"contacts/public_contacts_delete","openApiOperationId":"public_contacts_delete","summary":"Public Contacts Delete"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"204","description":"Successful Response"},{"code":"404","description":"Contact not found"},{"code":"422","description":"Validation Error","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/HTTPValidationError"}},"schemaId":"components/schemas/HTTPValidationError"}],"pointer":"/paths/~1contacts~1{contact_id}/delete/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"204"},{"code":"404"},{"code":"422","schemaId":"components/schemas/HTTPValidationError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/HTTPValidationError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/contacts/public_contacts_delete"}],"panels":[]}]},"httpPath":"/contacts/{contact_id}"}],"content":{"contentType":"group","meta":{"name":"Contacts"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Contacts","showPageActions":true},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Contact"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (Ansprechpartner) is a person attached to exactly one"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"business partner — a customer or a supplier. Contacts are managed via"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"a single top-level resource so that adding or updating a contact does"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not require re-sending the entire parent payload."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The contact's parent is identified by "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"parent_type"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"customer"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" or"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"supplier"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") plus "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"parent_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — the parent's partner-supplied"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"identifier ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"customer_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for customers, "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"supplier_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for suppliers)."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"You can:"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /contacts"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — bulk-upsert contacts. Async — returns a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"JobAck"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; poll "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /jobs/{job_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for status. A single batch may"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"mix customer and supplier contacts."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /contacts"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — cursor-paginated list, filterable by"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"parent_type"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"parent_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"is_active"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Use "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"modified_since"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"for delta-sync."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /contacts/{id}"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — fetch one contact by its Mercura id"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"(discoverable from "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /contacts"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" list responses)."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"PATCH /contacts/{id}"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — partial update. Reassigning a contact"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"to a different parent is not supported — delete and recreate."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"DELETE /contacts/{id}"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — soft delete. The row stays in the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"database with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"is_active=false"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", so re-POSTing the same identity"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"will reactivate it."},"children":[]}]}]}]}]}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/contacts","summary":"Public Contacts Bulk Upsert","prefix":{"name":"post","color":"post"},"badges":[],"link":"/contacts/public_contacts_bulk_upsert","deprecated":false},{"title":"/contacts","summary":"Public Contacts List","prefix":{"name":"get","color":"get"},"badges":[],"link":"/contacts/public_contacts_list","deprecated":false},{"title":"/contacts/{contact_id}","summary":"Public Contacts Get","prefix":{"name":"get","color":"get"},"badges":[],"link":"/contacts/public_contacts_get","deprecated":false},{"title":"/contacts/{contact_id}","summary":"Public Contacts Patch","prefix":{"name":"patch","color":"patch"},"badges":[],"link":"/contacts/public_contacts_patch","deprecated":false},{"title":"/contacts/{contact_id}","summary":"Public Contacts Delete","prefix":{"name":"delete","color":"delete"},"badges":[],"link":"/contacts/public_contacts_delete","deprecated":false}]}]}]}]}},{"type":"separator","label":"Orders","content":null},{"type":"group","label":"Orders","link":"/openapi/orders","routeSlug":"/openapi/orders","items":[{"type":"link","label":"Creating an order","link":"/openapi/orders/creating-an-order","routeSlug":"/openapi/orders/creating-an-order","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Creating an order"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"orders/creating-an-order"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Creating an order"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /orders"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is the programmatic twin of forwarding a purchase-order"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"email: send the order document(s) and Mercura runs the same intake"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"pipeline. Accepted files, size caps, primary-file selection, "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"context"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":","},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"customer resolution, idempotency, and the async "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"JobAck"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" → poll /"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"webhook flow are all identical to "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /tenders"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — see the Tenders"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"chapter. The only difference is the request type: an order skips LV"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"parsing and runs the order-processing agent (metadata extraction + line"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"matching)."},"children":[]}]}]}]}],"panels":[]}]}},{"type":"link","label":"Reading orders","link":"/openapi/orders/reading-orders","routeSlug":"/openapi/orders/reading-orders","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Reading orders"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"orders/reading-orders"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Reading orders"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /orders"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /orders/{order_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" return an order's matched line"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"items plus order-specific metadata. Keyed by the "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"request id"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — an order"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"has a single result, so "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"order_id == request_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". (Note: unlike a tender —"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"which is now a nested "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"chapters[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" tree with id-only "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"customer_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" /"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"project_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — an order returns a flat "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"positions[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" list and full"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"customer"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"project"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" objects.)"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — the order's workflow state: "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"PROCESSING"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"NEEDS_REVIEW"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"(metadata or line matches need a human), "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"READY_TO_EXPORT"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"EXPORTED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":","},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"ARCHIVED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"completed_at"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — when the order was last completed (finalised /"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"exported), or "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" if it never was. Refreshed on every completion; drives"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"the completion feed below."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"customer"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — the resolved business partner ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"customer_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", name,"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"address, contact person). "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"project"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"object_number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and name."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"request_custom_fields"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — organisation-defined custom fields on the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"request."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"positions[]"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — one entry "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"per line item"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Each carries"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"position_number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"article_number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (the catalogue match, when the line"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"was matched), "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"description"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"quantity"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"unit"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". A line the agent"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"could not match still appears, with its verbatim number / description and"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"a null "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"article_number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"order_metadata"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — the extracted order header: "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"customer_reference"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"(the customer's PO number), "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"order_date"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"quote_number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":","},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"project_number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"requested_delivery_date"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"shipping_terms"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":","},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"contact_person"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"special_instructions"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", and the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"delivery_recipient"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" /"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"delivery_address"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (Warenempfänger) when different from the customer."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Null while the order is still parsing."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"erp_offer_id"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — the partner-side ERP order id when known (populated"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"from your acknowledgement's "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"external_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", or from a Mercura-managed ERP"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"export)."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"acknowledgement"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — your last reported import outcome for this order"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"external_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"message"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"metadata"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"acknowledged_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), or"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" until you acknowledge it (see below)."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"blockquote","attributes":{},"children":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Prices."},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Orders are a "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"matching"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", not a pricing, workflow. Line"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"items carry the matched article, quantity, and unit but "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"no prices"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", so"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"list_price"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"net_price"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"line_net"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"line_gross"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" are "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"totals"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" are "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"0"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". The "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"positions"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"order_metadata"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" are the payload"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"that matters. (The "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"totals"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" block is kept for shape-parity with tenders.)"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Use "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"modified_since"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" on "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /orders"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for delta-sync catch-up scans."},"children":[]}]}]}]}],"panels":[]}]}},{"type":"link","label":"Completion feed","link":"/openapi/orders/completion-feed","routeSlug":"/openapi/orders/completion-feed","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Completion feed"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"orders/completion-feed"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Completion feed"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Pass "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"completed_since"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (an ISO-8601 instant) to pull every order"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"completed recently — the typical ERP write-back trigger:"},"children":[]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"GET /orders?completed_since=2026-07-09T11:55:00Z\n"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"GET /orders?completed_since=2026-07-09T11:55:00Z\n"},"children":[]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"This returns only orders with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"completed_at >= completed_since"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", ordered by"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"completed_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" ascending, and paginates with the same opaque "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (keep"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"completed_since"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" present on every page). Because "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"completed_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is refreshed"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"on every completion, a re-exported order reappears — pair it with the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"order.completed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" webhook for a robust push-plus-reconcile integration."},"children":[]}]}]}]}],"panels":[]}]}},{"type":"link","label":"Acknowledging an order","link":"/openapi/orders/acknowledging-an-order","routeSlug":"/openapi/orders/acknowledging-an-order","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Acknowledging an order"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"orders/acknowledging-an-order"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Acknowledging an order"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /orders/{order_id}/acknowledgements"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — after you import an order"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"into your ERP, report the result back so the Mercura operator can see it."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Send "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status: \"SUCCESS\""},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (optionally with your own "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"external_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"free-text "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"message"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", and any "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"metadata"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), or "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status: \"FAILED\""},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" with a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"required "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"message"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" describing why. The call is idempotent and"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"latest-wins"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for the status and message (a retry that first failed then"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"succeeded ends up "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"SUCCESS"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"); a once-reported "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"external_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is kept even if"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"a later acknowledgement omits it. Your "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"external_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is also written back to"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"the order's "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"erp_offer_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", so it shows up everywhere Mercura reads that"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"field. The response body is the recorded acknowledgement only —"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{ status, external_id, message, metadata, acknowledged_at }"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", the same"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"shape as the order's "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"acknowledgement"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" field — a small deterministic"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"confirmation of what Mercura persisted (including the sticky "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"external_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"without refetching the whole order. Recording-only: it does not change the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"order's workflow "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" or re-trigger an export."},"children":[]}]}]}]}]}],"panels":[]}]}},{"type":"link","label":"Reporting lifecycle events","link":"/openapi/orders/reporting-lifecycle-events","routeSlug":"/openapi/orders/reporting-lifecycle-events","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Reporting lifecycle events"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"orders/reporting-lifecycle-events"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Reporting lifecycle events"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /orders/{order_id}/events"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — report a lifecycle event your own"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"system recorded for an order "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"after"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" the initial acknowledgement: the order"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"was "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Cancelled"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Reopened"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", and so on. Unlike an acknowledgement (one"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"latest-wins outcome), events are "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"append-only"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — one row per report — so the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"full timeline is preserved."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Send an "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"event_type"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (a normalised token: uppercase letters, digits, and"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"underscores, e.g. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"CANCELLED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"REOPENED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), and optionally a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status_label"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"(your verbatim label), a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"message"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", an "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"occurred_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", and any "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"metadata"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Supply an "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"external_event_id"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" to make retries safe: reposting the same id"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"with the same payload returns the already-stored event with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"200"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", while"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"reusing the id with a "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"different"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" payload is a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"409"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Without it, every call"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"records a new event."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The response is the recorded event — "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{ id, event_type, status_label, message, metadata, external_event_id, occurred_at, recorded_at }"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"201"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"for a newly recorded event."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Recording-only"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": reporting an event never changes the order's workflow"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" or re-triggers an export. These are events "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"you"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" report to Mercura —"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not the webhook deliveries Mercura sends you (see the "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Webhooks"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" chapter)."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"PATCH /orders"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is planned for a later release."},"children":[]}]}]}]}],"panels":[]}]}},{"label":"Public Orders Create","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/orders/public_orders_create","routeSlug":"/openapi/orders/public_orders_create","metadata":{"seo":{"title":"Public Orders Create","description":"Create an order from uploaded files (async processing)."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"public_orders_create","name":"Public Orders Create","isWebhook":false,"pointer":"/paths/~1orders/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Public Orders Create","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Create an order from uploaded files (async processing)."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The programmatic twin of forwarding a purchase-order email: Mercura"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"stores the files, extracts the order metadata (customer, references,"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"delivery), matches the line items against your catalogue, and lands the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"order ready for review / ERP export."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Response."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"202 Accepted"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"JobAck { job_id, status_url }"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" on the first"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"call."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"200 OK"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" with the "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"same"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"JobAck"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" on an idempotent replay (same"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" + same form fields and file contents)."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"What to do next."},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Poll "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /jobs/{job_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" until "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"COMPLETED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" or "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"FAILED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", or subscribe to the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"request.processing_completed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" webhook and correlate by "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"job_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The order is then readable via "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /orders"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Idempotency."},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Pass an "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" header (≤ 255 chars). Same"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"key with a "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"different"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" body returns "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 IDEMPOTENCY_KEY_MISMATCH"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"authorization","in":"header","schemaId":"schema_44","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Bearer <mrc_live_…> API key"},"children":[]}]}]}]},{"name":"Idempotency-Key","in":"header","schemaId":"schema_45","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Optional client-supplied key for safe retries; <= 255 chars"},"children":[]}]}]}]}],"pointer":"/paths/~1orders/post/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["multipart/form-data"],"mediaTypeSchemas":{"multipart/form-data":{"schemaId":"components/schemas/Body_public_orders_create"}},"schemaId":"components/schemas/Body_public_orders_create","pointer":"/paths/~1orders/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/orders","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[{"name":"authorization","in":"header","required":false,"schemaId":"schema_44"},{"name":"Idempotency-Key","in":"header","required":false,"schemaId":"schema_45"}],"cookie":[]},"security":[],"requestBody":{"multipart/form-data":{"schemaId":"components/schemas/Body_public_orders_create"}},"responseCodes":["200","202","400","413","415","422"],"pointer":"/orders","href":"orders/public_orders_create","openApiOperationId":"public_orders_create","summary":"Public Orders Create"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"schemaId":"components/schemas/Body_public_orders_create","mediaTypes":["multipart/form-data"],"mediaTypeSchemas":{"multipart/form-data":{"schemaId":"components/schemas/Body_public_orders_create"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Idempotent replay — same job returned"},"children":[]}]}]}],"mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/JobAck"}},"schemaId":"components/schemas/JobAck"},{"code":"202","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Accepted; poll status_url, or subscribe to request.processing_completed"},"children":[]}]}]}]},{"code":"400","description":"Validation failed (no parsable file, empty file, too many files)"},{"code":"413","description":"A file exceeds 50 MB or the upload exceeds 100 MB in total"},{"code":"415","description":"A file has an unsupported extension"},{"code":"422","description":"Idempotency-Key reused with a different body"}],"pointer":"/paths/~1orders/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/JobAck","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/JobAck"}}},{"code":"202"},{"code":"400"},{"code":"413"},{"code":"415"},{"code":"422"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/orders/public_orders_create"}],"panels":[]}]},"httpPath":"/orders"},{"label":"Public Orders List","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/orders/public_orders_list","routeSlug":"/openapi/orders/public_orders_list","metadata":{"seo":{"title":"Public Orders List","description":"Cursor-paginated list of orders for the authed organisation."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"public_orders_list","name":"Public Orders List","isWebhook":false,"pointer":"/paths/~1orders/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Public Orders List","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Cursor-paginated list of orders for the authed organisation."},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"cursor","in":"query","schemaId":"schema_46","description":"Opaque cursor from prior page"},{"name":"modified_since","in":"query","schemaId":"schema_47","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"ISO-8601 lower bound on "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"updated_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Applied only on the first page; the cursor is a strict super-set thereafter."},"children":[]}]}]}]},{"name":"completed_since","in":"query","schemaId":"schema_61","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"ISO-8601 lower bound on "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"completed_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". When set, returns the "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"completion feed"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": only orders completed at/after this instant, ordered by "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"completed_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — e.g. everything completed in the last 5 minutes. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"completed_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is refreshed on every completion, so a re-exported order reappears. Keep this parameter present on every page of the feed (its value is ignored once a cursor is supplied)."},"children":[]}]}]}]},{"name":"limit","in":"query","schemaId":"schema_48"}],"pointer":"/paths/~1orders/get/parameters"},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"authorization","in":"header","schemaId":"schema_44","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Bearer <mrc_live_…> API key"},"children":[]}]}]}]}],"pointer":"/paths/~1orders/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/orders","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"parameters":{"path":[],"query":[{"name":"cursor","in":"query","required":false,"schemaId":"schema_46"},{"name":"modified_since","in":"query","required":false,"schemaId":"schema_47"},{"name":"completed_since","in":"query","required":false,"schemaId":"schema_61"},{"name":"limit","in":"query","required":false,"schemaId":"schema_48"}],"querystring":[],"header":[{"name":"authorization","in":"header","required":false,"schemaId":"schema_44"}],"cookie":[]},"security":[],"responseCodes":["200","422"],"pointer":"/orders","href":"orders/public_orders_list","openApiOperationId":"public_orders_list","summary":"Public Orders List"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Successful Response","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CursorPage_PublicOrderOut_"}},"schemaId":"components/schemas/CursorPage_PublicOrderOut_"},{"code":"422","description":"Validation Error","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/HTTPValidationError"}},"schemaId":"components/schemas/HTTPValidationError"}],"pointer":"/paths/~1orders/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/CursorPage_PublicOrderOut_","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CursorPage_PublicOrderOut_"}}},{"code":"422","schemaId":"components/schemas/HTTPValidationError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/HTTPValidationError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/orders/public_orders_list"}],"panels":[]}]},"httpPath":"/orders"},{"label":"Public Orders Get","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/orders/public_orders_get","routeSlug":"/openapi/orders/public_orders_get","metadata":{"seo":{"title":"Public Orders Get","description":"Fetch one order by its public id."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"public_orders_get","name":"Public Orders Get","isWebhook":false,"pointer":"/paths/~1orders~1{order_id}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Public Orders Get","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Fetch one order by its public id."},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"order_id","in":"path","schemaId":"schema_62","required":true}],"pointer":"/paths/~1orders~1{order_id}/get/parameters"},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"authorization","in":"header","schemaId":"schema_44","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Bearer <mrc_live_…> API key"},"children":[]}]}]}]}],"pointer":"/paths/~1orders~1{order_id}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/orders/{order_id}","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"parameters":{"path":[{"name":"order_id","in":"path","required":true,"schemaId":"schema_62"}],"query":[],"querystring":[],"header":[{"name":"authorization","in":"header","required":false,"schemaId":"schema_44"}],"cookie":[]},"security":[],"responseCodes":["200","404","422"],"pointer":"/orders/{order_id}","href":"orders/public_orders_get","openApiOperationId":"public_orders_get","summary":"Public Orders Get"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Successful Response","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PublicOrderOut"}},"schemaId":"components/schemas/PublicOrderOut"},{"code":"404","description":"Order not found"},{"code":"422","description":"Validation Error","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/HTTPValidationError"}},"schemaId":"components/schemas/HTTPValidationError"}],"pointer":"/paths/~1orders~1{order_id}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/PublicOrderOut","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PublicOrderOut"}}},{"code":"404"},{"code":"422","schemaId":"components/schemas/HTTPValidationError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/HTTPValidationError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/orders/public_orders_get"}],"panels":[]}]},"httpPath":"/orders/{order_id}"},{"label":"Public Orders Acknowledge","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/orders/public_orders_acknowledge","routeSlug":"/openapi/orders/public_orders_acknowledge","metadata":{"seo":{"title":"Public Orders Acknowledge","description":"Report the ERP import outcome for one order."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"public_orders_acknowledge","name":"Public Orders Acknowledge","isWebhook":false,"pointer":"/paths/~1orders~1{order_id}~1acknowledgements/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Public Orders Acknowledge","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Report the ERP import outcome for one order."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The partner POSTs "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"SUCCESS"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"FAILED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), optionally an"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"external_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (its own order/record id) and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"metadata"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", and a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"message"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (required on "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"FAILED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" as the reason, optional on "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"SUCCESS"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"as a free-text note). Idempotent and latest-wins: a later acknowledgement"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"overwrites the earlier one. When supplied, "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"external_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is also written"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"back to the order's "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"erp_offer_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Returns the recorded acknowledgement"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"(status, sticky-aware external_id, message, metadata, acknowledged_at) —"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"the same shape as the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"acknowledgement"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" field on "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"PublicOrderOut"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", not"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"the whole order. Recording-only: it does not alter the order's workflow"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"status or re-trigger any export."},"children":[]}]}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"order_id","in":"path","schemaId":"schema_62","required":true}],"pointer":"/paths/~1orders~1{order_id}~1acknowledgements/post/parameters"},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"authorization","in":"header","schemaId":"schema_44","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Bearer <mrc_live_…> API key"},"children":[]}]}]}]}],"pointer":"/paths/~1orders~1{order_id}~1acknowledgements/post/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/PublicOrderAcknowledgementCreate"}},"schemaId":"components/schemas/PublicOrderAcknowledgementCreate","pointer":"/paths/~1orders~1{order_id}~1acknowledgements/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/orders/{order_id}/acknowledgements","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"parameters":{"path":[{"name":"order_id","in":"path","required":true,"schemaId":"schema_62"}],"query":[],"querystring":[],"header":[{"name":"authorization","in":"header","required":false,"schemaId":"schema_44"}],"cookie":[]},"security":[],"requestBody":{"application/json":{"schemaId":"components/schemas/PublicOrderAcknowledgementCreate"}},"responseCodes":["200","400","404","422"],"pointer":"/orders/{order_id}/acknowledgements","href":"orders/public_orders_acknowledge","openApiOperationId":"public_orders_acknowledge","summary":"Public Orders Acknowledge"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"schemaId":"components/schemas/PublicOrderAcknowledgementCreate","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/PublicOrderAcknowledgementCreate"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Successful Response","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PublicOrderAcknowledgement"}},"schemaId":"components/schemas/PublicOrderAcknowledgement"},{"code":"400","description":"Validation failed (e.g. FAILED without message)"},{"code":"404","description":"Order not found"},{"code":"422","description":"Validation Error","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/HTTPValidationError"}},"schemaId":"components/schemas/HTTPValidationError"}],"pointer":"/paths/~1orders~1{order_id}~1acknowledgements/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/PublicOrderAcknowledgement","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PublicOrderAcknowledgement"}}},{"code":"400"},{"code":"404"},{"code":"422","schemaId":"components/schemas/HTTPValidationError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/HTTPValidationError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/orders/public_orders_acknowledge"}],"panels":[]}]},"httpPath":"/orders/{order_id}/acknowledgements"},{"label":"Public Orders Record Event","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/orders/public_orders_record_event","routeSlug":"/openapi/orders/public_orders_record_event","metadata":{"seo":{"title":"Public Orders Record Event","description":"Report a lifecycle event your system recorded for one order."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"public_orders_record_event","name":"Public Orders Record Event","isWebhook":false,"pointer":"/paths/~1orders~1{order_id}~1events/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Public Orders Record Event","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Report a lifecycle event your system recorded for one order."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Append-only: each POST records one event (e.g. the order was "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Cancelled"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" in"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"your ERP), so the full partner-side timeline is preserved. Supply"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"external_event_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" to make retries idempotent — an identical replay"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"returns the already-stored event with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"200"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", a conflicting reuse of the id"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"409"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Recording-only"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": this never changes the order's workflow"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"status or re-triggers any export. These are events "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"you"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" report to Mercura —"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not the webhook deliveries Mercura sends you."},"children":[]}]}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"order_id","in":"path","schemaId":"schema_62","required":true}],"pointer":"/paths/~1orders~1{order_id}~1events/post/parameters"},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"authorization","in":"header","schemaId":"schema_44","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Bearer <mrc_live_…> API key"},"children":[]}]}]}]}],"pointer":"/paths/~1orders~1{order_id}~1events/post/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/PublicOrderEventCreate"}},"schemaId":"components/schemas/PublicOrderEventCreate","pointer":"/paths/~1orders~1{order_id}~1events/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/orders/{order_id}/events","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"parameters":{"path":[{"name":"order_id","in":"path","required":true,"schemaId":"schema_62"}],"query":[],"querystring":[],"header":[{"name":"authorization","in":"header","required":false,"schemaId":"schema_44"}],"cookie":[]},"security":[],"requestBody":{"application/json":{"schemaId":"components/schemas/PublicOrderEventCreate"}},"responseCodes":["200","201","400","404","409","422"],"pointer":"/orders/{order_id}/events","href":"orders/public_orders_record_event","openApiOperationId":"public_orders_record_event","summary":"Public Orders Record Event"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"schemaId":"components/schemas/PublicOrderEventCreate","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/PublicOrderEventCreate"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Idempotent replay: this external_event_id was already recorded"},"children":[]}]}]}]},{"code":"201","description":"Successful Response","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PublicOrderEvent"}},"schemaId":"components/schemas/PublicOrderEvent"},{"code":"400","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Validation failed (e.g. bad event_type, oversized metadata, future occurred_at)"},"children":[]}]}]}]},{"code":"404","description":"Order not found"},{"code":"409","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"external_event_id reused with a different payload, or per-request event cap reached"},"children":[]}]}]}]},{"code":"422","description":"Validation Error","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/HTTPValidationError"}},"schemaId":"components/schemas/HTTPValidationError"}],"pointer":"/paths/~1orders~1{order_id}~1events/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200"},{"code":"201","schemaId":"components/schemas/PublicOrderEvent","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PublicOrderEvent"}}},{"code":"400"},{"code":"404"},{"code":"409"},{"code":"422","schemaId":"components/schemas/HTTPValidationError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/HTTPValidationError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/orders/public_orders_record_event"}],"panels":[]}]},"httpPath":"/orders/{order_id}/events"}],"content":{"contentType":"group","meta":{"name":"Orders"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Orders","showPageActions":true},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"An "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"order"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is an incoming purchase order (Bestellung): a customer places"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"a firm order and Mercura extracts the order metadata, matches the line"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"items against your article catalogue, and prepares it for ERP export."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Orders are one of the two entry points of the workflow (the other is"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"tenders"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}]}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/orders","summary":"Public Orders Create","prefix":{"name":"post","color":"post"},"badges":[],"link":"/orders/public_orders_create","deprecated":false},{"title":"/orders","summary":"Public Orders List","prefix":{"name":"get","color":"get"},"badges":[],"link":"/orders/public_orders_list","deprecated":false},{"title":"/orders/{order_id}","summary":"Public Orders Get","prefix":{"name":"get","color":"get"},"badges":[],"link":"/orders/public_orders_get","deprecated":false},{"title":"/orders/{order_id}/acknowledgements","summary":"Public Orders Acknowledge","prefix":{"name":"post","color":"post"},"badges":[],"link":"/orders/public_orders_acknowledge","deprecated":false},{"title":"/orders/{order_id}/events","summary":"Public Orders Record Event","prefix":{"name":"post","color":"post"},"badges":[],"link":"/orders/public_orders_record_event","deprecated":false}]}]}]}]}},{"type":"separator","label":"Tenders","content":null},{"type":"group","label":"Tenders","link":"/openapi/tenders","routeSlug":"/openapi/tenders","items":[{"type":"link","label":"Creating a tender","link":"/openapi/tenders/creating-a-tender","routeSlug":"/openapi/tenders/creating-a-tender","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Creating a tender"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"tenders/creating-a-tender"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Creating a tender"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /tenders"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is the programmatic twin of forwarding an LV / RFQ email to"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"anfragen@lv.mercura.ai"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": send the same files you would attach to the mail"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"and Mercura runs the identical intake pipeline — same parsers, same"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"matching, same landing states. Accepted files: GAEB"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":".d81/.d83/.d94/.p81/.p83/.p93/.p94/.x81/.x83/.x93/.x94/.onlv"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":".xlsx"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":","},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":".csv"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":".docx"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":".txt"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":".pdf"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", images, and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":".eml"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Max 50 MB per file,"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"100 MB total, 20 files. Mercura picks the file that drives parsing (GAEB"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"before spreadsheet/CSV/DOCX/TXT before PDF before image); at least one file"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"must be parsable."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Use the optional "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"context"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" field to pass anything that helps Mercura"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"process the tender — the original email body, delivery notes, or guidance"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"for article matching. An unresolvable "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"customer_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"customer_email"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" an error: the tender is created without a customer, exactly like an"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"email from an unknown sender."},"children":[]}]}]}]}],"panels":[]}]}},{"type":"link","label":"Carrying your own reference and routing","link":"/openapi/tenders/carrying-your-own-reference-and-routing","routeSlug":"/openapi/tenders/carrying-your-own-reference-and-routing","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Carrying your own reference and routing"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"tenders/carrying-your-own-reference-and-routing"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Carrying your own reference and routing"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Two optional form fields let a CRM / ERP hand over the context Mercura"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"cannot infer from the files:"},"children":[]}]}]},{"$$mdtype":"Node","type":"table","attributes":{},"children":[{"$$mdtype":"Node","type":"thead","attributes":{},"children":[{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"th","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Field"},"children":[]}]}]},{"$$mdtype":"Node","type":"th","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"What it does"},"children":[]}]}]}]}]},{"$$mdtype":"Node","type":"tbody","attributes":{},"children":[{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"custom_fields"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"JSON object of your organisation's custom fields, keyed by the field's "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"label"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — e.g. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{\"Case Number\": \"00012345\"}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Comes back unchanged as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"request_custom_fields"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" on "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /tenders/{tender_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"branch"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Name of the Mercura branch (Niederlassung), matched case-insensitively. Routes the tender to the team that works that branch."},"children":[]}]}]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Both are validated against your organisation's configuration "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"before"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"job is created, so a typo is a plain "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"400"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" with no job and no half-created"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"tender: an unknown branch name, an unknown custom-field label, or a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"duplicate branch name all fail fast. This is deliberately stricter than"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"customer_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — a tender that lands unrouted or without its case number is"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"invisibly wrong, which is worse than a rejected upload."},"children":[]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"curl -X POST https://prod-euapi.mercura.ai/api/public/v1/tenders \\\n  -H \"Authorization: Bearer $MERCURA_API_KEY\" \\\n  -H \"Idempotency-Key: case-00012345\" \\\n  -F \"files=@Leistungsverzeichnis.x83\" \\\n  -F \"name=Neubau Bürogebäude Nord\" \\\n  -F \"branch=Niederlassung München\" \\\n  -F 'custom_fields={\"Case Number\": \"00012345\"}'\n","language":"bash"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"curl -X POST https://prod-euapi.mercura.ai/api/public/v1/tenders \\\n  -H \"Authorization: Bearer $MERCURA_API_KEY\" \\\n  -H \"Idempotency-Key: case-00012345\" \\\n  -F \"files=@Leistungsverzeichnis.x83\" \\\n  -F \"name=Neubau Bürogebäude Nord\" \\\n  -F \"branch=Niederlassung München\" \\\n  -F 'custom_fields={\"Case Number\": \"00012345\"}'\n"},"children":[]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Store the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"request_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" that "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /jobs/{job_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" returns: it is the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"tender_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for every later call, and the stable handle to correlate the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"tender with the record on your side."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The upload is accepted in seconds; the job stays "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"RUNNING"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" until the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"processing pipeline finishes"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (typically a few minutes). Learn the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"outcome either by polling "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /jobs/{job_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" until "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"COMPLETED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"FAILED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", or by subscribing to the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"request.processing_completed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" webhook and correlating by "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"job_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]}],"panels":[]}]}},{"type":"link","label":"Reading tenders","link":"/openapi/tenders/reading-tenders","routeSlug":"/openapi/tenders/reading-tenders","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Reading tenders"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"tenders/reading-tenders"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Reading tenders"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A tender is "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"keyed by the request id"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"tender_id == request_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"): reading"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"one returns the tender's "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"current"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" projected state — the structured, priced"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"result Mercura produces — carrying everything on the corresponding PDF the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"customer sees:"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — lifecycle state ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"NEW"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"IN_PROGRESS"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"DONE"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"CANCELLED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":","},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"PARSING"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"PARSING_FAILED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"DONE"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" means the tender has been completed"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"(released to the partner API via the seller's "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Finalize"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / Export → API"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"action — which is what stamps "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"completed_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and fires "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"tender.completed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"completed_at"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — when the tender was last completed, or "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" if it"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"never was. Refreshed on "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"every"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" completion, so a re-export moves it"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"forward (see the completion feed below)."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"customer_id"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — the "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"direct"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" customer (Sold-To) "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"reference only"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (your"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"BusinessPartner.external_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"); resolve name / address / contact / custom"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"fields via "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /customers/{customer_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Null when the tender has no customer."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"indirect_customer_id"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — the "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"indirect"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" customer (Mercura's "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"indirekter"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Kunde"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"reference only"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; resolve the full record via"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /customers/{customer_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Distinct from "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"customer_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Null when the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"tender has no indirect customer."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"project_id"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — the project "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"reference only"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; resolve the full record via"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /projects/{project_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Null when the tender has no project."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"project_name"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — the project's display name, surfaced inline (same value as"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"name"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" on "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /projects/{project_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") so you need no second call. Null when"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"the tender has no project."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"submission_date"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — the bid-submission date (Submissions-/Abgabetermin) as"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"originally supplied on the project: an ISO date "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"or"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" free text, "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"unknown. This is the tender's "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"submission deadline"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", not an offer-validity"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"gültig bis"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") date. Mirrors the project's "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"submission_date"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"deadline"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — Mercura's "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"internal"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" handling deadline for the request"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"(typically the submission date minus a buffer): an ISO date or free text,"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when unset. Informational only — not the submission deadline and not an"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"offer-validity date."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"user_email"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — the responsible Mercura user for the tender (mirrors the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"integration-export "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"user_email"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"branch"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — the primary Mercura branch (Niederlassung) assigned to the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"tender as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{ id, name }"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", or "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when none is assigned."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"request_custom_fields"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — custom fields on the underlying request, keyed by"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"display label ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"multi_select"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" values resolved to their option labels). "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Writable"},"children":[]}]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"on "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"PATCH"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (see "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Editing a tender"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"user_custom_fields"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — custom fields on the responsible user ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"user_email"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"),"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"keyed by display label — e.g. a user's "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"SGI"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when the tender has no"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"responsible user or the user has no custom fields. (You can still resolve the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"same fields via "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /users?email={user_email}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":".)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"chapters[]"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — the title tree. Each chapter carries an "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":","},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"chapter_number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"name"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"is_pretext"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (a Vorbemerkung), nested "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"chapters[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":","},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"positions[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"positions[]"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (per chapter) — one entry per line, each with:"},"children":[]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"id"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — an opaque, re-match-stable handle (the position's request-scoped"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"number); the key you pass back to edit the line."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"line_type"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"ARTICLE"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"TEXT"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"DIVERSE"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"labels[]"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — role/label overlay, each "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{ text, type }"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"type"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"CUSTOM"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"ALTERNATIVE"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"ACCESSORY"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"PARTS_LIST"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"); a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"CUSTOM"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" label"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"carries your org-defined text (product groups, \"Bestellware\", …)."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"gaeb_position_type"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — the GAEB Positionsart ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"BASE"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":","},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"OPTIONAL_WITH_TOTAL"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"OPTIONAL_WITHOUT_TOTAL"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"ALTERNATIVE"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") or null."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"article_number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"manufacturer_article_number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"name"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"description"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":","},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"additional_text"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"quantity"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"unit"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"list_price"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"discount_percentage"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":","},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"net_price"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"line_net"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"line_gross"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"parent_line_id"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — set only on an "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"article-note"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" line: the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" of the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"line it annotates (both sit on the same position). Null everywhere else."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"name"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — the matched article's name: the article text maintained in Mercura"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"(the title shown in the UI). Null for a free-text line."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"description"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — the matched article's own "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"description"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" field (distinct from"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"name"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), or the free-text for a text line."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"manufacturer"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — the matched article's manufacturer / supplier name"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"(Hersteller/Lieferant), or null for a free-text line."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"custom_attributes"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — the matched article's catalogue custom attributes"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"(same shape as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /articles/{id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"'s "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"custom_attributes"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", e.g. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"sales_unit"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":","},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"the article type "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"article_type"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", and other source-system unit/extra fields),"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"or null for a free-text line."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"For a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"DIVERSE"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" line matched to a generic \"Divers\" placeholder article,"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"description"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is the operator-typed text (what you see in the matching UI),"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not the placeholder article's catalogue text."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"is_counted_in_total"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — false for lines excluded from the totals"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"(alternatives, Bedarfsposition ohne Gesamtbetrag)."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"partner_pricing_override_at"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — when a partner last overrode the line's"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"price via PATCH, else null."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"is_deleted"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"deleted_at"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — whether "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"this line"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" was removed from"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"the tender, and when. Only ever set when you ask for removed lines"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"include_deleted=true"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", see "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Removed lines and positions"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"totals"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"positions_subtotal"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"additional_discount_percentage"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":","},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"net_total"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"gross_total"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (EUR), and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"partner_totals_override_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"positions_subtotal"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is a derived helper: the sum across lines with"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"is_counted_in_total = true"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (excludes alternatives and Bedarfspositionen ohne"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Gesamtbetrag). "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"net_total"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"gross_total"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" are the "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"authoritative"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" amounts that"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"match the PDF — they are "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"after"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" the header discount and may include optional"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"positions or other adjustments, so they can legitimately differ from"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"positions_subtotal"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Treat "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"net_total"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" as the amount owed."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"erp_offer_id"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — the partner-side ERP offer id when known (populated"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"from your acknowledgement's "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"external_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", or from a Mercura-managed ERP"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"export)."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"acknowledgement"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — your last reported import outcome for this tender"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"external_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"message"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"metadata"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"acknowledged_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), or"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" until you acknowledge it (see below)."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"You can:"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /tenders"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — cursor-paginated list. Use "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"modified_since"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"delta-sync catch-up scans, or "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" to filter by lifecycle state."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /tenders/{tender_id}"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — one tender in full. This is what the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"tender.completed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" webhook points you at. The response carries a strong"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"ETag"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" over the tender content; pass it back as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" on PATCH."},"children":[]}]}]}]}]}],"panels":[]}]}},{"type":"link","label":"Removed lines and positions","link":"/openapi/tenders/removed-lines-and-positions","routeSlug":"/openapi/tenders/removed-lines-and-positions","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Removed lines and positions"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"tenders/removed-lines-and-positions"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Removed lines and positions"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"By default a tender contains only what is currently on it: a line removed after"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"you imported the tender simply stops appearing, which leaves you unable to tell"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"it apart from one that never existed. Pass "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"include_deleted=true"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" on"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /tenders"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" or "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /tenders/{tender_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and removed lines come back"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"flagged"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" instead of omitted, so you can delete the corresponding record in"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"your own system:"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"is_deleted"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"true"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" on the removed line and "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"deleted_at"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" carries the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"UTC time "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"that line"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" was removed ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" on a legacy row removed before those"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"times were recorded)."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Removals are reported per "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"line"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Take one article off a position and that"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"article comes back flagged next to the position's live lines — which is what"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"you need if you keep one record per matched article. The "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" tells you which"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"record to drop."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A whole position (Ordnungszahl) is gone exactly when "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"all"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" lines sharing its"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"position_number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" come back flagged."},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" If you key your records on the ordinal"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"number rather than per article, that is your signal; a position with at least"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"one unflagged line still exists."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Removed lines never count toward "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"totals"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", and the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"ETag"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" covers the live"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"content only. A document fetched with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"include_deleted=true"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" therefore"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"round-trips through "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"PATCH /tenders/{tender_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" unchanged: echoed removed"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"lines are ignored."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A position that Mercura merely flags as "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not relevant"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is not a removal and"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"stays hidden either way."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Line "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"s are stable across a removal — the live primary line keeps its"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"handle. They do change when a source document is "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"reprocessed"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", which"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"recreates the tender's positions and lines (and changes the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"ETag"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}]}]}],"panels":[]}]}},{"type":"link","label":"Tender documents","link":"/openapi/tenders/tender-documents","routeSlug":"/openapi/tenders/tender-documents","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Tender documents"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"tenders/tender-documents"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Tender documents"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /tenders/{tender_id}/documents"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" lists the "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"source documents"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" the customer"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"uploaded into the tender — the same attachments a forwarded LV / RFQ email"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"carried (GAEB, PDF, Excel, images, "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":".eml"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), or the files a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /tenders"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"upload sent. Use it to archive the customer's original request alongside the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"priced offer you write back into your ERP."},"children":[]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"GET /tenders/63365/documents\n"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"GET /tenders/63365/documents\n"},"children":[]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"{\n  \"data\": [\n    {\n      \"id\": \"b3f1c2a4-9d6e-4f21-8a0c-2e5d7f9a1b34\",\n      \"filename\": \"LV_Tiefgarage_Beleuchtung.gaeb\",\n      \"content_type\": \"application/xml\",\n      \"size_bytes\": 284913,\n      \"created_at\": \"2026-07-08T09:14:00Z\",\n      \"download_url\": \"https://s3.fra1.example.com/mercura/files/…?X-Amz-Expires=3600&X-Amz-Signature=…\",\n      \"download_url_expires_at\": \"2026-07-08T10:14:00Z\"\n    }\n  ]\n}\n","language":"json"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"{\n  \"data\": [\n    {\n      \"id\": \"b3f1c2a4-9d6e-4f21-8a0c-2e5d7f9a1b34\",\n      \"filename\": \"LV_Tiefgarage_Beleuchtung.gaeb\",\n      \"content_type\": \"application/xml\",\n      \"size_bytes\": 284913,\n      \"created_at\": \"2026-07-08T09:14:00Z\",\n      \"download_url\": \"https://s3.fra1.example.com/mercura/files/…?X-Amz-Expires=3600&X-Amz-Signature=…\",\n      \"download_url_expires_at\": \"2026-07-08T10:14:00Z\"\n    }\n  ]\n}\n"},"children":[]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Only the customer's own uploads are listed."},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Mercura-generated artefacts —"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"the offer / display PDF, the structured-doc preview, and internal OCR /"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"metadata side-files — and any hidden files are excluded. If a tender has no"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"uploaded documents, "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"data"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is an empty array."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"download_url"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is a short-lived, pre-signed link"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" to the bytes in object"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"storage. Fetch it with a plain "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"no "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Authorization"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" header"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — and the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"file downloads with its original name and content type. The API never proxies"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"the file contents."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The link expires"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" at "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"download_url_expires_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (one hour). Treat both the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"download_url"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and the whole document set as transient: re-list to obtain fresh"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"links rather than persisting a URL. In non-production environments where the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"storage backend cannot sign URLs, "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"download_url"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and its expiry are "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"id"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is the file's stable id: it is stable across re-lists, so you can skip"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"a document you have already imported."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"An unknown, non-tender, or foreign id returns "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"404"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — indistinguishable from a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"missing tender."},"children":[]}]}]}]}]}],"panels":[]}]}},{"type":"link","label":"Editing a tender","link":"/openapi/tenders/editing-a-tender","routeSlug":"/openapi/tenders/editing-a-tender","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Editing a tender"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"tenders/editing-a-tender"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Editing a tender"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"PATCH /tenders/{tender_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is a "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"partial, in-place"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" edit that returns the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"re-projected tender."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Recommended: send only what changed (sparse)."},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Put the lines you touched in a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"top-level "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"positions[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", each addressed by its "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — no chapter path needed"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"(line ids are unique within a tender). This is the primary contract for keeping"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"an ERP in sync and the one that scales: the body is proportional to your edit,"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not to the tender."},"children":[]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"PATCH /tenders/63365\n{ \"positions\": [ { \"id\": \"10\", \"net_price\": \"1.00\" }, { \"id\": \"11\", \"op\": \"delete\" } ] }\n"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"PATCH /tenders/63365\n{ \"positions\": [ { \"id\": \"10\", \"net_price\": \"1.00\" }, { \"id\": \"11\", \"op\": \"delete\" } ] }\n"},"children":[]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Also supported: full-document round-trip."},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" The body is field-aligned with the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"GET response, so you "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"can"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" GET a tender, change fields in the nested "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"chapters[]"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"tree, and send it all back — read-only fields are tolerated and ignored, unknown"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"keys are a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"400"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Prefer sparse for large tenders: a full round-trip re-sends and"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"re-resolves every line. (A discounted line's GET carries "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"list_price"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" +"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"discount_percentage"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" + "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"net_price"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" together; that's accepted as long as they're"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"consistent — but if you "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"change"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" a price, send only the field you changed, or a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"contradictory pair is a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"400"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":".)"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Edit a line"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — top-level "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"positions[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (by "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), or under its chapter."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Price resolution: "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"list_price"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (Brutto) is the anchor, then "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"at most one"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" of"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"discount_percentage"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"net_price"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" resolves the other:"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"discount_percentage"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is a "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"manual"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" discount applied "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"on top of"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" any"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"catalogue/pricing-rule discount already on the line — i.e. on the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"net-of-catalogue base, exactly as the Mercura UI applies it — not a raw"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"percentage off "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"list_price"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Editing it recomputes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"net_price"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" off that base"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"(a catalogue discount is preserved)."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"net_price"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" sets the exact per-unit net; the resulting "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"discount_percentage"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"is back-computed from it. "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"To pin an exact net, send "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"net_price"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Also editable: "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"quantity"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"unit"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"additional_text"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"description"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is editable"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"only on a free-text line — on an ARTICLE line it comes from the catalogue and"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"is read-only (sent values are ignored, so a GET body still round-trips)."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Note on "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"additional_text"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": it is stored and returned, and some ERP"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"integrations consume it as their long-text element, but "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"no Mercura-side"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"output reads it"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — neither the offer PDF nor the GAEB export. To put text on a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"line that reaches those, use an "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"article note"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (below)."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Annotate a line (article note)"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — send "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"parent_line_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" of the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"line to annotate) plus "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"description"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", and "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"no"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". The note becomes a text"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"line on the parent's own position — no new position, no own position number —"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"and its text follows the path an operator-typed note takes: into Mercura's"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"offer PDF and GAEB export, and folded into the parent line's remark"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Bemerkung"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") in the ERP payload."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"This is the one add that needs no chapter path (the parent line already names"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"its position), so it is accepted in the top-level "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"positions[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" too. It is an"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"upsert"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": sending a note for a parent that already has one "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"replaces"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" that"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"note, so a retried PATCH cannot pile up duplicates. A note is text only —"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"article_number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", prices, "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"quantity"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"unit"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"additional_text"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" on a note"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"are rejected with a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"400"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" rather than silently dropped, and a note never"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"enters the totals. To remove one, address the note line itself with"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{ \"id\": \"…\", \"op\": \"delete\" }"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Delete a line"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{ \"id\": \"…\", \"op\": \"delete\" }"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (soft-delete). Works in the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"top-level "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"positions[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" or under a chapter."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Add a line"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — include a position "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"without"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" an "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" under an existing"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"chapter (adds need the chapter target, so they can't go in top-level"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"positions[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — an article note is the exception). With an "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"article_number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" it becomes an article line (resolved"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"against your catalogue — an unknown number is a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"400"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"); without one, send"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"description"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for a free-text line. Either way you can set the line's price and"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"discount on the add ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"list_price"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" + one of "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"discount_percentage"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"net_price"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Summary totals"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"totals.net_total"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"totals.gross_total"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" persist as your"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"authoritative amounts and "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"win over"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Mercura's recalculation (they may"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"legitimately differ from the line sums — freight, rounding, surcharges)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"totals.additional_discount_percentage"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" sets the header discount."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Request custom fields"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — send a label-keyed "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"request_custom_fields"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" object to"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"shallow-merge values onto the tender's underlying request (symmetric with the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"read side — send back exactly what you GET). A "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"value"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" clears that field;"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"a whole-object "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (or omitting it) is a no-op, so a full GET body round-trips."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"An unknown label or an unknown "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"multi_select"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" option label is a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"400"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Use this to"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"report partner-maintained values back with the prices — e.g. an \"Offer Validity\""},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"(Angebotsgültigkeit) custom field maintained in your ERP."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Close a tender"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — see "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Closing a tender"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" below."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Concurrency"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — pass the GET's "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"ETag"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; if the tender changed"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"since you read it you get a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"412"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (re-fetch and retry). Omitting "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"skips the check (last-write-wins)."},"children":[]}]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Apart from an explicit "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" write, editing does not change the tender's"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"lifecycle "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and never re-triggers an export."},"children":[]}]}]}]}],"panels":[]}]}},{"type":"link","label":"Closing a tender","link":"/openapi/tenders/closing-a-tender","routeSlug":"/openapi/tenders/closing-a-tender","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Closing a tender"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"tenders/closing-a-tender"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Closing a tender"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Not every tender that reaches Mercura is worked in Mercura. A small one may be"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"quoted by hand, or it may belong to a product line that is not onboarded — and"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"its case is then closed in your CRM while the tender stays open in Mercura"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"forever. Left alone, those accumulate until the open list is unusable."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Send "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status: \"CANCELLED\""},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" to close such a tender so it leaves the open inbox:"},"children":[]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"PATCH /tenders/63365\n{ \"status\": \"CANCELLED\" }\n"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"PATCH /tenders/63365\n{ \"status\": \"CANCELLED\" }\n"},"children":[]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"CANCELLED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is the only writable transition."},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Everything else is"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Mercura-side workflow — a tender becomes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"DONE"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" by being exported, and"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"NEW → IN_PROGRESS"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when someone starts working it. Any other target is a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"400"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Echoing the current status is a no-op"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", so a full GET body still"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"round-trips through PATCH whatever the tender's status is."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"409"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"PARSING"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"DONE"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" A "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"PARSING"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" tender is mid-flight (retry"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"once it lands); a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"DONE"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" one has already been completed in Mercura, and"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"silently downgrading that to "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"CANCELLED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" would lose the result. Everything"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"else — "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"NEW"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"IN_PROGRESS"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"PARSING_FAILED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — is cancellable."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Cancelling is "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" an acknowledgement. Use"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /tenders/{tender_id}/acknowledgements"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" to report an "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"import outcome"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":";"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"use this to close a tender nobody will work."},"children":[]}]}]}]}]}],"panels":[]}]}},{"type":"link","label":"Acknowledging a tender","link":"/openapi/tenders/acknowledging-a-tender","routeSlug":"/openapi/tenders/acknowledging-a-tender","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Acknowledging a tender"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"tenders/acknowledging-a-tender"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Acknowledging a tender"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /tenders/{tender_id}/acknowledgements"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — after you import a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"tender's offer into your ERP/CRM, report the result back so the Mercura"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"operator can see it. Send "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status: \"SUCCESS\""},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (optionally with your own"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"external_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", a free-text "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"message"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", and any "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"metadata"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), or"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status: \"FAILED\""},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" with a required "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"message"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" describing why. The call is"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"idempotent and "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"latest-wins"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for the status and message (a retry that"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"first failed then succeeded ends up "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"SUCCESS"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"); a once-reported"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"external_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is kept even if a later acknowledgement omits it. Your"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"external_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is also written back to the tender's "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"erp_offer_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", so it"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"shows up everywhere Mercura reads that field. The response body is the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"recorded acknowledgement only — "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{ status, external_id, message, metadata, acknowledged_at }"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", the same shape as the tender's "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"acknowledgement"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" field —"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"a small deterministic confirmation of what Mercura persisted (including the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"sticky "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"external_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") without refetching the whole tender. Recording-only:"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"it does not change the tender's lifecycle "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" or re-trigger an export."},"children":[]}]}]}]}]}],"panels":[]}]}},{"type":"link","label":"Reporting lifecycle events","link":"/openapi/tenders/reporting-lifecycle-events","routeSlug":"/openapi/tenders/reporting-lifecycle-events","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Reporting lifecycle events"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"tenders/reporting-lifecycle-events"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Reporting lifecycle events"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /tenders/{tender_id}/events"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — report a lifecycle event your own"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"system recorded for a tender "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"after"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" the initial acknowledgement: the tender"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"was marked "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Won"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Lost"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", or "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Cancelled"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" in your CRM, and so on. Unlike"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"an acknowledgement (one latest-wins outcome), events are "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"append-only"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — one"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"row per report — so the full timeline is preserved."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Send an "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"event_type"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (a normalised token: uppercase letters, digits, and"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"underscores, e.g. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"WON"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"LOST"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"CANCELLED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), and optionally a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status_label"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (your verbatim label, e.g. \"Closed Won\"), a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"message"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", an"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"occurred_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (when it happened on your side), and any "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"metadata"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Supply an "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"external_event_id"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" to make retries safe: reposting the same id"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"with the same payload returns the already-stored event with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"200"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (instead of"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"recording a duplicate), while reusing the id with a "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"different"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" payload is a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"409"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Without it, every call records a new event."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The response is the recorded event — "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{ id, event_type, status_label, message, metadata, external_event_id, occurred_at, recorded_at }"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"201"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"for a newly recorded event."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Recording-only"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": reporting an event never changes the tender's lifecycle"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" or re-triggers an export. These are events "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"you"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" report to Mercura —"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not the webhook deliveries Mercura sends you (see the "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Webhooks"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" chapter)."},"children":[]}]}]}]}]}],"panels":[]}]}},{"type":"link","label":"Completion feed","link":"/openapi/tenders/completion-feed","routeSlug":"/openapi/tenders/completion-feed","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Completion feed"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"tenders/completion-feed"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Completion feed"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"To pull every tender that was completed recently — the typical ERP"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"write-back trigger — pass "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"completed_since"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (an ISO-8601 instant):"},"children":[]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"GET /tenders?completed_since=2026-07-09T11:55:00Z\n"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"GET /tenders?completed_since=2026-07-09T11:55:00Z\n"},"children":[]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"This returns only tenders with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"completed_at >= completed_since"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", ordered by"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"completed_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" ascending, and paginates with the same opaque "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Keep"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"completed_since"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" present on every page of the feed (its value is ignored"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"once a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is supplied). Because "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"completed_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is refreshed on every"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"completion, a re-exported tender reappears in the feed — combine this with"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"tender.completed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" webhook for a robust push-plus-reconcile integration."},"children":[]}]}]},{"$$mdtype":"Node","type":"blockquote","attributes":{},"children":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Note."},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"/tenders"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" reflects the request's "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"current"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" state: it returns one"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"row per tender, not one row per historical export event. A re-exported"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"tender reappears in the feed (via a refreshed "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"completed_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") rather than"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"accumulating separate rows."},"children":[]}]}]}]}]}],"panels":[]}]}},{"label":"Public Tenders Create","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/tenders/public_tenders_create","routeSlug":"/openapi/tenders/public_tenders_create","metadata":{"seo":{"title":"Public Tenders Create","description":"Create a tender from uploaded files (async processing)."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"public_tenders_create","name":"Public Tenders Create","isWebhook":false,"pointer":"/paths/~1tenders/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Public Tenders Create","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Create a tender from uploaded files (async processing)."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The programmatic twin of forwarding an LV / RFQ email to"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"anfragen@lv.mercura.ai"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": Mercura stores the files, picks the file"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"that drives parsing (GAEB before spreadsheet/CSV/DOCX/TXT before PDF"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"before image), extracts chapters and positions, matches them against"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"your catalogue, and lands the tender ready for review."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Response."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"202 Accepted"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"JobAck { job_id, status_url }"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" on the first"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"call."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"200 OK"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" with the "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"same"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"JobAck"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" on an idempotent replay (same"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" + same form fields and file contents)."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"What to do next."},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Poll "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /jobs/{job_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" until "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"COMPLETED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" or "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"FAILED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (the terminal state is reached when"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"processing"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" finishes, not when the upload is accepted), or subscribe"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"to the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"request.processing_completed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" webhook and correlate by"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"job_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". The resulting offer is then readable via "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /tenders"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Correlating with your system."},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Use "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"custom_fields"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" to carry your"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"own identifier (a CRM case number, an ERP reference) onto the tender at"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"creation time, and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"branch"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" to route it. Both are validated against"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"your organisation's configuration "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"before"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" the job is created, so a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"typo fails fast instead of landing an unidentifiable tender. Store the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"request_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" from "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /jobs/{job_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" on your side — it is the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"stable handle for every later call ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"/"},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"PATCH /tenders"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Idempotency."},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Pass an "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" header (≤ 255 chars). Same"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"key with a "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"different"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" body returns "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 IDEMPOTENCY_KEY_MISMATCH"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"authorization","in":"header","schemaId":"schema_44","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Bearer <mrc_live_…> API key"},"children":[]}]}]}]},{"name":"Idempotency-Key","in":"header","schemaId":"schema_45","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Optional client-supplied key for safe retries; <= 255 chars"},"children":[]}]}]}]}],"pointer":"/paths/~1tenders/post/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["multipart/form-data"],"mediaTypeSchemas":{"multipart/form-data":{"schemaId":"components/schemas/Body_public_tenders_create"}},"schemaId":"components/schemas/Body_public_tenders_create","pointer":"/paths/~1tenders/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/tenders","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[{"name":"authorization","in":"header","required":false,"schemaId":"schema_44"},{"name":"Idempotency-Key","in":"header","required":false,"schemaId":"schema_45"}],"cookie":[]},"security":[],"requestBody":{"multipart/form-data":{"schemaId":"components/schemas/Body_public_tenders_create"}},"responseCodes":["200","202","400","413","415","422"],"pointer":"/tenders","href":"tenders/public_tenders_create","openApiOperationId":"public_tenders_create","summary":"Public Tenders Create"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"schemaId":"components/schemas/Body_public_tenders_create","mediaTypes":["multipart/form-data"],"mediaTypeSchemas":{"multipart/form-data":{"schemaId":"components/schemas/Body_public_tenders_create"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Idempotent replay — same job returned"},"children":[]}]}]}],"mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/JobAck"}},"schemaId":"components/schemas/JobAck"},{"code":"202","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Accepted; poll status_url, or subscribe to request.processing_completed"},"children":[]}]}]}]},{"code":"400","description":"Validation failed (no parsable file, empty file, too many files, unknown branch, unknown custom-field label)"},{"code":"413","description":"A file exceeds 50 MB or the upload exceeds 100 MB in total"},{"code":"415","description":"A file has an unsupported extension"},{"code":"422","description":"Idempotency-Key reused with a different body"}],"pointer":"/paths/~1tenders/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/JobAck","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/JobAck"}}},{"code":"202"},{"code":"400"},{"code":"413"},{"code":"415"},{"code":"422"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/tenders/public_tenders_create"}],"panels":[]}]},"httpPath":"/tenders"},{"label":"Public Tenders List","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/tenders/public_tenders_list","routeSlug":"/openapi/tenders/public_tenders_list","metadata":{"seo":{"title":"Public Tenders List","description":"Cursor-paginated list of tenders for the authed organisation."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"public_tenders_list","name":"Public Tenders List","isWebhook":false,"pointer":"/paths/~1tenders/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Public Tenders List","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Cursor-paginated list of tenders for the authed organisation."},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"cursor","in":"query","schemaId":"schema_46","description":"Opaque cursor from prior page"},{"name":"modified_since","in":"query","schemaId":"schema_47","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"ISO-8601 lower bound on "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"updated_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Applied only on the first page; the cursor is a strict super-set thereafter."},"children":[]}]}]}]},{"name":"completed_since","in":"query","schemaId":"schema_63","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"ISO-8601 lower bound on "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"completed_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". When set, returns the "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"completion feed"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": only tenders completed at/after this instant, ordered by "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"completed_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — e.g. everything completed in the last 5 minutes. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"completed_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is refreshed on every completion, so a re-exported tender reappears. Keep this parameter present on every page of the feed (its value is ignored once a cursor is supplied)."},"children":[]}]}]}]},{"name":"status","in":"query","schemaId":"schema_64","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Filter by lifecycle state (e.g. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"DONE"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}]},{"name":"limit","in":"query","schemaId":"schema_48"},{"name":"include_deleted","in":"query","schemaId":"schema_65","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Also report lines that were "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"removed"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" from the tender: they come back flagged ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"is_deleted"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"deleted_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") instead of being omitted, so an ERP that already imported the offer can drop what is no longer on it. Removals are reported per "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"line"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": taking one article off a position yields that article flagged next to the position's live lines, and a position that vanished completely comes back with "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"all"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" of its lines flagged — so a consumer keyed on the ordinal number can still tell the two apart. Deleted lines never count toward "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"totals"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", and a position merely flagged 'not relevant' is not a deletion and stays hidden."},"children":[]}]}]}]}],"pointer":"/paths/~1tenders/get/parameters"},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"authorization","in":"header","schemaId":"schema_44","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Bearer <mrc_live_…> API key"},"children":[]}]}]}]}],"pointer":"/paths/~1tenders/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/tenders","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"parameters":{"path":[],"query":[{"name":"cursor","in":"query","required":false,"schemaId":"schema_46"},{"name":"modified_since","in":"query","required":false,"schemaId":"schema_47"},{"name":"completed_since","in":"query","required":false,"schemaId":"schema_63"},{"name":"status","in":"query","required":false,"schemaId":"components/schemas/PublicTenderStatus"},{"name":"limit","in":"query","required":false,"schemaId":"schema_48"},{"name":"include_deleted","in":"query","required":false,"schemaId":"schema_65"}],"querystring":[],"header":[{"name":"authorization","in":"header","required":false,"schemaId":"schema_44"}],"cookie":[]},"security":[],"responseCodes":["200","422"],"pointer":"/tenders","href":"tenders/public_tenders_list","openApiOperationId":"public_tenders_list","summary":"Public Tenders List"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Successful Response","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CursorPage_PublicTenderOut_"}},"schemaId":"components/schemas/CursorPage_PublicTenderOut_"},{"code":"422","description":"Validation Error","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/HTTPValidationError"}},"schemaId":"components/schemas/HTTPValidationError"}],"pointer":"/paths/~1tenders/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/CursorPage_PublicTenderOut_","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CursorPage_PublicTenderOut_"}}},{"code":"422","schemaId":"components/schemas/HTTPValidationError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/HTTPValidationError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/tenders/public_tenders_list"}],"panels":[]}]},"httpPath":"/tenders"},{"label":"Public Tenders Get","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/tenders/public_tenders_get","routeSlug":"/openapi/tenders/public_tenders_get","metadata":{"seo":{"title":"Public Tenders Get","description":"Fetch one tender by its public id."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"public_tenders_get","name":"Public Tenders Get","isWebhook":false,"pointer":"/paths/~1tenders~1{tender_id}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Public Tenders Get","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Fetch one tender by its public id."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The response carries a strong "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"ETag"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" over the tender content; pass it back"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" on "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"PATCH /tenders/{tender_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for optimistic concurrency."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The ETag covers the "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"live"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" content only, so it is unaffected by"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"include_deleted"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and a document fetched either way round-trips through"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"PATCH"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (echoed deleted lines are ignored)."},"children":[]}]}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"tender_id","in":"path","schemaId":"schema_66","required":true}],"pointer":"/paths/~1tenders~1{tender_id}/get/parameters"},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"include_deleted","in":"query","schemaId":"schema_65","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Also report lines that were "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"removed"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" from the tender: they come back flagged ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"is_deleted"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"deleted_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") instead of being omitted, so an ERP that already imported the offer can drop what is no longer on it. Removals are reported per "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"line"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": taking one article off a position yields that article flagged next to the position's live lines, and a position that vanished completely comes back with "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"all"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" of its lines flagged — so a consumer keyed on the ordinal number can still tell the two apart. Deleted lines never count toward "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"totals"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", and a position merely flagged 'not relevant' is not a deletion and stays hidden."},"children":[]}]}]}]}],"pointer":"/paths/~1tenders~1{tender_id}/get/parameters"},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"authorization","in":"header","schemaId":"schema_44","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Bearer <mrc_live_…> API key"},"children":[]}]}]}]}],"pointer":"/paths/~1tenders~1{tender_id}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/tenders/{tender_id}","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"parameters":{"path":[{"name":"tender_id","in":"path","required":true,"schemaId":"schema_66"}],"query":[{"name":"include_deleted","in":"query","required":false,"schemaId":"schema_65"}],"querystring":[],"header":[{"name":"authorization","in":"header","required":false,"schemaId":"schema_44"}],"cookie":[]},"security":[],"responseCodes":["200","404","422"],"pointer":"/tenders/{tender_id}","href":"tenders/public_tenders_get","openApiOperationId":"public_tenders_get","summary":"Public Tenders Get"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Successful Response","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PublicTenderOut"}},"schemaId":"components/schemas/PublicTenderOut"},{"code":"404","description":"Tender not found"},{"code":"422","description":"Validation Error","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/HTTPValidationError"}},"schemaId":"components/schemas/HTTPValidationError"}],"pointer":"/paths/~1tenders~1{tender_id}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/PublicTenderOut","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PublicTenderOut"}}},{"code":"404"},{"code":"422","schemaId":"components/schemas/HTTPValidationError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/HTTPValidationError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/tenders/public_tenders_get"}],"panels":[]}]},"httpPath":"/tenders/{tender_id}"},{"label":"Public Tenders Update","deprecated":false,"httpVerb":"patch","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/tenders/public_tenders_update","routeSlug":"/openapi/tenders/public_tenders_update","metadata":{"seo":{"title":"Public Tenders Update","description":"Edit one tender in place and read back the re-projected result."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"public_tenders_update","name":"Public Tenders Update","isWebhook":false,"pointer":"/paths/~1tenders~1{tender_id}/patch","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Public Tenders Update","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Edit one tender in place and read back the re-projected result."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Two addressing modes: a sparse top-level "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"positions[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (recommended —"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"edit or delete existing lines by "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") and the nested "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"chapters"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" tree"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"(required for adds; also accepts edits). Edit a line by "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; delete one"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{\"id\": \"…\", \"op\": \"delete\"}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (soft-delete); add a line by sending it"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"without an "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"article_number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for an article line — with optional"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"price/discount — else a free-text line under a chapter). Omitted lines are"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"left untouched. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"totals.net_total"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"gross_total"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" persist as the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"partner's authoritative amounts. Pass the GET's ETag as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" to be"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"rejected with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"412"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" if the tender changed since you read it."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Closing a tender."},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Send "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{\"status\": \"CANCELLED\"}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for a tender that was"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"resolved outside Mercura — its CRM case was closed, or it was quoted by hand"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"— so it leaves the open inbox instead of accumulating there. It is the only"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"writable transition; echoing the tender's current status is a no-op, so a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"full GET body still round-trips."},"children":[]}]}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"tender_id","in":"path","schemaId":"schema_66","required":true}],"pointer":"/paths/~1tenders~1{tender_id}/patch/parameters"},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"If-Match","in":"header","schemaId":"schema_67","description":"Optional strong ETag from a prior GET; a mismatch is a 412 (someone else edited the tender)."},{"name":"authorization","in":"header","schemaId":"schema_44","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Bearer <mrc_live_…> API key"},"children":[]}]}]}]}],"pointer":"/paths/~1tenders~1{tender_id}/patch/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/PublicTenderUpdate"}},"schemaId":"components/schemas/PublicTenderUpdate","pointer":"/paths/~1tenders~1{tender_id}/patch/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"PATCH","path":"/tenders/{tender_id}","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"parameters":{"path":[{"name":"tender_id","in":"path","required":true,"schemaId":"schema_66"}],"query":[],"querystring":[],"header":[{"name":"If-Match","in":"header","required":false,"schemaId":"schema_67"},{"name":"authorization","in":"header","required":false,"schemaId":"schema_44"}],"cookie":[]},"security":[],"requestBody":{"application/json":{"schemaId":"components/schemas/PublicTenderUpdate"}},"responseCodes":["200","400","404","409","412","422"],"pointer":"/tenders/{tender_id}","href":"tenders/public_tenders_update","openApiOperationId":"public_tenders_update","summary":"Public Tenders Update"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"schemaId":"components/schemas/PublicTenderUpdate","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/PublicTenderUpdate"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Successful Response","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PublicTenderOut"}},"schemaId":"components/schemas/PublicTenderOut"},{"code":"400","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Validation failed (bad line id, conflicting price fields, unknown article, …)"},"children":[]}]}]}]},{"code":"404","description":"Tender not found"},{"code":"409","description":"Status transition rejected (cancelling a PARSING or already DONE tender)"},{"code":"412","description":"If-Match ETag does not match the current tender (it changed since your GET)"},{"code":"422","description":"Validation Error","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/HTTPValidationError"}},"schemaId":"components/schemas/HTTPValidationError"}],"pointer":"/paths/~1tenders~1{tender_id}/patch/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/PublicTenderOut","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PublicTenderOut"}}},{"code":"400"},{"code":"404"},{"code":"409"},{"code":"412"},{"code":"422","schemaId":"components/schemas/HTTPValidationError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/HTTPValidationError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/tenders/public_tenders_update"}],"panels":[]}]},"httpPath":"/tenders/{tender_id}"},{"label":"Public Tenders List Documents","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/tenders/public_tenders_list_documents","routeSlug":"/openapi/tenders/public_tenders_list_documents","metadata":{"seo":{"title":"Public Tenders List Documents","description":"List the customer's source documents attached to a tender."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"public_tenders_list_documents","name":"Public Tenders List Documents","isWebhook":false,"pointer":"/paths/~1tenders~1{tender_id}~1documents/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Public Tenders List Documents","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"List the customer's source documents attached to a tender."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Returns metadata for each "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"original uploaded"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" file (GAEB / PDF / Excel /"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"image / e-mail) together with a short-lived, pre-signed "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"download_url"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" that"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"fetches the bytes directly from object storage — no "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Authorization"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" header"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"needed on that URL, and it never proxies the file through the API."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Only the customer's own uploads are listed: Mercura-generated artefacts (the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"offer / display PDF, structured-doc previews, OCR / metadata side-files) and"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"hidden files are excluded. The download URLs expire (see"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"download_url_expires_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") — re-list to obtain fresh ones. An unknown /"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"non-tender / foreign id is a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"404"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", indistinguishable from a missing tender."},"children":[]}]}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"tender_id","in":"path","schemaId":"schema_66","required":true}],"pointer":"/paths/~1tenders~1{tender_id}~1documents/get/parameters"},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"authorization","in":"header","schemaId":"schema_44","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Bearer <mrc_live_…> API key"},"children":[]}]}]}]}],"pointer":"/paths/~1tenders~1{tender_id}~1documents/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/tenders/{tender_id}/documents","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"parameters":{"path":[{"name":"tender_id","in":"path","required":true,"schemaId":"schema_66"}],"query":[],"querystring":[],"header":[{"name":"authorization","in":"header","required":false,"schemaId":"schema_44"}],"cookie":[]},"security":[],"responseCodes":["200","404","422"],"pointer":"/tenders/{tender_id}/documents","href":"tenders/public_tenders_list_documents","openApiOperationId":"public_tenders_list_documents","summary":"Public Tenders List Documents"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Successful Response","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PublicTenderDocuments"}},"schemaId":"components/schemas/PublicTenderDocuments"},{"code":"404","description":"Tender not found"},{"code":"422","description":"Validation Error","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/HTTPValidationError"}},"schemaId":"components/schemas/HTTPValidationError"}],"pointer":"/paths/~1tenders~1{tender_id}~1documents/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/PublicTenderDocuments","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PublicTenderDocuments"}}},{"code":"404"},{"code":"422","schemaId":"components/schemas/HTTPValidationError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/HTTPValidationError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/tenders/public_tenders_list_documents"}],"panels":[]}]},"httpPath":"/tenders/{tender_id}/documents"},{"label":"Public Tenders Acknowledge","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/tenders/public_tenders_acknowledge","routeSlug":"/openapi/tenders/public_tenders_acknowledge","metadata":{"seo":{"title":"Public Tenders Acknowledge","description":"Report the ERP/CRM import outcome for one tender."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"public_tenders_acknowledge","name":"Public Tenders Acknowledge","isWebhook":false,"pointer":"/paths/~1tenders~1{tender_id}~1acknowledgements/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Public Tenders Acknowledge","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Report the ERP/CRM import outcome for one tender."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The partner POSTs "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"SUCCESS"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"FAILED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), optionally an"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"external_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (its own offer/record id) and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"metadata"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", and a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"message"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (required on "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"FAILED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" as the reason, optional on "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"SUCCESS"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"as a free-text note). Idempotent and latest-wins: a later acknowledgement"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"overwrites the earlier one. When supplied, "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"external_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is also written"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"back to the tender's "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"erp_offer_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Returns the recorded acknowledgement"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"(status, sticky-aware external_id, message, metadata, acknowledged_at) —"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"the same shape as the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"acknowledgement"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" field on "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"PublicTenderOut"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", not"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"the whole tender. Recording-only: it does not alter the tender's lifecycle"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"status or re-trigger any export."},"children":[]}]}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"tender_id","in":"path","schemaId":"schema_66","required":true}],"pointer":"/paths/~1tenders~1{tender_id}~1acknowledgements/post/parameters"},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"authorization","in":"header","schemaId":"schema_44","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Bearer <mrc_live_…> API key"},"children":[]}]}]}]}],"pointer":"/paths/~1tenders~1{tender_id}~1acknowledgements/post/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/PublicTenderAcknowledgementCreate"}},"schemaId":"components/schemas/PublicTenderAcknowledgementCreate","pointer":"/paths/~1tenders~1{tender_id}~1acknowledgements/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/tenders/{tender_id}/acknowledgements","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"parameters":{"path":[{"name":"tender_id","in":"path","required":true,"schemaId":"schema_66"}],"query":[],"querystring":[],"header":[{"name":"authorization","in":"header","required":false,"schemaId":"schema_44"}],"cookie":[]},"security":[],"requestBody":{"application/json":{"schemaId":"components/schemas/PublicTenderAcknowledgementCreate"}},"responseCodes":["200","400","404","422"],"pointer":"/tenders/{tender_id}/acknowledgements","href":"tenders/public_tenders_acknowledge","openApiOperationId":"public_tenders_acknowledge","summary":"Public Tenders Acknowledge"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"schemaId":"components/schemas/PublicTenderAcknowledgementCreate","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/PublicTenderAcknowledgementCreate"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Successful Response","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PublicTenderAcknowledgement"}},"schemaId":"components/schemas/PublicTenderAcknowledgement"},{"code":"400","description":"Validation failed (e.g. FAILED without message)"},{"code":"404","description":"Tender not found"},{"code":"422","description":"Validation Error","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/HTTPValidationError"}},"schemaId":"components/schemas/HTTPValidationError"}],"pointer":"/paths/~1tenders~1{tender_id}~1acknowledgements/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/PublicTenderAcknowledgement","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PublicTenderAcknowledgement"}}},{"code":"400"},{"code":"404"},{"code":"422","schemaId":"components/schemas/HTTPValidationError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/HTTPValidationError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/tenders/public_tenders_acknowledge"}],"panels":[]}]},"httpPath":"/tenders/{tender_id}/acknowledgements"},{"label":"Public Tenders Record Event","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/tenders/public_tenders_record_event","routeSlug":"/openapi/tenders/public_tenders_record_event","metadata":{"seo":{"title":"Public Tenders Record Event","description":"Report a lifecycle event your system recorded for one tender."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"public_tenders_record_event","name":"Public Tenders Record Event","isWebhook":false,"pointer":"/paths/~1tenders~1{tender_id}~1events/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Public Tenders Record Event","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Report a lifecycle event your system recorded for one tender."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Append-only: each POST records one event (e.g. the tender was marked "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Won"},"children":[]}]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"or "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Lost"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" in your CRM), so the full partner-side timeline is preserved."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Supply "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"external_event_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" to make retries idempotent — an identical"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"replay returns the already-stored event with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"200"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", a conflicting reuse of"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"the id is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"409"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Recording-only"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": this never changes the tender's"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"lifecycle status or re-triggers any export. These are events "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"you"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" report to"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Mercura — not the webhook deliveries Mercura sends you."},"children":[]}]}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"tender_id","in":"path","schemaId":"schema_66","required":true}],"pointer":"/paths/~1tenders~1{tender_id}~1events/post/parameters"},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"authorization","in":"header","schemaId":"schema_44","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Bearer <mrc_live_…> API key"},"children":[]}]}]}]}],"pointer":"/paths/~1tenders~1{tender_id}~1events/post/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/PublicTenderEventCreate"}},"schemaId":"components/schemas/PublicTenderEventCreate","pointer":"/paths/~1tenders~1{tender_id}~1events/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/tenders/{tender_id}/events","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"parameters":{"path":[{"name":"tender_id","in":"path","required":true,"schemaId":"schema_66"}],"query":[],"querystring":[],"header":[{"name":"authorization","in":"header","required":false,"schemaId":"schema_44"}],"cookie":[]},"security":[],"requestBody":{"application/json":{"schemaId":"components/schemas/PublicTenderEventCreate"}},"responseCodes":["200","201","400","404","409","422"],"pointer":"/tenders/{tender_id}/events","href":"tenders/public_tenders_record_event","openApiOperationId":"public_tenders_record_event","summary":"Public Tenders Record Event"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"schemaId":"components/schemas/PublicTenderEventCreate","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/PublicTenderEventCreate"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Idempotent replay: this external_event_id was already recorded"},"children":[]}]}]}]},{"code":"201","description":"Successful Response","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PublicTenderEvent"}},"schemaId":"components/schemas/PublicTenderEvent"},{"code":"400","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Validation failed (e.g. bad event_type, oversized metadata, future occurred_at)"},"children":[]}]}]}]},{"code":"404","description":"Tender not found"},{"code":"409","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"external_event_id reused with a different payload, or per-request event cap reached"},"children":[]}]}]}]},{"code":"422","description":"Validation Error","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/HTTPValidationError"}},"schemaId":"components/schemas/HTTPValidationError"}],"pointer":"/paths/~1tenders~1{tender_id}~1events/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200"},{"code":"201","schemaId":"components/schemas/PublicTenderEvent","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PublicTenderEvent"}}},{"code":"400"},{"code":"404"},{"code":"409"},{"code":"422","schemaId":"components/schemas/HTTPValidationError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/HTTPValidationError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/tenders/public_tenders_record_event"}],"panels":[]}]},"httpPath":"/tenders/{tender_id}/events"}],"content":{"contentType":"group","meta":{"name":"Tenders"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Tenders","showPageActions":true},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"tender"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is an incoming LV (Leistungsverzeichnis / bill of quantities)"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"or RFQ: the customer demand Mercura matches against your article catalogue"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"and prices into an offer. Tenders are one of the two entry points of the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"procurement workflow (the other is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"orders"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}]}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/tenders","summary":"Public Tenders Create","prefix":{"name":"post","color":"post"},"badges":[],"link":"/tenders/public_tenders_create","deprecated":false},{"title":"/tenders","summary":"Public Tenders List","prefix":{"name":"get","color":"get"},"badges":[],"link":"/tenders/public_tenders_list","deprecated":false},{"title":"/tenders/{tender_id}","summary":"Public Tenders Get","prefix":{"name":"get","color":"get"},"badges":[],"link":"/tenders/public_tenders_get","deprecated":false},{"title":"/tenders/{tender_id}","summary":"Public Tenders Update","prefix":{"name":"patch","color":"patch"},"badges":[],"link":"/tenders/public_tenders_update","deprecated":false},{"title":"/tenders/{tender_id}/documents","summary":"Public Tenders List Documents","prefix":{"name":"get","color":"get"},"badges":[],"link":"/tenders/public_tenders_list_documents","deprecated":false},{"title":"/tenders/{tender_id}/acknowledgements","summary":"Public Tenders Acknowledge","prefix":{"name":"post","color":"post"},"badges":[],"link":"/tenders/public_tenders_acknowledge","deprecated":false},{"title":"/tenders/{tender_id}/events","summary":"Public Tenders Record Event","prefix":{"name":"post","color":"post"},"badges":[],"link":"/tenders/public_tenders_record_event","deprecated":false}]}]}]}]}},{"type":"group","label":"Supplier Requests","link":"/openapi/supplier-requests","routeSlug":"/openapi/supplier-requests","items":[{"type":"link","label":"Reading supplier requests","link":"/openapi/supplier-requests/reading-supplier-requests","routeSlug":"/openapi/supplier-requests/reading-supplier-requests","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Reading supplier requests"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"supplier-requests/reading-supplier-requests"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Reading supplier requests"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A supplier request is keyed by its own "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"UUID"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") and carries:"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — lifecycle state: "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"REQUEST_SENT"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (sent, awaiting an offer),"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"OFFER_RECEIVED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (the supplier replied), or "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"DECLINED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"tender_id"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — the tender this request was raised for, when tender-scoped —"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"resolve the full document via "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /tenders/{tender_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Null when the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"request is project-scoped."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"project_id"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — the project this request was raised for, when"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"project-scoped — resolve via "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /projects/{project_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Null when"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"tender-scoped. A supplier request is always scoped to exactly one of the two."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"supplier_id"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — the supplier "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"reference only"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (your"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"BusinessPartner.external_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"); resolve name / address / contacts via"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /suppliers/{supplier_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"supplier_name"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is a convenience mirror."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"supplier_emails"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — the addresses the request was sent to."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"sender_email"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — the Mercura user who sent the request."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"is_awarded"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"awarded_line_count"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — whether (and how many) offered"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"lines were accepted into the final tender."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"offered_lines[]"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — the lines the supplier quoted back, one per parsed"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"candidate. Each carries:"},"children":[]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"id"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — an opaque handle for the offered line."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"position_id"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — the position this line answers. For a tender-scoped"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"supplier request it is the line handle in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /tenders/{tender_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", so you"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"can line the supplier's quote up against the position it responds to; for a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"project-scoped one it is an internal reference with no public resolution"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"endpoint today. Null when the line is not mapped to a position."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"item_type"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"ARTICLE"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"TEXT_FIELD"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"DIVERSE"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"candidate_status"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"PENDING"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"ACCEPTED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"DECLINED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"selected"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"true"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when this line was accepted into the final tender"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"(i.e. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"candidate_status"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"ACCEPTED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). This is the line you are actually"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"buying at the quoted price."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"article_number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"manufacturer_article_number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"description"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"quantity"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":","},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"unit"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"unit_price"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"line_total"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"You can:"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /supplier-requests"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — cursor-paginated list for your organisation."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /supplier-requests/{supplier_request_id}"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — one supplier request in"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"full, by its UUID."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The list is ordered by "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"updated_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" ascending (oldest-touched first) — the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"natural order for "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"modified_since"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" delta-sync — and paginated with the opaque"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Page through until "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"next_cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]}],"panels":[]}]}},{"type":"link","label":"Filtering","link":"/openapi/supplier-requests/filtering","routeSlug":"/openapi/supplier-requests/filtering","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Filtering"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"supplier-requests/filtering"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Filtering"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"All filters are optional and composable:"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"tender_id"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — only supplier requests raised for one tender. This is the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"authoritative \"all supplier requests for this tender\" query:"},"children":[]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"GET /supplier-requests?tender_id=48213\n"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"GET /supplier-requests?tender_id=48213\n"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"project_id"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — only supplier requests raised for one project (a distinct"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"axis from "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"tender_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"supplier_id"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — only requests sent to one supplier (its "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"external_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — filter by lifecycle state, e.g. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status=OFFER_RECEIVED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"awarded"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"awarded=true"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" returns only requests with at least one accepted"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"(selected) line — i.e. the suppliers you are actually buying from; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"false"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"returns those without one."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"modified_since"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — ISO-8601 lower bound on "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"updated_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for delta-sync"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"catch-up scans (first page only; the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" supersedes it thereafter)."},"children":[]}]}]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"# only the awarded requests for one tender\nGET /supplier-requests?tender_id=48213&awarded=true\n\n# one supplier's request on a tender that came back with an offer\nGET /supplier-requests?tender_id=48213&supplier_id=SUP-1007&status=OFFER_RECEIVED\n"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"# only the awarded requests for one tender\nGET /supplier-requests?tender_id=48213&awarded=true\n\n# one supplier's request on a tender that came back with an offer\nGET /supplier-requests?tender_id=48213&supplier_id=SUP-1007&status=OFFER_RECEIVED\n"},"children":[]}]}]}],"panels":[]}]}},{"type":"link","label":"Joining to a tender","link":"/openapi/supplier-requests/joining-to-a-tender","routeSlug":"/openapi/supplier-requests/joining-to-a-tender","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Joining to a tender"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"supplier-requests/joining-to-a-tender"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Joining to a tender"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Given a tender, "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /supplier-requests?tender_id={id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" lists every Werksanfrage"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"raised for it. Within each, every "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"offered_lines[].position_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" points at the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"position that line answers in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /tenders/{id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", so you can align the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"supplier's quote against the customer's demand line by line — and the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"selected"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"flag tells you which quotes made it into the finalised tender."},"children":[]}]}]}]}],"panels":[]}]}},{"label":"Public Supplier Requests List","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/supplier-requests/public_supplier_requests_list","routeSlug":"/openapi/supplier-requests/public_supplier_requests_list","metadata":{"seo":{"title":"Public Supplier Requests List","description":"Cursor-paginated list of supplier requests for the authed organisation."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"public_supplier_requests_list","name":"Public Supplier Requests List","isWebhook":false,"pointer":"/paths/~1supplier-requests/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Public Supplier Requests List","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Cursor-paginated list of supplier requests for the authed organisation."},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"cursor","in":"query","schemaId":"schema_68","description":"Opaque cursor from a prior page."},{"name":"modified_since","in":"query","schemaId":"schema_47","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"ISO-8601 lower bound on "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"updated_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Applied only on the first page; the cursor is a strict super-set thereafter."},"children":[]}]}]}]},{"name":"tender_id","in":"query","schemaId":"schema_69","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Return only supplier requests raised for this tender (the tender's id from "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /tenders"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Distinct from "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"project_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},{"name":"project_id","in":"query","schemaId":"schema_70","description":"Return only supplier requests raised for this project (project-scoped SRs)."},{"name":"supplier_id","in":"query","schemaId":"schema_71","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Return only supplier requests sent to this supplier (its "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"external_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}]},{"name":"status","in":"query","schemaId":"schema_72","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Filter by lifecycle state ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"REQUEST_SENT"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" | "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"OFFER_RECEIVED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" | "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"DECLINED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}]},{"name":"awarded","in":"query","schemaId":"schema_73","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"true"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" returns only supplier requests with at least one accepted (selected) line; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"false"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" returns only those without one."},"children":[]}]}]}]},{"name":"limit","in":"query","schemaId":"schema_48"}],"pointer":"/paths/~1supplier-requests/get/parameters"},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"authorization","in":"header","schemaId":"schema_44","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Bearer <mrc_live_…> API key"},"children":[]}]}]}]}],"pointer":"/paths/~1supplier-requests/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/supplier-requests","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"parameters":{"path":[],"query":[{"name":"cursor","in":"query","required":false,"schemaId":"schema_68"},{"name":"modified_since","in":"query","required":false,"schemaId":"schema_47"},{"name":"tender_id","in":"query","required":false,"schemaId":"schema_69"},{"name":"project_id","in":"query","required":false,"schemaId":"schema_70"},{"name":"supplier_id","in":"query","required":false,"schemaId":"schema_71"},{"name":"status","in":"query","required":false,"schemaId":"components/schemas/PublicSupplierRequestStatus"},{"name":"awarded","in":"query","required":false,"schemaId":"schema_73"},{"name":"limit","in":"query","required":false,"schemaId":"schema_48"}],"querystring":[],"header":[{"name":"authorization","in":"header","required":false,"schemaId":"schema_44"}],"cookie":[]},"security":[],"responseCodes":["200","422"],"pointer":"/supplier-requests","href":"supplier-requests/public_supplier_requests_list","openApiOperationId":"public_supplier_requests_list","summary":"Public Supplier Requests List"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Successful Response","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CursorPage_PublicSupplierRequestOut_"}},"schemaId":"components/schemas/CursorPage_PublicSupplierRequestOut_"},{"code":"422","description":"Validation Error","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/HTTPValidationError"}},"schemaId":"components/schemas/HTTPValidationError"}],"pointer":"/paths/~1supplier-requests/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/CursorPage_PublicSupplierRequestOut_","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CursorPage_PublicSupplierRequestOut_"}}},{"code":"422","schemaId":"components/schemas/HTTPValidationError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/HTTPValidationError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/supplier-requests/public_supplier_requests_list"}],"panels":[]}]},"httpPath":"/supplier-requests"},{"label":"Public Supplier Requests Get","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/supplier-requests/public_supplier_requests_get","routeSlug":"/openapi/supplier-requests/public_supplier_requests_get","metadata":{"seo":{"title":"Public Supplier Requests Get","description":"Fetch one supplier request by its public id (its UUID)."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"public_supplier_requests_get","name":"Public Supplier Requests Get","isWebhook":false,"pointer":"/paths/~1supplier-requests~1{supplier_request_id}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Public Supplier Requests Get","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Fetch one supplier request by its public id (its UUID)."},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"supplier_request_id","in":"path","schemaId":"schema_74","required":true}],"pointer":"/paths/~1supplier-requests~1{supplier_request_id}/get/parameters"},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"authorization","in":"header","schemaId":"schema_44","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Bearer <mrc_live_…> API key"},"children":[]}]}]}]}],"pointer":"/paths/~1supplier-requests~1{supplier_request_id}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/supplier-requests/{supplier_request_id}","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"parameters":{"path":[{"name":"supplier_request_id","in":"path","required":true,"schemaId":"schema_74"}],"query":[],"querystring":[],"header":[{"name":"authorization","in":"header","required":false,"schemaId":"schema_44"}],"cookie":[]},"security":[],"responseCodes":["200","404","422"],"pointer":"/supplier-requests/{supplier_request_id}","href":"supplier-requests/public_supplier_requests_get","openApiOperationId":"public_supplier_requests_get","summary":"Public Supplier Requests Get"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Successful Response","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PublicSupplierRequestOut"}},"schemaId":"components/schemas/PublicSupplierRequestOut"},{"code":"404","description":"Supplier request not found"},{"code":"422","description":"Validation Error","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/HTTPValidationError"}},"schemaId":"components/schemas/HTTPValidationError"}],"pointer":"/paths/~1supplier-requests~1{supplier_request_id}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/PublicSupplierRequestOut","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PublicSupplierRequestOut"}}},{"code":"404"},{"code":"422","schemaId":"components/schemas/HTTPValidationError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/HTTPValidationError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/supplier-requests/public_supplier_requests_get"}],"panels":[]}]},"httpPath":"/supplier-requests/{supplier_request_id}"}],"content":{"contentType":"group","meta":{"name":"Supplier Requests"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Supplier Requests","showPageActions":true},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"supplier request"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" ("},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Werksanfrage"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") is an outbound RFQ you send to one of"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"your suppliers to price a set of positions from a tender (or a project). Where a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"tender"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is the demand coming "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"in"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" from your customer, a supplier request is the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"enquiry going "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"out"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" to a supplier — and the supplier's reply is parsed into the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"offered lines"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" this resource exposes."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"This resource is "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"read-only"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/supplier-requests","summary":"Public Supplier Requests List","prefix":{"name":"get","color":"get"},"badges":[],"link":"/supplier-requests/public_supplier_requests_list","deprecated":false},{"title":"/supplier-requests/{supplier_request_id}","summary":"Public Supplier Requests Get","prefix":{"name":"get","color":"get"},"badges":[],"link":"/supplier-requests/public_supplier_requests_get","deprecated":false}]}]}]}]}},{"type":"group","label":"Projects","link":"/openapi/projects","routeSlug":"/openapi/projects","items":[{"type":"link","label":"Updating a project","link":"/openapi/projects/updating-a-project","routeSlug":"/openapi/projects/updating-a-project","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Updating a project"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"projects/updating-a-project"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Updating a project"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"PATCH /projects/{project_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" writes back the fields your ERP owns."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The canonical use is reconciling identifiers: your ERP creates a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"project / commission number and PATCHes it into "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"object_number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" so"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"every later "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"tender.completed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"order.completed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" webhook and"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /projects"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" lines up with your own key."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Writable fields (all optional): "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"object_number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"name"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":","},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"estimated_value"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"currency"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"submission_date"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"custom_fields"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"If "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"object_number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is the only field you need to write, you can skip"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"PATCH entirely and send it as the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"external_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" of an acknowledgement"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"instead — see "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Acknowledging a project"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantics:"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Partial."},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Send only what you change. An omitted field is left"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"untouched; an explicit "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" clears that field. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is the one"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"exception — it cannot be "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (a project always has a lifecycle"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"state), and an unknown status value is a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"400"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"object_number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is a grouping key."},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Mercura derives the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"master-project grouping from this value at read time, so writing it"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"simply moves the one project row you addressed into (or out of) a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"group — sibling rows that shared the old value are not rewritten."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"custom_fields"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is label-keyed and shallow-merged."},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Use the same"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"labels you receive on "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (and, for a multi-select, the same option"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"labels). Keys you include are set; a key mapped to "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" clears that"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"one field; keys you omit are left as they are. An unknown label — or"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"an unknown option label on a multi-select — returns"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"400 VALIDATION_FAILED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" naming the offending keys, so a typo fails"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"loudly instead of silently writing nothing."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Optimistic concurrency: read the project first, then echo the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"ETag"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"you received as an "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" header on the PATCH. If someone else"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"changed the project in the meantime the ETag no longer matches and the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"request is rejected with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"412 Precondition Failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — re-fetch and"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"retry. Omit "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (or send "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match: *"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") to skip the check. A"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"no-op edit (an empty body, or values equal to the current ones) does"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not advance the project's "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"updated_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"PATCH /projects/90 HTTP/1.1\nAuthorization: Bearer <your-api-key>\nIf-Match: \"3f8b6d21...\"\nContent-Type: application/json\n\n{\n  \"object_number\": \"P-2026-00417\",\n  \"status\": \"CUSTOMER_WON_AWARDED_TO_US\",\n  \"custom_fields\": { \"ERP-Auftragsnummer\": \"SO-88231\" }\n}\n","language":"http"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"PATCH /projects/90 HTTP/1.1\nAuthorization: Bearer <your-api-key>\nIf-Match: \"3f8b6d21...\"\nContent-Type: application/json\n\n{\n  \"object_number\": \"P-2026-00417\",\n  \"status\": \"CUSTOMER_WON_AWARDED_TO_US\",\n  \"custom_fields\": { \"ERP-Auftragsnummer\": \"SO-88231\" }\n}\n"},"children":[]}]}]}],"panels":[]}]}},{"type":"link","label":"Creating a project in your ERP","link":"/openapi/projects/creating-a-project-in-your-erp","routeSlug":"/openapi/projects/creating-a-project-in-your-erp","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Creating a project in your ERP"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"projects/creating-a-project-in-your-erp"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Creating a project in your ERP"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Projects are created inside Mercura (from a GAEB file, from an email"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"intake, or by a user), so — unlike tenders — there is no partner path"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"that creates one. What you get instead is a "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"handoff you can react"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"to"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": a Mercura user opens the project and clicks "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Send to ERP"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", and"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Mercura emits a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"project.exported"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" webhook."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The round trip:"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":true,"marker":"."},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"You subscribe"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" to "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"project.exported"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (Settings → Organisation →"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Webhooks). The button only appears in Mercura for organisations that"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"have an active subscription for this event — no subscription, no"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"button, so nothing can be handed to an endpoint that is not listening."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A user clicks the button."},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Mercura emits "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"project.exported"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"carrying "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"project_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"name"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", the current "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"object_number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"lifecycle "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"request_count"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Nothing on the project is"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"changed by the click: its lifecycle "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" stays as it was, and"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"object_number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" remains yours to assign."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"You fetch"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /projects/{project_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for the full record —"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"addresses, custom fields, "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"request_ids"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"You create"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" the object in your ERP and "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"acknowledge"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" it with"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /projects/{project_id}/acknowledgements"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", sending your document"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"number as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"external_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". That number lands on the project's"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"object_number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and comes back to you as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"erp_object_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" on every"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"later tender/order export for the project."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Re-clicking the button is safe and always emits again — the payload then"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"carries the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"object_number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" you acknowledged earlier, which is how you"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"tell an update from a create without keeping your own mapping. The"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"acknowledgement of the previous handoff stays visible to the Mercura user"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"next to the button, so a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"FAILED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" acknowledgement with a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"message"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"way to tell them what went wrong on your side."},"children":[]}]}]}]}],"panels":[]}]}},{"type":"link","label":"Acknowledging a project","link":"/openapi/projects/acknowledging-a-project","routeSlug":"/openapi/projects/acknowledging-a-project","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Acknowledging a project"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"projects/acknowledging-a-project"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Acknowledging a project"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /projects/{project_id}/acknowledgements"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" records your ERP/CRM"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"import outcome on the project — the project-keyed sibling of the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"tender/order acknowledgements. Use it when your integration creates"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"the Mercura project as an object/document in your own system and you"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"want to report the result (and your document number) back without a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"PATCH round-trip — for example when your middleware cannot issue the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"PATCH verb, or when all you hold at creation time is your own"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"document number."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Body fields:"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (required) — "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"SUCCESS"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" or "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"FAILED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"external_id"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — your own id for the created record (e.g. the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"ERP document number). Typically sent on "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"SUCCESS"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"message"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — free-text note; "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"required on "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"FAILED"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" as the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"failure reason, optional on "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"SUCCESS"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"metadata"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — optional extra references echoed back verbatim for"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"traceability."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Semantics:"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Latest-wins."},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" A later acknowledgement overwrites "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":","},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"message"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"metadata"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"external_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is kept once provided (an"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"id-less follow-up ack never clears it)."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"external_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" also sets "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"object_number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" When you send one it is"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"written to the project's "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"object_number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (the Objektnummer) as well —"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"the same field "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"PATCH /projects/{project_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" writes, and the one"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Mercura sends back to you as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"erp_object_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" on every later"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"tender/order export. One POST therefore both reports the outcome and"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"establishes the identifier both sides reconcile on; you do not need"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"the PATCH for it. Your value wins over an Objektnummer that came from"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"a GAEB file or from a Mercura user, and an acknowledgement without an"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"external_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" leaves the existing one untouched. Because"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"object_number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" also groups projects (see "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Reading projects"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"),"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"rewriting it moves this project into that number's group."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Otherwise recording-only."},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" The project's lifecycle "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"never changed and no export is re-triggered. The acknowledged outcome"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"(including "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"external_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") is returned on every "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /projects"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" read as"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"acknowledgement"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" field."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The write advances the project's "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"updated_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", so a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"modified_since"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"delta-sync surfaces acknowledged projects."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"POST /projects/90/acknowledgements HTTP/1.1\nAuthorization: Bearer <your-api-key>\nContent-Type: application/json\n\n{\n  \"status\": \"SUCCESS\",\n  \"external_id\": \"4500012345\",\n  \"metadata\": { \"erp_client\": \"100\" }\n}\n","language":"http"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"POST /projects/90/acknowledgements HTTP/1.1\nAuthorization: Bearer <your-api-key>\nContent-Type: application/json\n\n{\n  \"status\": \"SUCCESS\",\n  \"external_id\": \"4500012345\",\n  \"metadata\": { \"erp_client\": \"100\" }\n}\n"},"children":[]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The response is the recorded acknowledgement (not the whole project):"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"resolved "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", the sticky-aware "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"external_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"message"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":","},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"metadata"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", and the server-side "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"acknowledged_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" timestamp."},"children":[]}]}]}]}],"panels":[]}]}},{"type":"link","label":"Filtering the list","link":"/openapi/projects/filtering-the-list","routeSlug":"/openapi/projects/filtering-the-list","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Filtering the list"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"projects/filtering-the-list"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Filtering the list"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Three filters are AND-combined with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"modified_since"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" on the list"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"endpoint:"},"children":[]}]}]},{"$$mdtype":"Node","type":"table","attributes":{},"children":[{"$$mdtype":"Node","type":"thead","attributes":{},"children":[{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"th","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Query parameter"},"children":[]}]}]},{"$$mdtype":"Node","type":"th","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Behaviour"},"children":[]}]}]}]}]},{"$$mdtype":"Node","type":"tbody","attributes":{},"children":[{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"object_number=<string>"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Exact match on the ERP grouping key. Returns every row that shares the value — Mercura's master-project concept treats them as one logically but exposes them as distinct rows."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"request_id=<int>"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Returns the single project linked to the request via "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Request.project_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Empty page for requests with no project FK."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status=<UPPERCASE>"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Restrict to one lifecycle status. Unknown values return "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"400 VALIDATION_FAILED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Combine "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"object_number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"request_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when you need to verify"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"that a specific request rolls up under a specific ERP grouping key."},"children":[]}]}]}]}],"panels":[]}]}},{"type":"link","label":"Custom fields","link":"/openapi/projects/custom-fields","routeSlug":"/openapi/projects/custom-fields","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Custom fields"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"projects/custom-fields"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Custom fields"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"custom_fields"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is a free-form map shaped by your organisation's own"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"custom-column configuration — Mercura does not enforce a JSON schema on"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"the contents. Keys and value formats can evolve on your side without an"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API version bump. Partners rendering custom fields should treat unknown"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"keys gracefully (skip, or show verbatim); Mercura will not remove keys"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"behind your back."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Values follow the column's type: text / number / date fields are"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"returned as-is, while a "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"multi-select"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" field is returned as a list of"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"its selected option "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"labels"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (the same text you see in the Mercura"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"UI), e.g. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"\"Gewerk\": [\"DD - DACHDECKUNG DACHABDICHTUNG\", \"EL - ELEMENTE TÜREN\"]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The internal option ids are never exposed on the read path."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Empty custom-field sets are omitted from the response body entirely"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"(the field is not returned as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" or "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Compact wire, easier"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"diffs against the Mercura admin UI."},"children":[]}]}]}]}],"panels":[]}]}},{"type":"link","label":"Relationship to tenders and orders","link":"/openapi/projects/relationship-to-tenders-and-orders","routeSlug":"/openapi/projects/relationship-to-tenders-and-orders","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Relationship to tenders and orders"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"projects/relationship-to-tenders-and-orders"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Relationship to tenders and orders"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"One project → many requests ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Request.project_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Each request is reachable by its id as a tender ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /tenders/{id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"or an order ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /orders/{id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"); these never collide with"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /projects/{id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" because "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"project_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"request_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" are"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"separate integer sequences."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"tender.completed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"order.completed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" webhooks fire per request"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"id and carry the parent "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"project_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" on the wire, so partners can"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"decide whether to fetch request-level data ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /tenders/{id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" /"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /orders/{id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") or project-level data ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /projects/{id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") —"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"or both."},"children":[]}]}]}]}]}],"panels":[]}]}},{"label":"Public Projects List","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/projects/public_projects_list","routeSlug":"/openapi/projects/public_projects_list","metadata":{"seo":{"title":"Public Projects List","description":"Cursor-paginated list of projects for the authed organisation."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"public_projects_list","name":"Public Projects List","isWebhook":false,"pointer":"/paths/~1projects/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Public Projects List","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Cursor-paginated list of projects for the authed organisation."},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"cursor","in":"query","schemaId":"schema_46","description":"Opaque cursor from prior page"},{"name":"modified_since","in":"query","schemaId":"schema_47","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"ISO-8601 lower bound on "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"updated_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Applied only on the first page; the cursor is a strict super-set thereafter."},"children":[]}]}]}]},{"name":"limit","in":"query","schemaId":"schema_48"},{"name":"object_number","in":"query","schemaId":"schema_75","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Filter to projects with this ERP-facing grouping key. Not unique — multiple projects may share an "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"object_number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and all matches are returned across the page."},"children":[]}]}]}]},{"name":"request_id","in":"query","schemaId":"schema_76","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Filter to the project linked to this Mercura request id (via the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Request.project_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" FK). Returns an empty page for requests with no project FK."},"children":[]}]}]}]},{"name":"status","in":"query","schemaId":"schema_77","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Filter to projects in this lifecycle status. One of "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"ACTIVE"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"PROCESSED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"BID_SUBMITTED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"CUSTOMER_LOST"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"CUSTOMER_WON_PENDING"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"CUSTOMER_WON_AWARDED_ELSEWHERE"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"CUSTOMER_WON_AWARDED_TO_US"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Unknown values return 400."},"children":[]}]}]}]}],"pointer":"/paths/~1projects/get/parameters"},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"authorization","in":"header","schemaId":"schema_44","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Bearer <mrc_live_…> API key"},"children":[]}]}]}]}],"pointer":"/paths/~1projects/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/projects","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"parameters":{"path":[],"query":[{"name":"cursor","in":"query","required":false,"schemaId":"schema_46"},{"name":"modified_since","in":"query","required":false,"schemaId":"schema_47"},{"name":"limit","in":"query","required":false,"schemaId":"schema_48"},{"name":"object_number","in":"query","required":false,"schemaId":"schema_75"},{"name":"request_id","in":"query","required":false,"schemaId":"schema_76"},{"name":"status","in":"query","required":false,"schemaId":"schema_77"}],"querystring":[],"header":[{"name":"authorization","in":"header","required":false,"schemaId":"schema_44"}],"cookie":[]},"security":[],"responseCodes":["200","422"],"pointer":"/projects","href":"projects/public_projects_list","openApiOperationId":"public_projects_list","summary":"Public Projects List"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Successful Response","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CursorPage_PublicProjectOut_"}},"schemaId":"components/schemas/CursorPage_PublicProjectOut_"},{"code":"422","description":"Validation Error","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/HTTPValidationError"}},"schemaId":"components/schemas/HTTPValidationError"}],"pointer":"/paths/~1projects/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/CursorPage_PublicProjectOut_","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CursorPage_PublicProjectOut_"}}},{"code":"422","schemaId":"components/schemas/HTTPValidationError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/HTTPValidationError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/projects/public_projects_list"}],"panels":[]}]},"httpPath":"/projects"},{"label":"Public Projects Get","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/projects/public_projects_get","routeSlug":"/openapi/projects/public_projects_get","metadata":{"seo":{"title":"Public Projects Get","description":"Fetch one project by its internal numeric id."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"public_projects_get","name":"Public Projects Get","isWebhook":false,"pointer":"/paths/~1projects~1{project_id}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Public Projects Get","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Fetch one project by its internal numeric id."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The id matches the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"project_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" field carried on the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"offer.new_export_run"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" webhook — pass the value verbatim"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"(stringified) to round-trip."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The response carries a strong "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"ETag"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" over the editable content; pass it"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"back as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" on "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"PATCH /projects/{project_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for optimistic"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"concurrency."},"children":[]}]}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"project_id","in":"path","schemaId":"schema_78","required":true}],"pointer":"/paths/~1projects~1{project_id}/get/parameters"},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"authorization","in":"header","schemaId":"schema_44","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Bearer <mrc_live_…> API key"},"children":[]}]}]}]}],"pointer":"/paths/~1projects~1{project_id}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/projects/{project_id}","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"parameters":{"path":[{"name":"project_id","in":"path","required":true,"schemaId":"schema_78"}],"query":[],"querystring":[],"header":[{"name":"authorization","in":"header","required":false,"schemaId":"schema_44"}],"cookie":[]},"security":[],"responseCodes":["200","404","422"],"pointer":"/projects/{project_id}","href":"projects/public_projects_get","openApiOperationId":"public_projects_get","summary":"Public Projects Get"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Successful Response","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PublicProjectOut"}},"schemaId":"components/schemas/PublicProjectOut"},{"code":"404","description":"Project not found"},{"code":"422","description":"Validation Error","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/HTTPValidationError"}},"schemaId":"components/schemas/HTTPValidationError"}],"pointer":"/paths/~1projects~1{project_id}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/PublicProjectOut","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PublicProjectOut"}}},{"code":"404"},{"code":"422","schemaId":"components/schemas/HTTPValidationError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/HTTPValidationError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/projects/public_projects_get"}],"panels":[]}]},"httpPath":"/projects/{project_id}"},{"label":"Public Projects Update","deprecated":false,"httpVerb":"patch","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/projects/public_projects_update","routeSlug":"/openapi/projects/public_projects_update","metadata":{"seo":{"title":"Public Projects Update","description":"Edit one project in place and read back the re-projected result."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"public_projects_update","name":"Public Projects Update","isWebhook":false,"pointer":"/paths/~1projects~1{project_id}/patch","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Public Projects Update","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Edit one project in place and read back the re-projected result."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Send only the fields you want to change; omitted fields are left untouched,"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"and an explicit "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" clears a field (except "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", which cannot be"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"null). "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"object_number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" writes the ERP-facing \"Objektnummer\"; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"takes the UPPERCASE "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"PublicProjectStatus"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" values; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"custom_fields"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"label-keyed and shallow-merged (a key set to "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" clears that field)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Pass the GET's ETag as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" to be rejected with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"412"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" if the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"project changed since you read it."},"children":[]}]}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"project_id","in":"path","schemaId":"schema_78","required":true}],"pointer":"/paths/~1projects~1{project_id}/patch/parameters"},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"If-Match","in":"header","schemaId":"schema_79","description":"Optional strong ETag from a prior GET; a mismatch is a 412 (someone else edited the project)."},{"name":"authorization","in":"header","schemaId":"schema_44","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Bearer <mrc_live_…> API key"},"children":[]}]}]}]}],"pointer":"/paths/~1projects~1{project_id}/patch/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/PublicProjectUpdate"}},"schemaId":"components/schemas/PublicProjectUpdate","pointer":"/paths/~1projects~1{project_id}/patch/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"PATCH","path":"/projects/{project_id}","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"parameters":{"path":[{"name":"project_id","in":"path","required":true,"schemaId":"schema_78"}],"query":[],"querystring":[],"header":[{"name":"If-Match","in":"header","required":false,"schemaId":"schema_79"},{"name":"authorization","in":"header","required":false,"schemaId":"schema_44"}],"cookie":[]},"security":[],"requestBody":{"application/json":{"schemaId":"components/schemas/PublicProjectUpdate"}},"responseCodes":["200","400","404","412","422"],"pointer":"/projects/{project_id}","href":"projects/public_projects_update","openApiOperationId":"public_projects_update","summary":"Public Projects Update"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"schemaId":"components/schemas/PublicProjectUpdate","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/PublicProjectUpdate"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Successful Response","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PublicProjectOut"}},"schemaId":"components/schemas/PublicProjectOut"},{"code":"400","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Validation failed (unknown custom-field label / option, null status, …)"},"children":[]}]}]}]},{"code":"404","description":"Project not found"},{"code":"412","description":"If-Match ETag does not match the current project (it changed since your GET)"},{"code":"422","description":"Validation Error","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/HTTPValidationError"}},"schemaId":"components/schemas/HTTPValidationError"}],"pointer":"/paths/~1projects~1{project_id}/patch/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/PublicProjectOut","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PublicProjectOut"}}},{"code":"400"},{"code":"404"},{"code":"412"},{"code":"422","schemaId":"components/schemas/HTTPValidationError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/HTTPValidationError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/projects/public_projects_update"}],"panels":[]}]},"httpPath":"/projects/{project_id}"},{"label":"Public Projects Acknowledge","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/projects/public_projects_acknowledge","routeSlug":"/openapi/projects/public_projects_acknowledge","metadata":{"seo":{"title":"Public Projects Acknowledge","description":"Report the ERP/CRM import outcome for one project."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"public_projects_acknowledge","name":"Public Projects Acknowledge","isWebhook":false,"pointer":"/paths/~1projects~1{project_id}~1acknowledgements/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Public Projects Acknowledge","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Report the ERP/CRM import outcome for one project."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The partner POSTs "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"SUCCESS"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"FAILED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), optionally an"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"external_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (its own project/record id, e.g. its ERP document number)"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"metadata"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", and a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"message"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (required on "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"FAILED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" as the reason,"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"optional on "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"SUCCESS"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" as a free-text note). Idempotent and latest-wins:"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"a later acknowledgement overwrites the earlier one; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"external_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"kept once provided. Returns the recorded acknowledgement (status,"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"sticky-aware external_id, message, metadata, acknowledged_at) — the same"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"shape as the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"acknowledgement"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" field on "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"PublicProjectOut"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", not the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"whole project. A supplied "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"external_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is also written to the project's"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"object_number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (the Objektnummer) — the key Mercura echoes back as"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"erp_object_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" on later tender/order exports — so one POST both records"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"the outcome and reconciles the identifier without a PATCH. It never alters"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"the project's lifecycle "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and re-triggers no export. The"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"method-minimal alternative to PATCH for middlewares that cannot issue the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"PATCH verb."},"children":[]}]}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"project_id","in":"path","schemaId":"schema_78","required":true}],"pointer":"/paths/~1projects~1{project_id}~1acknowledgements/post/parameters"},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"authorization","in":"header","schemaId":"schema_44","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Bearer <mrc_live_…> API key"},"children":[]}]}]}]}],"pointer":"/paths/~1projects~1{project_id}~1acknowledgements/post/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/PublicProjectAcknowledgementCreate"}},"schemaId":"components/schemas/PublicProjectAcknowledgementCreate","pointer":"/paths/~1projects~1{project_id}~1acknowledgements/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/projects/{project_id}/acknowledgements","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"parameters":{"path":[{"name":"project_id","in":"path","required":true,"schemaId":"schema_78"}],"query":[],"querystring":[],"header":[{"name":"authorization","in":"header","required":false,"schemaId":"schema_44"}],"cookie":[]},"security":[],"requestBody":{"application/json":{"schemaId":"components/schemas/PublicProjectAcknowledgementCreate"}},"responseCodes":["200","400","404","422"],"pointer":"/projects/{project_id}/acknowledgements","href":"projects/public_projects_acknowledge","openApiOperationId":"public_projects_acknowledge","summary":"Public Projects Acknowledge"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"schemaId":"components/schemas/PublicProjectAcknowledgementCreate","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/PublicProjectAcknowledgementCreate"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Successful Response","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PublicProjectAcknowledgement"}},"schemaId":"components/schemas/PublicProjectAcknowledgement"},{"code":"400","description":"Validation failed (e.g. FAILED without message)"},{"code":"404","description":"Project not found"},{"code":"422","description":"Validation Error","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/HTTPValidationError"}},"schemaId":"components/schemas/HTTPValidationError"}],"pointer":"/paths/~1projects~1{project_id}~1acknowledgements/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/PublicProjectAcknowledgement","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PublicProjectAcknowledgement"}}},{"code":"400"},{"code":"404"},{"code":"422","schemaId":"components/schemas/HTTPValidationError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/HTTPValidationError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/projects/public_projects_acknowledge"}],"panels":[]}]},"httpPath":"/projects/{project_id}/acknowledgements"}],"content":{"contentType":"group","meta":{"name":"Projects"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Projects","showPageActions":true},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Project"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is the real-world construction project (or business"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"opportunity) an incoming request belongs to. Multiple requests — a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"tender, its follow-up amendments, later related orders — usually roll"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"up under one project. Every incoming LV becomes a tender that Mercura"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"groups into a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Project"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" on your behalf, and the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"tender.completed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" /"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"order.completed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" webhooks carry the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"project_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" so partners can"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"reconcile the exported result against the same project record on"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"their side."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Each project carries:"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"id"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — the numeric identifier equal to the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"project_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" field on"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"tender.completed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"order.completed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" webhooks (stringified)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Round-trip the value verbatim to "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /projects/{id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"object_number"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — the ERP-facing grouping key. Not unique:"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Mercura groups multiple project rows that share the same"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"object_number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" into one master project internally, so filtering by"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"object_number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" may return several rows."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"name"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — display name and lifecycle state"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"ACTIVE"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"PROCESSED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"BID_SUBMITTED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"CUSTOMER_LOST"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":","},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"CUSTOMER_WON_PENDING"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"CUSTOMER_WON_AWARDED_ELSEWHERE"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":","},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"CUSTOMER_WON_AWARDED_TO_US"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"estimated_value"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"currency"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"submission_date"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" —"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"bid metadata as captured on the LV."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"responsible_user"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — the Mercura user (name + email) assigned to"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"the project. Convenient for surfacing \"assigned to Anna Schmidt\" in"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"a downstream inbox without a second lookup."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"construction_site_address"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"planner_address"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" /"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"developer_address"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — up to three postal addresses associated"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"with the project. Fields not set on the internal row surface as"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"custom_fields"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — organisation-defined key-value pairs. Keys and"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"value shapes are governed by your organisation's custom-column"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"configuration (Settings → Organisation → Custom fields), not by"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"this API. Multi-select fields return the option "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"labels"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (e.g."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"[\"3030\"]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), not the internal option ids. Empty custom-field sets are"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"omitted from the response entirely."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"request_ids"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — the Mercura request ids linked to the project"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"via the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Request.project_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" foreign key. Each id is request-keyed,"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"so drill down to a tender with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /tenders/{id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" or to an order"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /orders/{id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"acknowledgement"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — your side's last reported ERP/CRM import"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"outcome for this project, when one was recorded via"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /projects/{project_id}/acknowledgements"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"project was never acknowledged. See "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Acknowledging a project"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" below."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"You can:"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /projects"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — cursor-paginated list of projects for the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"authed organisation. Use "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"modified_since"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for delta-sync catch-up."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /projects/{project_id}"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — fetch a single project. This is"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"what the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"tender.completed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"order.completed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" webhooks (see the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Webhooks chapter) point you at when partners need project-level"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"context (site address, custom fields) beyond what the tender or"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"order itself carries. The response carries a strong "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"ETag"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"optimistic concurrency on PATCH."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"PATCH /projects/{project_id}"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — edit a project in place. The"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"inbound counterpart of the otherwise Mercura-produced project: write"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"your ERP's own commission / project number (and other metadata) back"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"onto the Mercura object. See "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Updating a project"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" below."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /projects/{project_id}/acknowledgements"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — report whether"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"your ERP/CRM managed to create/import the project ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"SUCCESS"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" with"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"your own record id, or "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"FAILED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" with a reason). A "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"SUCCESS"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" id is"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"written onto the project's "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"object_number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" too, so this is also the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"method-minimal way to reconcile identifiers when your middleware"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"cannot issue the PATCH verb. See "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Acknowledging a project"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" below."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"And Mercura can tell you when to act:"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"project.exported"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — the webhook a Mercura user triggers with the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Send to ERP"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" button on the project page. It is the signal to create"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"the project as an object in your system; you then fetch it with"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /projects/{project_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and report the result with an"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"acknowledgement. See "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Creating a project in your ERP"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" below."},"children":[]}]}]}]}]}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/projects","summary":"Public Projects List","prefix":{"name":"get","color":"get"},"badges":[],"link":"/projects/public_projects_list","deprecated":false},{"title":"/projects/{project_id}","summary":"Public Projects Get","prefix":{"name":"get","color":"get"},"badges":[],"link":"/projects/public_projects_get","deprecated":false},{"title":"/projects/{project_id}","summary":"Public Projects Update","prefix":{"name":"patch","color":"patch"},"badges":[],"link":"/projects/public_projects_update","deprecated":false},{"title":"/projects/{project_id}/acknowledgements","summary":"Public Projects Acknowledge","prefix":{"name":"post","color":"post"},"badges":[],"link":"/projects/public_projects_acknowledge","deprecated":false}]}]}]}]}},{"type":"separator","label":"Platform","content":null},{"type":"group","label":"Jobs","link":"/openapi/jobs","routeSlug":"/openapi/jobs","items":[{"type":"link","label":"The async write loop","link":"/openapi/jobs/the-async-write-loop","routeSlug":"/openapi/jobs/the-async-write-loop","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"The async write loop"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"jobs/the-async-write-loop"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The async write loop"},"children":[]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"POST /articles\nAuthorization: Bearer mrc_live_...\nIdempotency-Key: nightly-sync-2026-05-19\nContent-Type: application/json\n{ \"articles\": [ ... up to 100,000 rows ... ] }\n\n→  202 Accepted\n   { \"job_id\": \"4242\", \"status_url\": \"/api/public/v1/jobs/4242\" }\n"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"POST /articles\nAuthorization: Bearer mrc_live_...\nIdempotency-Key: nightly-sync-2026-05-19\nContent-Type: application/json\n{ \"articles\": [ ... up to 100,000 rows ... ] }\n\n→  202 Accepted\n   { \"job_id\": \"4242\", \"status_url\": \"/api/public/v1/jobs/4242\" }\n"},"children":[]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Then poll:"},"children":[]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"GET /api/public/v1/jobs/4242\n\n→  200 OK\n   {\n     \"job_id\": \"4242\",\n     \"entity\": \"ARTICLES\",\n     \"status\": \"RUNNING\",\n     \"created_at\": \"2026-05-19T10:00:00Z\",\n     \"updated_at\": \"2026-05-19T10:00:05Z\",\n     \"total_rows\": 12000,\n     \"created_count\": 0,\n     \"updated_count\": 0,\n     \"skipped_count\": 0,\n     \"deleted_count\": 0,\n     \"error_count\": 0,\n     \"errors\": [],\n     \"result\": null\n   }\n"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"GET /api/public/v1/jobs/4242\n\n→  200 OK\n   {\n     \"job_id\": \"4242\",\n     \"entity\": \"ARTICLES\",\n     \"status\": \"RUNNING\",\n     \"created_at\": \"2026-05-19T10:00:00Z\",\n     \"updated_at\": \"2026-05-19T10:00:05Z\",\n     \"total_rows\": 12000,\n     \"created_count\": 0,\n     \"updated_count\": 0,\n     \"skipped_count\": 0,\n     \"deleted_count\": 0,\n     \"error_count\": 0,\n     \"errors\": [],\n     \"result\": null\n   }\n"},"children":[]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"…and again a few seconds later:"},"children":[]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"{\n   \"job_id\": \"4242\",\n   \"entity\": \"ARTICLES\",\n   \"status\": \"COMPLETED\",\n   \"created_at\": \"2026-05-19T10:00:00Z\",\n   \"updated_at\": \"2026-05-19T10:00:42Z\",\n   \"total_rows\": 12000,\n   \"created_count\": 9000,\n   \"updated_count\": 2950,\n   \"skipped_count\": 0,\n   \"deleted_count\": 0,\n   \"error_count\": 50,\n   \"errors\": [\n     { \"row_number\": 137, \"identifier\": \"LEU-0900-18-830\", \"error_message\": \"missing list_price\" }\n   ],\n   \"result\": null\n}\n"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"{\n   \"job_id\": \"4242\",\n   \"entity\": \"ARTICLES\",\n   \"status\": \"COMPLETED\",\n   \"created_at\": \"2026-05-19T10:00:00Z\",\n   \"updated_at\": \"2026-05-19T10:00:42Z\",\n   \"total_rows\": 12000,\n   \"created_count\": 9000,\n   \"updated_count\": 2950,\n   \"skipped_count\": 0,\n   \"deleted_count\": 0,\n   \"error_count\": 50,\n   \"errors\": [\n     { \"row_number\": 137, \"identifier\": \"LEU-0900-18-830\", \"error_message\": \"missing list_price\" }\n   ],\n   \"result\": null\n}\n"},"children":[]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"result"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"ARTICLES"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"CUSTOMERS"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"SUPPLIERS"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" jobs; for"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"REQUESTS"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" jobs (created via "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /tenders"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /orders"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") it carries"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{ request_id, request_status, position_count }"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]}],"panels":[]}]}},{"type":"link","label":"Status enum","link":"/openapi/jobs/status-enum","routeSlug":"/openapi/jobs/status-enum","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Status enum"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"jobs/status-enum"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Status enum"},"children":[]}]}]},{"$$mdtype":"Node","type":"table","attributes":{},"children":[{"$$mdtype":"Node","type":"thead","attributes":{},"children":[{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"th","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status"},"children":[]}]}]},{"$$mdtype":"Node","type":"th","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Meaning"},"children":[]}]}]}]}]},{"$$mdtype":"Node","type":"tbody","attributes":{},"children":[{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"PENDING"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Queued, not yet picked up by a worker."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"RUNNING"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A worker is processing rows."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"COMPLETED"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Finished. If "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"error_count > 0"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", those specific rows failed and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"errors[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" lists them — the rest were applied."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"FAILED"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The whole job failed before any rows were applied (e.g. a validation error that affected the entire payload)."},"children":[]}]}]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"COMPLETED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is always a terminal "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"partial-success"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" status: a non-zero"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"error_count"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" does not mean the job failed; it means those rows were"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"skipped while the others were applied. Treat "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"errors[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" as the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"authoritative per-row failure list."},"children":[]}]}]}]}],"panels":[]}]}},{"type":"link","label":"Polling cadence","link":"/openapi/jobs/polling-cadence","routeSlug":"/openapi/jobs/polling-cadence","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Polling cadence"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"jobs/polling-cadence"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Polling cadence"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Most jobs finish in seconds; a 100,000-row catalogue sync may take a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"few minutes. A reasonable client polls every "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"1 second for the first"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"30 seconds"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", then backs off to "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"5–10 seconds"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Poll until you see"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"COMPLETED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" or "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"FAILED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — do not assume a wall-clock timeout."},"children":[]}]}]}]}],"panels":[]}]}},{"type":"link","label":"Idempotency","link":"/openapi/jobs/idempotency","routeSlug":"/openapi/jobs/idempotency","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Idempotency"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"jobs/idempotency"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Idempotency"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Pass an "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Idempotency-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" header (any string up to 255 characters, e.g."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"erp-2026-05-18-batch-1"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") on bulk-write requests. Mercura keys jobs on"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"(organisation, Idempotency-Key)"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":":"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Same key + same body"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" → the original "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"job_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is returned with"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"200 OK"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". No second job runs."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Same key + different body"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" → "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"422 IDEMPOTENCY_KEY_MISMATCH"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". This"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"is almost always a bug on the caller side; we refuse to silently"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"replay a different payload under a key you said you were reusing."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"No header"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" → every call is a new job."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"This lets you safely retry on network or proxy failures without"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"double-writing."},"children":[]}]}]}]}],"panels":[]}]}},{"type":"link","label":"Errors","link":"/openapi/jobs/errors","routeSlug":"/openapi/jobs/errors","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Errors"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"jobs/errors"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Errors"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"404 NOT_FOUND"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"job_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is unknown, malformed, or belongs to"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"another organisation. We deliberately do not distinguish these cases:"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"the existence of another tenant's jobs is never leaked."},"children":[]}]}]}]}]}],"panels":[]}]}},{"label":"Public Jobs Get","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/jobs/public_jobs_get","routeSlug":"/openapi/jobs/public_jobs_get","metadata":{"seo":{"title":"Public Jobs Get","description":"Fetch the status of an async ingestion job."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"public_jobs_get","name":"Public Jobs Get","isWebhook":false,"pointer":"/paths/~1jobs~1{job_id}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Public Jobs Get","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Fetch the status of an async ingestion job."},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"job_id","in":"path","schemaId":"schema_80","required":true}],"pointer":"/paths/~1jobs~1{job_id}/get/parameters"},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"authorization","in":"header","schemaId":"schema_44","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Bearer <mrc_live_…> API key"},"children":[]}]}]}]}],"pointer":"/paths/~1jobs~1{job_id}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/jobs/{job_id}","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"parameters":{"path":[{"name":"job_id","in":"path","required":true,"schemaId":"schema_80"}],"query":[],"querystring":[],"header":[{"name":"authorization","in":"header","required":false,"schemaId":"schema_44"}],"cookie":[]},"security":[],"responseCodes":["200","404","422"],"pointer":"/jobs/{job_id}","href":"jobs/public_jobs_get","openApiOperationId":"public_jobs_get","summary":"Public Jobs Get"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Successful Response","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/JobStatus"}},"schemaId":"components/schemas/JobStatus"},{"code":"404","description":"Job not found"},{"code":"422","description":"Validation Error","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/HTTPValidationError"}},"schemaId":"components/schemas/HTTPValidationError"}],"pointer":"/paths/~1jobs~1{job_id}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/JobStatus","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/JobStatus"}}},{"code":"404"},{"code":"422","schemaId":"components/schemas/HTTPValidationError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/HTTPValidationError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/jobs/public_jobs_get"}],"panels":[]}]},"httpPath":"/jobs/{job_id}"}],"content":{"contentType":"group","meta":{"name":"Jobs"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Jobs","showPageActions":true},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Job"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is the asynchronous unit of work behind every bulk write in"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"this API. When you "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /articles"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /customers"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", or"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /suppliers"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", Mercura validates the payload, persists an"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"ImportRun"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" row, enqueues a worker task, and returns a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"JobAck"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"immediately. The actual ingestion (validation per row, upsert into the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"catalogue, error aggregation) happens out-of-band."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Polling "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /jobs/{job_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is how you learn what happened."},"children":[]}]}]}]}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/jobs/{job_id}","summary":"Public Jobs Get","prefix":{"name":"get","color":"get"},"badges":[],"link":"/jobs/public_jobs_get","deprecated":false}]}]}]}]}},{"type":"group","label":"Webhooks","link":"/openapi/webhooks","routeSlug":"/openapi/webhooks","items":[{"type":"group","label":"Setup","link":"/openapi/webhooks/setup","routeSlug":"/openapi/webhooks/setup","items":[{"type":"link","label":"Setting up a subscription","link":"/openapi/webhooks/setup/setting-up-a-subscription","routeSlug":"/openapi/webhooks/setup/setting-up-a-subscription","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Setting up a subscription"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"webhooks/setup/setting-up-a-subscription"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Setting up a subscription"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":true,"marker":"."},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"An org admin opens "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Settings → Organisation → Webhooks"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" in the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Mercura admin UI."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"They click "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"New webhook"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", enter the HTTPS endpoint your system"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"exposes, pick which event types should fan out to that endpoint,"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"and save. Mercura returns the "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"signing secret exactly once"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" at"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"this moment — copy it into your secret store immediately, it cannot"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"be retrieved later."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"They click "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Send test event"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" to fire a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"webhook.test"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" event at"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"the endpoint. Use this to validate signature verification end-to-end"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"before going live."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Your endpoint then receives the event types you selected"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"automatically, as they fire on the Mercura side (e.g."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"tender.completed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"order.completed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" on completion, "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"job.finished"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"on a bulk-write job)."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"If the secret is lost, the admin can delete the subscription and"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"create a new one — there is no rotate-in-place flow."},"children":[]}]}]}]}],"panels":[]}]}},{"type":"link","label":"Event types","link":"/openapi/webhooks/setup/event-types","routeSlug":"/openapi/webhooks/setup/event-types","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Event types"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"webhooks/setup/event-types"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Event types"},"children":[]}]}]},{"$$mdtype":"Node","type":"table","attributes":{},"children":[{"$$mdtype":"Node","type":"thead","attributes":{},"children":[{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"th","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"event_type"},"children":[]}]}]},{"$$mdtype":"Node","type":"th","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Fires when"},"children":[]}]}]}]}]},{"$$mdtype":"Node","type":"tbody","attributes":{},"children":[{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"tender.completed"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A tender offer is "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"released to the partner API"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — the seller clicks "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Finalize"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (Export → API) in the matching view. Carries "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"tender_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (= the request id) and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"completed_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; fetch the full record from "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /tenders/{tender_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Fires again (with a newer "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"completed_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") on every re-release. (Other export paths — PDF, offer email/download, the ERP callback — do NOT fire this.)"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"order.completed"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"An order is "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"finalised"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (marked exported) for handoff. Carries "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"order_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (= the request id) and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"completed_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; fetch the full record from "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /orders/{order_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"project.exported"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A Mercura user hands a "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"project"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" ("},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Objekt"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") over to your system — the "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Send to ERP"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" button on the project page. Carries "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"project_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and the current "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"object_number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; fetch the full record from "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /projects/{project_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", create it on your side, then report the outcome with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /projects/{project_id}/acknowledgements"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Unlike the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"*.completed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" events this is an explicit handoff, not a lifecycle transition: the project's "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is untouched and re-clicking emits again. The button only appears for organisations subscribed to this event."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"job.finished"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A bulk-write job from this API ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /articles"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"/customers"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"/suppliers"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") reaches a terminal status ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"COMPLETED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" or "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"FAILED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Replaces the need to poll "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /jobs/{job_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"request.processing_completed"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A request finishes its intake processing — file parsing, position extraction — whatever the intake channel (email forwarding, web app, or "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /tenders"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /orders"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Fires on success "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"and"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" on parsing failure; branch on "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"data.status"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". This is the "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"intake"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" signal; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"tender.completed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"order.completed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" are the "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"export/finish"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" signal."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"webhook.test"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A human clicks "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Send test event"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" in the admin UI. Carries a fixed synthetic payload — useful for end-to-end smoke tests of your verification code."},"children":[]}]}]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Every event type uses the same wire format, headers, and signature"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"scheme (below), so a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"webhook.test"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" delivery validates your verification"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"code against the exact production contract before you rely on any real"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"event."},"children":[]}]}]}]}],"panels":[]}]}}],"content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Setup"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":1,"id":"webhooks/setup"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Setup"},"children":[]}]}]}]}],"panels":[]}]}},{"type":"group","label":"Delivery","link":"/openapi/webhooks/delivery","routeSlug":"/openapi/webhooks/delivery","items":[{"type":"link","label":"Wire format","link":"/openapi/webhooks/delivery/wire-format","routeSlug":"/openapi/webhooks/delivery/wire-format","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Wire format"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"webhooks/delivery/wire-format"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Wire format"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Every delivery is a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" from Mercura to your endpoint with this"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"shape:"},"children":[]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"POST https://your-erp.example.com/mercura/webhooks\nContent-Type: application/json\nUser-Agent: Mercura-Webhooks/1.0\nMercura-Event: tender.completed\nMercura-Event-Id: 4a2b9d1c-7e8f-4a3b-9c1d-2e3f4a5b6c7d\nMercura-Delivery-Id: 9c1f77a2-8b3e-4d5f-a6c7-1b2c3d4e5f60\nMercura-Delivery-Attempt: 1\nMercura-Timestamp: 1747742400\nMercura-Signature-256: sha256=4f3a9e...\n\n{\n  \"event_id\": \"4a2b9d1c-7e8f-4a3b-9c1d-2e3f4a5b6c7d\",\n  \"event_type\": \"tender.completed\",\n  \"delivered_at\": \"2026-05-20T12:00:00Z\",\n  \"data\": { ... }\n}\n"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"POST https://your-erp.example.com/mercura/webhooks\nContent-Type: application/json\nUser-Agent: Mercura-Webhooks/1.0\nMercura-Event: tender.completed\nMercura-Event-Id: 4a2b9d1c-7e8f-4a3b-9c1d-2e3f4a5b6c7d\nMercura-Delivery-Id: 9c1f77a2-8b3e-4d5f-a6c7-1b2c3d4e5f60\nMercura-Delivery-Attempt: 1\nMercura-Timestamp: 1747742400\nMercura-Signature-256: sha256=4f3a9e...\n\n{\n  \"event_id\": \"4a2b9d1c-7e8f-4a3b-9c1d-2e3f4a5b6c7d\",\n  \"event_type\": \"tender.completed\",\n  \"delivered_at\": \"2026-05-20T12:00:00Z\",\n  \"data\": { ... }\n}\n"},"children":[]}]},{"$$mdtype":"Node","type":"table","attributes":{},"children":[{"$$mdtype":"Node","type":"thead","attributes":{},"children":[{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"th","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Header"},"children":[]}]}]},{"$$mdtype":"Node","type":"th","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Purpose"},"children":[]}]}]}]}]},{"$$mdtype":"Node","type":"tbody","attributes":{},"children":[{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Mercura-Event"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The event type. Same as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"event_type"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" in the body."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Mercura-Event-Id"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Stable across delivery attempts. Use this for "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"dedup"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": if you see the same "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Mercura-Event-Id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" twice, process it once."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Mercura-Delivery-Id"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Unique per delivery attempt. Useful when quoting an attempt in a support ticket."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Mercura-Delivery-Attempt"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"1"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for the first attempt, incremented on each retry."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Mercura-Timestamp"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Unix seconds at the moment Mercura signed the payload. Used in the signature and for replay protection."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Mercura-Signature-256"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"sha256="},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" followed by the hex HMAC-SHA256 of "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"<timestamp>.<raw_body>"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" keyed by your subscription secret."},"children":[]}]}]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Respond with any "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"2xx"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" to acknowledge — Mercura ignores the response"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"body. A "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"4xx"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (other than "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"408"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"429"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") marks the delivery as"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"permanently failed; a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"5xx"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"408"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"429"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", or network error triggers"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"the retry schedule below."},"children":[]}]}]}]}],"panels":[]}]}},{"type":"link","label":"Example payloads","link":"/openapi/webhooks/delivery/example-payloads","routeSlug":"/openapi/webhooks/delivery/example-payloads","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Example payloads"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"webhooks/delivery/example-payloads"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Example payloads"},"children":[]}]}]}]}],"panels":[]}]}},{"type":"link","label":"tender.completed","link":"/openapi/webhooks/delivery/tender.completed","routeSlug":"/openapi/webhooks/delivery/tender.completed","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"tender.completed"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"webhooks/delivery/tender.completed"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"tender.completed"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Fired when a tender offer is released to the partner API (the seller's "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Finalize"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / Export → API action). The"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"payload is intentionally small — it tells you "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"which"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" tender changed and"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"when"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", and you fetch the current state from "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /tenders/{tender_id}"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"tender_id == request_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"completed_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is refreshed on every"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"completion, so pairing this event with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /tenders?completed_since=…"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" lets"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"you reconcile even if a delivery is missed."},"children":[]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"{\n  \"event_id\": \"7e8f4a3b-9c1d-4a2b-9d1c-2e3f4a5b6c7d\",\n  \"event_type\": \"tender.completed\",\n  \"delivered_at\": \"2026-07-09T12:00:00Z\",\n  \"data\": {\n    \"tender_id\": 12345,\n    \"name\": \"RFQ-2026-0042 — Office Tower B\",\n    \"customer_bp_id\": 678,\n    \"project_id\": 90,\n    \"position_count\": 47,\n    \"erp_offer_id\": null,\n    \"completed_at\": \"2026-07-09T11:59:58Z\"\n  }\n}\n","language":"json"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"{\n  \"event_id\": \"7e8f4a3b-9c1d-4a2b-9d1c-2e3f4a5b6c7d\",\n  \"event_type\": \"tender.completed\",\n  \"delivered_at\": \"2026-07-09T12:00:00Z\",\n  \"data\": {\n    \"tender_id\": 12345,\n    \"name\": \"RFQ-2026-0042 — Office Tower B\",\n    \"customer_bp_id\": 678,\n    \"project_id\": 90,\n    \"position_count\": 47,\n    \"erp_offer_id\": null,\n    \"completed_at\": \"2026-07-09T11:59:58Z\"\n  }\n}\n"},"children":[]}]}]}],"panels":[]}]}},{"type":"link","label":"order.completed","link":"/openapi/webhooks/delivery/order.completed","routeSlug":"/openapi/webhooks/delivery/order.completed","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"order.completed"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"webhooks/delivery/order.completed"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"order.completed"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Fired when an order is finalised (marked exported). Same shape"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"tender.completed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" but keyed by "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"order_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (= the request id); fetch the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"full record from "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /orders/{order_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"{\n  \"event_id\": \"9c1d2e3f-4a5b-4c7d-8e9f-0a1b2c3d4e5f\",\n  \"event_type\": \"order.completed\",\n  \"delivered_at\": \"2026-07-09T12:05:00Z\",\n  \"data\": {\n    \"order_id\": 20456,\n    \"name\": \"PO-88213\",\n    \"customer_bp_id\": 678,\n    \"project_id\": null,\n    \"position_count\": 12,\n    \"erp_offer_id\": \"SO-2026-5567\",\n    \"completed_at\": \"2026-07-09T12:04:57Z\"\n  }\n}\n","language":"json"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"{\n  \"event_id\": \"9c1d2e3f-4a5b-4c7d-8e9f-0a1b2c3d4e5f\",\n  \"event_type\": \"order.completed\",\n  \"delivered_at\": \"2026-07-09T12:05:00Z\",\n  \"data\": {\n    \"order_id\": 20456,\n    \"name\": \"PO-88213\",\n    \"customer_bp_id\": 678,\n    \"project_id\": null,\n    \"position_count\": 12,\n    \"erp_offer_id\": \"SO-2026-5567\",\n    \"completed_at\": \"2026-07-09T12:04:57Z\"\n  }\n}\n"},"children":[]}]}]}],"panels":[]}]}},{"type":"link","label":"project.exported","link":"/openapi/webhooks/delivery/project.exported","routeSlug":"/openapi/webhooks/delivery/project.exported","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"project.exported"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"webhooks/delivery/project.exported"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"project.exported"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Fired when a Mercura user clicks "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Send to ERP"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" on a project. Like the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"*.completed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" events the payload only says "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"which"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" project and "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"when"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" —"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"fetch the record from "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /projects/{project_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"object_number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Mercura's current value for your object id: "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" on a first handoff,"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"and on a re-export the number you acknowledged earlier, so you can tell"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"a create from an update without your own mapping table."},"children":[]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"{\n  \"event_id\": \"1f2e3d4c-5b6a-4978-8695-a4b3c2d1e0f9\",\n  \"event_type\": \"project.exported\",\n  \"delivered_at\": \"2026-08-31T09:15:00Z\",\n  \"data\": {\n    \"project_id\": 90,\n    \"name\": \"Maplewood Heights\",\n    \"object_number\": null,\n    \"status\": \"ACTIVE\",\n    \"request_count\": 3,\n    \"exported_at\": \"2026-08-31T09:14:58Z\"\n  }\n}\n","language":"json"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"{\n  \"event_id\": \"1f2e3d4c-5b6a-4978-8695-a4b3c2d1e0f9\",\n  \"event_type\": \"project.exported\",\n  \"delivered_at\": \"2026-08-31T09:15:00Z\",\n  \"data\": {\n    \"project_id\": 90,\n    \"name\": \"Maplewood Heights\",\n    \"object_number\": null,\n    \"status\": \"ACTIVE\",\n    \"request_count\": 3,\n    \"exported_at\": \"2026-08-31T09:14:58Z\"\n  }\n}\n"},"children":[]}]}]}],"panels":[]}]}},{"type":"link","label":"job.finished","link":"/openapi/webhooks/delivery/job.finished","routeSlug":"/openapi/webhooks/delivery/job.finished","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"job.finished"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"webhooks/delivery/job.finished"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"job.finished"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Fired when a bulk-write job reaches a terminal status. The payload"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"mirrors the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /jobs/{job_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" envelope — receive this event and"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"you no longer need to poll. The semantics of "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"error_count"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":","},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"errors[]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" are documented under the "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Jobs"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" chapter."},"children":[]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"{\n  \"event_id\": \"8b3e4d5f-a6c7-1b2c-3d4e-5f6071829304\",\n  \"event_type\": \"job.finished\",\n  \"delivered_at\": \"2026-05-20T10:00:42Z\",\n  \"data\": {\n    \"job_id\": \"4242\",\n    \"entity\": \"ARTICLES\",\n    \"status\": \"COMPLETED\",\n    \"created_at\": \"2026-05-20T10:00:00Z\",\n    \"updated_at\": \"2026-05-20T10:00:42Z\",\n    \"total_rows\": 12000,\n    \"created_count\": 9000,\n    \"updated_count\": 2950,\n    \"skipped_count\": 0,\n    \"deleted_count\": 0,\n    \"error_count\": 50,\n    \"errors\": [\n      {\n        \"row_number\": 137,\n        \"identifier\": \"LEU-0900-18-830\",\n        \"error_message\": \"missing list_price\"\n      }\n    ]\n  }\n}\n","language":"json"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"{\n  \"event_id\": \"8b3e4d5f-a6c7-1b2c-3d4e-5f6071829304\",\n  \"event_type\": \"job.finished\",\n  \"delivered_at\": \"2026-05-20T10:00:42Z\",\n  \"data\": {\n    \"job_id\": \"4242\",\n    \"entity\": \"ARTICLES\",\n    \"status\": \"COMPLETED\",\n    \"created_at\": \"2026-05-20T10:00:00Z\",\n    \"updated_at\": \"2026-05-20T10:00:42Z\",\n    \"total_rows\": 12000,\n    \"created_count\": 9000,\n    \"updated_count\": 2950,\n    \"skipped_count\": 0,\n    \"deleted_count\": 0,\n    \"error_count\": 50,\n    \"errors\": [\n      {\n        \"row_number\": 137,\n        \"identifier\": \"LEU-0900-18-830\",\n        \"error_message\": \"missing list_price\"\n      }\n    ]\n  }\n}\n"},"children":[]}]}]}],"panels":[]}]}},{"type":"link","label":"request.processing_completed","link":"/openapi/webhooks/delivery/request.processing_completed","routeSlug":"/openapi/webhooks/delivery/request.processing_completed","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"request.processing_completed"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"webhooks/delivery/request.processing_completed"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"request.processing_completed"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Fired when a request finishes intake processing, regardless of how it"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"entered the platform — a forwarded email, a web-app upload, or"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /tenders"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /orders"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"COMPLETED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"request landed ready for review and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"FAILED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when parsing failed."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"job_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is populated only for requests created via the API"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /tenders"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /orders"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") and matches the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"job_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" from the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"original "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"JobAck"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — use it to correlate the event with your upload."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"For email- and UI-created requests it is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", so this event also"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"lets you track LVs your customers forward by email without any polling."},"children":[]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"{\n  \"event_id\": \"5f607182-9304-4d5f-a6c7-1b2c3d4e8b3e\",\n  \"event_type\": \"request.processing_completed\",\n  \"delivered_at\": \"2026-06-10T10:04:12Z\",\n  \"data\": {\n    \"request_id\": 12345,\n    \"request_type\": \"TENDER\",\n    \"status\": \"COMPLETED\",\n    \"name\": \"RFQ-2026-0042 — Office Tower B\",\n    \"customer_bp_id\": 678,\n    \"position_count\": 47,\n    \"job_id\": \"4242\",\n    \"error_message\": null\n  }\n}\n","language":"json"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"{\n  \"event_id\": \"5f607182-9304-4d5f-a6c7-1b2c3d4e8b3e\",\n  \"event_type\": \"request.processing_completed\",\n  \"delivered_at\": \"2026-06-10T10:04:12Z\",\n  \"data\": {\n    \"request_id\": 12345,\n    \"request_type\": \"TENDER\",\n    \"status\": \"COMPLETED\",\n    \"name\": \"RFQ-2026-0042 — Office Tower B\",\n    \"customer_bp_id\": 678,\n    \"position_count\": 47,\n    \"job_id\": \"4242\",\n    \"error_message\": null\n  }\n}\n"},"children":[]}]}]}],"panels":[]}]}},{"type":"link","label":"webhook.test","link":"/openapi/webhooks/delivery/webhook.test","routeSlug":"/openapi/webhooks/delivery/webhook.test","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"webhook.test"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"webhooks/delivery/webhook.test"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"webhook.test"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Fired when a human clicks "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Send test event"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" in the admin UI."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Carries a fixed synthetic payload — your verification code should"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"treat it exactly like a real event."},"children":[]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"{\n  \"event_id\": \"00000000-0000-4000-8000-000000000000\",\n  \"event_type\": \"webhook.test\",\n  \"delivered_at\": \"2026-05-20T09:30:00Z\",\n  \"data\": {\n    \"subscription_id\": 42,\n    \"message\": \"This is a test webhook from Mercura.\",\n    \"sent_at\": \"2026-05-20T09:30:00Z\"\n  }\n}\n","language":"json"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"{\n  \"event_id\": \"00000000-0000-4000-8000-000000000000\",\n  \"event_type\": \"webhook.test\",\n  \"delivered_at\": \"2026-05-20T09:30:00Z\",\n  \"data\": {\n    \"subscription_id\": 42,\n    \"message\": \"This is a test webhook from Mercura.\",\n    \"sent_at\": \"2026-05-20T09:30:00Z\"\n  }\n}\n"},"children":[]}]}]}],"panels":[]}]}}],"content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Delivery"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":1,"id":"webhooks/delivery"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Delivery"},"children":[]}]}]}]}],"panels":[]}]}},{"type":"group","label":"Receiver implementation","link":"/openapi/webhooks/receiver-implementation","routeSlug":"/openapi/webhooks/receiver-implementation","items":[{"type":"link","label":"Verifying the signature","link":"/openapi/webhooks/receiver-implementation/verifying-the-signature","routeSlug":"/openapi/webhooks/receiver-implementation/verifying-the-signature","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Verifying the signature"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"webhooks/receiver-implementation/verifying-the-signature"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Verifying the signature"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Mercura signs every delivery with HMAC-SHA256 over"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"<Mercura-Timestamp>.<raw_body>"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", keyed by your subscription secret."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Always verify before trusting the payload"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — and verify against"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"the raw bytes you received, not against a re-serialised JSON object."},"children":[]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"import hashlib\nimport hmac\nimport time\n\nMAX_TIMESTAMP_SKEW_SECONDS = 5 * 60  # 5 minutes\n\n\ndef verify_mercura_webhook(\n    *,\n    secret: str,\n    raw_body: bytes,\n    timestamp_header: str,\n    signature_header: str,\n) -> bool:\n    # 1. Reject stale or future-dated deliveries — protects against replays.\n    try:\n        ts = int(timestamp_header)\n    except (TypeError, ValueError):\n        return False\n    if abs(time.time() - ts) > MAX_TIMESTAMP_SKEW_SECONDS:\n        return False\n\n    # 2. Recompute the signature.\n    signed_payload = f\"{ts}.\".encode() + raw_body\n    expected = hmac.new(\n        secret.encode(\"utf-8\"),\n        signed_payload,\n        hashlib.sha256,\n    ).hexdigest()\n\n    # 3. Constant-time compare against the value Mercura sent.\n    prefix = \"sha256=\"\n    if not signature_header.startswith(prefix):\n        return False\n    return hmac.compare_digest(expected, signature_header[len(prefix):])\n","language":"python"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"import hashlib\nimport hmac\nimport time\n\nMAX_TIMESTAMP_SKEW_SECONDS = 5 * 60  # 5 minutes\n\n\ndef verify_mercura_webhook(\n    *,\n    secret: str,\n    raw_body: bytes,\n    timestamp_header: str,\n    signature_header: str,\n) -> bool:\n    # 1. Reject stale or future-dated deliveries — protects against replays.\n    try:\n        ts = int(timestamp_header)\n    except (TypeError, ValueError):\n        return False\n    if abs(time.time() - ts) > MAX_TIMESTAMP_SKEW_SECONDS:\n        return False\n\n    # 2. Recompute the signature.\n    signed_payload = f\"{ts}.\".encode() + raw_body\n    expected = hmac.new(\n        secret.encode(\"utf-8\"),\n        signed_payload,\n        hashlib.sha256,\n    ).hexdigest()\n\n    # 3. Constant-time compare against the value Mercura sent.\n    prefix = \"sha256=\"\n    if not signature_header.startswith(prefix):\n        return False\n    return hmac.compare_digest(expected, signature_header[len(prefix):])\n"},"children":[]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"If verification fails, return "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"400"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and log the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Mercura-Delivery-Id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — Mercura will not retry on a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"4xx"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", which is"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"the right behaviour for a malformed or unauthenticated request."},"children":[]}]}]}]}],"panels":[]}]}},{"type":"link","label":"Custom auth header (optional)","link":"/openapi/webhooks/receiver-implementation/custom-auth-header-(optional)","routeSlug":"/openapi/webhooks/receiver-implementation/custom-auth-header-(optional)","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Custom auth header (optional)"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"webhooks/receiver-implementation/custom-auth-header-(optional)"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Custom auth header (optional)"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"If your receiver sits behind a gateway or reverse proxy that requires"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"a fixed authentication header — API key, bearer token, service"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"credential — you can configure Mercura to send one on every delivery."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"When creating or editing a subscription, set:"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Auth header name"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — e.g. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"X-API-Key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Authorization"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Auth header value"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — e.g. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"sk_live_abc123"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Bearer eyJhbGci…"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Mercura then attaches that header to every "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"on top of"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"HMAC signature — the signature is still your authoritative source of"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"truth. Treat the custom header as a coarse gateway filter, not as a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"replacement for verifying the signature."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The header value is never returned by any read endpoint — GET"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"responses expose only the header "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"name"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"has_auth_header_value"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"boolean so the admin UI can show \"configured\" without leaking the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"secret. To rotate the value, "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"PATCH"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" the subscription with a fresh"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"auth_header_value"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (both fields must be sent together); to remove"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"the header entirely, "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"PATCH"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" both fields to "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The following prefixes are reserved and rejected — they would collide"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"with Mercura's own delivery metadata:"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Mercura-*"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Content-*"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"User-Agent"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Host"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Authorization"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is intentionally NOT reserved — using"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Authorization: Bearer …"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is a primary use case."},"children":[]}]}]}]}],"panels":[]}]}},{"type":"link","label":"Retry policy","link":"/openapi/webhooks/receiver-implementation/retry-policy","routeSlug":"/openapi/webhooks/receiver-implementation/retry-policy","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Retry policy"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"webhooks/receiver-implementation/retry-policy"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Retry policy"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"If your endpoint returns a retryable status — "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"5xx"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"408"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"429"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", or"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"a network/timeout error — Mercura retries on this schedule:"},"children":[]}]}]},{"$$mdtype":"Node","type":"table","attributes":{},"children":[{"$$mdtype":"Node","type":"thead","attributes":{},"children":[{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"th","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Attempt"},"children":[]}]}]},{"$$mdtype":"Node","type":"th","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Wait before this attempt"},"children":[]}]}]}]}]},{"$$mdtype":"Node","type":"tbody","attributes":{},"children":[{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"1"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"immediate"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"2"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"30 seconds"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"3"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"5 minutes"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"4"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"30 minutes"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"5"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"2 hours"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"6"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"12 hours"},"children":[]}]}]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"After attempt 6 the delivery is recorded as permanently "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"failed"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"shows up in the admin UI's recent-deliveries view; Mercura does not"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"retry further. The "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Mercura-Event-Id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" stays stable across all"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"attempts, so a delivery that eventually succeeds after some retries"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"is the same logical event as the earlier attempts."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"2xx"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" response stops the retry chain immediately. Any other "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"4xx"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"(except "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"408"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"429"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") is treated as a permanent partner-side"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"configuration error and is not retried."},"children":[]}]}]}]}],"panels":[]}]}}],"content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Receiver implementation"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":1,"id":"webhooks/receiver-implementation"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Receiver implementation"},"children":[]}]}]}]}],"panels":[]}]}}],"content":{"contentType":"group","meta":{"name":"Webhooks"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Webhooks","showPageActions":true},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Webhooks"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" are how Mercura tells your system that something happened"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"without you having to poll. Instead of asking "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /jobs/{job_id}"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"every few seconds, you register an HTTPS endpoint once and Mercura"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"delivers a signed "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" whenever a relevant event fires."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"For the end-to-end sequence — how a completed tender flows from Mercura"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"into your ERP via a webhook, and the polling alternative — see"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Getting Started → Integration patterns: webhook vs polling"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/webhooks"}],"panels":[]}]}},{"type":"separator","label":"Account","content":null},{"type":"group","label":"Users","link":"/openapi/users","routeSlug":"/openapi/users","items":[{"type":"link","label":"Typical use: resolve a tender's responsible user","link":"/openapi/users/typical-use:-resolve-a-tender's-responsible-user","routeSlug":"/openapi/users/typical-use:-resolve-a-tender's-responsible-user","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Typical use: resolve a tender's responsible user"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"users/typical-use:-resolve-a-tender's-responsible-user"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Typical use: resolve a tender's responsible user"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /tenders"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" returns "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"user_email"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — the email of the Mercura user who"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"released the tender to the API. Feed that value into"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /users?email=<user_email>"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" to read that user's "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"custom_fields"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":","},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"for example an ERP/SAP identifier your system needs when creating the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"offer."},"children":[]}]}]}]}],"panels":[]}]}},{"type":"link","label":"custom_fields","link":"/openapi/users/custom_fields","routeSlug":"/openapi/users/custom_fields","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"custom_fields"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"users/custom_fields"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"custom_fields"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Organisation-defined custom fields are returned keyed by their display"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"label"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (for example "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"\"SAP ID\""},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), not by the internal column id."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Fields with no active column definition are omitted; the property is"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when the user carries none. Define user custom columns in the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Mercura admin UI."},"children":[]}]}]}]}],"panels":[]}]}},{"type":"link","label":"Service accounts","link":"/openapi/users/service-accounts","routeSlug":"/openapi/users/service-accounts","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Service accounts"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"users/service-accounts"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Service accounts"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The API service account backing your integration is never returned by"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"either endpoint."},"children":[]}]}]}]}],"panels":[]}]}},{"label":"Public Users List By Email","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/users/public_users_list_by_email","routeSlug":"/openapi/users/public_users_list_by_email","metadata":{"seo":{"title":"Public Users List By Email","description":"Look a user up by email."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"public_users_list_by_email","name":"Public Users List By Email","isWebhook":false,"pointer":"/paths/~1users/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Public Users List By Email","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Look a user up by email."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Returns a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"CursorPage"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" with the matching user(s), or an empty"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"data"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" array when the email is unknown in your organisation"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"(never a 404 — the status code doesn't reveal which emails exist)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Almost always a single match, but email is not guaranteed unique:"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"if more than one user shares an email, all are returned so you can"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"disambiguate by "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"next_cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is always "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — every"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"match fits in one page. Use this to resolve a tender's"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"user_email"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" to the user's "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"custom_fields"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (e.g. an ERP/SAP id)."},"children":[]}]}]}]},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"email","in":"query","schemaId":"schema_81","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Email to look up (case-insensitive, exact match). Typically the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"user_email"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" returned by "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /tenders"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Required."},"children":[]}]}]}],"required":true}],"pointer":"/paths/~1users/get/parameters"},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"authorization","in":"header","schemaId":"schema_44","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Bearer <mrc_live_…> API key"},"children":[]}]}]}]}],"pointer":"/paths/~1users/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/users","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"parameters":{"path":[],"query":[{"name":"email","in":"query","required":true,"schemaId":"schema_81"}],"querystring":[],"header":[{"name":"authorization","in":"header","required":false,"schemaId":"schema_44"}],"cookie":[]},"security":[],"responseCodes":["200","400","422"],"pointer":"/users","href":"users/public_users_list_by_email","openApiOperationId":"public_users_list_by_email","summary":"Public Users List By Email"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Successful Response","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CursorPage_PublicUserOut_"}},"schemaId":"components/schemas/CursorPage_PublicUserOut_"},{"code":"400","description":"Missing or malformed email"},{"code":"422","description":"Validation Error","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/HTTPValidationError"}},"schemaId":"components/schemas/HTTPValidationError"}],"pointer":"/paths/~1users/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/CursorPage_PublicUserOut_","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CursorPage_PublicUserOut_"}}},{"code":"400"},{"code":"422","schemaId":"components/schemas/HTTPValidationError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/HTTPValidationError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/users/public_users_list_by_email"}],"panels":[]}]},"httpPath":"/users"},{"label":"Public Users Get","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/users/public_users_get","routeSlug":"/openapi/users/public_users_get","metadata":{"seo":{"title":"Public Users Get","description":"Fetch one user by their Mercura user id."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"public_users_get","name":"Public Users Get","isWebhook":false,"pointer":"/paths/~1users~1{user_id}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Public Users Get","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Fetch one user by their Mercura user id."},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"user_id","in":"path","schemaId":"schema_82","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The Mercura user id — the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" field from a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /users"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" response."},"children":[]}]}]}],"required":true}],"pointer":"/paths/~1users~1{user_id}/get/parameters"},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"authorization","in":"header","schemaId":"schema_44","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Bearer <mrc_live_…> API key"},"children":[]}]}]}]}],"pointer":"/paths/~1users~1{user_id}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/users/{user_id}","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"parameters":{"path":[{"name":"user_id","in":"path","required":true,"schemaId":"schema_82"}],"query":[],"querystring":[],"header":[{"name":"authorization","in":"header","required":false,"schemaId":"schema_44"}],"cookie":[]},"security":[],"responseCodes":["200","404","422"],"pointer":"/users/{user_id}","href":"users/public_users_get","openApiOperationId":"public_users_get","summary":"Public Users Get"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Successful Response","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PublicUserOut"}},"schemaId":"components/schemas/PublicUserOut"},{"code":"404","description":"User not found"},{"code":"422","description":"Validation Error","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/HTTPValidationError"}},"schemaId":"components/schemas/HTTPValidationError"}],"pointer":"/paths/~1users~1{user_id}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/PublicUserOut","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/PublicUserOut"}}},{"code":"404"},{"code":"422","schemaId":"components/schemas/HTTPValidationError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/HTTPValidationError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/users/public_users_get"}],"panels":[]}]},"httpPath":"/users/{user_id}"}],"content":{"contentType":"group","meta":{"name":"Users"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Users","showPageActions":true},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"User"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is a member of your Mercura organisation (a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Sachbearbeiter) — the person who works a request and is named as its"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"responsible user. This is distinct from the business-partner resources"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"customers"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"suppliers"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"contacts"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"); a User logs in to Mercura,"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"a Contact does not."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The resource is "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"read-only"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Users are managed in the Mercura admin"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"UI; there is no public write path."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"You can:"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /users?email=<addr>"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — look a user up by email"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"(case-insensitive, exact match). "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"email"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is required. Returns a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"paginated envelope with the matching user, or an empty "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"data"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" array"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"when the email is unknown in your organisation (never a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"404"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"status code does not reveal which emails exist). "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"next_cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"always "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — every match fits in one page. Almost always a single"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"match; email is not guaranteed unique, so if more than one user in"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"your organisation shares an email, all are returned and you"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"disambiguate by "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /users/{user_id}"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — fetch one user by their Mercura user id"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"(the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" field from a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /users"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" response)."},"children":[]}]}]}]}]}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/users","summary":"Public Users List By Email","prefix":{"name":"get","color":"get"},"badges":[],"link":"/users/public_users_list_by_email","deprecated":false},{"title":"/users/{user_id}","summary":"Public Users Get","prefix":{"name":"get","color":"get"},"badges":[],"link":"/users/public_users_get","deprecated":false}]}]}]}]}},{"type":"group","label":"Statistics","link":"/openapi/statistics","routeSlug":"/openapi/statistics","items":[{"type":"link","label":"Selection accuracy","link":"/openapi/statistics/selection-accuracy","routeSlug":"/openapi/statistics/selection-accuracy","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Selection accuracy"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"statistics/selection-accuracy"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Selection accuracy"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /statistics/selections"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" returns, for every request in a date range, how"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"that request's positions were resolved into selections. Rows cover both request"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"types shown on the dashboard — "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"tenders and orders"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — and each carries a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"request_type"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"TENDER"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"ORDER"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") so you know whether its "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"request_id"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"resolves via "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /tenders/{id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" or "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /orders/{id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Each row carries these"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"counts:"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"position_count"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — the number of "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"relevant"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" positions on the request (lines"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Mercura kept for matching; irrelevant lines such as headings or notes are"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"excluded)."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"positions_with_selection"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — how many of those relevant positions actually got"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"resolved"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", i.e. carry at least one selection. Always "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"<= position_count"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"(some relevant positions end up with no selection at all). This is the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"denominator behind the in-app time-per-position metric — see "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Status &"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"handling time"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" below."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"selection_count"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — the total number of surviving selections across those"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"relevant positions. A single position can carry more than one selection (for"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"example two articles chosen for one line), so "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"selection_count"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" may exceed"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"position_count"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". It counts "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"selections"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", not positions, so it is "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not"},"children":[]}]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"interchangeable with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"positions_with_selection"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"auto_selected_count"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — selections made by a mechanism that resolves the line"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"without going through prediction ranking. These fire when Mercura can resolve a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"line on its own: an exact "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"article-number match"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; propagation from a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"master"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"historic"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"cluster"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"duplicate"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", or"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"equivalent-position"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" match; a "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"parts-list"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" lookup; a configured"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"default article"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; or an "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"auto-selection the order-entry agent makes on its"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"own"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". In practice this is high whenever the customer supplied article numbers"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"up front."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"prediction_correct_count"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — prediction-driven selections where the chosen"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"article was among Mercura's predictions for that position (a \"correct\""},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"prediction — the model surfaced the article the user picked). This is a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"straight "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"predicted / not-predicted"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" split: the earlier "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"top-10"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" rank cut has"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"been removed, since the order-entry agent surfaces only a handful of candidates"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"per position rather than a long ranked list."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"manual_selection_count"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — prediction-driven selections where the chosen"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"article was "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" among Mercura's predictions for that position (shown as"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Manual selections"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" in the dashboard — the user picked something the model did"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not surface)."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The three outcome counts ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"auto_selected_count"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"prediction_correct_count"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":","},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"manual_selection_count"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") are mutually exclusive and sum to "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"selection_count"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Derive whatever rollups you need client-side, for example:"},"children":[]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"hit_rate = (auto_selected_count + prediction_correct_count) / selection_count\n"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"hit_rate = (auto_selected_count + prediction_correct_count) / selection_count\n"},"children":[]}]}]}],"panels":[]}]}},{"type":"link","label":"Status & handling time","link":"/openapi/statistics/status-and-handling-time","routeSlug":"/openapi/statistics/status-and-handling-time","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Status & handling time"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"statistics/status-and-handling-time"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Status & handling time"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Each row also reports where the request sits in Mercura's processing lifecycle,"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"the true handling time spent on it, and the timestamps around it:"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — the lifecycle state: "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"NEW"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"IN_PROGRESS"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"DONE"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"CANCELLED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":","},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"PARSING"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", or "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"PARSING_FAILED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"active_seconds"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — the "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"true handling time"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": the total "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"active"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (engaged)"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"seconds a user spent working the request before export. This is the exact"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"per-request figure behind the in-app "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"time per position"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" metric — the same"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"usage telemetry, read straight from that computation — and it counts only time"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"the request was actively being worked. Defined for "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"exported tenders"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" only:"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for orders, for requests not yet exported, and for exported requests"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"with no recorded active time."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"first_opened_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — when a user first opened the request, or "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" if it was"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"never opened."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"exported_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — when the request was first exported to your system, or "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"if it has not been exported yet."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"completed_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — the most recent completion / re-export. Unlike "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"exported_at"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"(set once, on the first export) this advances on every re-export."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Use "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"active_seconds"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for handling time. To reproduce the "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"time per position"},"children":[]}]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"figure Mercura shows in-app, divide by "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"positions_with_selection"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and aggregate"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"as a "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"pooled ratio"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" across the rows:"},"children":[]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"-- matches the in-app dashboard\nseconds_per_position = SUM(active_seconds) / SUM(positions_with_selection)\n"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"-- matches the in-app dashboard\nseconds_per_position = SUM(active_seconds) / SUM(positions_with_selection)\n"},"children":[]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Two details decide whether your number matches ours:"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Use "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"positions_with_selection"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", not "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"position_count"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" The metric measures"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"effort per "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"resolved"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" line. Relevant positions that never got a selection are"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"position_count"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" but were not worked, so including them understates the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"figure."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Pool the totals; don't average the per-request ratios."},"children":[]}]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"AVG(active_seconds / positions_with_selection)"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" weights a 3-position request"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"exactly as heavily as a 300-position one. Request sizes are long-tailed —"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"small requests are the most common — so the mean of ratios lands well above"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"the pooled value. Both are legitimate statistics; only the pooled one is what"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"the dashboard reports."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Per-selection effort is a different question, and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"selection_count"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is the right"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"denominator for it:"},"children":[]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"seconds_per_selection = SUM(active_seconds) / SUM(selection_count)\n"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"seconds_per_selection = SUM(active_seconds) / SUM(selection_count)\n"},"children":[]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Rows where "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"active_seconds"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (orders, unexported requests, or requests"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"with no recorded telemetry) must be excluded from both — they are unmeasured,"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not zero."},"children":[]}]}]},{"$$mdtype":"Node","type":"blockquote","attributes":{},"children":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Do not"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" use "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"exported_at - first_opened_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" as handling time. That span is"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"wall-clock: a request opened on Monday and exported on Wednesday reads as two"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"days even if only 20 minutes of work went in. It includes overnight and idle"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"gaps, so it cannot tell you how long the user actually spent. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"active_seconds"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"is the field that answers that. The timestamps are still useful for lifecycle"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"reporting (when a request entered/left each state)."},"children":[]}]}]}]}]}],"panels":[]}]}},{"type":"link","label":"Exported vs. in-progress requests","link":"/openapi/statistics/exported-vs.-in-progress-requests","routeSlug":"/openapi/statistics/exported-vs.-in-progress-requests","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Exported vs. in-progress requests"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"statistics/exported-vs.-in-progress-requests"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Exported vs. in-progress requests"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"By default only "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"exported"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", non-deleted, non-evaluation requests are included"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"— the same universe as the dashboard. Pass "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"include_unexported=true"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" to also"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"receive requests that are still in progress (never exported). This lets you"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"compare how many requests were "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"uploaded"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" against how many were"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"successfully exported"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": with the flag on, an exported request has a non-null"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"exported_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (and typically "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status = DONE"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), while an uploaded-but-open one"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"has "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"exported_at = null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" such as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"NEW"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" or "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"IN_PROGRESS"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Note that "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"active_seconds"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" stays "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for these still-open requests — handling"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"time is measured against the export."},"children":[]}]}]}]}],"panels":[]}]}},{"type":"link","label":"Date range","link":"/openapi/statistics/date-range","routeSlug":"/openapi/statistics/date-range","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Date range"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"statistics/date-range"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Date range"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"start_date"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"end_date"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (both "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"YYYY-MM-DD"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", required) bound the range on the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"request's "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"creation date"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", inclusive on both ends. The window is capped at"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"400 days"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; an inverted range or one wider than the cap returns"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"400 VALIDATION_FAILED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Keep both parameters present on every page of a paged"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"read — they define the query window, and the cursor resumes within it."},"children":[]}]}]}]}],"panels":[]}]}},{"type":"link","label":"Pagination","link":"/openapi/statistics/pagination","routeSlug":"/openapi/statistics/pagination","content":{"contentType":"item","itemVariant":"markdown","meta":{"name":"Pagination"},"children":[{"nodeType":"container","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"statistics/pagination"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Pagination"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Standard cursor pagination (see "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Getting Started → Pagination"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Rows are"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"ordered newest-first by request creation time. Pass "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"limit"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (1–500, default"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"100); when a further page exists the response carries a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"next_cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", which"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"you pass back as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" on the next call along with the unchanged"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"start_date"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"end_date"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". A "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"next_cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" means the range is exhausted."},"children":[]}]}]}]}],"panels":[]}]}},{"label":"Public Statistics Selections","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/statistics/public_statistics_selections","routeSlug":"/openapi/statistics/public_statistics_selections","metadata":{"seo":{"title":"Public Statistics Selections","description":"Per-request selection-accuracy and processing-time statistics."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"public_statistics_selections","name":"Public Statistics Selections","isWebhook":false,"pointer":"/paths/~1statistics~1selections/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Public Statistics Selections","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Per-request selection-accuracy and processing-time statistics."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Returns the same raw data as the in-app \"Exported requests overview\""},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"dashboard: for each request in the range, how its positions'"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"selections were resolved — "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"auto_selected"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (resolved without prediction"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"ranking), "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"prediction_correct"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (chosen article was among Mercura's"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"predictions), or "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"manual"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (chosen article not predicted). The three counts"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"sum to "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"selection_count"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Each row also carries the request "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", the true"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"handling time "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"active_seconds"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (engaged working time from usage telemetry;"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"tenders only), and the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"first_opened_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"exported_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" /"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"completed_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" lifecycle timestamps. Divide "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"active_seconds"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" by"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"position_count"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"selection_count"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for a per-position / per-selection"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"figure. Rows are newest-first by request creation time. Compute hit-rate /"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"accuracy percentages client-side from the raw counts. By default only"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"exported requests are returned; pass "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"include_unexported=true"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" to also see"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"requests still in progress."},"children":[]}]}]}]},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"start_date","in":"query","schemaId":"schema_83","description":"Inclusive start of the range (YYYY-MM-DD), anchored to the request creation date.","required":true},{"name":"end_date","in":"query","schemaId":"schema_84","description":"Inclusive end of the range (YYYY-MM-DD). The window is capped at 400 days.","required":true},{"name":"cursor","in":"query","schemaId":"schema_85","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Opaque cursor from a prior page's "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"next_cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Keep "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"start_date"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"end_date"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" present on every page; the cursor resumes strictly after the last row already returned."},"children":[]}]}]}]},{"name":"limit","in":"query","schemaId":"schema_86","description":"Maximum rows per page (default 100)."},{"name":"include_unexported","in":"query","schemaId":"schema_87","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"By default only exported requests are returned (the in-app dashboard universe). Set to "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"true"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" to also include requests still in progress (never exported), so you can compare how many were uploaded vs. successfully exported. Each row's "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"exported_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" distinguish the two."},"children":[]}]}]}]}],"pointer":"/paths/~1statistics~1selections/get/parameters"},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"authorization","in":"header","schemaId":"schema_44","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Bearer <mrc_live_…> API key"},"children":[]}]}]}]}],"pointer":"/paths/~1statistics~1selections/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/statistics/selections","servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"parameters":{"path":[],"query":[{"name":"start_date","in":"query","required":true,"schemaId":"schema_83"},{"name":"end_date","in":"query","required":true,"schemaId":"schema_84"},{"name":"cursor","in":"query","required":false,"schemaId":"schema_85"},{"name":"limit","in":"query","required":false,"schemaId":"schema_86"},{"name":"include_unexported","in":"query","required":false,"schemaId":"schema_87"}],"querystring":[],"header":[{"name":"authorization","in":"header","required":false,"schemaId":"schema_44"}],"cookie":[]},"security":[],"responseCodes":["200","400","422"],"pointer":"/statistics/selections","href":"statistics/public_statistics_selections","openApiOperationId":"public_statistics_selections","summary":"Public Statistics Selections"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/openapi","description":"Mock server","isMockServer":true},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Successful Response","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CursorPage_PublicRequestSelectionStats_"}},"schemaId":"components/schemas/CursorPage_PublicRequestSelectionStats_"},{"code":"400","description":"Validation failed (inverted or too-wide date range, malformed cursor)"},{"code":"422","description":"Validation Error","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/HTTPValidationError"}},"schemaId":"components/schemas/HTTPValidationError"}],"pointer":"/paths/~1statistics~1selections/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/CursorPage_PublicRequestSelectionStats_","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CursorPage_PublicRequestSelectionStats_"}}},{"code":"400"},{"code":"422","schemaId":"components/schemas/HTTPValidationError","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/HTTPValidationError"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/statistics/public_statistics_selections"}],"panels":[]}]},"httpPath":"/statistics/selections"}],"content":{"contentType":"group","meta":{"name":"Statistics"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Statistics","showPageActions":true},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Read-only reporting over Mercura's processing outcomes. The statistics"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"resource exposes the "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"raw data"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" behind the in-app "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Exported requests"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"overview"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" dashboard so you can build your own reporting — it returns counts,"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"never pre-computed percentages, so you stay in control of how accuracy is"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"framed."},"children":[]}]}]}]}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/statistics/selections","summary":"Public Statistics Selections","prefix":{"name":"get","color":"get"},"badges":[],"link":"/statistics/public_statistics_selections","deprecated":false}]}]}]}]}}],"store":{"schemaStore":{"components/schemas/Address":{"id":"components/schemas/Address","kind":"json-schema","title":"Address","data":{"properties":{"kind":{"title":"Kind","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Address type, e.g. billing | shipping | hq"},"children":[]}]}]}],"type":["string","null"]},"street":{"title":"Street","type":["string","null"]},"street_number":{"title":"Street Number","description":"House / building number kept separate from street for ERPs that store them apart","type":["string","null"]},"postal_code":{"title":"Postal Code","type":["string","null"]},"city":{"title":"City","type":["string","null"]},"region":{"title":"Region","type":["string","null"]},"country":{"title":"Country","description":"ISO 3166-1 alpha-2 country code","type":["string","null"]},"is_default":{"title":"Is Default","type":["boolean","null"]}},"additionalProperties":false,"type":"object","title":"Address","description":"Postal address shared across customers and suppliers.","example":{"city":"Düsseldorf","country":"DE","is_default":true,"kind":"billing","postal_code":"40210","region":"NRW","street":"Industriestraße","street_number":"12"}}},"components/schemas/Body_public_orders_create":{"id":"components/schemas/Body_public_orders_create","kind":"json-schema","title":"Body_public_orders_create","data":{"properties":{"files":{"items":{"type":"string","contentMediaType":"application/octet-stream"},"type":"array","title":"Files","description":"One or more files, exactly as you would attach them to a forwarded email: GAEB, .xlsx, .csv, .docx, .txt, .pdf, images (.png/.jpg/.jpeg/.gif/.bmp/.tiff/.webp), and .eml. Max 50 MB per file, 100 MB total, 20 files."},"name":{"title":"Name","description":"Display name for the order in Mercura (the email channel uses the subject line). Defaults to the primary file's name.","maxLength":500,"type":["string","null"]},"customer_id":{"title":"Customer Id","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Your customer id — the same identifier the customers resource exposes as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"customer_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Takes precedence over customer_email. An unknown id is not an error — the order is created without a customer, exactly like an email from an unknown sender."},"children":[]}]}]}],"maxLength":255,"type":["string","null"]},"customer_email":{"title":"Customer Email","description":"Customer contact email, matched with the same rules the email channel applies to the sender address (exact contact match, domain pattern, unique inferred domain).","maxLength":320,"type":["string","null"]},"context":{"title":"Context","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Free-text context that helps Mercura process the order — e.g. the original email body, delivery notes, or guidance for article matching."},"children":[]}]}]}],"maxLength":5000,"type":["string","null"]}},"type":"object","required":["files"],"title":"Body_public_orders_create"}},"components/schemas/Body_public_tenders_create":{"id":"components/schemas/Body_public_tenders_create","kind":"json-schema","title":"Body_public_tenders_create","data":{"properties":{"files":{"items":{"type":"string","contentMediaType":"application/octet-stream"},"type":"array","title":"Files","description":"One or more files, exactly as you would attach them to a forwarded email: GAEB (.d81/.d83/.d94/.p81/.p83/.p93/.p94/.x81/.x83/.x93/.x94/.onlv), .xlsx, .csv, .docx, .txt, .pdf, images (.png/.jpg/.jpeg/.gif/.bmp/.tiff/.webp), and .eml. Max 50 MB per file, 100 MB total, 20 files."},"name":{"title":"Name","description":"Display name for the tender in Mercura (the email channel uses the subject line). Defaults to the primary file's name.","maxLength":500,"type":["string","null"]},"customer_id":{"title":"Customer Id","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Your customer id — the same identifier the customers resource exposes as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"customer_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Takes precedence over customer_email. An unknown id is not an error — the tender is created without a customer, exactly like an email from an unknown sender."},"children":[]}]}]}],"maxLength":255,"type":["string","null"]},"customer_email":{"title":"Customer Email","description":"Customer contact email, matched with the same rules the email channel applies to the sender address (exact contact match, domain pattern, unique inferred domain).","maxLength":320,"type":["string","null"]},"context":{"title":"Context","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Free-text context that helps Mercura process the tender — e.g. the original email body, the kind of request, delivery notes, or guidance for article matching."},"children":[]}]}]}],"maxLength":5000,"type":["string","null"]},"branch":{"title":"Branch","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Name of the Mercura branch (Niederlassung) this tender belongs to — exactly as it is configured in Mercura, matched case-insensitively. Routes the tender to the team that works that branch. An unknown name is a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"400"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": an unrouted tender is worse than a rejected upload."},"children":[]}]}]}],"maxLength":255,"type":["string","null"]},"custom_fields":{"title":"Custom Fields","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"JSON object of organisation-defined custom fields to stamp on the tender, keyed by the field's display "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"label"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — e.g. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{\"Case Number\": \"00012345\"}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". The same labels the read side emits in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"request_custom_fields"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", so a value set here comes back unchanged on "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /tenders/{tender_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Unknown labels are a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"400"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"type":["string","null"]}},"type":"object","required":["files"],"title":"Body_public_tenders_create"}},"components/schemas/BulkAccessoriesIn":{"id":"components/schemas/BulkAccessoriesIn","kind":"json-schema","title":"BulkAccessoriesIn","data":{"properties":{"accessories":{"items":{"$ref":"#/components/schemas/PublicAccessoryIn"},"type":"array","maxItems":100000,"minItems":1,"title":"Accessories"}},"additionalProperties":false,"type":"object","required":["accessories"],"title":"BulkAccessoriesIn","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Body of "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /accessories"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]}},"components/schemas/BulkAlternativesIn":{"id":"components/schemas/BulkAlternativesIn","kind":"json-schema","title":"BulkAlternativesIn","data":{"properties":{"alternatives":{"items":{"$ref":"#/components/schemas/PublicAlternativeIn"},"type":"array","maxItems":100000,"minItems":1,"title":"Alternatives"}},"additionalProperties":false,"type":"object","required":["alternatives"],"title":"BulkAlternativesIn","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Body of "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /alternatives"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]}},"components/schemas/BulkArticlesIn":{"id":"components/schemas/BulkArticlesIn","kind":"json-schema","title":"BulkArticlesIn","data":{"properties":{"articles":{"items":{"$ref":"#/components/schemas/PublicArticleIn"},"type":"array","maxItems":100000,"minItems":1,"title":"Articles"}},"additionalProperties":false,"type":"object","required":["articles"],"title":"BulkArticlesIn","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Body of "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /articles"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"example":{"articles":[{"article_number":"LEU-1500-50-840","category":"Feuchtraumleuchte","custom_attributes":{"lichtfarbe":"4000K","lichtstrom_lm":"6500","schutzart":"IP65"},"delivery_quantity":"1","description":"LED-Feuchtraumwannenleuchte, 1500 mm, 50 W, 6500 lm, 4000 K neutralweiß, Schutzart IP65, Polycarbonat-Gehäuse, inkl. Durchgangsverdrahtung.","ean_number":"4260001234562","etim_features":[{"etim_code":"EF000008","human_label":"Nennspannung","type":"number","value_number":230},{"etim_code":"EF000131","human_label":"Mit Anschlussleitung","type":"boolean","value_boolean":true}],"list_price":"89.90","manufacturer":"Lumaris","manufacturer_article_number":"LM-DP1500-50","name":"LED-Feuchtraumleuchte 1500 mm 50 W 4000 K IP65","series":"AquaLine PRO","tags":["LED","Eigenmarke"],"unit":"Stk"},{"article_number":"LEU-1200-30-840","category":"Feuchtraumleuchte","ean_number":"4260001234579","etim_features":[{"etim_code":"EF000056","human_label":"Leistungsbereich","type":"range","value_range":{"gte":18,"lte":30}}],"list_price":"69.90","manufacturer":"Lumaris","manufacturer_article_number":"LM-DP1200-30","name":"LED-Feuchtraumleuchte 1200 mm 30 W 4000 K IP65","series":"AquaLine PRO","tags":["LED"],"unit":"Stk"}]}}},"components/schemas/BulkContactsIn":{"id":"components/schemas/BulkContactsIn","kind":"json-schema","title":"BulkContactsIn","data":{"properties":{"contacts":{"items":{"$ref":"#/components/schemas/PublicContactIn"},"type":"array","maxItems":100000,"minItems":1,"title":"Contacts"}},"additionalProperties":false,"type":"object","required":["contacts"],"title":"BulkContactsIn","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Body of "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /contacts"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"example":{"contacts":[{"email":"t.weber@mustermann-elektro.example","external_id":"ASP-00815","is_default":true,"name":"Thomas Weber","parent_id":"K-10042","parent_type":"customer","phone":"+49 211 5551020"}]}}},"components/schemas/BulkCustomersIn":{"id":"components/schemas/BulkCustomersIn","kind":"json-schema","title":"BulkCustomersIn","data":{"properties":{"customers":{"items":{"$ref":"#/components/schemas/PublicCustomerIn"},"type":"array","maxItems":100000,"minItems":1,"title":"Customers"}},"additionalProperties":false,"type":"object","required":["customers"],"title":"BulkCustomersIn","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Body of "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /customers"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"example":{"customers":[{"addresses":[{"city":"Düsseldorf","country":"DE","is_default":true,"kind":"billing","postal_code":"40210","region":"NRW","street":"Industriestraße","street_number":"12"}],"custom_fields":{"9b1f3c7a-2d84-4e11-9f0a-6c2e5b7d1a34":"Elektrogroßhandel"},"customer_id":"K-10042","emails":["einkauf@mustermann-elektro.example"],"name":"Elektro Mustermann GmbH","vat_id":"DE123456789"}]}}},"components/schemas/BulkSuccessorsIn":{"id":"components/schemas/BulkSuccessorsIn","kind":"json-schema","title":"BulkSuccessorsIn","data":{"properties":{"successors":{"items":{"$ref":"#/components/schemas/PublicSuccessorIn"},"type":"array","maxItems":100000,"minItems":1,"title":"Successors"}},"additionalProperties":false,"type":"object","required":["successors"],"title":"BulkSuccessorsIn","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Body of "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /successors"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]}},"components/schemas/BulkSuppliersIn":{"id":"components/schemas/BulkSuppliersIn","kind":"json-schema","title":"BulkSuppliersIn","data":{"properties":{"suppliers":{"items":{"$ref":"#/components/schemas/PublicSupplierIn"},"type":"array","maxItems":100000,"minItems":1,"title":"Suppliers"}},"additionalProperties":false,"type":"object","required":["suppliers"],"title":"BulkSuppliersIn","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Body of "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /suppliers"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"example":{"suppliers":[{"addresses":[{"city":"Lüdenscheid","country":"DE","is_default":true,"kind":"hq","postal_code":"58507","region":"NRW","street":"Lichtstraße","street_number":"8"}],"custom_fields":{"7c4e0a91-5b23-4d6f-8e10-3a9c1f2b6d05":"Leuchten"},"emails":["vertrieb@lumaris.example"],"name":"Lumaris Leuchten GmbH","supplier_id":"L-2001"}]}}},"components/schemas/BulkUnitConversionsIn":{"id":"components/schemas/BulkUnitConversionsIn","kind":"json-schema","title":"BulkUnitConversionsIn","data":{"properties":{"unit_conversions":{"items":{"$ref":"#/components/schemas/PublicUnitConversionIn"},"type":"array","maxItems":100000,"minItems":1,"title":"Unit Conversions"}},"additionalProperties":false,"type":"object","required":["unit_conversions"],"title":"BulkUnitConversionsIn","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Body of "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /unit-conversions"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]}},"components/schemas/ContactParentType":{"id":"components/schemas/ContactParentType","kind":"json-schema","title":"ContactParentType","data":{"type":"string","enum":["customer","supplier"],"title":"ContactParentType","description":"Which kind of business partner a contact is attached to."}},"components/schemas/CursorPage_PublicAccessoryOut_":{"id":"components/schemas/CursorPage_PublicAccessoryOut_","kind":"json-schema","title":"CursorPage[PublicAccessoryOut]","data":{"properties":{"data":{"items":{"$ref":"#/components/schemas/PublicAccessoryOut"},"type":"array","title":"Data"},"next_cursor":{"title":"Next Cursor","type":["string","null"]}},"additionalProperties":false,"type":"object","required":["data"],"title":"CursorPage[PublicAccessoryOut]"}},"components/schemas/CursorPage_PublicAlternativeOut_":{"id":"components/schemas/CursorPage_PublicAlternativeOut_","kind":"json-schema","title":"CursorPage[PublicAlternativeOut]","data":{"properties":{"data":{"items":{"$ref":"#/components/schemas/PublicAlternativeOut"},"type":"array","title":"Data"},"next_cursor":{"title":"Next Cursor","type":["string","null"]}},"additionalProperties":false,"type":"object","required":["data"],"title":"CursorPage[PublicAlternativeOut]"}},"components/schemas/CursorPage_PublicArticleOut_":{"id":"components/schemas/CursorPage_PublicArticleOut_","kind":"json-schema","title":"CursorPage[PublicArticleOut]","data":{"properties":{"data":{"items":{"$ref":"#/components/schemas/PublicArticleOut"},"type":"array","title":"Data"},"next_cursor":{"title":"Next Cursor","type":["string","null"]}},"additionalProperties":false,"type":"object","required":["data"],"title":"CursorPage[PublicArticleOut]"}},"components/schemas/CursorPage_PublicContactOut_":{"id":"components/schemas/CursorPage_PublicContactOut_","kind":"json-schema","title":"CursorPage[PublicContactOut]","data":{"properties":{"data":{"items":{"$ref":"#/components/schemas/PublicContactOut"},"type":"array","title":"Data"},"next_cursor":{"title":"Next Cursor","type":["string","null"]}},"additionalProperties":false,"type":"object","required":["data"],"title":"CursorPage[PublicContactOut]"}},"components/schemas/CursorPage_PublicCustomerOut_":{"id":"components/schemas/CursorPage_PublicCustomerOut_","kind":"json-schema","title":"CursorPage[PublicCustomerOut]","data":{"properties":{"data":{"items":{"$ref":"#/components/schemas/PublicCustomerOut"},"type":"array","title":"Data"},"next_cursor":{"title":"Next Cursor","type":["string","null"]}},"additionalProperties":false,"type":"object","required":["data"],"title":"CursorPage[PublicCustomerOut]"}},"components/schemas/CursorPage_PublicOrderOut_":{"id":"components/schemas/CursorPage_PublicOrderOut_","kind":"json-schema","title":"CursorPage[PublicOrderOut]","data":{"properties":{"data":{"items":{"$ref":"#/components/schemas/PublicOrderOut"},"type":"array","title":"Data"},"next_cursor":{"title":"Next Cursor","type":["string","null"]}},"additionalProperties":false,"type":"object","required":["data"],"title":"CursorPage[PublicOrderOut]"}},"components/schemas/CursorPage_PublicProjectOut_":{"id":"components/schemas/CursorPage_PublicProjectOut_","kind":"json-schema","title":"CursorPage[PublicProjectOut]","data":{"properties":{"data":{"items":{"$ref":"#/components/schemas/PublicProjectOut"},"type":"array","title":"Data"},"next_cursor":{"title":"Next Cursor","type":["string","null"]}},"additionalProperties":false,"type":"object","required":["data"],"title":"CursorPage[PublicProjectOut]"}},"components/schemas/CursorPage_PublicRequestSelectionStats_":{"id":"components/schemas/CursorPage_PublicRequestSelectionStats_","kind":"json-schema","title":"CursorPage[PublicRequestSelectionStats]","data":{"properties":{"data":{"items":{"$ref":"#/components/schemas/PublicRequestSelectionStats"},"type":"array","title":"Data"},"next_cursor":{"title":"Next Cursor","type":["string","null"]}},"additionalProperties":false,"type":"object","required":["data"],"title":"CursorPage[PublicRequestSelectionStats]"}},"components/schemas/CursorPage_PublicSuccessorOut_":{"id":"components/schemas/CursorPage_PublicSuccessorOut_","kind":"json-schema","title":"CursorPage[PublicSuccessorOut]","data":{"properties":{"data":{"items":{"$ref":"#/components/schemas/PublicSuccessorOut"},"type":"array","title":"Data"},"next_cursor":{"title":"Next Cursor","type":["string","null"]}},"additionalProperties":false,"type":"object","required":["data"],"title":"CursorPage[PublicSuccessorOut]"}},"components/schemas/CursorPage_PublicSupplierOut_":{"id":"components/schemas/CursorPage_PublicSupplierOut_","kind":"json-schema","title":"CursorPage[PublicSupplierOut]","data":{"properties":{"data":{"items":{"$ref":"#/components/schemas/PublicSupplierOut"},"type":"array","title":"Data"},"next_cursor":{"title":"Next Cursor","type":["string","null"]}},"additionalProperties":false,"type":"object","required":["data"],"title":"CursorPage[PublicSupplierOut]"}},"components/schemas/CursorPage_PublicSupplierRequestOut_":{"id":"components/schemas/CursorPage_PublicSupplierRequestOut_","kind":"json-schema","title":"CursorPage[PublicSupplierRequestOut]","data":{"properties":{"data":{"items":{"$ref":"#/components/schemas/PublicSupplierRequestOut"},"type":"array","title":"Data"},"next_cursor":{"title":"Next Cursor","type":["string","null"]}},"additionalProperties":false,"type":"object","required":["data"],"title":"CursorPage[PublicSupplierRequestOut]"}},"components/schemas/CursorPage_PublicTenderOut_":{"id":"components/schemas/CursorPage_PublicTenderOut_","kind":"json-schema","title":"CursorPage[PublicTenderOut]","data":{"properties":{"data":{"items":{"$ref":"#/components/schemas/PublicTenderOut"},"type":"array","title":"Data"},"next_cursor":{"title":"Next Cursor","type":["string","null"]}},"additionalProperties":false,"type":"object","required":["data"],"title":"CursorPage[PublicTenderOut]"}},"components/schemas/CursorPage_PublicUnitConversionOut_":{"id":"components/schemas/CursorPage_PublicUnitConversionOut_","kind":"json-schema","title":"CursorPage[PublicUnitConversionOut]","data":{"properties":{"data":{"items":{"$ref":"#/components/schemas/PublicUnitConversionOut"},"type":"array","title":"Data"},"next_cursor":{"title":"Next Cursor","type":["string","null"]}},"additionalProperties":false,"type":"object","required":["data"],"title":"CursorPage[PublicUnitConversionOut]"}},"components/schemas/CursorPage_PublicUserOut_":{"id":"components/schemas/CursorPage_PublicUserOut_","kind":"json-schema","title":"CursorPage[PublicUserOut]","data":{"properties":{"data":{"items":{"$ref":"#/components/schemas/PublicUserOut"},"type":"array","title":"Data"},"next_cursor":{"title":"Next Cursor","type":["string","null"]}},"additionalProperties":false,"type":"object","required":["data"],"title":"CursorPage[PublicUserOut]"}},"components/schemas/HTTPValidationError":{"id":"components/schemas/HTTPValidationError","kind":"json-schema","title":"HTTPValidationError","data":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"}},"components/schemas/JobAck":{"id":"components/schemas/JobAck","kind":"json-schema","title":"JobAck","data":{"properties":{"job_id":{"type":"string","title":"Job Id"},"status_url":{"type":"string","title":"Status Url","description":"Relative URL to poll for this job's status"}},"additionalProperties":false,"type":"object","required":["job_id","status_url"],"title":"JobAck","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Response body for bulk POSTs."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Returned with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"202 Accepted"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" on first-time creation and"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"200 OK"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" on idempotent replay (same "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"(org, Idempotency-Key)"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":","},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"same body hash). Clients poll "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /jobs/{job_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"terminal status."},"children":[]}]}]}],"example":{"job_id":"4242","status_url":"/api/public/v1/jobs/4242"}}},"components/schemas/JobRowError":{"id":"components/schemas/JobRowError","kind":"json-schema","title":"JobRowError","data":{"properties":{"row_number":{"type":"integer","title":"Row Number"},"identifier":{"title":"Identifier","type":["string","null"]},"error_message":{"type":"string","title":"Error Message"}},"additionalProperties":false,"type":"object","required":["row_number","error_message"],"title":"JobRowError","description":"One row-level error emitted by an entity processor."}},"components/schemas/JobStatus":{"id":"components/schemas/JobStatus","kind":"json-schema","title":"JobStatus","data":{"properties":{"job_id":{"type":"string","title":"Job Id"},"entity":{"type":"string","title":"Entity"},"status":{"$ref":"#/components/schemas/JobStatusValue"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"total_rows":{"type":"integer","title":"Total Rows","default":0},"created_count":{"type":"integer","title":"Created Count","default":0},"updated_count":{"type":"integer","title":"Updated Count","default":0},"skipped_count":{"type":"integer","title":"Skipped Count","default":0},"deleted_count":{"type":"integer","title":"Deleted Count","default":0},"error_count":{"type":"integer","title":"Error Count","default":0},"errors":{"items":{"$ref":"#/components/schemas/JobRowError"},"type":"array","title":"Errors"},"result":{"title":"Result","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Job-type-specific success payload; branch on "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"entity"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for the shape. For "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"REQUESTS"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" jobs it carries "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{request_id, request_status, position_count}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" once the job completes. Other job types return "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"additionalProperties":true,"type":["object","null"]}},"additionalProperties":false,"type":"object","required":["job_id","entity","status","created_at","updated_at"],"title":"JobStatus","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Status envelope returned by "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /jobs/{job_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"example":{"created_at":"2026-07-14T22:00:00Z","created_count":320,"deleted_count":0,"entity":"ARTICLES","error_count":5,"errors":[{"error_message":"missing list_price","identifier":"LEU-0900-18-830","row_number":137}],"job_id":"4242","skipped_count":0,"status":"COMPLETED","total_rows":12000,"updated_at":"2026-07-14T22:00:42Z","updated_count":11675}}},"components/schemas/JobStatusValue":{"id":"components/schemas/JobStatusValue","kind":"json-schema","title":"JobStatusValue","data":{"type":"string","enum":["PENDING","RUNNING","COMPLETED","FAILED"],"title":"JobStatusValue","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Lifecycle states for an async ingestion job."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Collapsed from the internal "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"ImportRunStatus"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (which carries"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"more granular states like "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"PARTIALLY_COMPLETED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"VALIDATION_FAILED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") — see "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"jobs/service.py:_STATUS_MAP"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"the translation table. The public surface gives partners the four"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"states they actually need to branch on."},"children":[]}]}]}]}},"components/schemas/PublicAccessoryIn":{"id":"components/schemas/PublicAccessoryIn","kind":"json-schema","title":"PublicAccessoryIn","data":{"properties":{"source_article_number":{"type":"string","maxLength":255,"minLength":1,"pattern":"^[A-Za-z0-9._\\-]{1,255}$","title":"Source Article Number","description":"Article the accessory belongs to."},"accessory_article_number":{"type":"string","maxLength":255,"minLength":1,"pattern":"^[A-Za-z0-9._\\-]{1,255}$","title":"Accessory Article Number","description":"The accessory article."},"multiplier":{"title":"Multiplier","description":"Quantity of the accessory required per unit of the source article.","exclusiveMinimum":0,"type":["number","null"]},"order":{"title":"Order","description":"Display order among a source article's accessories.","minimum":0,"type":["integer","null"]},"is_mandatory":{"type":"boolean","title":"Is Mandatory","description":"Mark a mandatory accessory (a required part) rather than an optional add-on.","default":false}},"additionalProperties":false,"type":"object","required":["source_article_number","accessory_article_number"],"title":"PublicAccessoryIn","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"One accessory relationship in a bulk-write payload."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Both article numbers must already exist for your organisation; a row"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"whose source or accessory article is unknown is skipped (counted in"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"the job's "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"skipped_count"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), not an error."},"children":[]}]}]}]}},"components/schemas/PublicAccessoryOut":{"id":"components/schemas/PublicAccessoryOut","kind":"json-schema","title":"PublicAccessoryOut","data":{"properties":{"id":{"type":"integer","title":"Id","description":"Internal relationship id."},"source_article_number":{"type":"string","title":"Source Article Number"},"accessory_article_number":{"type":"string","title":"Accessory Article Number"},"multiplier":{"title":"Multiplier","type":["number","null"]},"order":{"title":"Order","type":["integer","null"]},"is_mandatory":{"type":"boolean","title":"Is Mandatory","default":false},"source_type":{"type":"string","title":"Source Type","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"How the relation was created: MANUAL or MATCHING_EXTRACTED."},"children":[]}]}]}]},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"additionalProperties":false,"type":"object","required":["id","source_article_number","accessory_article_number","source_type","created_at","updated_at"],"title":"PublicAccessoryOut","description":"One accessory relationship in a list response."}},"components/schemas/PublicAlternativeIn":{"id":"components/schemas/PublicAlternativeIn","kind":"json-schema","title":"PublicAlternativeIn","data":{"properties":{"source_article_number":{"type":"string","maxLength":255,"minLength":1,"pattern":"^[A-Za-z0-9._\\-]{1,255}$","title":"Source Article Number","description":"Article the alternative substitutes for."},"alternative_article_number":{"type":"string","maxLength":255,"minLength":1,"pattern":"^[A-Za-z0-9._\\-]{1,255}$","title":"Alternative Article Number","description":"The substitute article."},"order":{"title":"Order","description":"Display order among a source article's alternatives.","minimum":0,"type":["integer","null"]}},"additionalProperties":false,"type":"object","required":["source_article_number","alternative_article_number"],"title":"PublicAlternativeIn","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"One alternative relationship in a bulk-write payload."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Both article numbers must already exist for your organisation; a row"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"whose source or alternative article is unknown is skipped (counted in"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"the job's "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"skipped_count"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), not an error."},"children":[]}]}]}]}},"components/schemas/PublicAlternativeOut":{"id":"components/schemas/PublicAlternativeOut","kind":"json-schema","title":"PublicAlternativeOut","data":{"properties":{"id":{"type":"integer","title":"Id","description":"Internal relationship id."},"source_article_number":{"type":"string","title":"Source Article Number"},"alternative_article_number":{"type":"string","title":"Alternative Article Number"},"order":{"title":"Order","type":["integer","null"]},"source_type":{"type":"string","title":"Source Type","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"How the relation was created: MANUAL or MATCHING_EXTRACTED."},"children":[]}]}]}]},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"additionalProperties":false,"type":"object","required":["id","source_article_number","alternative_article_number","source_type","created_at","updated_at"],"title":"PublicAlternativeOut","description":"One alternative relationship in a list response."}},"components/schemas/PublicArticleIn":{"id":"components/schemas/PublicArticleIn","kind":"json-schema","title":"PublicArticleIn","data":{"properties":{"article_number":{"type":"string","maxLength":255,"minLength":1,"pattern":"^[A-Za-z0-9._\\-]{1,255}$","title":"Article Number"},"name":{"type":"string","maxLength":2000,"minLength":1,"title":"Name"},"description":{"title":"Description","type":["string","null"]},"manufacturer":{"title":"Manufacturer","maxLength":255,"type":["string","null"]},"manufacturer_article_number":{"title":"Manufacturer Article Number","maxLength":255,"type":["string","null"]},"ean_number":{"title":"Ean Number","maxLength":50,"type":["string","null"]},"series":{"title":"Series","maxLength":255,"type":["string","null"]},"category":{"title":"Category","maxLength":255,"type":["string","null"]},"unit":{"title":"Unit","maxLength":50,"type":["string","null"]},"list_price":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"List Price"},"delivery_quantity":{"anyOf":[{"type":"number","exclusiveMinimum":0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Delivery Quantity","description":"Delivery multiple in the article's unit"},"custom_attributes":{"title":"Custom Attributes","additionalProperties":true,"type":["object","null"]},"tags":{"title":"Tags","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Tag names to assign, e.g. [\"Pumpen\", \"Eigenmarke\"]. Names must already exist for your organisation (create them in the Mercura admin UI under Settings → Article tags); an unknown name fails the whole batch with a clear error. Replaces the article's current tags when provided. Omit to leave them unchanged; send [] to clear them."},"children":[]}]}]}],"items":{"type":"string"},"maxItems":200,"type":["array","null"]},"etim_features":{"title":"Etim Features","description":"ETIM classification features. Replaces the article's full feature list when provided; omit to leave it unchanged.","items":{"$ref":"#/components/schemas/PublicEtimFeature"},"maxItems":2000,"type":["array","null"]},"is_diverse":{"title":"Is Diverse","type":["boolean","null"]},"is_legacy_article":{"title":"Is Legacy Article","type":["boolean","null"]},"is_deleted":{"title":"Is Deleted","description":"Soft-delete flag. When true the article is hidden from all discovery surfaces; clear to restore.","type":["boolean","null"]}},"additionalProperties":false,"type":"object","required":["article_number","name"],"title":"PublicArticleIn","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"One article in a bulk-write payload."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"article_number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is the partner's stable identifier — used both"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"as the upsert key in the article DB and as the public-API id"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"returned in lists / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /articles/{article_number}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Required"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"so retries converge on the same row instead of duplicating."},"children":[]}]}]}]}},"components/schemas/PublicArticleOut":{"id":"components/schemas/PublicArticleOut","kind":"json-schema","title":"PublicArticleOut","data":{"properties":{"id":{"type":"string","title":"Id","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Public id; equals the article's article_number"},"children":[]}]}]}]},"article_number":{"type":"string","title":"Article Number"},"name":{"type":"string","title":"Name"},"description":{"title":"Description","type":["string","null"]},"manufacturer":{"title":"Manufacturer","type":["string","null"]},"manufacturer_article_number":{"title":"Manufacturer Article Number","type":["string","null"]},"ean_number":{"title":"Ean Number","type":["string","null"]},"series":{"title":"Series","type":["string","null"]},"category":{"title":"Category","type":["string","null"]},"unit":{"title":"Unit","type":["string","null"]},"list_price":{"title":"List Price","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","type":["string","null"]},"delivery_quantity":{"title":"Delivery Quantity","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","type":["string","null"]},"custom_attributes":{"title":"Custom Attributes","additionalProperties":true,"type":["object","null"]},"tags":{"items":{"type":"string"},"type":"array","title":"Tags","description":"Tag names assigned to the article"},"etim_features":{"items":{"$ref":"#/components/schemas/PublicEtimFeature"},"type":"array","title":"Etim Features","description":"ETIM classification features stored for the article"},"is_diverse":{"type":"boolean","title":"Is Diverse","default":false},"is_legacy_article":{"type":"boolean","title":"Is Legacy Article","default":false},"is_deleted":{"type":"boolean","title":"Is Deleted","default":false},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"additionalProperties":false,"type":"object","required":["id","article_number","name","created_at","updated_at"],"title":"PublicArticleOut","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"One article in a list / get-by-id response."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Subset of the internal "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Article"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" ORM row; intentionally omits"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"internal frequency counters and sync bookkeeping. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"tags"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" are"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"returned as names (resolved from the stored "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"tag_ids"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"); a tag id"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"with no matching tag is dropped."},"children":[]}]}]}],"example":{"article_number":"LEU-1500-50-840","category":"Feuchtraumleuchte","created_at":"2026-01-15T08:30:00Z","custom_attributes":{"lichtfarbe":"4000K","lichtstrom_lm":"6500","schutzart":"IP65"},"delivery_quantity":"1","description":"LED-Feuchtraumwannenleuchte, 1500 mm, 50 W, 6500 lm, 4000 K neutralweiß, Schutzart IP65, Polycarbonat-Gehäuse, inkl. Durchgangsverdrahtung.","ean_number":"4260001234562","etim_features":[{"etim_code":"EF000008","human_label":"Nennspannung","type":"number","value_number":230},{"etim_code":"EF000131","human_label":"Mit Anschlussleitung","type":"boolean","value_boolean":true}],"id":"LEU-1500-50-840","is_deleted":false,"is_diverse":false,"is_legacy_article":false,"list_price":"89.90","manufacturer":"Lumaris","manufacturer_article_number":"LM-DP1500-50","name":"LED-Feuchtraumleuchte 1500 mm 50 W 4000 K IP65","series":"AquaLine PRO","tags":["LED","Eigenmarke"],"unit":"Stk","updated_at":"2026-07-14T09:12:44Z"}}},"components/schemas/PublicCandidateStatus":{"id":"components/schemas/PublicCandidateStatus","kind":"json-schema","title":"PublicCandidateStatus","data":{"type":"string","enum":["PENDING","ACCEPTED","DECLINED"],"title":"PublicCandidateStatus","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Acceptance state of one offered line, from "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"CandidateSelection.status"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]}},"components/schemas/PublicContactIn":{"id":"components/schemas/PublicContactIn","kind":"json-schema","title":"PublicContactIn","data":{"properties":{"parent_type":{"$ref":"#/components/schemas/ContactParentType"},"parent_id":{"type":"string","maxLength":255,"minLength":1,"pattern":"^[A-Za-z0-9._\\-]{1,255}$","title":"Parent Id"},"external_id":{"title":"External Id","maxLength":255,"minLength":1,"pattern":"^[A-Za-z0-9._\\-:]{1,255}$","type":["string","null"]},"name":{"title":"Name","maxLength":500,"type":["string","null"]},"email":{"title":"Email","format":"email","type":["string","null"]},"phone":{"title":"Phone","maxLength":100,"type":["string","null"]},"is_default":{"title":"Is Default","type":["boolean","null"]}},"additionalProperties":false,"type":"object","required":["parent_type","parent_id"],"title":"PublicContactIn","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"One contact in a bulk-write payload."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"parent_type"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" + "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"parent_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" identify the owning business"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"partner. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"external_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is the contact's own stable identifier"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"from the source ERP (optional) — when present it is the primary"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"upsert key. Without it the worker falls back to dedup by email,"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"then by "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"(name, phone)"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]}},"components/schemas/PublicContactOut":{"id":"components/schemas/PublicContactOut","kind":"json-schema","title":"PublicContactOut","data":{"properties":{"id":{"type":"integer","title":"Id"},"parent_type":{"$ref":"#/components/schemas/ContactParentType"},"parent_id":{"title":"Parent Id","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Parent's partner-supplied id (customer_id for customers, supplier_id for suppliers)"},"children":[]}]}]}],"type":["string","null"]},"external_id":{"title":"External Id","type":["string","null"]},"name":{"title":"Name","type":["string","null"]},"email":{"title":"Email","type":["string","null"]},"phone":{"title":"Phone","type":["string","null"]},"is_active":{"type":"boolean","title":"Is Active"},"is_default":{"type":"boolean","title":"Is Default"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"additionalProperties":false,"type":"object","required":["id","parent_type","is_active","is_default","created_at","updated_at"],"title":"PublicContactOut","description":"One contact in a list / get-by-id response.","example":{"created_at":"2026-02-03T10:16:00Z","email":"t.weber@mustermann-elektro.example","external_id":"ASP-00815","id":5567,"is_active":true,"is_default":true,"name":"Thomas Weber","parent_id":"K-10042","parent_type":"customer","phone":"+49 211 5551020","updated_at":"2026-07-05T11:03:00Z"}}},"components/schemas/PublicContactPatch":{"id":"components/schemas/PublicContactPatch","kind":"json-schema","title":"PublicContactPatch","data":{"properties":{"name":{"title":"Name","maxLength":500,"type":["string","null"]},"email":{"title":"Email","format":"email","type":["string","null"]},"phone":{"title":"Phone","maxLength":100,"type":["string","null"]},"external_id":{"title":"External Id","maxLength":255,"minLength":1,"pattern":"^[A-Za-z0-9._\\-:]{1,255}$","type":["string","null"]},"is_active":{"title":"Is Active","type":["boolean","null"]},"is_default":{"title":"Is Default","type":["boolean","null"]}},"additionalProperties":false,"type":"object","title":"PublicContactPatch","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Body of "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"PATCH /contacts/{id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Every field is optional; only fields present in the payload are"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"applied. Reassigning the parent is not supported via PATCH —"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"delete the contact and POST a new one instead."},"children":[]}]}]}],"example":{"is_default":true,"phone":"+49 211 5551099"}}},"components/schemas/PublicCustomerIn":{"id":"components/schemas/PublicCustomerIn","kind":"json-schema","title":"PublicCustomerIn","data":{"properties":{"customer_id":{"type":"string","maxLength":255,"minLength":1,"pattern":"^[A-Za-z0-9._\\-]{1,255}$","title":"Customer Id"},"name":{"type":"string","maxLength":500,"minLength":1,"title":"Name"},"vat_id":{"title":"Vat Id","maxLength":50,"type":["string","null"]},"emails":{"title":"Emails","items":{"type":"string","format":"email"},"type":["array","null"]},"addresses":{"title":"Addresses","items":{"$ref":"#/components/schemas/Address"},"type":["array","null"]},"custom_fields":{"title":"Custom Fields","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Custom fields for the customer. On the "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"write"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" path these are stored as supplied (internal column-id keyed) and are NOT label-remapped — deliberately asymmetric with the label-keyed read responses in v1.9.0 (Wave 1 partners only read)."},"children":[]}]}]}],"additionalProperties":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"},{"type":"boolean"},{"items":{"type":"string"},"type":"array"}]},"type":["object","null"]}},"additionalProperties":false,"type":"object","required":["customer_id","name"],"title":"PublicCustomerIn","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"One customer in a bulk-write payload."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"customer_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is the partner's stable identifier — used both as"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"the upsert key and as the public-API identifier returned in"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /customers/{customer_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Required so retries converge on"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"the same row instead of creating duplicates."},"children":[]}]}]}]}},"components/schemas/PublicCustomerOut":{"id":"components/schemas/PublicCustomerOut","kind":"json-schema","title":"PublicCustomerOut","data":{"properties":{"id":{"title":"Id","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Public id; equals the customer's customer_id when present"},"children":[]}]}]}],"type":["string","null"]},"customer_id":{"title":"Customer Id","type":["string","null"]},"name":{"type":"string","title":"Name"},"vat_id":{"title":"Vat Id","type":["string","null"]},"emails":{"items":{"type":"string"},"type":"array","title":"Emails"},"address":{"$ref":"#/components/schemas/Address"},"custom_fields":{"title":"Custom Fields","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Organisation-defined custom fields, keyed by the field's display "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"label"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (v1.9.0; previously keyed by the internal column UUID). Columns with no active definition are omitted; null when the customer carries none. On duplicate labels the field defined first (by display order, then creation time) wins."},"children":[]}]}]}],"additionalProperties":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"},{"type":"boolean"},{"items":{"type":"string"},"type":"array"}]},"type":["object","null"]},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"additionalProperties":false,"type":"object","required":["name","created_at","updated_at"],"title":"PublicCustomerOut","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"One customer in a list / get-by-id response."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"address"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is singular (not plural) — reflects today's persistence"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"reality. When Wave 2 lands multi-address support the field name"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"becomes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"addresses"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"address"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is kept as a deprecated"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"alias for one minor cycle (additive change per the SemVer policy"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"in README → Design decisions → SemVer versioning policy)."},"children":[]}]}]}],"example":{"address":{"city":"Düsseldorf","country":"DE","is_default":true,"kind":"billing","postal_code":"40210","region":"NRW","street":"Industriestraße","street_number":"12"},"created_at":"2026-02-03T10:15:00Z","custom_fields":{"Kundengruppe":"Elektrogroßhandel","Zahlungsziel":"30 Tage netto"},"customer_id":"K-10042","emails":["einkauf@mustermann-elektro.example"],"id":"K-10042","name":"Elektro Mustermann GmbH","updated_at":"2026-07-12T14:22:10Z","vat_id":"DE123456789"}}},"components/schemas/PublicEtimFeature":{"id":"components/schemas/PublicEtimFeature","kind":"json-schema","title":"PublicEtimFeature","data":{"properties":{"etim_code":{"type":"string","maxLength":64,"minLength":1,"title":"Etim Code","description":"ETIM feature code, e.g. 'EF000007'"},"human_label":{"type":"string","maxLength":255,"minLength":1,"title":"Human Label","description":"Human-readable feature label, e.g. 'Nominal voltage'"},"type":{"type":"string","enum":["string","number","boolean","range"],"title":"Type","description":"Value-type discriminator"},"value_string":{"title":"Value String","description":"Value when type is 'string'","type":["string","null"]},"value_number":{"title":"Value Number","description":"Value when type is 'number'","type":["number","null"]},"value_boolean":{"title":"Value Boolean","description":"Value when type is 'boolean'","type":["boolean","null"]},"value_range":{"description":"Value when type is 'range'","$ref":"#/components/schemas/PublicEtimFeatureRange"},"translations":{"title":"Translations","description":"Localized labels and textual values keyed by lowercase language code","additionalProperties":{"$ref":"#/components/schemas/PublicEtimFeatureTranslation"},"type":["object","null"]}},"additionalProperties":false,"type":"object","required":["etim_code","human_label","type"],"title":"PublicEtimFeature","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"One ETIM classification feature on an article."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Mirrors the canonical shape Mercura stores and matches against: the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"feature "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"etim_code"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", a human-readable "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"human_label"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"type"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"discriminator, and the one "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"value_*"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" field that matches that type"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"(the others stay null). For "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"type: \"number\""},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" send "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"value_number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":","},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"for "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"\"string\""},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" send "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"value_string"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", and so on."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Richer ETIM data sharpens Mercura's matching of incoming LV positions"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"against your catalogue."},"children":[]}]}]}]}},"components/schemas/PublicEtimFeatureRange":{"id":"components/schemas/PublicEtimFeatureRange","kind":"json-schema","title":"PublicEtimFeatureRange","data":{"properties":{"gte":{"type":"number","title":"Gte","description":"Lower bound (inclusive)"},"lte":{"type":"number","title":"Lte","description":"Upper bound (inclusive)"}},"additionalProperties":false,"type":"object","required":["gte","lte"],"title":"PublicEtimFeatureRange","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Numeric range value for an ETIM feature whose "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"type"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"\"range\""},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]}},"components/schemas/PublicEtimFeatureTranslation":{"id":"components/schemas/PublicEtimFeatureTranslation","kind":"json-schema","title":"PublicEtimFeatureTranslation","data":{"properties":{"human_label":{"title":"Human Label","maxLength":255,"type":["string","null"]},"value_string":{"title":"Value String","type":["string","null"]}},"additionalProperties":false,"type":"object","title":"PublicEtimFeatureTranslation","description":"Localized display text for one ETIM feature."}},"components/schemas/PublicOfferAddress":{"id":"components/schemas/PublicOfferAddress","kind":"json-schema","title":"PublicOfferAddress","data":{"properties":{"street":{"title":"Street","type":["string","null"]},"street_number":{"title":"Street Number","type":["string","null"]},"postal_code":{"title":"Postal Code","type":["string","null"]},"city":{"title":"City","type":["string","null"]},"country":{"title":"Country","description":"ISO 3166-1 alpha-2 country code","type":["string","null"]}},"additionalProperties":false,"type":"object","title":"PublicOfferAddress","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Postal address attached to a customer business partner."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Distinct from "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"schemas.common.Address"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — no "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"kind"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"is_default"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"fields, because an offer's customer address is the single resolved"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"address that went on the document. All fields nullable to match the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"underlying "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"address_table"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (street can be NULL on minimally"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"populated rows). No "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"region"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" field — the internal address model"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"doesn't carry one today; adding it later is MINOR additive."},"children":[]}]}]}]}},"components/schemas/PublicOfferCustomer":{"id":"components/schemas/PublicOfferCustomer","kind":"json-schema","title":"PublicOfferCustomer","data":{"properties":{"customer_id":{"title":"Customer Id","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Partner-side customer id — the same value the customers resource exposes as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"customer_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (stored internally as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"BusinessPartner.external_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"type":["string","null"]},"name":{"type":"string","title":"Name"},"address":{"$ref":"#/components/schemas/PublicOfferAddress"},"contact_person":{"title":"Contact Person","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Free-text contact person on the request, e.g. 'Hans Müller'."},"children":[]}]}]}],"type":["string","null"]},"custom_fields":{"title":"Custom Fields","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Organisation-defined custom fields for this customer, keyed by the field's display "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"label"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (not the internal column id). Null when the customer carries no custom fields."},"children":[]}]}]}],"additionalProperties":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"},{"type":"boolean"},{"items":{"type":"string"},"type":"array"}]},"type":["object","null"]}},"additionalProperties":false,"type":"object","required":["name"],"title":"PublicOfferCustomer","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Customer the offer was made to. Sourced from "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Request.customer_bp"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"On the wire the customer's partner-id is named "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"customer_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"same field name the customers resource uses, so a partner ingesting"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"an offer can resolve the reference via "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /customers/{customer_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The Python attribute is still "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"external_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" to keep the shared"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"projection ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"features/customer_offers/offer_projection.py"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"indifferent to the rename. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"serialize_by_alias=True"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" plus the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"field's "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"serialization_alias"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" make every JSON path (FastAPI"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"response, "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"model_dump(mode='json')"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" in the webhook emitter) emit"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"customer_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]}},"components/schemas/PublicOfferPosition":{"id":"components/schemas/PublicOfferPosition","kind":"json-schema","title":"PublicOfferPosition","data":{"properties":{"position_number":{"type":"string","title":"Position Number","description":"Display number (request-scoped, e.g. '01.10')."},"article_number":{"title":"Article Number","type":["string","null"]},"description":{"type":"string","title":"Description","default":""},"quantity":{"title":"Quantity","type":["number","null"]},"unit":{"title":"Unit","type":["string","null"]},"list_price":{"title":"List Price","description":"Per-unit list price (gross of discounts), EUR.","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","type":["string","null"]},"net_price":{"title":"Net Price","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Per-unit net price after position-level discounts, EUR. Equivalent to "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Selection.net_price_ea"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" in the internal model."},"children":[]}]}]}],"pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","type":["string","null"]},"line_net":{"title":"Line Net","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"net_price * quantity"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", rounded to 2 dp. Same math as the PDF."},"children":[]}]}]}],"pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","type":["string","null"]},"line_gross":{"title":"Line Gross","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"list_price * quantity"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", rounded to 2 dp. Same math as the PDF."},"children":[]}]}]}],"pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","type":["string","null"]},"is_alternative":{"type":"boolean","title":"Is Alternative","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"If true, this row is an alternative selection — excluded from totals."},"children":[]}]}]}],"default":false}},"additionalProperties":false,"type":"object","required":["position_number"],"title":"PublicOfferPosition","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"One offer line item."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Built per non-deleted "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Selection"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (not per "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Position"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") — a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"position with multiple selections produces multiple rows, exactly"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"matching the PDF exporter. Alternative selections (carrying the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"ALTERNATIVE"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" label) are still emitted as rows but flagged with"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"is_alternative = true"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and are excluded from the totals."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"article_number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is the partner-facing identifier (the same value"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"a partner would use against "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /articles/{article_number}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). It"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"comes from the article record when the selection is article-backed,"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"or from "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"selection.article_number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for free-text positions."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"description"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is the line description as it appeared on the PDF."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"For article-backed selections this is the article's own description;"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"for free-text it's the selection's text. Partners with their own"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"article catalogue can ignore this and dereference "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"article_number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]}},"components/schemas/PublicOfferProject":{"id":"components/schemas/PublicOfferProject","kind":"json-schema","title":"PublicOfferProject","data":{"properties":{"object_number":{"title":"Object Number","type":["string","null"]},"name":{"title":"Name","type":["string","null"]},"custom_fields":{"title":"Custom Fields","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Organisation-defined custom fields for the project, keyed by the field's display "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"label"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Null when the project carries none."},"children":[]}]}]}],"additionalProperties":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"},{"type":"boolean"},{"items":{"type":"string"},"type":"array"}]},"type":["object","null"]}},"additionalProperties":false,"type":"object","title":"PublicOfferProject","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Project / object the offer relates to. Sourced from "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Request.project"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]}},"components/schemas/PublicOfferTotals":{"id":"components/schemas/PublicOfferTotals","kind":"json-schema","title":"PublicOfferTotals","data":{"properties":{"positions_subtotal":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Positions Subtotal","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Sum of "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"line_net"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" across non-alternative positions, EUR."},"children":[]}]}]}]},"additional_discount_percentage":{"title":"Additional Discount Percentage","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Header-level discount applied on top of position prices, 0–100."},"children":[]}]}]}],"pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","type":["string","null"]},"net_total":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Net Total","description":"Final net (after additional discount), EUR."},"gross_total":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Gross Total","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Sum of "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"line_gross"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" across non-alternative positions, EUR."},"children":[]}]}]}]}},"additionalProperties":false,"type":"object","required":["positions_subtotal","net_total","gross_total"],"title":"PublicOfferTotals","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Aggregate amounts for the offer, all in EUR."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Mirrors "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"pdf_offer_service._build_real_data"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"positions_subtotal"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"is the sum of "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"line_net"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" across non-alternative positions;"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"net_total"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" prefers "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Request.net_total"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" if set (header-level"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"discount applied), otherwise equals "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"positions_subtotal"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":";"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"gross_total"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" prefers "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Request.gross_total"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" if set, otherwise"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"is the sum of "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"line_gross"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" across non-alternative positions."},"children":[]}]}]}]}},"components/schemas/PublicOfferedLine":{"id":"components/schemas/PublicOfferedLine","kind":"json-schema","title":"PublicOfferedLine","data":{"properties":{"id":{"type":"string","title":"Id","description":"Opaque handle for this offered line (internal candidate-selection id)."},"position_id":{"title":"Position Id","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The position this line answers. For a tender-scoped supplier request it matches the position id in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /tenders/{tender_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; for a project-scoped one it is an internal reference with no public resolution endpoint today. Null when the line is not mapped to a position."},"children":[]}]}]}],"type":["string","null"]},"item_type":{"$ref":"#/components/schemas/PublicOfferedLineType"},"candidate_status":{"$ref":"#/components/schemas/PublicCandidateStatus","description":"Acceptance state of this offered line."},"selected":{"type":"boolean","title":"Selected","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"True when this line was accepted into the final tender (candidate_status ACCEPTED)."},"children":[]}]}]}]},"article_number":{"title":"Article Number","description":"Article number the supplier quoted, when any.","type":["string","null"]},"manufacturer_article_number":{"title":"Manufacturer Article Number","description":"Manufacturer article number, when any.","type":["string","null"]},"description":{"title":"Description","description":"Supplier's line text, when provided.","type":["string","null"]},"quantity":{"title":"Quantity","type":["number","null"]},"unit":{"title":"Unit","type":["string","null"]},"unit_price":{"title":"Unit Price","description":"Supplier's offered price per unit, EUR.","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","type":["string","null"]},"line_total":{"title":"Line Total","description":"Supplier's offered line total, EUR.","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","type":["string","null"]}},"additionalProperties":false,"type":"object","required":["id","item_type","candidate_status","selected"],"title":"PublicOfferedLine","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"One line the supplier quoted back — one per candidate selection."},"children":[]}]}]}]}},"components/schemas/PublicOfferedLineType":{"id":"components/schemas/PublicOfferedLineType","kind":"json-schema","title":"PublicOfferedLineType","data":{"type":"string","enum":["ARTICLE","TEXT_FIELD","DIVERSE"],"title":"PublicOfferedLineType","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"What an offered line is, from "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"CandidateSelection.item_type"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]}},"components/schemas/PublicOrderAckStatus":{"id":"components/schemas/PublicOrderAckStatus","kind":"json-schema","title":"PublicOrderAckStatus","data":{"type":"string","enum":["SUCCESS","FAILED"],"title":"PublicOrderAckStatus","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Outcome a partner reports after importing an order into their ERP."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Its own type (parallel to "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"PublicTenderAckStatus"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / the deprecated"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"PublicOfferAckStatus"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") so the orders surface stays self-contained."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Translated from the internal "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"RequestAckStatus"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" via"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"orders.service._ORDER_ACK_STATUS_MAP"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — a test asserts the map covers"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"every internal value, so a new internal state is a loud failure rather than"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"a silent passthrough. A "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"separate axis"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" from "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"PublicOrderStatus"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": that is"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Mercura-side workflow, this is the partner's import result."},"children":[]}]}]}]}},"components/schemas/PublicOrderAcknowledgement":{"id":"components/schemas/PublicOrderAcknowledgement","kind":"json-schema","title":"PublicOrderAcknowledgement","data":{"properties":{"status":{"$ref":"#/components/schemas/PublicOrderAckStatus"},"external_id":{"title":"External Id","description":"Partner-side ERP id of the created order / record, when provided.","type":["string","null"]},"message":{"title":"Message","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Free-text note about the outcome. On "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"FAILED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" this is the failure reason (required); on "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"SUCCESS"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" an optional note (e.g. queue id, warehouse, operator comment)."},"children":[]}]}]}],"type":["string","null"]},"metadata":{"title":"Metadata","description":"Optional extra references / raw payload the partner echoed back for traceability.","additionalProperties":true,"type":["object","null"]},"acknowledged_at":{"type":"string","format":"date-time","title":"Acknowledged At","description":"When the partner reported this outcome (server receipt time)."}},"additionalProperties":false,"type":"object","required":["status","acknowledged_at"],"title":"PublicOrderAcknowledgement","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The partner's last reported ERP import outcome for an order."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Used in two places with the same shape:"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"as the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"acknowledgement"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" field on "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"PublicOrderOut"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" until"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"the partner has POSTed an acknowledgement;"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"as the standalone response body of"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /orders/{order_id}/acknowledgements"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — the recorded receipt, so"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"partners can confirm what Mercura persisted (resolved status, sticky-aware"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"external_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", server-side "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"acknowledged_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") without refetching the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"whole order."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"message"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"metadata"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" reflect the most recent"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"acknowledgement; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"external_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is kept once provided (last-provided-wins)"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"and mirrors the order's "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"erp_offer_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"example":{"acknowledged_at":"2026-07-08T09:06:00Z","external_id":"SO-2026-5567","message":"Bestellung als Kundenauftrag angelegt.","metadata":{"sales_order":"SO-2026-5567"},"status":"SUCCESS"}}},"components/schemas/PublicOrderAcknowledgementCreate":{"id":"components/schemas/PublicOrderAcknowledgementCreate","kind":"json-schema","title":"PublicOrderAcknowledgementCreate","data":{"properties":{"status":{"$ref":"#/components/schemas/PublicOrderAckStatus"},"external_id":{"title":"External Id","description":"Partner-side ERP id of the created order / record. Typically set on SUCCESS.","maxLength":255,"type":["string","null"]},"message":{"title":"Message","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Free-text note about the outcome. Required when "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"FAILED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (the failure reason); optional on "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"SUCCESS"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"maxLength":10000,"type":["string","null"]},"metadata":{"title":"Metadata","description":"Optional extra references / raw payload echoed back for traceability (e.g. other ERP ids).","additionalProperties":true,"type":["object","null"]}},"additionalProperties":false,"type":"object","required":["status"],"title":"PublicOrderAcknowledgementCreate","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Body of "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /orders/{order_id}/acknowledgements"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The partner reports the outcome of importing this order into their ERP"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"system. Idempotent: a later acknowledgement overwrites"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"message"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"metadata"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (a retry that first "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"FAILED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" then"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"SUCCESS"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" ends up "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"SUCCESS"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", previous message cleared unless a new one"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"is provided). "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"external_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is the exception — it is "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"last-provided-wins"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":":"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"only updated when an acknowledgement carries one and never cleared, so a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"later id-less acknowledgement does not erase a previously reported id (and"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"it stays in step with the order's "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"erp_offer_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"message"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is required when "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"FAILED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (the failure reason)"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"and optional when "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"SUCCESS"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (a free-text note)."},"children":[]}]}]}],"example":{"external_id":"SO-2026-5567","message":"Bestellung als Kundenauftrag angelegt.","metadata":{"sales_order":"SO-2026-5567"},"status":"SUCCESS"}}},"components/schemas/PublicOrderEvent":{"id":"components/schemas/PublicOrderEvent","kind":"json-schema","title":"PublicOrderEvent","data":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Mercura's id for the recorded event."},"event_type":{"type":"string","title":"Event Type","description":"Normalised partner event token (e.g. WON / LOST / CANCELLED)."},"status_label":{"title":"Status Label","description":"The partner's verbatim status label.","type":["string","null"]},"message":{"title":"Message","description":"Free-text note about the event.","type":["string","null"]},"metadata":{"title":"Metadata","description":"Optional extra references the partner echoed back.","additionalProperties":true,"type":["object","null"]},"external_event_id":{"title":"External Event Id","description":"The partner's own id for this event, when provided.","type":["string","null"]},"occurred_at":{"title":"Occurred At","description":"When the event happened in the partner system.","format":"date-time","type":["string","null"]},"recorded_at":{"type":"string","format":"date-time","title":"Recorded At","description":"When Mercura recorded the event (server receipt time)."}},"additionalProperties":false,"type":"object","required":["id","event_type","recorded_at"],"title":"PublicOrderEvent","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"One lifecycle event a partner reported for an order."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Response body of "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /orders/{order_id}/events"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"event_type"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"normalised token (e.g. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"CANCELLED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"); "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status_label"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" the partner's"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"verbatim label; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"recorded_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" the server receipt time."},"children":[]}]}]}]}},"components/schemas/PublicOrderEventCreate":{"id":"components/schemas/PublicOrderEventCreate","kind":"json-schema","title":"PublicOrderEventCreate","data":{"properties":{"event_type":{"type":"string","maxLength":64,"pattern":"^[A-Z][A-Z0-9_]{0,63}$","title":"Event Type","description":"Normalised event token: uppercase letters, digits, underscores (e.g. WON, LOST, CANCELLED)."},"status_label":{"title":"Status Label","description":"The partner's verbatim status label, e.g. 'Cancelled'.","maxLength":255,"type":["string","null"]},"message":{"title":"Message","description":"Optional free-text note about the event.","maxLength":10000,"type":["string","null"]},"metadata":{"title":"Metadata","description":"Optional extra references / raw payload the partner echoed back for traceability.","additionalProperties":true,"type":["object","null"]},"external_event_id":{"title":"External Event Id","description":"The partner's own id for this event; supplying it makes retries idempotent.","maxLength":255,"type":["string","null"]},"occurred_at":{"title":"Occurred At","description":"When the event happened in the partner system (defaults to unreported).","format":"date-time","type":["string","null"]}},"additionalProperties":false,"type":"object","required":["event_type"],"title":"PublicOrderEventCreate","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Body of "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /orders/{order_id}/events"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Append-only and recording-only: recording an event never changes the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"order's lifecycle status. Supply "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"external_event_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" to make retries"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"idempotent — an identical replay returns the stored event, a conflicting"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"reuse of the id is rejected."},"children":[]}]}]}]}},"components/schemas/PublicOrderMetadata":{"id":"components/schemas/PublicOrderMetadata","kind":"json-schema","title":"PublicOrderMetadata","data":{"properties":{"order_date":{"title":"Order Date","format":"date","type":["string","null"]},"customer_reference":{"title":"Customer Reference","description":"The customer's own order reference / PO number.","type":["string","null"]},"quote_number":{"title":"Quote Number","type":["string","null"]},"project_number":{"title":"Project Number","type":["string","null"]},"requested_delivery_date":{"title":"Requested Delivery Date","format":"date","type":["string","null"]},"shipping_terms":{"title":"Shipping Terms","type":["string","null"]},"contact_person":{"title":"Contact Person","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Contact at the ordering customer, e.g. 'Hans Müller'."},"children":[]}]}]}],"type":["string","null"]},"special_instructions":{"title":"Special Instructions","type":["string","null"]},"delivery_recipient":{"title":"Delivery Recipient","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Ship-to party name (Warenempfänger), when different from the customer."},"children":[]}]}]}],"type":["string","null"]},"delivery_address":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Delivery address (Warenempfänger), when it differs from the customer's default."},"children":[]}]}]}],"$ref":"#/components/schemas/PublicOfferAddress"}},"additionalProperties":false,"type":"object","title":"PublicOrderMetadata","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Order-level metadata extracted from the order document."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Sourced from the internal "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"OrderMetadata"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" row (one-to-one with the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"order). Internal-only fields (extraction confidence, the redundant"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"extracted_*"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"customer_address_*"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" blocks that duplicate the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"resolved "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"customer"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") are deliberately dropped. All fields nullable —"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"an order that is still parsing may carry none."},"children":[]}]}]}]}},"components/schemas/PublicOrderOut":{"id":"components/schemas/PublicOrderOut","kind":"json-schema","title":"PublicOrderOut","data":{"properties":{"id":{"type":"string","title":"Id","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Public id; equals "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"request_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for an order."},"children":[]}]}]}]},"request_id":{"type":"string","title":"Request Id","description":"Mercura request id backing this order."},"status":{"$ref":"#/components/schemas/PublicOrderStatus"},"completed_at":{"title":"Completed At","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"When the order was last completed (finalised / exported). Refreshed on every completion; null if never completed. Use it with the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /orders?completed_since=…"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" completion feed."},"children":[]}]}]}],"format":"date-time","type":["string","null"]},"customer":{"$ref":"#/components/schemas/PublicOfferCustomer"},"project":{"$ref":"#/components/schemas/PublicOfferProject"},"request_custom_fields":{"title":"Request Custom Fields","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Organisation-defined custom fields on the underlying request, keyed by the field's display "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"label"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Null when the request carries none."},"children":[]}]}]}],"additionalProperties":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"},{"type":"boolean"},{"items":{"type":"string"},"type":"array"}]},"type":["object","null"]},"positions":{"items":{"$ref":"#/components/schemas/PublicOfferPosition"},"type":"array","title":"Positions"},"totals":{"$ref":"#/components/schemas/PublicOfferTotals"},"order_metadata":{"description":"Extracted order-level metadata. Null while the order is still parsing.","$ref":"#/components/schemas/PublicOrderMetadata"},"erp_offer_id":{"title":"Erp Offer Id","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The partner-side ERP order id, when known — from your acknowledgement's "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"external_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" or a previous Mercura-managed export; otherwise null."},"children":[]}]}]}],"type":["string","null"]},"acknowledgement":{"description":"Your last reported ERP import outcome for this order, or null if none yet.","$ref":"#/components/schemas/PublicOrderAcknowledgement"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"additionalProperties":false,"type":"object","required":["id","request_id","status","totals","created_at","updated_at"],"title":"PublicOrderOut","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"One order in a list / get-by-id response."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Keyed by the request id: for orders "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"id == request_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (an order has a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"single result, unlike a tender which can have several offer exports)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"totals"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" are present for shape-symmetry with tenders but are typically"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"zero — orders match articles, they do not price them."},"children":[]}]}]}],"example":{"created_at":"2026-07-08T08:30:00Z","customer":{"address":{"city":"Düsseldorf","country":"DE","postal_code":"40210","street":"Industriestraße","street_number":"12"},"contact_person":"Thomas Weber","custom_fields":{"Kundengruppe":"Elektrogroßhandel"},"customer_id":"K-10042","name":"Elektro Mustermann GmbH"},"erp_offer_id":"SO-2026-5567","id":"20456","order_metadata":{"contact_person":"Thomas Weber","customer_reference":"PO-88213","delivery_address":{"city":"Düsseldorf","country":"DE","postal_code":"40213","street":"Rheinuferstraße","street_number":"45"},"delivery_recipient":"Baustelle Rheinpark","order_date":"2026-07-08","project_number":"OBJ-2026-0042","quote_number":"AN-2026-0042","requested_delivery_date":"2026-07-22","shipping_terms":"frei Baustelle","special_instructions":"Anlieferung nur vormittags 7–12 Uhr."},"positions":[{"article_number":"LEU-1500-50-840","description":"LED-Feuchtraumleuchte 1500 mm 50 W 4000 K IP65","is_alternative":false,"position_number":"10","quantity":48,"unit":"Stk"},{"article_number":"LEU-1200-30-840","description":"LED-Feuchtraumleuchte 1200 mm 30 W 4000 K IP65","is_alternative":false,"position_number":"20","quantity":24,"unit":"Stk"}],"project":{"name":"Neubau Bürogebäude Rheinpark","object_number":"OBJ-2026-0042"},"request_custom_fields":{"Angebots-Nr":"AN-2026-0042"},"request_id":"20456","status":"READY_TO_EXPORT","totals":{"gross_total":"0.00","net_total":"0.00","positions_subtotal":"0.00"},"updated_at":"2026-07-08T09:05:00Z"}}},"components/schemas/PublicOrderStatus":{"id":"components/schemas/PublicOrderStatus","kind":"json-schema","title":"PublicOrderStatus","data":{"type":"string","enum":["PROCESSING","NEEDS_REVIEW","READY_TO_EXPORT","EXPORTED","ARCHIVED"],"title":"PublicOrderStatus","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Lifecycle state of an order (open enum — new values are SemVer MINOR)."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A translated subset of the internal "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"OrderWorkflowStatus"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (see README"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"→ Design decisions → Public offer status as a translated subset). The"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"internal "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"INCOMPLETE_METADATA"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is folded into "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"NEEDS_REVIEW"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — both"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"mean \"a human still has to act\" — so the public surface exposes a single"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"action-required state. The mapping lives in"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"services.orders_service._ORDER_STATUS_MAP"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and a test asserts it"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"covers every internal value, so a new internal state is a loud failure"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"rather than a silent passthrough."},"children":[]}]}]}]}},"components/schemas/PublicProjectAckStatus":{"id":"components/schemas/PublicProjectAckStatus","kind":"json-schema","title":"PublicProjectAckStatus","data":{"type":"string","enum":["SUCCESS","FAILED"],"title":"PublicProjectAckStatus","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Outcome a partner reports after importing a project into their ERP/CRM."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Translated from the internal "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"RequestAckStatus"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (the identical axis the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"tender/order acknowledgements use) via"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"projects.service._PROJECT_ACK_STATUS_MAP"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". A "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"separate axis"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" from"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"PublicProjectStatus"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": that is Mercura-side lifecycle, this is the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"partner's import result."},"children":[]}]}]}]}},"components/schemas/PublicProjectAcknowledgement":{"id":"components/schemas/PublicProjectAcknowledgement","kind":"json-schema","title":"PublicProjectAcknowledgement","data":{"properties":{"status":{"$ref":"#/components/schemas/PublicProjectAckStatus"},"external_id":{"title":"External Id","description":"Partner-side ERP/CRM id of the created project / record (e.g. its ERP document number).","type":["string","null"]},"message":{"title":"Message","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Free-text note about the outcome. On "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"FAILED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" this is the failure reason (required); on "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"SUCCESS"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" an optional note."},"children":[]}]}]}],"type":["string","null"]},"metadata":{"title":"Metadata","description":"Optional extra references / raw payload the partner echoed back for traceability.","additionalProperties":true,"type":["object","null"]},"acknowledged_at":{"type":"string","format":"date-time","title":"Acknowledged At","description":"When the partner reported this outcome (server receipt time)."}},"additionalProperties":false,"type":"object","required":["status","acknowledged_at"],"title":"PublicProjectAcknowledgement","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The partner's last reported ERP/CRM import outcome for a project."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Used as the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"acknowledgement"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" field on "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"PublicProjectOut"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and as the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"response body of "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /projects/{project_id}/acknowledgements"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"message"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"metadata"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" reflect the most recent"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"acknowledgement; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"external_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is kept once provided"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"(last-provided-wins). Like the tender acknowledgement it is mirrored onto a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"first-class field: a supplied "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"external_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is also written to the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"project's "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"object_number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (the Objektnummer), which is what Mercura sends"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"back out as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"erp_object_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" on later tender/order exports."},"children":[]}]}]}],"example":{"acknowledged_at":"2026-08-20T09:15:00Z","external_id":"4500012345","metadata":{"erp_client":"100"},"status":"SUCCESS"}}},"components/schemas/PublicProjectAcknowledgementCreate":{"id":"components/schemas/PublicProjectAcknowledgementCreate","kind":"json-schema","title":"PublicProjectAcknowledgementCreate","data":{"properties":{"status":{"$ref":"#/components/schemas/PublicProjectAckStatus"},"external_id":{"title":"External Id","description":"Partner-side ERP/CRM id of the created project / record (e.g. the ERP document number). Typically set on SUCCESS.","maxLength":255,"type":["string","null"]},"message":{"title":"Message","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Free-text note about the outcome. Required when "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"FAILED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (the failure reason); optional on "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"SUCCESS"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"maxLength":10000,"type":["string","null"]},"metadata":{"title":"Metadata","description":"Optional extra references / raw payload echoed back for traceability (e.g. other ERP/CRM ids).","additionalProperties":true,"type":["object","null"]}},"additionalProperties":false,"type":"object","required":["status"],"title":"PublicProjectAcknowledgementCreate","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Body of "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /projects/{project_id}/acknowledgements"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Idempotent and latest-wins for status/message/metadata; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"external_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"last-provided-wins (kept once set). "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"message"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is required when "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"FAILED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". A supplied "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"external_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"also written to the project's"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"object_number"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (the Objektnummer) — the ERP-facing key Mercura echoes"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"back as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"erp_object_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" on later exports — so one POST both records the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"outcome and lands the partner's number. The project's lifecycle "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"is never touched and no export is re-triggered."},"children":[]}]}]}],"example":{"external_id":"4500012345","metadata":{"erp_client":"100"},"status":"SUCCESS"}}},"components/schemas/PublicProjectOut":{"id":"components/schemas/PublicProjectOut","kind":"json-schema","title":"PublicProjectOut","data":{"properties":{"id":{"type":"string","title":"Id","description":"Public id; equals the internal Project.id as string."},"object_number":{"title":"Object Number","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"ERP-facing grouping key (Objektnummer). Multiple projects can share an "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"object_number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — filter on "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /projects?object_number=..."},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" returns all matching rows. Writable via "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"PATCH /projects/{project_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" or by supplying "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"external_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" on "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /projects/{project_id}/acknowledgements"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"type":["string","null"]},"name":{"title":"Name","type":["string","null"]},"status":{"$ref":"#/components/schemas/PublicProjectStatus"},"estimated_value":{"title":"Estimated Value","type":["number","null"]},"currency":{"title":"Currency","type":["string","null"]},"submission_date":{"title":"Submission Date","description":"Free-form submission deadline as originally supplied (ISO date or free text).","type":["string","null"]},"responsible_user":{"$ref":"#/components/schemas/PublicResponsibleUser"},"construction_site_address":{"$ref":"#/components/schemas/Address"},"planner_address":{"$ref":"#/components/schemas/Address"},"developer_address":{"$ref":"#/components/schemas/Address"},"custom_fields":{"title":"Custom Fields","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Organisation-defined custom-field values. Keys and value shapes are governed by the organisation's "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"custom_column_definitions"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"additionalProperties":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"},{"type":"boolean"},{"items":{"type":"string"},"type":"array"}]},"type":["object","null"]},"request_ids":{"items":{"type":"integer"},"type":"array","title":"Request Ids","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Request ids linked to this project via "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Request.project_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Round-trip against "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /offers/{id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" to fetch per-request content."},"children":[]}]}]}]},"acknowledgement":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The partner's last reported ERP/CRM import outcome, when one was recorded via "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /projects/{project_id}/acknowledgements"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Null when the project was never acknowledged."},"children":[]}]}]}],"$ref":"#/components/schemas/PublicProjectAcknowledgement"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"additionalProperties":false,"type":"object","required":["id","status","created_at","updated_at"],"title":"PublicProjectOut","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"One project in a list / get-by-id response."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is the stringified "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Project.id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — the same integer the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"offer.new_export_run"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" webhook carries as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"project_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", so"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"partners can round-trip the webhook payload straight into"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /projects/{id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"object_number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is the ERP-facing grouping key. It is NOT unique:"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Mercura groups multiple project rows that share the same"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"object_number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" into one \"master project\" internally. Partners"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"filtering by "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"object_number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" should be prepared to receive"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"multiple rows (page endpoint)."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"custom_fields"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" carries the organisation-defined custom field"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"values keyed by the field name defined in the organisation's"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"custom_column_definitions"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Multi-select values are returned as"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"their human-readable option "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"labels"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (e.g. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"[\"3030\"]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), not the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"internal option ids — a value carrying multiple labels comes back as"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"a list. No JSON schema is enforced on the contents — the shape is"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"per-org and can evolve without an API version bump. When the field"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"is empty or unset, it is omitted from the response entirely."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"request_ids"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" lists the Mercura request ids linked to this"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"project (via "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Request.project_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Drill down to any request"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /offers/{request_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"offer_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" used by that"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"endpoint equals the request id."},"children":[]}]}]}],"example":{"acknowledgement":{"acknowledged_at":"2026-08-20T09:15:00Z","external_id":"4500012345","metadata":{"erp_client":"100"},"status":"SUCCESS"},"construction_site_address":{"city":"Düsseldorf","country":"DE","is_default":true,"kind":"site","postal_code":"40213","region":"NRW","street":"Rheinuferstraße","street_number":"45"},"created_at":"2026-07-08T09:10:00Z","currency":"EUR","custom_fields":{"Gewerk":["EL - ELEMENTE TÜREN"],"Vergabeart":"Öffentlich"},"estimated_value":185000,"id":"90","name":"Neubau Bürogebäude Rheinpark","object_number":"OBJ-2026-0042","planner_address":{"city":"Düsseldorf","country":"DE","kind":"planner","postal_code":"40212","street":"Königsallee","street_number":"60"},"request_ids":[12345],"responsible_user":{"email":"anna.schmidt@example.com","id":"3f8b6d21-9a4c-4e77-b0e2-1c5d8a9f4e10","name":"Anna Schmidt"},"status":"ACTIVE","submission_date":"2026-08-15","updated_at":"2026-07-09T12:00:12Z"}}},"components/schemas/PublicProjectStatus":{"id":"components/schemas/PublicProjectStatus","kind":"json-schema","title":"PublicProjectStatus","data":{"type":"string","enum":["ACTIVE","PROCESSED","BID_SUBMITTED","CUSTOMER_LOST","CUSTOMER_WON_PENDING","CUSTOMER_WON_AWARDED_ELSEWHERE","CUSTOMER_WON_AWARDED_TO_US"],"title":"PublicProjectStatus","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Lifecycle status of a Mercura project."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Translated from the internal "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"ProjectStatus"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" enum — the internal"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"values are lower-cased for historical reasons; the public API uses"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"UPPERCASE (matches "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"PublicOfferStatus"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and the platform-wide"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"enum convention in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"CLAUDE.md"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). New values are SemVer MINOR"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"(additive); removed values are MAJOR. Translation table lives in"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"projects.service._STATUS_MAP"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" so a missing case is a test"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"failure, not silent passthrough."},"children":[]}]}]}]}},"components/schemas/PublicProjectUpdate":{"id":"components/schemas/PublicProjectUpdate","kind":"json-schema","title":"PublicProjectUpdate","data":{"properties":{"object_number":{"title":"Object Number","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"ERP-facing grouping key (Objektnummer). "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" clears it."},"children":[]}]}]}],"type":["string","null"]},"name":{"title":"Name","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Display name. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" clears it."},"children":[]}]}]}],"type":["string","null"]},"status":{"description":"Lifecycle status (UPPERCASE). Cannot be null; unknown values are a 400.","$ref":"#/components/schemas/PublicProjectStatus"},"estimated_value":{"title":"Estimated Value","type":["number","null"]},"currency":{"title":"Currency","type":["string","null"]},"submission_date":{"title":"Submission Date","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Free-form submission deadline (ISO date or free text). "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" clears it."},"children":[]}]}]}],"type":["string","null"]},"custom_fields":{"title":"Custom Fields","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Label-keyed custom-field values to shallow-merge. Keys are the organisation's custom-column labels; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"multi_select"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" values are option labels. A "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" value clears that field. Unknown labels or option labels are a 400."},"children":[]}]}]}],"additionalProperties":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"},{"type":"boolean"},{"items":{"type":"string"},"type":"array"},{"type":"null"}]},"type":["object","null"]}},"additionalProperties":false,"type":"object","title":"PublicProjectUpdate","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Partial update of a project — the writable subset of "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"PublicProjectOut"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The canonical use-case is writing an ERP-assigned identifier back onto the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Mercura project: the ERP creates a commission / project number and PATCHes"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"it into "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"object_number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (the \"Objektnummer\"), so subsequent"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"offer.new_export_run"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" webhooks and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /projects"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" reconcile against"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"the partner's own key."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"PATCH semantics."},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Only fields "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"present in the body"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" are written; an"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"omitted field is left untouched. A field explicitly set to "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" clears"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"it ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"object_number: null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" blanks the Objektnummer). This"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"present-vs-absent distinction is resolved via Pydantic's"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"model_fields_set"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" in the write service — do not read a missing field as"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"object_number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is a grouping key."},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Mercura groups every project row"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"that shares an "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"object_number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" into one logical \"master project\" — the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"grouping is "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"derived at read time"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", not stored, so writing the field on one"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"project row is sufficient and moves only that row into the group. The PATCH"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"never rewrites sibling rows."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" takes the same UPPERCASE "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"PublicProjectStatus"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" values the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"read side emits; an unknown value is a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"400"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". It cannot be cleared —"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"sending "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status: null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"400"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (a project always has a lifecycle"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"state)."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"custom_fields"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is label-keyed, symmetric with the read side: keys are"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"the org's custom-column "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"labels"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (not internal UUIDs) and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"multi_select"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"values are the option "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"labels"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (e.g. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"[\"3030\"]"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). A key mapped to"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" clears that field; keys omitted from the map are left untouched"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"(shallow-merge, not replace). An unknown label — or an unknown option label"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"on a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"multi_select"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — is a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"400"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" listing the offending keys, so a typo"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"fails loudly instead of silently writing nothing."},"children":[]}]}]}],"example":{"custom_fields":{"ERP-Auftragsnummer":"SO-88231"},"object_number":"P-2026-00417","status":"CUSTOMER_WON_AWARDED_TO_US"}}},"components/schemas/PublicRequestSelectionStats":{"id":"components/schemas/PublicRequestSelectionStats","kind":"json-schema","title":"PublicRequestSelectionStats","data":{"properties":{"request_id":{"type":"string","title":"Request Id","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Mercura request id. Resolve the full record via "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /tenders/{request_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"request_type"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"TENDER"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", or "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /orders/{request_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"ORDER"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},"request_type":{"$ref":"#/components/schemas/PublicStatsRequestType","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Which resource this row belongs to — "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"TENDER"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" or "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"ORDER"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},"request_name":{"type":"string","title":"Request Name","description":"Request name / title (e.g. the LV subject line)."},"status":{"$ref":"#/components/schemas/PublicRequestStatus","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Mercura-side processing lifecycle of the request ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"NEW"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"IN_PROGRESS"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"DONE"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"CANCELLED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"PARSING"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"PARSING_FAILED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Combine with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"exported_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" to tell an exported request apart from one still in progress. By default only exported requests are returned; pass "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"include_unexported=true"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" to also receive open ones."},"children":[]}]}]}]},"created_on":{"type":"string","format":"date","title":"Created On","description":"Date the request was created (UTC)."},"first_opened_at":{"title":"First Opened At","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"UTC timestamp a user first opened the request — the start of active handling. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" if it was never opened. The handling time of a request is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"exported_at - first_opened_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"format":"date-time","type":["string","null"]},"exported_at":{"title":"Exported At","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"UTC timestamp the request was first exported to the partner system, or "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" if it has not been exported yet (only ever "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" when "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"include_unexported=true"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"format":"date-time","type":["string","null"]},"completed_at":{"title":"Completed At","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"UTC timestamp of the most recent completion / re-export. Unlike "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"exported_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (set once, on the first export) this advances on every re-export. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" until the request is completed."},"children":[]}]}]}],"format":"date-time","type":["string","null"]},"active_seconds":{"title":"Active Seconds","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"True handling time: the total "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"active"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (engaged) seconds a user spent working on this request before it was exported — the exact per-request figure behind the in-app 'time per position' metric, summed from usage telemetry. Counts only time the request was actively being worked, so unlike "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"exported_at - first_opened_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (wall-clock, includes idle gaps) it reflects real effort. Divide by "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"position_count"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"selection_count"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for a per-position / per-selection figure. Defined for "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"exported tenders"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" only: "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for orders, for requests not yet exported, and for exported requests with no recorded active time (telemetry unavailable)."},"children":[]}]}]}],"type":["integer","null"]},"position_count":{"type":"integer","title":"Position Count","description":"Number of relevant positions on the request."},"positions_with_selection":{"type":"integer","title":"Positions With Selection","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Number of relevant positions that carry at least one selection — i.e. the positions that were actually resolved. Always "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"<= position_count"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (a relevant position may end up with no selection), and not interchangeable with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"selection_count"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", which counts "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"selections"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" rather than positions (one position can carry several: alternatives, accessories). "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"This is the denominator behind the in-app time-per-position metric"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": divide "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"active_seconds"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" by it, and aggregate as a pooled "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"SUM(active_seconds) / SUM(positions_with_selection)"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" to match what the dashboard reports."},"children":[]}]}]}]},"selection_count":{"type":"integer","title":"Selection Count","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Total surviving selections on relevant positions — the sum of the three outcome counts below."},"children":[]}]}]}]},"auto_selected_count":{"type":"integer","title":"Auto Selected Count","description":"Selections resolved by a mechanism that bypasses prediction ranking (article-number match, master / historic / cluster / duplicate / equivalent-position propagation, parts-list lookup, default article, or an auto-selection the order-entry agent makes on its own)."},"prediction_correct_count":{"type":"integer","title":"Prediction Correct Count","description":"Prediction-driven selections where the chosen article was among Mercura's predictions for that position (predicted vs. not-predicted; the earlier top-10 rank cut has been removed, as the order-entry agent surfaces only a handful of candidates per position)."},"manual_selection_count":{"type":"integer","title":"Manual Selection Count","description":"Prediction-driven selections where the chosen article was NOT among Mercura's predictions for that position (shown as \"Manual selections\" in the dashboard)."}},"additionalProperties":false,"type":"object","required":["request_id","request_type","request_name","status","created_on","position_count","positions_with_selection","selection_count","auto_selected_count","prediction_correct_count","manual_selection_count"],"title":"PublicRequestSelectionStats","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Per-request selection-outcome counts for one exported request."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The three outcome counts ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"auto_selected_count"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":","},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"prediction_correct_count"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"manual_selection_count"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") are mutually"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"exclusive and sum to "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"selection_count"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Percentages and hit-rate are"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"intentionally "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" computed server-side — derive them from these raw"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"counts (e.g. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"hit_rate = (auto_selected_count + prediction_correct_count) / selection_count"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"example":{"active_seconds":1284,"auto_selected_count":31,"completed_at":"2026-07-08T10:02:47Z","created_on":"2026-07-08","exported_at":"2026-07-08T10:02:47Z","first_opened_at":"2026-07-08T09:14:03Z","manual_selection_count":5,"position_count":52,"positions_with_selection":48,"prediction_correct_count":14,"request_id":"12345","request_name":"Neubau Bürogebäude Rheinpark – Elektro","request_type":"TENDER","selection_count":50,"status":"DONE"}}},"components/schemas/PublicRequestStatus":{"id":"components/schemas/PublicRequestStatus","kind":"json-schema","title":"PublicRequestStatus","data":{"type":"string","enum":["NEW","IN_PROGRESS","DONE","CANCELLED","PARSING","PARSING_FAILED"],"title":"PublicRequestStatus","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Mercura-side processing lifecycle of a request."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A request is uploaded as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"NEW"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", moves through "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"IN_PROGRESS"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" while it is"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"being worked, and becomes "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"DONE"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" once completed/exported. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"PARSING"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" /"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"PARSING_FAILED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" are transient intake states; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"CANCELLED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is a request"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"that was abandoned. Pair this with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"exported_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" to tell an exported"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"request apart from one that is still open (uploaded but not yet exported)."},"children":[]}]}]}]}},"components/schemas/PublicResponsibleUser":{"id":"components/schemas/PublicResponsibleUser","kind":"json-schema","title":"PublicResponsibleUser","data":{"properties":{"id":{"type":"string","title":"Id","description":"Mercura user id (opaque; keep or drop on the partner side)."},"name":{"type":"string","title":"Name"},"email":{"title":"Email","type":["string","null"]}},"additionalProperties":false,"type":"object","required":["id","name"],"title":"PublicResponsibleUser","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The Mercura user assigned to a project."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Small denormalised bundle rather than a bare id — partners rendering"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"an offer inbox rarely need to hit a second endpoint just to display"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"\"Assigned to Anna Schmidt\". Email is included so downstream systems"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"can key on it (Mercura's "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"supabase_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is not portable)."},"children":[]}]}]}]}},"components/schemas/PublicStatsRequestType":{"id":"components/schemas/PublicStatsRequestType","kind":"json-schema","title":"PublicStatsRequestType","data":{"type":"string","enum":["TENDER","ORDER"],"title":"PublicStatsRequestType","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Which resource a statistics row's "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"request_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" resolves against."},"children":[]}]}]}]}},"components/schemas/PublicSuccessorIn":{"id":"components/schemas/PublicSuccessorIn","kind":"json-schema","title":"PublicSuccessorIn","data":{"properties":{"source_article_number":{"type":"string","maxLength":255,"minLength":1,"pattern":"^[A-Za-z0-9._\\-]{1,255}$","title":"Source Article Number","description":"The discontinued / predecessor article."},"successor_article_number":{"type":"string","maxLength":255,"minLength":1,"pattern":"^[A-Za-z0-9._\\-]{1,255}$","title":"Successor Article Number","description":"The article that replaces the source."},"order":{"title":"Order","description":"Optional display order (a source has one active successor).","minimum":0,"type":["integer","null"]}},"additionalProperties":false,"type":"object","required":["source_article_number","successor_article_number"],"title":"PublicSuccessorIn","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"One successor relationship in a bulk-write payload."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Both article numbers must already exist for your organisation; a row"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"whose source or successor article is unknown is skipped (counted in"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"the job's "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"skipped_count"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), not an error. Re-sending a source with a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"new successor replaces the previous one."},"children":[]}]}]}]}},"components/schemas/PublicSuccessorOut":{"id":"components/schemas/PublicSuccessorOut","kind":"json-schema","title":"PublicSuccessorOut","data":{"properties":{"id":{"type":"integer","title":"Id","description":"Internal relationship id."},"source_article_number":{"type":"string","title":"Source Article Number"},"successor_article_number":{"type":"string","title":"Successor Article Number"},"order":{"title":"Order","type":["integer","null"]},"source_type":{"type":"string","title":"Source Type","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"How the relation was created: MANUAL or MATCHING_EXTRACTED."},"children":[]}]}]}]},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"additionalProperties":false,"type":"object","required":["id","source_article_number","successor_article_number","source_type","created_at","updated_at"],"title":"PublicSuccessorOut","description":"One successor relationship in a list response."}},"components/schemas/PublicSupplierIn":{"id":"components/schemas/PublicSupplierIn","kind":"json-schema","title":"PublicSupplierIn","data":{"properties":{"supplier_id":{"type":"string","maxLength":255,"minLength":1,"pattern":"^[A-Za-z0-9._\\-]{1,255}$","title":"Supplier Id"},"name":{"type":"string","maxLength":500,"minLength":1,"title":"Name"},"emails":{"title":"Emails","items":{"type":"string","format":"email"},"type":["array","null"]},"addresses":{"title":"Addresses","items":{"$ref":"#/components/schemas/Address"},"type":["array","null"]},"custom_fields":{"title":"Custom Fields","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Custom fields for the supplier. On the "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"write"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" path these are stored as supplied (internal column-id keyed) and are NOT label-remapped — deliberately asymmetric with the label-keyed read responses in v1.9.0 (Wave 1 partners only read)."},"children":[]}]}]}],"additionalProperties":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"},{"type":"boolean"},{"items":{"type":"string"},"type":"array"}]},"type":["object","null"]}},"additionalProperties":false,"type":"object","required":["supplier_id","name"],"title":"PublicSupplierIn","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"One supplier in a bulk-write payload."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"supplier_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is the partner's stable identifier — used both as"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"the upsert key and as the public-API identifier returned in lists"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /suppliers/{supplier_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Required so that retries"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"converge on the same row instead of creating duplicates."},"children":[]}]}]}]}},"components/schemas/PublicSupplierOut":{"id":"components/schemas/PublicSupplierOut","kind":"json-schema","title":"PublicSupplierOut","data":{"properties":{"id":{"title":"Id","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Public id; equals the supplier's supplier_id when present"},"children":[]}]}]}],"type":["string","null"]},"supplier_id":{"title":"Supplier Id","type":["string","null"]},"name":{"type":"string","title":"Name"},"emails":{"items":{"type":"string"},"type":"array","title":"Emails"},"custom_fields":{"title":"Custom Fields","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Organisation-defined custom fields, keyed by the field's display "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"label"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (v1.9.0; previously keyed by the internal column UUID). Columns with no active definition are omitted; null when the supplier carries none. On duplicate labels the field defined first (by display order, then creation time) wins."},"children":[]}]}]}],"additionalProperties":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"},{"type":"boolean"},{"items":{"type":"string"},"type":"array"}]},"type":["object","null"]},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"additionalProperties":false,"type":"object","required":["name","created_at","updated_at"],"title":"PublicSupplierOut","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"One supplier in a list / get-by-id response."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Subset of the internal "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Supplier"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" ORM row; intentionally omits"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"relational data (branch_ids, manufacturer_filter) which belong to"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Wave 2 endpoints once the contract is stable."},"children":[]}]}]}],"example":{"created_at":"2026-02-03T10:20:00Z","custom_fields":{"Kreditor-Nr":"70012","Lieferantengruppe":"Leuchten"},"emails":["vertrieb@lumaris.example"],"id":"L-2001","name":"Lumaris Leuchten GmbH","supplier_id":"L-2001","updated_at":"2026-07-10T08:05:00Z"}}},"components/schemas/PublicSupplierRequestOut":{"id":"components/schemas/PublicSupplierRequestOut","kind":"json-schema","title":"PublicSupplierRequestOut","data":{"properties":{"id":{"type":"string","title":"Id","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Public id — the supplier request's UUID."},"children":[]}]}]}]},"status":{"$ref":"#/components/schemas/PublicSupplierRequestStatus"},"tender_id":{"title":"Tender Id","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Backing tender id when the request is tender-scoped — resolve via "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /tenders/{tender_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Null when project-scoped."},"children":[]}]}]}],"type":["string","null"]},"project_id":{"title":"Project Id","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Backing project id when the request is project-scoped — resolve via "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /projects/{project_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Null when tender-scoped."},"children":[]}]}]}],"type":["string","null"]},"supplier_id":{"title":"Supplier Id","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Supplier reference only — resolve full details via "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /suppliers/{supplier_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Null when no supplier is set."},"children":[]}]}]}],"type":["string","null"]},"supplier_name":{"title":"Supplier Name","description":"Supplier display name (convenience mirror of the reference).","type":["string","null"]},"supplier_emails":{"items":{"type":"string"},"type":"array","title":"Supplier Emails","description":"Recipient email addresses the request was sent to."},"sender_email":{"title":"Sender Email","description":"Email of the Mercura user who sent the request. Null when unknown.","type":["string","null"]},"is_awarded":{"type":"boolean","title":"Is Awarded","description":"True when at least one offered line was accepted into the final tender."},"awarded_line_count":{"type":"integer","title":"Awarded Line Count","description":"Number of offered lines accepted into the final tender."},"offered_lines":{"items":{"$ref":"#/components/schemas/PublicOfferedLine"},"type":"array","title":"Offered Lines"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"additionalProperties":false,"type":"object","required":["id","status","is_awarded","awarded_line_count","created_at","updated_at"],"title":"PublicSupplierRequestOut","description":"One supplier request (Werksanfrage) in a list / get-by-id response.","example":{"awarded_line_count":1,"created_at":"2026-07-14T09:12:00Z","id":"b3f1c2a4-6d9e-4f21-a0b7-2c5e8d1f9a44","is_awarded":true,"offered_lines":[{"article_number":"LEU-48210","candidate_status":"ACCEPTED","description":"LED-Einbauleuchte 4000K, 24W","id":"5521","item_type":"ARTICLE","line_total":"4620.00","manufacturer_article_number":"NL-LED-4000K","position_id":"90112","quantity":120,"selected":true,"unit":"Stk","unit_price":"38.50"},{"article_number":"LEU-48477","candidate_status":"PENDING","description":"LED-Panel 62x62, 36W","id":"5522","item_type":"ARTICLE","line_total":"2880.00","position_id":"90113","quantity":40,"selected":false,"unit":"Stk","unit_price":"72.00"}],"sender_email":"einkauf@grosshandel.de","status":"OFFER_RECEIVED","supplier_emails":["angebot@nordlicht-leuchten.de"],"supplier_id":"SUP-3001","supplier_name":"Nordlicht Leuchten GmbH","tender_id":"12345","updated_at":"2026-07-16T14:05:11Z"}}},"components/schemas/PublicSupplierRequestStatus":{"id":"components/schemas/PublicSupplierRequestStatus","kind":"json-schema","title":"PublicSupplierRequestStatus","data":{"type":"string","enum":["REQUEST_SENT","OFFER_RECEIVED","DECLINED"],"title":"PublicSupplierRequestStatus","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Lifecycle state of a supplier request."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A translated subset of the internal "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"SupplierRequestStatus"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; the mapping"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"lives in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"supplier_requests.service._SUPPLIER_REQUEST_STATUS_MAP"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"test asserts it covers every internal value. New values may be added in a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"MINOR release — the OpenAPI enum is closed, so consumers should treat an"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"unknown value defensively rather than fail strict validation."},"children":[]}]}]}]}},"components/schemas/PublicTenderAckStatus":{"id":"components/schemas/PublicTenderAckStatus","kind":"json-schema","title":"PublicTenderAckStatus","data":{"type":"string","enum":["SUCCESS","FAILED"],"title":"PublicTenderAckStatus","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Outcome a partner reports after importing a tender's offer into their ERP/CRM."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Translated from the internal "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"RequestAckStatus"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" via"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"tenders.service._TENDER_ACK_STATUS_MAP"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". A "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"separate axis"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" from"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"PublicTenderStatus"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": that is Mercura-side lifecycle, this is the partner's"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"import result."},"children":[]}]}]}]}},"components/schemas/PublicTenderAcknowledgement":{"id":"components/schemas/PublicTenderAcknowledgement","kind":"json-schema","title":"PublicTenderAcknowledgement","data":{"properties":{"status":{"$ref":"#/components/schemas/PublicTenderAckStatus"},"external_id":{"title":"External Id","description":"Partner-side ERP/CRM id of the created offer / record, when provided.","type":["string","null"]},"message":{"title":"Message","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Free-text note about the outcome. On "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"FAILED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" this is the failure reason (required); on "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"SUCCESS"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" an optional note."},"children":[]}]}]}],"type":["string","null"]},"metadata":{"title":"Metadata","description":"Optional extra references / raw payload the partner echoed back for traceability.","additionalProperties":true,"type":["object","null"]},"acknowledged_at":{"type":"string","format":"date-time","title":"Acknowledged At","description":"When the partner reported this outcome (server receipt time)."}},"additionalProperties":false,"type":"object","required":["status","acknowledged_at"],"title":"PublicTenderAcknowledgement","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The partner's last reported ERP/CRM import outcome for a tender."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Used as the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"acknowledgement"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" field on "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"PublicTenderOut"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and as the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"response body of "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /tenders/{tender_id}/acknowledgements"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"message"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"metadata"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" reflect the most recent"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"acknowledgement; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"external_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is kept once provided (last-provided-wins)"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"and mirrors the tender's "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"erp_offer_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"example":{"acknowledged_at":"2026-07-09T12:00:12Z","external_id":"AB-2026-5567","message":"Angebot in ERP angelegt.","metadata":{"erp_document":"AB-2026-5567","warehouse":"Z-100"},"status":"SUCCESS"}}},"components/schemas/PublicTenderAcknowledgementCreate":{"id":"components/schemas/PublicTenderAcknowledgementCreate","kind":"json-schema","title":"PublicTenderAcknowledgementCreate","data":{"properties":{"status":{"$ref":"#/components/schemas/PublicTenderAckStatus"},"external_id":{"title":"External Id","description":"Partner-side ERP/CRM id of the created offer / record. Typically set on SUCCESS.","maxLength":255,"type":["string","null"]},"message":{"title":"Message","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Free-text note about the outcome. Required when "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"FAILED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (the failure reason); optional on "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"SUCCESS"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"maxLength":10000,"type":["string","null"]},"metadata":{"title":"Metadata","description":"Optional extra references / raw payload echoed back for traceability (e.g. other ERP/CRM ids).","additionalProperties":true,"type":["object","null"]}},"additionalProperties":false,"type":"object","required":["status"],"title":"PublicTenderAcknowledgementCreate","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Body of "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /tenders/{tender_id}/acknowledgements"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Idempotent and latest-wins for status/message/metadata; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"external_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"last-provided-wins (kept once set) and is written back to the tender's"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"erp_offer_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"message"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is required when "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"FAILED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"example":{"external_id":"AB-2026-5567","message":"Angebot in ERP angelegt.","metadata":{"erp_document":"AB-2026-5567","warehouse":"Z-100"},"status":"SUCCESS"}}},"components/schemas/PublicTenderBranch":{"id":"components/schemas/PublicTenderBranch","kind":"json-schema","title":"PublicTenderBranch","data":{"properties":{"id":{"type":"string","title":"Id","description":"Mercura branch id."},"name":{"type":"string","title":"Name","description":"Branch (Niederlassung) display name.","default":""}},"additionalProperties":false,"type":"object","required":["id"],"title":"PublicTenderBranch","description":"The Mercura branch (Niederlassung) a tender is assigned to. Read-only."}},"components/schemas/PublicTenderChapter":{"id":"components/schemas/PublicTenderChapter","kind":"json-schema","title":"PublicTenderChapter","data":{"properties":{"id":{"type":"string","title":"Id","description":"Opaque, stable chapter handle. Target for adding lines via PATCH."},"chapter_number":{"type":"string","title":"Chapter Number","description":"GAEB chapter number (e.g. '01').","default":""},"name":{"type":"string","title":"Name","description":"Chapter title.","default":""},"is_pretext":{"type":"boolean","title":"Is Pretext","description":"A Vorbemerkung / pretext chapter (intro text, not priced).","default":false},"chapters":{"items":{"$ref":"#/components/schemas/PublicTenderChapter"},"type":"array","title":"Chapters","description":"Nested sub-chapters."},"positions":{"items":{"$ref":"#/components/schemas/PublicTenderPosition"},"type":"array","title":"Positions","description":"Lines directly under this chapter."}},"additionalProperties":false,"type":"object","required":["id"],"title":"PublicTenderChapter","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A chapter (title / Titel) of a tender. Chapters nest via "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"chapters"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]}},"components/schemas/PublicTenderChapterUpdate":{"id":"components/schemas/PublicTenderChapterUpdate","kind":"json-schema","title":"PublicTenderChapterUpdate","data":{"properties":{"id":{"type":"string","title":"Id","description":"Existing chapter handle from GET (adds/edits attach here)."},"positions":{"items":{"$ref":"#/components/schemas/PublicTenderPositionUpdate"},"type":"array","title":"Positions"},"chapters":{"items":{"$ref":"#/components/schemas/PublicTenderChapterUpdate"},"type":"array","title":"Chapters"},"chapter_number":{"title":"Chapter Number","description":"Ignored on write.","type":["string","null"]},"name":{"title":"Name","description":"Ignored on write.","type":["string","null"]},"is_pretext":{"title":"Is Pretext","description":"Ignored on write.","type":["boolean","null"]}},"additionalProperties":false,"type":"object","required":["id"],"title":"PublicTenderChapterUpdate","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A chapter in a PATCH body — targets an existing chapter by "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Lines to edit/add go in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"positions"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; nested "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"chapters"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" are processed"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"recursively. Chapter metadata is declared for round-trip but ignored —"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"creating or renaming chapters via the API is out of scope for this release."},"children":[]}]}]}]}},"components/schemas/PublicTenderDocument":{"id":"components/schemas/PublicTenderDocument","kind":"json-schema","title":"PublicTenderDocument","data":{"properties":{"id":{"type":"string","title":"Id","description":"Opaque document id (the file's stable uploaded-file id). Stable across re-lists; use it to correlate a document you have already seen."},"filename":{"type":"string","title":"Filename","description":"Original file name as uploaded by the customer."},"content_type":{"type":"string","title":"Content Type","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"MIME type of the file (e.g. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"application/pdf"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"application/xml"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}]},"size_bytes":{"type":"integer","title":"Size Bytes","description":"File size in bytes."},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"When the file was uploaded to Mercura (UTC)."},"download_url":{"title":"Download Url","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Short-lived pre-signed URL that downloads the file's bytes directly from object storage (no API key required on this URL). Expires at "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"download_url_expires_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Null when the storage backend cannot issue a signed URL (non-production environments)."},"children":[]}]}]}],"type":["string","null"]},"download_url_expires_at":{"title":"Download Url Expires At","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"UTC instant at which "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"download_url"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" stops working; null when no URL was issued."},"children":[]}]}]}],"format":"date-time","type":["string","null"]}},"additionalProperties":false,"type":"object","required":["id","filename","content_type","size_bytes","created_at"],"title":"PublicTenderDocument","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"One source document attached to a tender."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A file the customer uploaded into the request — the same attachments a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"forwarded LV / RFQ email carried. Mercura-generated artefacts (the offer /"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"display PDF, structured-doc previews, OCR / metadata side-files) and hidden"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"files are "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" listed here."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"download_url"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is a short-lived, pre-signed link that serves the bytes"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"directly from object storage — it needs no "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Authorization"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" header and"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"expires at "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"download_url_expires_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Treat it as opaque and transient:"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"fetch promptly, and re-list the tender's documents to obtain a fresh URL"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"once it has expired."},"children":[]}]}]}],"example":{"content_type":"application/xml","created_at":"2026-07-08T09:14:00Z","download_url":"https://s3.fra1.example.com/mercura/files/b3f1c2a4-9d6e-4f21-8a0c-2e5d7f9a1b34_LV_Tiefgarage_Beleuchtung.gaeb?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=3600&X-Amz-Signature=…","download_url_expires_at":"2026-07-08T10:14:00Z","filename":"LV_Tiefgarage_Beleuchtung.gaeb","id":"b3f1c2a4-9d6e-4f21-8a0c-2e5d7f9a1b34","size_bytes":284913}}},"components/schemas/PublicTenderDocuments":{"id":"components/schemas/PublicTenderDocuments","kind":"json-schema","title":"PublicTenderDocuments","data":{"properties":{"data":{"items":{"$ref":"#/components/schemas/PublicTenderDocument"},"type":"array","title":"Data","description":"The tender's source documents (the customer's original uploads)."}},"additionalProperties":false,"type":"object","title":"PublicTenderDocuments","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Response body of "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /tenders/{tender_id}/documents"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A wrapper object (rather than a bare array) so the shape can grow without a"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"breaking change. The document set per tender is small and unpaginated."},"children":[]}]}]}],"example":{"data":[{"content_type":"application/xml","created_at":"2026-07-08T09:14:00Z","download_url":"https://s3.fra1.example.com/mercura/files/b3f1c2a4-9d6e-4f21-8a0c-2e5d7f9a1b34_LV_Tiefgarage_Beleuchtung.gaeb?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=3600&X-Amz-Signature=…","download_url_expires_at":"2026-07-08T10:14:00Z","filename":"LV_Tiefgarage_Beleuchtung.gaeb","id":"b3f1c2a4-9d6e-4f21-8a0c-2e5d7f9a1b34","size_bytes":284913}]}}},"components/schemas/PublicTenderEvent":{"id":"components/schemas/PublicTenderEvent","kind":"json-schema","title":"PublicTenderEvent","data":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Mercura's id for the recorded event."},"event_type":{"type":"string","title":"Event Type","description":"Normalised partner event token (e.g. WON / LOST / CANCELLED)."},"status_label":{"title":"Status Label","description":"The partner's verbatim status label.","type":["string","null"]},"message":{"title":"Message","description":"Free-text note about the event.","type":["string","null"]},"metadata":{"title":"Metadata","description":"Optional extra references the partner echoed back.","additionalProperties":true,"type":["object","null"]},"external_event_id":{"title":"External Event Id","description":"The partner's own id for this event, when provided.","type":["string","null"]},"occurred_at":{"title":"Occurred At","description":"When the event happened in the partner system.","format":"date-time","type":["string","null"]},"recorded_at":{"type":"string","format":"date-time","title":"Recorded At","description":"When Mercura recorded the event (server receipt time)."}},"additionalProperties":false,"type":"object","required":["id","event_type","recorded_at"],"title":"PublicTenderEvent","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"One lifecycle event a partner reported for a tender."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Response body of "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /tenders/{tender_id}/events"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"event_type"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"normalised token (e.g. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"WON"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"); "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status_label"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" the partner's verbatim"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"label; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"recorded_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" the server receipt time."},"children":[]}]}]}]}},"components/schemas/PublicTenderEventCreate":{"id":"components/schemas/PublicTenderEventCreate","kind":"json-schema","title":"PublicTenderEventCreate","data":{"properties":{"event_type":{"type":"string","maxLength":64,"pattern":"^[A-Z][A-Z0-9_]{0,63}$","title":"Event Type","description":"Normalised event token: uppercase letters, digits, underscores (e.g. WON, LOST, CANCELLED)."},"status_label":{"title":"Status Label","description":"The partner's verbatim status label, e.g. 'Closed Won'.","maxLength":255,"type":["string","null"]},"message":{"title":"Message","description":"Optional free-text note about the event.","maxLength":10000,"type":["string","null"]},"metadata":{"title":"Metadata","description":"Optional extra references / raw payload the partner echoed back for traceability.","additionalProperties":true,"type":["object","null"]},"external_event_id":{"title":"External Event Id","description":"The partner's own id for this event; supplying it makes retries idempotent.","maxLength":255,"type":["string","null"]},"occurred_at":{"title":"Occurred At","description":"When the event happened in the partner system (defaults to unreported).","format":"date-time","type":["string","null"]}},"additionalProperties":false,"type":"object","required":["event_type"],"title":"PublicTenderEventCreate","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Body of "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /tenders/{tender_id}/events"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Append-only and recording-only: recording an event never changes the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"tender's lifecycle status. Supply "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"external_event_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" to make retries"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"idempotent — an identical replay returns the stored event, a conflicting"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"reuse of the id is rejected."},"children":[]}]}]}]}},"components/schemas/PublicTenderGaebPositionType":{"id":"components/schemas/PublicTenderGaebPositionType","kind":"json-schema","title":"PublicTenderGaebPositionType","data":{"type":"string","enum":["BASE","OPTIONAL_WITH_TOTAL","OPTIONAL_WITHOUT_TOTAL","ALTERNATIVE"],"title":"PublicTenderGaebPositionType","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"GAEB Positionsart, from "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Position.gaeb_position_type"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (or null)."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"BASE"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — Grundposition; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"OPTIONAL_WITH_TOTAL"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — Bedarfsposition mit"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Gesamtbetrag; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"OPTIONAL_WITHOUT_TOTAL"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — Bedarfsposition ohne"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Gesamtbetrag; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"ALTERNATIVE"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — Wahlposition. Read-only."},"children":[]}]}]}]}},"components/schemas/PublicTenderLabel":{"id":"components/schemas/PublicTenderLabel","kind":"json-schema","title":"PublicTenderLabel","data":{"properties":{"text":{"type":"string","title":"Text","description":"Label display text (org-defined for CUSTOM labels)."},"type":{"$ref":"#/components/schemas/PublicTenderLabelType"}},"additionalProperties":false,"type":"object","required":["text","type"],"title":"PublicTenderLabel","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"One label on a line — "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"{text, type}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Read-only in this release."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A line can carry several. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"text"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is the label's display text (for CUSTOM"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"labels this is the org-defined name)."},"children":[]}]}]}]}},"components/schemas/PublicTenderLabelType":{"id":"components/schemas/PublicTenderLabelType","kind":"json-schema","title":"PublicTenderLabelType","data":{"type":"string","enum":["CUSTOM","ALTERNATIVE","ACCESSORY","PARTS_LIST"],"title":"PublicTenderLabelType","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Role overlay on a line, from "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"ArticleLabel.type"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"CUSTOM"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" labels carry a meaningful org-defined "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"text"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (product groups,"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"\"Bestellware\", …); the others are structural roles."},"children":[]}]}]}]}},"components/schemas/PublicTenderLineType":{"id":"components/schemas/PublicTenderLineType","kind":"json-schema","title":"PublicTenderLineType","data":{"type":"string","enum":["ARTICLE","TEXT","DIVERSE"],"title":"PublicTenderLineType","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"What a line "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"is"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", from "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Selection.item_type"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"ARTICLE"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — matched to a catalogue article; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"TEXT"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — a free-text line;"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"DIVERSE"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — a priced free-text / lump-sum (\"Pauschal\") line."},"children":[]}]}]}]}},"components/schemas/PublicTenderOut":{"id":"components/schemas/PublicTenderOut","kind":"json-schema","title":"PublicTenderOut","data":{"properties":{"id":{"type":"string","title":"Id","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Public id; equals "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"request_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for a tender."},"children":[]}]}]}]},"request_id":{"type":"string","title":"Request Id","description":"Mercura request id backing this tender."},"status":{"$ref":"#/components/schemas/PublicTenderStatus"},"completed_at":{"title":"Completed At","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"When the tender was last completed (offer exported / sent). Refreshed on every completion; null if never completed. Use it with the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /tenders?completed_since=…"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" completion feed."},"children":[]}]}]}],"format":"date-time","type":["string","null"]},"customer_id":{"title":"Customer Id","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Customer reference only — resolve full details via "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /customers/{customer_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Null when the tender has no customer."},"children":[]}]}]}],"type":["string","null"]},"indirect_customer_id":{"title":"Indirect Customer Id","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Indirect-customer reference (Mercura's "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"indirekter Kunde"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") — resolve full details via "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /customers/{customer_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Distinct from "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"customer_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (the direct customer / Sold-To). Null when the tender has no indirect customer."},"children":[]}]}]}],"type":["string","null"]},"project_id":{"title":"Project Id","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Project reference only — resolve full details via "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /projects/{project_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Null when the tender has no project."},"children":[]}]}]}],"type":["string","null"]},"project_name":{"title":"Project Name","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The project's display name, surfaced inline for convenience (same value as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"name"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" on "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /projects/{project_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Null when the tender has no project. Read-only."},"children":[]}]}]}],"type":["string","null"]},"submission_date":{"title":"Submission Date","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Bid-submission date (Submissions-/Abgabetermin) as originally supplied on the project — an ISO date or free text; null when unknown. This is the tender's submission deadline, "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" an offer-validity (\"gültig bis\") date."},"children":[]}]}]}],"type":["string","null"]},"deadline":{"title":"Deadline","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Mercura's internal handling deadline for this request (typically the submission date minus a buffer) — an ISO date or free text; null when unset. Informational only; "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" the submission deadline and "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" an offer-validity date."},"children":[]}]}]}],"type":["string","null"]},"user_email":{"title":"User Email","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Email of the Mercura user "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"responsible"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for this tender (its Bearbeiter / Sachbearbeiter) — not necessarily the user who triggered the export. Null when no responsible user is assigned."},"children":[]}]}]}],"type":["string","null"]},"branch":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The primary Mercura branch (Niederlassung) assigned to this tender ({id, name}), or null when none is assigned. Read-only."},"children":[]}]}]}],"$ref":"#/components/schemas/PublicTenderBranch"},"request_custom_fields":{"title":"Request Custom Fields","description":"Organisation-defined custom fields on the request, keyed by display label. Null when none.","additionalProperties":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"},{"type":"boolean"},{"items":{"type":"string"},"type":"array"}]},"type":["object","null"]},"user_custom_fields":{"title":"User Custom Fields","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Organisation-defined custom fields on the responsible Mercura user (the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"user_email"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" above), keyed by display label — e.g. a user's "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"SGI"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Null when the tender has no responsible user or the user has no custom fields."},"children":[]}]}]}],"additionalProperties":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"},{"type":"boolean"},{"items":{"type":"string"},"type":"array"}]},"type":["object","null"]},"chapters":{"items":{"$ref":"#/components/schemas/PublicTenderChapter"},"type":"array","title":"Chapters"},"totals":{"$ref":"#/components/schemas/PublicTenderTotals"},"erp_offer_id":{"title":"Erp Offer Id","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The partner-side ERP offer id, when known — from your acknowledgement's "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"external_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" or a previous Mercura-managed export; otherwise null."},"children":[]}]}]}],"type":["string","null"]},"acknowledgement":{"description":"Your last reported ERP/CRM import outcome for this tender, or null if none yet.","$ref":"#/components/schemas/PublicTenderAcknowledgement"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"additionalProperties":false,"type":"object","required":["id","request_id","status","totals","created_at","updated_at"],"title":"PublicTenderOut","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"One tender in a list / get-by-id response (request-keyed: "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"id == request_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"example":{"acknowledgement":{"acknowledged_at":"2026-07-09T12:00:12Z","external_id":"AB-2026-5567","message":"Angebot in ERP angelegt.","metadata":{"erp_document":"AB-2026-5567","warehouse":"Z-100"},"status":"SUCCESS"},"branch":{"id":"7","name":"Niederlassung München"},"chapters":[{"chapter_number":"01","chapters":[{"chapter_number":"01.02","chapters":[],"id":"5503","is_pretext":false,"name":"Beleuchtung Tiefgarage","positions":[{"article_number":"LEU-1500-50-840","chapter_id":"5503","chapter_number":"01.02","custom_attributes":{"article_type":"YHAW","sales_unit":"Stk"},"description":"LED-Feuchtraumleuchte 1500 mm 50 W 4000 K IP65","discount_percentage":"15.00","gaeb_position_type":"BASE","id":"840210","is_counted_in_total":true,"is_deleted":false,"labels":[],"line_gross":"4315.20","line_net":"3668.16","line_type":"ARTICLE","list_price":"89.90","manufacturer":"Lumenflex GmbH","manufacturer_article_number":"LM-DP1500-50","name":"LED-Feuchtraumleuchte 1500 mm 50 W","net_price":"76.42","position_number":"01.02.10","quantity":48,"unit":"Stk"},{"article_number":"LEU-1200-30-840","chapter_id":"5503","chapter_number":"01.02","custom_attributes":{"article_type":"YHAW","sales_unit":"Stk"},"description":"LED-Feuchtraumleuchte 1200 mm 30 W 4000 K IP65","discount_percentage":"15.00","gaeb_position_type":"BASE","id":"840215","is_counted_in_total":true,"is_deleted":false,"labels":[],"line_gross":"1677.60","line_net":"1426.08","line_type":"ARTICLE","list_price":"69.90","manufacturer":"Lumenflex GmbH","manufacturer_article_number":"LM-DP1200-30","name":"LED-Feuchtraumleuchte 1200 mm 30 W","net_price":"59.42","position_number":"01.02.15","quantity":24,"unit":"Stk"},{"article_number":"LEU-1500-40-840","chapter_id":"5503","chapter_number":"01.02","custom_attributes":{"article_type":"YHAW","sales_unit":"Stk"},"description":"LED-Feuchtraumleuchte 1500 mm 40 W 4000 K IP65 (Alternativ)","discount_percentage":"15.00","gaeb_position_type":"ALTERNATIVE","id":"840220","is_counted_in_total":false,"is_deleted":false,"labels":[{"text":"Alternativposition","type":"ALTERNATIVE"}],"line_gross":"3835.20","line_net":"3260.16","line_type":"ARTICLE","list_price":"79.90","manufacturer":"Lumenflex GmbH","manufacturer_article_number":"LM-DP1500-40","name":"LED-Feuchtraumleuchte 1500 mm 40 W","net_price":"67.92","position_number":"01.02.20","quantity":48,"unit":"Stk"},{"chapter_id":"5503","chapter_number":"01.02","description":"Alle Leuchten inkl. Befestigungsmaterial liefern und montagefertig anschließen.","id":"840290","is_counted_in_total":true,"is_deleted":false,"labels":[],"line_type":"TEXT","position_number":"01.02.90"}]}],"id":"5502","is_pretext":false,"name":"Elektroinstallation","positions":[]}],"completed_at":"2026-07-09T11:59:58Z","created_at":"2026-07-08T09:14:00Z","customer_id":"K-10042","deadline":"2026-08-13","erp_offer_id":"AB-2026-5567","id":"12345","indirect_customer_id":"K-20099","project_id":"90","project_name":"Neubau Bürogebäude Nord","request_custom_fields":{"Angebots-Nr":"AN-2026-0042"},"request_id":"12345","status":"DONE","submission_date":"2026-08-20","totals":{"additional_discount_percentage":"3.00","gross_total":"5992.80","net_total":"4941.41","positions_subtotal":"5094.24"},"updated_at":"2026-07-09T12:00:12Z","user_custom_fields":{"SGI":"12345"},"user_email":"anna.schmidt@example.com"}}},"components/schemas/PublicTenderPosition":{"id":"components/schemas/PublicTenderPosition","kind":"json-schema","title":"PublicTenderPosition","data":{"properties":{"id":{"type":"string","title":"Id","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Opaque, re-match-stable line handle. Pass it back in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"PATCH /tenders/{tender_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" to edit this line; re-fetch on a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"404"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"/"},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"412"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (a document reprocess recreates lines)."},"children":[]}]}]}]},"position_number":{"type":"string","title":"Position Number","description":"GAEB display number (e.g. '01.10'). Read-only."},"chapter_id":{"type":"string","title":"Chapter Id","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Handle of the chapter this line sits in — the same value as the enclosing chapter's "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", repeated here so an ERP that stores a flat line list can keep the chapter reference without walking the nesting. Read-only."},"children":[]}]}]}]},"chapter_number":{"type":"string","title":"Chapter Number","description":"GAEB number of the chapter this line sits in (e.g. '01.02'); empty when the chapter carries none. Read-only.","default":""},"line_type":{"$ref":"#/components/schemas/PublicTenderLineType","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"ARTICLE | TEXT | DIVERSE. Read-only."},"children":[]}]}]}]},"labels":{"items":{"$ref":"#/components/schemas/PublicTenderLabel"},"type":"array","title":"Labels","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Role/label overlay ({text, type}); several possible. Read-only."},"children":[]}]}]}]},"gaeb_position_type":{"description":"GAEB Positionsart, or null when the source LV carried none. Read-only.","$ref":"#/components/schemas/PublicTenderGaebPositionType"},"article_number":{"title":"Article Number","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Catalogue article number for an ARTICLE line; required to "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"add"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" one."},"children":[]}]}]}],"type":["string","null"]},"parent_line_id":{"title":"Parent Line Id","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Set on an "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"article-note"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" line: the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" of the line this note annotates (both sit on the same position). Null on every other line. Pass it back on an add to attach a note — see "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"PublicTenderPositionUpdate.parent_line_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"type":["string","null"]},"manufacturer_article_number":{"title":"Manufacturer Article Number","description":"Supplier/manufacturer article number (Lieferantenartikelnummer) as stored on the line; null when the line carries none. Read-only.","type":["string","null"]},"manufacturer":{"title":"Manufacturer","description":"Manufacturer / supplier name (Hersteller/Lieferant) from the matched article, or null for a free-text line. Read-only.","type":["string","null"]},"name":{"title":"Name","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The matched article's name — the article text maintained in Mercura (the title shown in the UI). Null for a free-text line. Read-only."},"children":[]}]}]}],"type":["string","null"]},"description":{"type":"string","title":"Description","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Line description: the matched article's own "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"description"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" field, or the free-text for a text/DIVERSE line. Distinct from "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"name"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (the article title)."},"children":[]}]}]}],"default":""},"additional_text":{"title":"Additional Text","description":"Optional long-form note (Zusatztext), or null.","type":["string","null"]},"quantity":{"title":"Quantity","type":["number","null"]},"unit":{"title":"Unit","type":["string","null"]},"custom_attributes":{"title":"Custom Attributes","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The matched article's catalogue custom attributes — same shape as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /articles/{id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"'s "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"custom_attributes"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (e.g. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"sales_unit"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and other source-system unit/extra fields). Null for a free-text line. Read-only."},"children":[]}]}]}],"additionalProperties":true,"type":["object","null"]},"list_price":{"title":"List Price","description":"Per-unit list price (Brutto/gross), EUR.","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","type":["string","null"]},"discount_percentage":{"title":"Discount Percentage","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Per-line manual discount percentage (0–100) on top of "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"list_price"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","type":["string","null"]},"net_price":{"title":"Net Price","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Per-unit net price, EUR ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Selection.net_price_ea"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","type":["string","null"]},"line_net":{"title":"Line Net","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"net_price * quantity"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", 2 dp. Read-only (derived)."},"children":[]}]}]}],"pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","type":["string","null"]},"line_gross":{"title":"Line Gross","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"list_price * quantity"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", 2 dp. Read-only (derived)."},"children":[]}]}]}],"pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","type":["string","null"]},"is_counted_in_total":{"type":"boolean","title":"Is Counted In Total","description":"False for lines excluded from the totals (alternatives, Bedarf ohne GP). Read-only.","default":true},"partner_pricing_override_at":{"title":"Partner Pricing Override At","description":"UTC time a partner last overrode this line's price via PATCH, or null. Read-only.","format":"date-time","type":["string","null"]},"is_deleted":{"type":"boolean","title":"Is Deleted","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"True when "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"this line"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" was removed from the tender — either the article was taken off the position, or the whole position went away (then every line of it is flagged). Only ever true in a response fetched with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"include_deleted=true"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Deleted lines never count toward "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"totals"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Read-only."},"children":[]}]}]}],"default":false},"deleted_at":{"title":"Deleted At","description":"UTC time this line was removed, or null while it is live (also null on a legacy row deleted before removal times were recorded). Read-only.","format":"date-time","type":["string","null"]}},"additionalProperties":false,"type":"object","required":["id","position_number","chapter_id","line_type"],"title":"PublicTenderPosition","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"One priced line of a tender (one per "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Selection"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is the opaque, re-match-stable handle you pass back in"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"PATCH /tenders/{tender_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" to edit this line. A GAEB position that"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"carries several selections (a main article plus alternatives / accessories /"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"notes) produces several lines that share a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"position_number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" but have"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"distinct "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"s."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Lines "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"removed"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" from the tender are omitted by default and returned"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"flagged ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"is_deleted"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"deleted_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") when the request asks for them via"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"include_deleted=true"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — one flagged line per removed article, so an ERP"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"keyed per article learns about a single article taken off an otherwise"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"unchanged position. The ordinal number itself is gone exactly when "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"all"},"children":[]}]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"lines sharing its "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"position_number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" come back flagged."},"children":[]}]}]}]}},"components/schemas/PublicTenderPositionUpdate":{"id":"components/schemas/PublicTenderPositionUpdate","kind":"json-schema","title":"PublicTenderPositionUpdate","data":{"properties":{"id":{"title":"Id","description":"Line handle from GET (edit/delete); omit to add a line.","type":["string","null"]},"op":{"title":"Op","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Set to "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"delete"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") to remove this line (soft-delete). Omit to edit/add."},"children":[]}]}]}],"const":"delete","type":["string","null"]},"position_number":{"title":"Position Number","description":"Only used when adding a line; ignored on edit (a line's number is read-only).","type":["string","null"]},"article_number":{"title":"Article Number","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Required to add an ARTICLE line. On an "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"edit"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" it moves the line to that catalogue article (e.g. an availability-driven swap): the article's own fields ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"description"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"name"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"manufacturer"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"manufacturer_article_number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"custom_attributes"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") follow automatically, so send only the number. A number equal to the line's current one is a no-op, so a full-document resend is safe. Because every stored price belongs to the "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"previous"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" article, a swap must carry a price ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"list_price"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"net_price"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" or "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"discount_percentage"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") — otherwise the edit is rejected — and the line's pricing is "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"reset to exactly what you send"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": any price field you omit is cleared rather than carried over, and the replaced article's catalogue discount is dropped, so a percentage you send applies to the list price you send. Mercura does not re-derive catalogue prices for the new article here. Only ARTICLE lines can be swapped."},"children":[]}]}]}],"type":["string","null"]},"parent_line_id":{"title":"Parent Line Id","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Add (or replace) an "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"article note"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" on the line with this "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": the note becomes a text line on the parent's position, so its "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"description"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" reaches the offer PDF, the GAEB export and the ERP payload (as the parent line's remark / Bemerkung) — unlike "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"additional_text"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", which no Mercura-side output reads. "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Upsert"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — re-sending for the same parent overwrites that parent's existing note rather than adding a second one, so a retried PATCH is safe. Add-only: send it without "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and without "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"article_number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", together with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"description"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; ignored on an edit ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" present) so a GET body round-trips."},"children":[]}]}]}],"type":["string","null"]},"description":{"title":"Description","description":"Free-text line description.","maxLength":10000,"type":["string","null"]},"additional_text":{"title":"Additional Text","description":"Zusatztext; empty string clears it.","type":["string","null"]},"quantity":{"title":"Quantity","minimum":0,"type":["number","null"]},"unit":{"title":"Unit","maxLength":50,"type":["string","null"]},"list_price":{"anyOf":[{"type":"number","minimum":0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"List Price","description":"Per-unit list price (Brutto), EUR."},"discount_percentage":{"anyOf":[{"type":"number","maximum":100,"minimum":0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Discount Percentage","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"0–100; manual discount applied on top of any catalogue discount (on the net-of-catalogue base, as in the UI), not off raw list_price. Mutually exclusive with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"net_price"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; send "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"net_price"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" to pin an exact net."},"children":[]}]}]}]},"net_price":{"anyOf":[{"type":"number","minimum":0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Net Price","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Exact per-unit net price, EUR; xor "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"discount_percentage"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},"line_type":{"description":"Ignored on write (inferred).","$ref":"#/components/schemas/PublicTenderLineType"},"labels":{"title":"Labels","description":"Ignored on write (read-only).","items":{"$ref":"#/components/schemas/PublicTenderLabel"},"type":["array","null"]},"gaeb_position_type":{"description":"Ignored on write.","$ref":"#/components/schemas/PublicTenderGaebPositionType"},"chapter_id":{"title":"Chapter Id","description":"Ignored on write (read-only).","type":["string","null"]},"chapter_number":{"title":"Chapter Number","description":"Ignored on write (read-only).","type":["string","null"]},"manufacturer_article_number":{"title":"Manufacturer Article Number","description":"Ignored on write.","type":["string","null"]},"manufacturer":{"title":"Manufacturer","description":"Ignored on write (read-only).","type":["string","null"]},"name":{"title":"Name","description":"Ignored on write (read-only, article-derived).","type":["string","null"]},"custom_attributes":{"title":"Custom Attributes","description":"Ignored on write (read-only).","additionalProperties":true,"type":["object","null"]},"line_net":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Line Net","description":"Ignored on write (derived)."},"line_gross":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Line Gross","description":"Ignored on write (derived)."},"is_counted_in_total":{"title":"Is Counted In Total","description":"Ignored on write (derived).","type":["boolean","null"]},"partner_pricing_override_at":{"title":"Partner Pricing Override At","description":"Ignored on write (provenance).","format":"date-time","type":["string","null"]},"is_deleted":{"title":"Is Deleted","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Ignored on write (read-only). A line echoed back with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"true"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is skipped rather than rejected, so a document fetched with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"include_deleted=true"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" round-trips through PATCH; use "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"op: \"delete\""},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" to remove a live line."},"children":[]}]}]}],"type":["boolean","null"]},"deleted_at":{"title":"Deleted At","description":"Ignored on write (read-only).","format":"date-time","type":["string","null"]}},"additionalProperties":false,"type":"object","title":"PublicTenderPositionUpdate","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"One line in a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"PATCH /tenders/{tender_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" body."},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"*"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Edit"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — send "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (from GET) plus the fields to change."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Add article line"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — omit "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and send "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"article_number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (resolved"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"against your catalogue; deterministic, no matching)."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Add free-text line"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — omit "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"article_number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and send"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"description"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Add / replace an article note"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — omit "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and send "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"parent_line_id"},"children":[]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"+"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"description"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". The note attaches to the parent line's existing position"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"(no new position, no own position number) and is an "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"upsert"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": re-sending"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"for the same parent replaces its note instead of adding a second one."},"children":[]}]}]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Price resolution per line: "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"list_price"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (Brutto) is the anchor; then "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"at"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"most one"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" of "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"discount_percentage"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"net_price"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" resolves the other"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"(both ⇒ "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"400"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Read-only fields are declared so a round-tripped GET body"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"validates, but are ignored."},"children":[]}]}]}]}},"components/schemas/PublicTenderStatus":{"id":"components/schemas/PublicTenderStatus","kind":"json-schema","title":"PublicTenderStatus","data":{"type":"string","enum":["NEW","IN_PROGRESS","DONE","CANCELLED","PARSING","PARSING_FAILED"],"title":"PublicTenderStatus","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Lifecycle state of a tender (open enum — new values are SemVer MINOR)."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A translated subset of the internal "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"RequestStatus"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". The mapping lives in"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"tenders.service._TENDER_STATUS_MAP"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and a test asserts it covers every"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"internal value."},"children":[]}]}]}]}},"components/schemas/PublicTenderTotals":{"id":"components/schemas/PublicTenderTotals","kind":"json-schema","title":"PublicTenderTotals","data":{"properties":{"positions_subtotal":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Positions Subtotal","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Sum of "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"line_net"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" across counted lines (excl. alternatives / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"OPTIONAL_WITHOUT_TOTAL"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), EUR. Derived helper — may differ from "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"net_total"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},"additional_discount_percentage":{"title":"Additional Discount Percentage","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Header-level discount on top of position prices, 0–100."},"children":[]}]}]}],"pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","type":["string","null"]},"net_total":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Net Total","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Authoritative final net (after the header discount), EUR — matches the PDF."},"children":[]}]}]}]},"gross_total":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Gross Total","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Authoritative gross total, EUR — matches the PDF."},"children":[]}]}]}]},"partner_totals_override_at":{"title":"Partner Totals Override At","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"UTC time a partner last overrode "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"net_total"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"/"},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"gross_total"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" via PATCH, or null. Read-only."},"children":[]}]}]}],"format":"date-time","type":["string","null"]}},"additionalProperties":false,"type":"object","required":["positions_subtotal","net_total","gross_total"],"title":"PublicTenderTotals","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Aggregate amounts for the tender, all in EUR."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"positions_subtotal"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is a "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"derived helper"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": the sum of "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"line_net"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" across"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"lines with "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"is_counted_in_total = true"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (i.e. excluding alternatives and"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Bedarfspositionen ohne Gesamtbetrag / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"OPTIONAL_WITHOUT_TOTAL"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"net_total"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"gross_total"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" are the "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"authoritative"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" request totals — the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"same figures Mercura prints on the PDF — preferring the request-level persisted"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"values (which a partner can override via PATCH — see"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"PublicTenderTotalsUpdate"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") and otherwise falling back to the line sums."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The two can legitimately differ: "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"net_total"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"after"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" the header"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"additional_discount_percentage"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"positions_subtotal"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is before it), and"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Mercura's persisted total may include optional positions or other adjustments"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"that the counted-line subtotal omits. Treat "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"net_total"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" as the source of"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"truth for the amount owed and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"positions_subtotal"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" as an informational sum."},"children":[]}]}]}]}},"components/schemas/PublicTenderTotalsUpdate":{"id":"components/schemas/PublicTenderTotalsUpdate","kind":"json-schema","title":"PublicTenderTotalsUpdate","data":{"properties":{"additional_discount_percentage":{"anyOf":[{"type":"number","maximum":100,"minimum":0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Additional Discount Percentage"},"net_total":{"anyOf":[{"type":"number","minimum":0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Net Total","description":"Partner's authoritative net total, EUR."},"gross_total":{"anyOf":[{"type":"number","minimum":0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Gross Total","description":"Partner's authoritative gross total, EUR."},"positions_subtotal":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Positions Subtotal","description":"Ignored on write (derived)."},"partner_totals_override_at":{"title":"Partner Totals Override At","description":"Ignored on write (provenance).","format":"date-time","type":["string","null"]}},"additionalProperties":false,"type":"object","title":"PublicTenderTotalsUpdate","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Writable summary. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"net_total"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"gross_total"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" persist as the partner's"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"authoritative amounts and win over the server recalculation — they may"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"intentionally diverge from the line sums (freight, rounding, surcharges)."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"positions_subtotal"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is declared for round-trip but ignored (derived)."},"children":[]}]}]}]}},"components/schemas/PublicTenderUpdate":{"id":"components/schemas/PublicTenderUpdate","kind":"json-schema","title":"PublicTenderUpdate","data":{"properties":{"totals":{"description":"Optional summary-total overrides (net/gross totals, header discount).","$ref":"#/components/schemas/PublicTenderTotalsUpdate"},"positions":{"items":{"$ref":"#/components/schemas/PublicTenderPositionUpdate"},"type":"array","title":"Positions","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Sparse edits/deletes addressed by line "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (no chapter path). Adds must use "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"chapters"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", except an article note ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"parent_line_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"), which is accepted here."},"children":[]}]}]}]},"chapters":{"items":{"$ref":"#/components/schemas/PublicTenderChapterUpdate"},"type":"array","title":"Chapters"},"erp_offer_id":{"title":"Erp Offer Id","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Your ERP's id for the offer created from this tender. "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Set-only"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": a value is written and kept, "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (or omitting the key) leaves the stored id untouched so a full GET body round-trips, and there is no way to clear it — send a new value to replace it. The same field is set by an acknowledgement's "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"external_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; use whichever fits your flow (the acknowledgement additionally records the import outcome)."},"children":[]}]}]}],"maxLength":255,"minLength":1,"type":["string","null"]},"request_custom_fields":{"title":"Request Custom Fields","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Label-keyed REQUEST custom-field values to shallow-merge onto the tender's underlying request. Keys are the organisation's custom-column labels; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"multi_select"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" values are option labels. A "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"value"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" clears that field; sending the whole object as "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"null"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (or omitting it) is a no-op, so a full GET body round-trips. Unknown labels or option labels are a 400. Symmetric with the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"request_custom_fields"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" you read on GET."},"children":[]}]}]}],"additionalProperties":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"},{"type":"boolean"},{"items":{"type":"string"},"type":"array"},{"type":"null"}]},"type":["object","null"]},"status":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Lifecycle status. The only writable transition is to "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"CANCELLED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — use it to close a tender that was resolved outside Mercura (e.g. its case was closed in your CRM), so it leaves the open inbox. Sending the tender's "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"current"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" status is a no-op, so a full GET body still round-trips. Any other target is a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"400"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"; cancelling a tender that is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"PARSING"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" or already "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"DONE"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"409"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"$ref":"#/components/schemas/PublicTenderStatus"},"id":{"title":"Id","description":"Ignored on write.","type":["string","null"]},"request_id":{"title":"Request Id","description":"Ignored on write.","type":["string","null"]},"completed_at":{"title":"Completed At","description":"Ignored on write.","format":"date-time","type":["string","null"]},"customer_id":{"title":"Customer Id","description":"Ignored on write.","type":["string","null"]},"indirect_customer_id":{"title":"Indirect Customer Id","description":"Ignored on write (read-only).","type":["string","null"]},"project_id":{"title":"Project Id","description":"Ignored on write.","type":["string","null"]},"project_name":{"title":"Project Name","description":"Ignored on write (read-only).","type":["string","null"]},"submission_date":{"title":"Submission Date","description":"Ignored on write (read-only).","type":["string","null"]},"deadline":{"title":"Deadline","description":"Ignored on write (read-only).","type":["string","null"]},"user_email":{"title":"User Email","description":"Ignored on write.","type":["string","null"]},"branch":{"title":"Branch","description":"Ignored on write (read-only).","additionalProperties":true,"type":["object","null"]},"user_custom_fields":{"title":"User Custom Fields","description":"Ignored on write (read-only).","additionalProperties":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"},{"type":"boolean"},{"items":{"type":"string"},"type":"array"}]},"type":["object","null"]},"acknowledgement":{"title":"Acknowledgement","description":"Ignored on write.","additionalProperties":true,"type":["object","null"]},"created_at":{"title":"Created At","description":"Ignored on write.","format":"date-time","type":["string","null"]},"updated_at":{"title":"Updated At","description":"Ignored on write.","format":"date-time","type":["string","null"]}},"additionalProperties":false,"type":"object","title":"PublicTenderUpdate","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Body of "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"PATCH /tenders/{tender_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — a partial, in-place edit."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Two ways to address lines, freely combined:"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"*"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Top-level "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"positions[]"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — the ergonomic "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"sparse"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" path and the"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"recommended contract for ERP sync: each entry edits or deletes an existing"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"line "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"by "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"id"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (line ids are unique within a tender, so no chapter path"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"is needed). Send only the lines you changed."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"chapters[]"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — the nested tree. Required to "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"add"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" a line (the target"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"chapter matters); edits/deletes are also accepted here so a GET body"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"round-trips. Omitted lines/chapters are left untouched. An "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"article note"},"children":[]}]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"parent_line_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") is the one add that needs no chapter path — the parent"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"line names its position — so it may go in either list."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Optionally send "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"totals"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" overrides (incl. the header discount), label-keyed"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"request_custom_fields"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", or "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status: \"CANCELLED\""},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" to close a tender that"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"was resolved outside Mercura. The full read body ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"PublicTenderOut"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") is"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"accepted verbatim — extra read-only fields are tolerated, unknown keys are"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"400"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"example":{"erp_offer_id":"SAP-4500012345","positions":[{"id":"840210","net_price":"74.90"},{"article_number":"LEU-1200-30-830","id":"840215","net_price":"71.10"},{"id":"840290","op":"delete"}],"totals":{"additional_discount_percentage":"3.00"}}}},"components/schemas/PublicUnitConversionIn":{"id":"components/schemas/PublicUnitConversionIn","kind":"json-schema","title":"PublicUnitConversionIn","data":{"properties":{"article_number":{"type":"string","maxLength":255,"minLength":1,"pattern":"^[A-Za-z0-9._\\-]{1,255}$","title":"Article Number","description":"Article the conversion applies to."},"alternative_unit":{"type":"string","maxLength":50,"minLength":1,"title":"Alternative Unit","description":"The alternative unit code, e.g. 'CTN', 'KG'."},"numerator":{"type":"number","exclusiveMinimum":0,"title":"Numerator","description":"Ratio numerator: base-unit quantity per one alternative unit."},"denominator":{"type":"number","exclusiveMinimum":0,"title":"Denominator","description":"Ratio denominator (usually 1)."}},"additionalProperties":false,"type":"object","required":["article_number","alternative_unit","numerator","denominator"],"title":"PublicUnitConversionIn","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"One unit-conversion rule in a bulk-write payload."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The article must already exist for your organisation; a row whose"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"article is unknown is skipped (counted in the job's "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"skipped_count"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"),"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"not an error."},"children":[]}]}]}]}},"components/schemas/PublicUnitConversionOut":{"id":"components/schemas/PublicUnitConversionOut","kind":"json-schema","title":"PublicUnitConversionOut","data":{"properties":{"id":{"type":"integer","title":"Id","description":"Internal unit-conversion id."},"article_number":{"type":"string","title":"Article Number"},"alternative_unit":{"type":"string","title":"Alternative Unit"},"numerator":{"type":"number","title":"Numerator"},"denominator":{"type":"number","title":"Denominator"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"additionalProperties":false,"type":"object","required":["id","article_number","alternative_unit","numerator","denominator","created_at","updated_at"],"title":"PublicUnitConversionOut","description":"One unit-conversion rule in a list response."}},"components/schemas/PublicUserOut":{"id":"components/schemas/PublicUserOut","kind":"json-schema","title":"PublicUserOut","data":{"properties":{"id":{"type":"string","title":"Id","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Mercura user id (stable UUID). This is the id used across the API to reference the user; pass it to "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /users/{user_id}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},"email":{"type":"string","title":"Email","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The user's login email — matches the tender's "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"user_email"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},"name":{"type":"string","title":"Name"},"external_id":{"title":"External Id","description":"External / employee id from your HR or ERP system, when set on the user.","type":["string","null"]},"role":{"title":"Role","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The user's role within the organisation (e.g. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"ADMIN"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"MANAGER"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"MEMBER"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"type":["string","null"]},"language":{"type":"string","title":"Language","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The user's UI language as an upper-case ISO 639-1 code (e.g. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"DE"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"EN"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}]},"is_active":{"type":"boolean","title":"Is Active","description":"Whether the user is active in Mercura."},"custom_fields":{"title":"Custom Fields","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Organisation-defined custom fields, keyed by the field's display "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"label"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (e.g. an ERP/SAP id used for offer creation). Columns with no active definition are omitted; null when the user carries none. On duplicate labels the field defined first (by display order, then creation time) wins."},"children":[]}]}]}],"additionalProperties":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"},{"type":"boolean"},{"items":{"type":"string"},"type":"array"}]},"type":["object","null"]},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"additionalProperties":false,"type":"object","required":["id","email","name","language","is_active","created_at","updated_at"],"title":"PublicUserOut","description":"One user in a lookup / get-by-id response.","example":{"created_at":"2026-01-05T08:00:00Z","custom_fields":{"SAP-Benutzer":"SAP0042"},"email":"anna.schmidt@example.com","external_id":"MA-1042","id":"3f8b6d21-9a4c-4e77-b0e2-1c5d8a9f4e10","is_active":true,"language":"DE","name":"Anna Schmidt","role":"MEMBER","updated_at":"2026-06-30T16:45:00Z"}}},"components/schemas/ValidationError":{"id":"components/schemas/ValidationError","kind":"json-schema","title":"ValidationError","data":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}},"schema_44":{"kind":"json-schema","data":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Bearer <mrc_live_…> API key"},"children":[]}]}]}],"title":"Authorization","type":["string","null"]},"id":"schema_44"},"schema_45":{"kind":"json-schema","data":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Optional client-supplied key for safe retries; <= 255 chars"},"children":[]}]}]}],"title":"Idempotency-Key","type":["string","null"]},"id":"schema_45"},"schema_46":{"kind":"json-schema","data":{"description":"Opaque cursor from prior page","title":"Cursor","type":["string","null"]},"id":"schema_46"},"schema_47":{"kind":"json-schema","data":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"ISO-8601 lower bound on "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"updated_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Applied only on the first page; the cursor is a strict super-set thereafter."},"children":[]}]}]}],"title":"Modified Since","format":"date-time","type":["string","null"]},"id":"schema_47"},"schema_48":{"kind":"json-schema","data":{"title":"Limit","maximum":500,"minimum":1,"type":["integer","null"]},"id":"schema_48"},"schema_49":{"kind":"json-schema","data":{"type":"boolean","description":"When true, include soft-deleted articles (hidden by default).","default":false,"title":"Include Deleted"},"id":"schema_49"},"schema_50":{"kind":"json-schema","data":{"type":"string","pattern":"^[A-Za-z0-9._\\-]{1,255}$","title":"Article Number"},"id":"schema_50"},"schema_51":{"kind":"json-schema","data":{"description":"Return only accessories of this source article.","title":"Source Article Number","type":["string","null"]},"id":"schema_51"},"schema_52":{"kind":"json-schema","data":{"description":"Return only alternatives of this source article.","title":"Source Article Number","type":["string","null"]},"id":"schema_52"},"schema_53":{"kind":"json-schema","data":{"description":"Return only the successor of this source article.","title":"Source Article Number","type":["string","null"]},"id":"schema_53"},"schema_54":{"kind":"json-schema","data":{"description":"Return only conversions for this article.","title":"Article Number","type":["string","null"]},"id":"schema_54"},"schema_55":{"kind":"json-schema","data":{"type":"string","pattern":"^[A-Za-z0-9._\\-]{1,255}$","title":"Customer Id"},"id":"schema_55"},"schema_56":{"kind":"json-schema","data":{"type":"string","pattern":"^[A-Za-z0-9._\\-]{1,255}$","title":"Supplier Id"},"id":"schema_56"},"schema_57":{"kind":"json-schema","data":{"description":"Filter to contacts on a specific parent kind (customer or supplier).","title":"Parent Type","$ref":"#/components/schemas/ContactParentType"},"id":"schema_57"},"schema_58":{"kind":"json-schema","data":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Filter to contacts under one specific parent's partner-supplied id. Requires "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"parent_type"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" so the same id under both kinds cannot collide."},"children":[]}]}]}],"title":"Parent Id","maxLength":255,"pattern":"^[A-Za-z0-9._\\-]{1,255}$","type":["string","null"]},"id":"schema_58"},"schema_59":{"kind":"json-schema","data":{"description":"Filter by active flag. Omit to return both active and soft-deleted contacts.","title":"Is Active","type":["boolean","null"]},"id":"schema_59"},"schema_60":{"kind":"json-schema","data":{"type":"integer","minimum":1,"description":"Mercura contact id","title":"Contact Id"},"id":"schema_60"},"schema_61":{"kind":"json-schema","data":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"ISO-8601 lower bound on "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"completed_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". When set, returns the "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"completion feed"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": only orders completed at/after this instant, ordered by "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"completed_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — e.g. everything completed in the last 5 minutes. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"completed_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is refreshed on every completion, so a re-exported order reappears. Keep this parameter present on every page of the feed (its value is ignored once a cursor is supplied)."},"children":[]}]}]}],"title":"Completed Since","format":"date-time","type":["string","null"]},"id":"schema_61"},"schema_62":{"kind":"json-schema","data":{"type":"string","title":"Order Id"},"id":"schema_62"},"schema_63":{"kind":"json-schema","data":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"ISO-8601 lower bound on "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"completed_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". When set, returns the "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"completion feed"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": only tenders completed at/after this instant, ordered by "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"completed_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" — e.g. everything completed in the last 5 minutes. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"completed_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is refreshed on every completion, so a re-exported tender reappears. Keep this parameter present on every page of the feed (its value is ignored once a cursor is supplied)."},"children":[]}]}]}],"title":"Completed Since","format":"date-time","type":["string","null"]},"id":"schema_63"},"schema_64":{"kind":"json-schema","data":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Filter by lifecycle state (e.g. "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"DONE"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"title":"Status","$ref":"#/components/schemas/PublicTenderStatus"},"id":"schema_64"},"schema_65":{"kind":"json-schema","data":{"type":"boolean","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Also report lines that were "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"removed"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" from the tender: they come back flagged ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"is_deleted"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"deleted_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") instead of being omitted, so an ERP that already imported the offer can drop what is no longer on it. Removals are reported per "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"line"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": taking one article off a position yields that article flagged next to the position's live lines, and a position that vanished completely comes back with "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"all"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" of its lines flagged — so a consumer keyed on the ordinal number can still tell the two apart. Deleted lines never count toward "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"totals"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", and a position merely flagged 'not relevant' is not a deletion and stays hidden."},"children":[]}]}]}],"default":false,"title":"Include Deleted"},"id":"schema_65"},"schema_66":{"kind":"json-schema","data":{"type":"string","title":"Tender Id"},"id":"schema_66"},"schema_67":{"kind":"json-schema","data":{"description":"Optional strong ETag from a prior GET; a mismatch is a 412 (someone else edited the tender).","title":"If-Match","type":["string","null"]},"id":"schema_67"},"schema_68":{"kind":"json-schema","data":{"description":"Opaque cursor from a prior page.","title":"Cursor","type":["string","null"]},"id":"schema_68"},"schema_69":{"kind":"json-schema","data":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Return only supplier requests raised for this tender (the tender's id from "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /tenders"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"). Distinct from "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"project_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"title":"Tender Id","type":["string","null"]},"id":"schema_69"},"schema_70":{"kind":"json-schema","data":{"description":"Return only supplier requests raised for this project (project-scoped SRs).","title":"Project Id","type":["string","null"]},"id":"schema_70"},"schema_71":{"kind":"json-schema","data":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Return only supplier requests sent to this supplier (its "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"external_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"title":"Supplier Id","type":["string","null"]},"id":"schema_71"},"schema_72":{"kind":"json-schema","data":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Filter by lifecycle state ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"REQUEST_SENT"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" | "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"OFFER_RECEIVED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" | "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"DECLINED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]}],"title":"Status","$ref":"#/components/schemas/PublicSupplierRequestStatus"},"id":"schema_72"},"schema_73":{"kind":"json-schema","data":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"true"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" returns only supplier requests with at least one accepted (selected) line; "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"false"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" returns only those without one."},"children":[]}]}]}],"title":"Awarded","type":["boolean","null"]},"id":"schema_73"},"schema_74":{"kind":"json-schema","data":{"type":"string","title":"Supplier Request Id"},"id":"schema_74"},"schema_75":{"kind":"json-schema","data":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Filter to projects with this ERP-facing grouping key. Not unique — multiple projects may share an "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"object_number"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and all matches are returned across the page."},"children":[]}]}]}],"title":"Object Number","type":["string","null"]},"id":"schema_75"},"schema_76":{"kind":"json-schema","data":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Filter to the project linked to this Mercura request id (via the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Request.project_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" FK). Returns an empty page for requests with no project FK."},"children":[]}]}]}],"title":"Request Id","type":["integer","null"]},"id":"schema_76"},"schema_77":{"kind":"json-schema","data":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Filter to projects in this lifecycle status. One of "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"ACTIVE"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"PROCESSED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"BID_SUBMITTED"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"CUSTOMER_LOST"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"CUSTOMER_WON_PENDING"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"CUSTOMER_WON_AWARDED_ELSEWHERE"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"CUSTOMER_WON_AWARDED_TO_US"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Unknown values return 400."},"children":[]}]}]}],"title":"Status","type":["string","null"]},"id":"schema_77"},"schema_78":{"kind":"json-schema","data":{"type":"string","title":"Project Id"},"id":"schema_78"},"schema_79":{"kind":"json-schema","data":{"description":"Optional strong ETag from a prior GET; a mismatch is a 412 (someone else edited the project).","title":"If-Match","type":["string","null"]},"id":"schema_79"},"schema_80":{"kind":"json-schema","data":{"type":"string","title":"Job Id"},"id":"schema_80"},"schema_81":{"kind":"json-schema","data":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Email to look up (case-insensitive, exact match). Typically the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"user_email"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" returned by "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /tenders"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Required."},"children":[]}]}]}],"format":"email","title":"Email"},"id":"schema_81"},"schema_82":{"kind":"json-schema","data":{"type":"string","pattern":"^[A-Za-z0-9._\\-]{1,255}$","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The Mercura user id — the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" field from a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /users"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" response."},"children":[]}]}]}],"title":"User Id"},"id":"schema_82"},"schema_83":{"kind":"json-schema","data":{"type":"string","format":"date","description":"Inclusive start of the range (YYYY-MM-DD), anchored to the request creation date.","title":"Start Date"},"id":"schema_83"},"schema_84":{"kind":"json-schema","data":{"type":"string","format":"date","description":"Inclusive end of the range (YYYY-MM-DD). The window is capped at 400 days.","title":"End Date"},"id":"schema_84"},"schema_85":{"kind":"json-schema","data":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Opaque cursor from a prior page's "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"next_cursor"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Keep "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"start_date"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"end_date"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" present on every page; the cursor resumes strictly after the last row already returned."},"children":[]}]}]}],"title":"Cursor","type":["string","null"]},"id":"schema_85"},"schema_86":{"kind":"json-schema","data":{"description":"Maximum rows per page (default 100).","title":"Limit","maximum":500,"minimum":1,"type":["integer","null"]},"id":"schema_86"},"schema_87":{"kind":"json-schema","data":{"type":"boolean","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"By default only exported requests are returned (the in-app dashboard universe). Set to "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"true"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" to also include requests still in progress (never exported), so you can compare how many were uploaded vs. successfully exported. Each row's "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"status"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"exported_at"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" distinguish the two."},"children":[]}]}]}],"default":false,"title":"Include Unexported"},"id":"schema_87"}},"exampleStore":{},"securitySchemeStore":{},"servers":[{"url":"/_mock/openapi","isMockServer":true,"description":"Mock server"},{"url":"/api/public/v1"},{"url":"https://prod-euapi.mercura.ai/api/public/v1","description":"Production"}]},"options":{"hideSidebar":true,"mockServer":{"url":"/_mock/openapi","position":"first","description":"Mock server"},"disableRouter":true,"downloadUrls":[{"url":"/_bundle/openapi.json?download"},{"url":"/_bundle/openapi.yaml?download"}],"excludeFromSearch":false,"specType":"openapi","markdocOptions":{"tags":{},"nodes":{},"components":{}},"metadata":{"title":"Mercura API","description":"# Getting Started\n\n## What this API is\n\n**Mercura** is an AI-powered platform for processing inquiries — bills\nof materials, tenders, RFQs — in wholesale distribution, manufacturing,\nand technical sales. The **Mercura API** is the integration surface\nyour organisation uses to plug Mercura into the rest of your software\nlandscape.\n\nThe API is bidirectional by design:\n\n- **Master data flows in** — your articles, customers, and suppliers\n  are pushed into Mercura so that incoming inquiries can be processed\n  against them.\n- **Structured offers flow out** — each inquiry, once Mercura has read\n  the LV, captured the positions, and matched each one to an article\n  from your catalogue, is returned as a fully structured offer ready\n  for your downstream system to pick up.\n\nThe source system on your side does not have to be a specific ERP. Any\nsystem that owns master data — an ERP, a PIM, a custom catalogue, a\nspreadsheet export pipeline — can be the integration partner.\n\n## Main use case\n\nThe end-to-end flow is four steps:\n\n1. **Push master data.** `POST /articles`, `POST /customers`, and\n   `POST /suppliers` accept bulk payloads of up to 100,000 rows each\n   and return a `JobAck` immediately. Sending one large request per\n   resource is preferred over many small ones.\n2. **Get notified when the jobs finish.** Each `POST` returns a\n   `job_id`. The recommended path is a **webhook**: register a\n   subscription once (admin UI, see **Webhooks** below) and Mercura\n   delivers a signed `job.finished` event to your endpoint as soon\n   as the job reaches a terminal state. If a webhook receiver is not\n   an option, fall back to polling `GET /jobs/{job_id}`.\n3. **Read completed tenders and orders back.** This is the payoff. A\n   `tender.completed` (or `order.completed`) webhook fires the moment a\n   Mercura user releases a record to your system (the **Finalize** /\n   Export → API action) — your endpoint then calls `GET /tenders/{tender_id}`\n   (or `GET /orders/{order_id}`) to pull the full structured record\n   (positions, matched articles, quantities, prices, totals).\n   `GET /tenders` / `GET /orders` are the cursor-paginated list views\n   for catch-up scans; pass `?completed_since=…` for the completion feed.\n4. **Acknowledge the import.** Once the record is committed to your\n   ERP/CRM, `POST /tenders/{tender_id}/acknowledgements` (or\n   `/orders/{order_id}/acknowledgements`) with `status: \"SUCCESS\"` and\n   your ERP document id in `external_id` — Mercura stores it on the\n   record's `erp_offer_id` (latest-wins) and surfaces the outcome in the\n   app. Report `status: \"FAILED\"` with a `message` when the import is\n   rejected.\n\nA typical integration runs step 1 nightly (delta-sync new and changed\nmaster-data rows) and reacts to `tender.completed` / `order.completed`\nwebhooks in step 3 to drive new offers into the downstream system in\nreal-time, acknowledging each import in step 4.\n\n## Integration patterns: webhook vs polling\n\nSteps 3–4 above can be driven two ways. **Webhook (push)** is the\nrecommended path — Mercura notifies your endpoint the instant a tender\nor order completes, so you react in real time. **Polling (pull)** is the\nfallback when your side cannot expose an inbound HTTPS endpoint — you\nscan the completion feed on a schedule. Both end the same way: fetch the\nfull record, write it to your ERP/CRM, and acknowledge the import.\n\nThe sequences below show the **tender** flow. **Orders are identical** —\nswap `tender.completed` → `order.completed`, `GET /tenders/{id}` →\n`GET /orders/{id}`, and the acknowledgements path.\n\n### Webhook (push)\n\n![Webhook (push) sequence — Mercura user finalizes a record; Mercura POSTs an HMAC-signed tender.completed to your endpoint; you GET /tenders/{tender_id}, write the offer to your ERP, then POST the acknowledgement.](https://prod-euapi.mercura.ai/api/public/v1/docs-assets/webhook.svg)\n\nThe webhook payload is intentionally small — it identifies *which*\ntender changed and *when*; you always fetch the current state with\n`GET /tenders/{tender_id}`. See the **Webhooks** chapter for the wire\nformat, the HMAC-SHA256 signature recipe, and the retry schedule.\n\n### Polling (pull)\n\n![Polling (pull) sequence — your poller GETs /tenders?completed_since=… and pages via cursor; each item is a full tender; you write the offer to your ERP, then POST the acknowledgement.](https://prod-euapi.mercura.ai/api/public/v1/docs-assets/polling.svg)\n\nPoll `?completed_since=…` on a schedule (every few minutes is typical).\n`completed_at` refreshes on every completion, so a re-exported tender\nreappears in the feed — key off `tender_id` and keep your ERP writes\nidempotent. Keep `completed_since` on every request; once you hold a\n`next_cursor`, send only the cursor.\n\n## Webhooks\n\nIf you would rather **not poll**, Mercura can push events to an HTTPS\nendpoint on your side as soon as something happens — a `job.finished`\nevent replaces the polling loop above, and a `tender.completed` /\n`order.completed` event tells you the moment a record has been released\nto your system (see **Integration patterns: webhook vs polling** above\nfor the full push-vs-pull sequence).\n\nSubscriptions are set up by an org admin in the Mercura web app under\n**Settings → Organisation → Webhooks** — there are no\n`/webhook_subscriptions` endpoints in this API. Once a subscription\nexists, the wire format, HMAC-SHA256 signature recipe, retry schedule,\nand example payloads are documented in the **Webhooks** chapter\nfurther down.\n\n# Authentication\n\nThe API uses **bearer tokens** issued in the Mercura admin UI under\n**Settings → Organisation → API Keys**.\n\n```\nAuthorization: Bearer mrc_live_<token>\n```\n\nMissing, malformed, expired, or revoked tokens return\n`401 UNAUTHORIZED`.\n\n# Operations\n\n## Data conventions\n\nA few conventions hold across every resource:\n\n- **Embedded addresses, standalone contacts.** Customer and\n  supplier payloads carry their `addresses[]` inline — there is no\n  separate `/addresses` endpoint, and the wire format hides the\n  internal address table so each parent push is a single snapshot.\n  **Contacts**, by contrast, are managed via the dedicated `/contacts`\n  resource and carry their own `parent_type` (`customer` or `supplier`)\n  and `parent_id`, so adding or updating a contact does not require\n  re-sending the entire parent — see the **Contacts** chapter for the\n  full model and upsert rules.\n- **Stable partner-supplied identifiers.** `article_number`,\n  `customer_id`, and `supplier_id` are the keys you assign in your\n  source system. They must remain stable across sync cycles — Mercura\n  uses them to upsert: same id → existing row updated; new id → new\n  row created.\n- **Timestamps in ISO-8601 UTC.** All timestamps on the wire are\n  ISO-8601 with an explicit `Z` (or `+00:00`) suffix.\n- **`custom_fields` on every master-data resource.** Use it for any\n  source-system field that doesn't fit the standard schema. Mercura\n  preserves the value alongside the row; matching uses it where\n  appropriate.\n\n## Errors\n\nEvery non-2xx response uses one envelope:\n\n```json\n{\n  \"error\": {\n    \"code\": \"VALIDATION_FAILED\",\n    \"message\": \"Request validation failed\",\n    \"details\": [ { \"loc\": [\"query\", \"cursor\"], \"msg\": \"Invalid cursor\", \"type\": \"value_error\" } ],\n    \"request_id\": \"9a3b...e2\"\n  }\n}\n```\n\nBranch on `code` — it is stable. `message` is human-readable and may\nchange between versions. The full list of codes (`VALIDATION_FAILED`,\n`UNAUTHORIZED`, `FORBIDDEN`, `NOT_FOUND`, `IDEMPOTENCY_KEY_MISMATCH`,\n`RATE_LIMITED`, `INTERNAL_ERROR`, …) is documented per endpoint.\n\n## Request IDs\n\nEvery response carries an `X-Request-Id` header (echoed if you supply\none, generated otherwise) and the same id is embedded in every error\nenvelope. Quote it in support tickets — it is the fastest way for\nMercura's team to look up the exact request in our logs.\n\n## Versioning\n\nThe API follows **Semantic Versioning** (`MAJOR.MINOR.PATCH`). Only the\n`MAJOR` number lives in the URL path (`/v1`, future `/v2`, …). The full\nSemVer string is published in the OpenAPI `info.version` field and on\nevery response as the `X-API-Version` header.\n\n| Bump | What it means |\n|---|---|\n| **PATCH** | Bugfix / doc fix. OpenAPI shape unchanged. |\n| **MINOR** | Additive only: new optional field, new endpoint, relaxed constraint. Existing clients keep working unchanged. |\n| **MAJOR** | Breaking: removed field, renamed field, narrower constraint. A new URL prefix is published; the previous `MAJOR` remains available during a migration period. |\n\n## Rate limits\n\nEach API key has its own budget. **Every request counts as one** against\nthe matching limiter — reads draw from the read bucket, writes from the\nwrite bucket, and each in-flight bulk-write job holds one concurrency\nslot. Defaults today:\n\n| Class | Limit |\n|---|---|\n| Writes (POST)     | 60 / minute, burst 10 |\n| Reads (GET)       | 600 / minute, burst 60 |\n| Concurrent in-flight bulk-write jobs | 5 per key |\n\nEvery response carries `RateLimit-Policy` / `RateLimit` headers (and\nlegacy `X-RateLimit-*` headers) describing your current budget. On a\n`429 RATE_LIMITED` response, `Retry-After` tells you how long to wait,\nand `X-RateLimit-Scope` tells you whether you hit the per-minute bucket\n(`rate`) or the concurrent-jobs cap (`concurrency`).\n\n## Read-endpoint pagination\n\nEvery `GET` list endpoint — `/tenders`, `/orders`, `/supplier-requests`,\n`/articles`, `/customers`, `/suppliers`, `/projects`, and `/contacts` — is cursor\npaginated. Pass `?modified_since=<ISO-8601>` on the\nfirst page to bound the lower edge of the scan by `updated_at` (useful for\ndelta-sync). Mercura returns a page plus a `next_cursor` — pass it back as\n`?cursor=…` to get the next page. Once you have a cursor, `modified_since`\nis ignored.\n\nOn `/tenders` and `/orders` you can instead pass\n`?completed_since=<ISO-8601>` to pull the **completion feed** — only records\ncompleted at/after that instant, ordered by `completed_at` — the\nreconciliation twin of the `tender.completed` / `order.completed` webhooks.\nBoth accept a `status` filter; `/contacts` additionally filters by\n`parent_type` / `parent_id` / `is_active`.\n\nThe cursor is keyed on `(updated_at, id)`, so it is stable under\nconcurrent writes: a row updated mid-scan may resurface on a later\npage, but you will never silently skip or duplicate rows.\n\n# Alternative integration\n\n## SFTP-based integration\n\nThe Mercura API documented here is the preferred channel because it is\nsynchronous, low-latency, and operationally light — status comes back\nimmediately, no file-watching is required on either side, and\nmaster-data updates can flow event-driven. Where a direct API\nintegration is not feasible (network constraints, security policy,\nERP capability), Mercura also supports SFTP-based exchange in both\ndirections for the same payloads. Talk to your Mercura contact if you\nneed that path; the data shapes are identical to the ones documented\nhere.\n"}},"baseSlug":"/openapi","routesMapping":{}}