Conformance table
What this add-on sends to the marketplace, and how each call was checked. Source of the API description: the official Mirakl Marketplace Seller OpenAPI file published on the Mirakl developer portal (developer.mirakl.com, Mirakl Marketplace APIs, Seller, downloaded 2026-11-06). The operator facts about Worten come from Worten’s own material and roll-out reports; anything that could not be confirmed is marked UNVERIFIED.
This is a statement about what was tested, not a certification: the add-on was tested against a local stand-in that validates every request against the OpenAPI file, not against a live Worten or Saturn seller account.
How the checks work
Section titled “How the checks work”tests/openapi/build-subset.mjsextracts the 23 operations below from the downloaded OpenAPI file (parameters, enums, request and response schemas, the example payloads).php tests/unit_mirakl.phpruns the driver with the spec’s example payloads as answers and records every request;tests/openapi/check.mjsvalidates each recorded request: method and path, query parameters and their enum values, JSON body against the schema (unknown properties are errors), multipart fields, the import file columns, the API key header, theContent-Length: 0of OR24. 47 requests in 23 operations, 0 nonconforming.- The mock server (
tests/mock-server/server.js) applies the same validator to every request of the HTTP end-to-end run on CS-Cart (cs417) and answers 400 to a request that does not conform; the run ends with “every request conformed”.
Operations used
Section titled “Operations used”| Id | Method and path | Used for | Checked in |
|---|---|---|---|
| A01 | GET /api/account |
Test connection: shop name, id, currency, channels | unit, e2e |
| H11 | GET /api/hierarchies |
Category list for the mapping | unit, e2e |
| AF01 | GET /api/additional_fields?entities=OFFER |
Offer fields (attributes) and their allowed values | unit, e2e |
| OF61 | GET /api/offers/states |
Code of the condition “New” | unit, e2e |
| OF01 | POST /api/offers/imports (multipart, import_mode=NORMAL) |
Create or update offers from a CSV file | unit, e2e |
| OF24 | POST /api/offers (JSON) |
Alternative to OF01, selectable in the operator file; not used by default | unit |
| OF02 | GET /api/offers/imports/{import} |
State and statistics of an offer import | unit, e2e |
| OF03 | GET /api/offers/imports/{import}/error_report |
Reason per rejected offer line | unit, e2e |
| STO01 | POST /api/offers/stock/imports |
Stock changes (offer-sku;quantity;update-delete) |
unit, e2e |
| STO02 / STO03 | GET .../stock/imports/{id}/status, .../error_report |
Result of a stock import | unit, e2e |
| PRI01 | POST /api/offers/pricing/imports |
Price changes (offer-sku;price) |
unit, e2e |
| PRI02 / PRI03 | GET /api/offers/pricing/imports?import_id=, .../error_report |
Result of a price import | unit, e2e |
| OR11 | GET /api/orders |
Orders waiting for acceptance and orders changed since a moment | unit, e2e |
| OR21 | PUT /api/orders/{order_id}/accept |
Accept every line of a new order (account option) | unit, e2e |
| OR23 | PUT /api/orders/{order_id}/tracking |
Carrier (by code, or by name and link) and tracking number | unit, e2e |
| OR24 | PUT /api/orders/{order_id}/ship |
Validate the shipment (empty body, Content-Length: 0) |
unit, e2e |
| OR33 | PUT /api/orders/{order_id}/cancel-order-lines |
Cancel lines the seller cannot deliver | unit, e2e |
| SH21 | GET /api/shipping/carriers |
Carrier codes | unit, e2e |
| RE01 | GET /api/reasons |
Cancellation reasons (type CANCELATION) | unit, e2e |
| RT11 | GET /api/returns |
Return requests (seek pagination) | unit, e2e |
| RT21 | PUT /api/returns/accept |
Accept a return request | unit, e2e |
Not used: the product imports (P41 and following): the add-on does not create catalogue products; OF04 and OF51 to OF54 (offer lists and exports); refunds (OR26, OR28), incidents (OR64), messages, invoices and shop documents.
Authentication and limits
Section titled “Authentication and limits”| Topic | What the add-on does | Source |
|---|---|---|
| Authentication | The seller API key in the plain Authorization header (scheme “Shop-API-Key” of the OpenAPI file), no Bearer, no token request. |
OpenAPI file |
| Base URL | The Mirakl address of the seller’s account, entered by the seller per mode. https only; hosts that are an IP number, localhost or a non-public name are refused because the server calls the address. |
UNVERIFIED for Worten: the host is not published, it is shown in the seller back office |
| Several shops | shop_id query parameter when the account field is set |
OpenAPI file |
| Call frequency | Offer imports, stock imports and price imports: at most one per minute and recommended every 5 minutes, per seller; the sync interval setting defaults to 15 minutes. Order list: asynchronous export is recommended for large volumes; the add-on lists changed orders every sync interval. | OpenAPI file (“Call Frequency” of each operation) |
| Rate limit answers | The OpenAPI file does not describe HTTP 429 or Retry-After. The generic job queue treats 429, 408, 425 and 5xx as retryable and honours a Retry-After header. | Not in the OpenAPI file |
| Dates | ISO 8601 UTC (2026-11-06T10:00:00Z) |
OpenAPI file |
Things the OpenAPI file does not describe
Section titled “Things the OpenAPI file does not describe”| Item | What the add-on assumes | Status |
|---|---|---|
max and offset on OR11 |
Offset pagination with page size 100. The OpenAPI file says OR11 “supports offset pagination (see documentation)” but does not list the parameters. | Mirakl’s general pagination convention; reported by the validator as a note |
page_token on RT11 |
Seek pagination: the response has next_page_token; the add-on sends it back as page_token. |
Same |
| Additional offer fields in the OF01 file | Extra columns named by the field code (AF01). Only the OF24 JSON alternative lists them in the file. | Reported as a note |
Value of product-id-type |
EAN |
Used in the OpenAPI example of OF24; the allowed values are operator configuration |
| Layout of the error reports | OF03: a header with sku and error-message (shown in the OpenAPI example). STO03 / PRI03: line number, reason, then the submitted line (as the descriptions say). The parser finds the sku by header or by value. |
OpenAPI file |
| Country codes of orders | country_iso_code is ISO 3166 alpha 3; the add-on converts it to alpha 2 |
OpenAPI file |
| Address before acceptance | “Null before shipping (or acceptance, depending on platform setting)”: orders are imported once they carry an address | OpenAPI file |
Operator facts (Worten)
Section titled “Operator facts (Worten)”Checked on 2026-11-06 from public sources only: the integration guides of BeezUP, StoreLinkr and ChannelEngine, the Zunapro Worten page and Spanish press reports (OCU, Muy Canal, Marketing4eCommerce). Worten does not publish its seller API documentation; nothing here comes from a seller contract.
| Item | Value | Status |
|---|---|---|
| Platform | Worten runs on Mirakl; the seller API is the standard Mirakl Marketplace Seller API | Integrator guides (ChannelEngine: “Mirakl Connect SSO account”); verified |
| Who may sell | Professional sellers with a valid European VAT number; private sellers are excluded | StoreLinkr, ChannelEngine: verified by two integrators, not by Worten |
| Markets | Portugal (worten.pt) live. Spain: the online shop for peninsular Spain closed on 31 July 2026 and the marketplace functions of worten.es ended on 1 August 2026; the Canary Islands shop stays online and StoreLinkr lists the Canary Islands as active | Press reports (OCU, Muy Canal, Marketing4eCommerce, Atlantico Hoy). Whether new sellers can open a Canary Islands account is UNVERIFIED, so Spain is labelled “limited” |
| Currency | EUR in both markets | Verified (euro area) |
| API address | https://marketplace.worten.pt is the default pre-filled by StoreLinkr (“only change it if your back office uses a different address”) | Integrator default, UNVERIFIED by Worten; the add-on only uses it as an example and the field is required and editable |
| Authentication | API key of the user: seller back office, user settings, API key tab; sent in the Authorization header |
StoreLinkr; standard Mirakl |
| Shop ID | Optional field; BeezUP asks for “Shop ID and API Key” | BeezUP |
| Channel codes | Entered by the seller (CH11 lists them); no PT / ES channel codes are public | UNVERIFIED |
| Product identifier | EAN: “Worten only accepts products with an EAN”; offers are matched to the Worten catalogue by EAN | BeezUP, StoreLinkr, Lengow: verified by three integrators |
| Required offer fields | Read from the marketplace (AF01 / OF21); the seller maps them. Worten’s mandatory list is not public | UNVERIFIED, not assumed |
| Offer condition code of “New” | Read from OF61 (label match: new, novo, nova, nuevo, nueva) or entered | Operator specific |
| Lead time | Optional leadtime-to-ship (days) |
Mirakl OF01 description |
| Orders | Imported once Worten releases the delivery address; tracking is sent back when you ship | StoreLinkr |
| Product creation | Not done by this version (offers match catalogue products by EAN) | Whether Worten requires seller product imports is UNVERIFIED |
| Offer title / description / image limits in the operator file | 150 / 5000 / 8: engine defaults, not Worten’s published limits | UNVERIFIED |
Trademarks
Section titled “Trademarks”Worten is a trademark of its owner (Sonae group). Mirakl is a trademark of Mirakl. They are named only to say what the add-on connects to. No logos of these companies are used in the add-on, its documentation or its listing. This add-on is not affiliated with, endorsed by or certified by Worten (Sonae group) or Mirakl.