List Odoo 3PL Products
GET/api/odoo-3pl/:integration_instance/products
Lists the products in the Odoo 3PL catalog, with stock quantities and the SKU.io product each is linked to (sku_product, null when unlinked).
This endpoint currently requires session authentication; Personal Access Token scope support is in progress.
Orders resolve products by SKU automatically (an Odoo 3PL product whose SKU or customer SKU equals the SKU.io product's SKU), and the link is saved as orders flow — so an explicit mapping is only needed when the two catalogs use different SKUs. needs_review is true when a sync found more than one possible SKU.io match.
Operator filters are also available as filter[<column>.<operator>] on: id, odoo_product_id, quantity_on_hand, quantity_available (numeric); name, sku, customer_sku, barcode (text); last_synced_at, created_at, updated_at (date). Text operators: contains, does_not_contain, is, is_not, is_one_of, is_not_one_of, starts_with, does_not_start_with, ends_with, does_not_end_with, is_empty, is_not_empty. Numeric operators: is, is_not, is_one_of, is_not_one_of, greater_than, less_than, greater_than_or_equal, less_than_or_equal, between, is_empty, is_not_empty. Date operators: is, is_not, before, after, on_or_before, on_or_after, between (comma-separated pair), past_days, next_days, days_ago, days_from_now.
Requires the integrations.show permission.
Authentication: Bearer token (Personal Access Token).
Request
Responses
- 200
- 401
- 403
- 404
- 429
OK
Response Headers
Unauthenticated — the bearer token is missing, revoked, expired, or malformed. Never retry automatically; fix the credential. See the Errors guide.
Forbidden
Response Headers
Not found — no record with the given identifier (or the route does not exist). Verify the ID before retrying.
Rate limited — platform limit is 1,000 requests/min; individual tokens may carry lower limits. Honor the Retry-After header before retrying. See the Rate Limits guide.