Developers

Products

Read the seller’s catalogue (own and adopted products) and push products.

List products

GET/productsscope catalogue:read
Query
cursorstring

From nextCursor.

limitinteger

Default 100, max 200.

updatedSinceISO 8601

Only products changed after this instant (for adopted products: the adoption, the creator’s product or its prices).

countrystring (2)

Only products sold in this country (must be one of the seller’s).

curl "https://coliswift.com/api/partner/v1/products?limit=100" \
  -H "Authorization: Bearer $COLISWIFT_ACCESS_TOKEN"

One stream in two halves: first the seller’s own products (by id), then the COD Drop products they adopted ("adopted": true, see COD Drop). Only products the seller can sell are listed: a product the seller switched off, or an adoption that is paused, blocked or given back, is not in the list (an adoption that ends also sends adoption.removed or adoption.updated).

Response
{
  "data": [
    {
      "id": "5e6f7a8b-9c0d-4e1f-a2b3-c4d5e6f7a8b9",
      "reference": "SER-01",
      "label": "Vitamin C serum 30 ml",
      "description": "Brightening serum.",
      "category": "beauty",
      "imageUrl": "https://cdn.example.com/serum.jpg",
      "imageUrls": [
        "https://cdn.example.com/serum.jpg"
      ],
      "countryCodes": [
        "MA"
      ],
      "pricesByCountry": [
        {
          "countryCode": "MA",
          "price": "199.0000"
        }
      ],
      "offers": [
        {
          "countryCode": "MA",
          "quantity": 2,
          "label": "2 for 349",
          "price": "349.0000"
        }
      ],
      "variants": [
        {
          "id": "9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d",
          "label": "Orange",
          "sku": "SER-01-OR",
          "pricesByCountry": [
            {
              "countryCode": "MA",
              "price": "199.0000"
            }
          ]
        }
      ],
      "createdAt": "2026-10-20T08:00:00.000Z",
      "updatedAt": "2026-11-01T17:30:00.000Z"
    }
  ],
  "nextCursor": null,
  "hasMore": false
}

The Product object

What an app needs to show and sell the product, nothing more:

idstring

Product id.

referencestring

The SKU used on order lines.

label · descriptionstring · string | null

Name and text.

categorystring | null
  • health
  • beauty
  • electronics
  • fashion
  • food
  • sports
imageUrl · imageUrlsstring | null · string[]

Main image and gallery.

countryCodesstring[]

Countries the product is sold in.

pricesByCountry[]object[]

countryCode, price — the seller’s sale price in that country (4-decimal string, local currency).

offers[]object[]

Quantity offers: countryCode, quantity, label, price (the price for that quantity, 4-decimal string). Empty when none.

variants[]object[]

id, label, sku, pricesByCountry[] (countryCode, price). Empty for a product without variants.

createdAt · updatedAttimestamp

An adopted COD Drop product has its own shape, described on COD Drop. Ignore keys you do not know.

Retrieve a product

GET/products/{id}scope catalogue:read

An own product, or an adopted one (same shape as in the list). Anything else — another seller’s product, a COD Drop product the seller did not adopt, a product that is no longer for sale — is 404 NOT_FOUND.

Create or update a product

POST/productsscope products:write
PUT/products/{id}scope products:write

Goes through the same validation and pricing as the seller’s own product form, and answers with the Product object (201 on create, 200 on update). On PUT every field is optional.

Body
referencestring, 1–100required

Unique per seller (REFERENCE_EXISTS otherwise).

labelstring, 1–255required
countryCodesstring[], ≥ 1required

Must be the seller’s countries (PRODUCT_COUNTRY_NOT_ALLOWED).

description · notesForCallCenterstring | null
urlURL ≤ 2048 | null

Product page.

categorystring
  • health
  • beauty
  • electronics
  • fashion
  • food
  • sports
productTypestring
  • simple
  • variant
  • pack
storeIdstring

One of the seller’s stores.

imageUrlURL | null
imageUrlsURL[], ≤ 6
pricesByCountry[]object[]

countryCode (required), purchasePrice, salePrice — money strings.

offers[]object[]

countryCode, quantity (≥ 1), label (1–60), price (required).

variantAttributesobject

Variant axes; ColiSwift generates the variants from them.

weight · lengthCm · widthCm · heightCm · dimensionsany

Accepted and ignored: ColiSwift measures parcels itself.

curl -X POST "https://coliswift.com/api/partner/v1/products" \
  -H "Authorization: Bearer $COLISWIFT_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "reference": "SER-01",
  "label": "Vitamin C serum 30 ml",
  "description": "Brightening serum.",
  "url": "https://atlas-beauty.example/serum",
  "category": "beauty",
  "productType": "simple",
  "storeId": "b2d4e6f8-1a3c-4e5f-8a9b-0c1d2e3f4a5b",
  "countryCodes": [
    "MA"
  ],
  "imageUrl": "https://cdn.example.com/serum.jpg",
  "notesForCallCenter": "Mention the 2-for-349 offer.",
  "pricesByCountry": [
    {
      "countryCode": "MA",
      "purchasePrice": "45.00",
      "salePrice": "199.00"
    }
  ],
  "offers": [
    {
      "countryCode": "MA",
      "quantity": 2,
      "label": "2 for 349",
      "price": "349.00"
    }
  ]
}'