API ReferenceView as MarkdownOpenAPI

Products

View as Markdown

Products are what the store sells: physical items with weight and delivery, digital downloads, and items with options (size, colour) that change the price. A product sits in a product/ category, can be filtered by grouping/ collections, and can show a page built in the editor below its details.

Endpoints that need a token: the site owner creates it in their admin (Developers > API reference). AI assistants: how to ask the user for one.

36 endpoints in 4 parts: Product, Digital Content, Inventory, AI builder.

Retrieve a digital product

Returns one digital product, found by its URL slug.

User tokenOptional user

Needs the token of a signed-in user.

Path parameters
urlstringRequired

The digital product's URL slug, as in its address on the site.

Returns

Returns the Product object.

Status codes

200 401 500

GET/digital-product/:url
curl -X GET 'http://a-plus-solutions.eu/digital-product/{url}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "name": "Example",
  "url": "example-item",
  "static_url": "example-item",
  "ribbon": "example",
  "striked": "example",
  "price": 49.9,
  "description": "Text shown on the site.",
  "product_informations": [
    {
      "name": "Example",
      "description": "Text shown on the site.",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "product_options": [
    {
      "name": "Example",
      "options": [],
      "informations": [],
      "_id": "6543210fedcba98765432100"
    }
  ],
  "published": true,
  "available_for_purchase": true,
  "medias": [
    {
      "media": "6543210fedcba98765432100",
      "gcs_url": "example-item",
      "gcs_480_30_url": "example-item",
      "gcs_720_30_url": "example-item",
      "gcs_1080_30_url": "example-item",
      "duration": 1,
      "vimeo_uri": "example",
      "vimeo_picture": "example",
      "vimeo_url": "example-item",
      "youtube_url": "example-item",
      "youtube_picture": "example",
      "thumbnail": "example",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "collection_id": "6543210fedcba98765432100",
  "grouping": [
    {
      "collection_id": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "owner_id": "6543210fedcba98765432100",
  "connected_account_owner_id": "6543210fedcba98765432100",
  "qty": 1,
  "origin_address": "example",
  "selected": false,
  "custom_1": "example",
  "custom_2": "example",
  "custom_3": "example",
  "about_page": "6543210fedcba98765432100",
  "is_digital": false,
  "secondary_cta": {
    "show": false,
    "title": "Example",
    "webUrl": "example",
    "appUrl": "example"
  },
  "attached_priceplans": {
    "name": "Example",
    "priceplans": "example"
  }
}

Export products

Export products.

Admin token

Needs a site admin token.

Returns

Returns the Product object.

Status codes

200 401 500

GET/export-products
curl -X GET 'http://a-plus-solutions.eu/export-products?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "name": "Example",
  "url": "example-item",
  "static_url": "example-item",
  "ribbon": "example",
  "striked": "example",
  "price": 49.9,
  "description": "Text shown on the site.",
  "product_informations": [
    {
      "name": "Example",
      "description": "Text shown on the site.",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "product_options": [
    {
      "name": "Example",
      "options": [],
      "informations": [],
      "_id": "6543210fedcba98765432100"
    }
  ],
  "published": true,
  "available_for_purchase": true,
  "medias": [
    {
      "media": "6543210fedcba98765432100",
      "gcs_url": "example-item",
      "gcs_480_30_url": "example-item",
      "gcs_720_30_url": "example-item",
      "gcs_1080_30_url": "example-item",
      "duration": 1,
      "vimeo_uri": "example",
      "vimeo_picture": "example",
      "vimeo_url": "example-item",
      "youtube_url": "example-item",
      "youtube_picture": "example",
      "thumbnail": "example",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "collection_id": "6543210fedcba98765432100",
  "grouping": [
    {
      "collection_id": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "owner_id": "6543210fedcba98765432100",
  "connected_account_owner_id": "6543210fedcba98765432100",
  "qty": 1,
  "origin_address": "example",
  "selected": false,
  "custom_1": "example",
  "custom_2": "example",
  "custom_3": "example",
  "about_page": "6543210fedcba98765432100",
  "is_digital": false,
  "secondary_cta": {
    "show": false,
    "title": "Example",
    "webUrl": "example",
    "appUrl": "example"
  },
  "attached_priceplans": {
    "name": "Example",
    "priceplans": "example"
  }
}

Import templates

Import templates.

Admin token

Needs a site admin token.

Status codes

200 401

GET/get-import-template
curl -X GET 'http://a-plus-solutions.eu/get-import-template?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'

Import products custom

Import products custom.

Admin token

Needs a site admin token.

Status codes

200 401 500

POST/import-products-custom
curl -X POST 'http://a-plus-solutions.eu/import-products-custom?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "name": "Example",
  "parent_collection": "6543210fedcba98765432100",
  "picture": "6543210fedcba98765432100",
  "about_page": "6543210fedcba98765432100",
  "match_to_option": false,
  "is_color": false,
  "color": "#3557c4",
  "position": 1,
  "items": [
    "6543210fedcba98765432101"
  ],
  "thumbnail": "6543210fedcba98765432100",
  "_id": "6543210fedcba98765432100"
}

Import products shopify

Import products shopify.

Admin token

Needs a site admin token.

Status codes

200 401 500

POST/import-products-shopify
curl -X POST 'http://a-plus-solutions.eu/import-products-shopify?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "name": "Example",
  "parent_collection": "6543210fedcba98765432100",
  "picture": "6543210fedcba98765432100",
  "about_page": "6543210fedcba98765432100",
  "match_to_option": false,
  "is_color": false,
  "color": "#3557c4",
  "position": 1,
  "items": [
    "6543210fedcba98765432101"
  ],
  "thumbnail": "6543210fedcba98765432100",
  "_id": "6543210fedcba98765432100"
}

Import products squarespace

Import products squarespace.

Admin token

Needs a site admin token.

Status codes

200 401 500

POST/import-products-squarespace
curl -X POST 'http://a-plus-solutions.eu/import-products-squarespace?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "name": "Example",
  "parent_collection": "6543210fedcba98765432100",
  "picture": "6543210fedcba98765432100",
  "about_page": "6543210fedcba98765432100",
  "match_to_option": false,
  "is_color": false,
  "color": "#3557c4",
  "position": 1,
  "items": [
    "6543210fedcba98765432101"
  ],
  "thumbnail": "6543210fedcba98765432100",
  "_id": "6543210fedcba98765432100"
}

Import products wix

Import products wix.

Admin token

Needs a site admin token.

Status codes

200 401 500

POST/import-products-wix
curl -X POST 'http://a-plus-solutions.eu/import-products-wix?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "name": "Example",
  "parent_collection": "6543210fedcba98765432100",
  "picture": "6543210fedcba98765432100",
  "about_page": "6543210fedcba98765432100",
  "match_to_option": false,
  "is_color": false,
  "color": "#3557c4",
  "position": 1,
  "items": [
    "6543210fedcba98765432101"
  ],
  "thumbnail": "6543210fedcba98765432100",
  "_id": "6543210fedcba98765432100"
}

Like or unlike a product

Like or unlike a product.

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the product.

Returns

Returns the Product object.

Status codes

200 400 401 404 500

PATCH/product-likes/:id
curl -X PATCH 'http://a-plus-solutions.eu/product-likes/{id}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "name": "Example",
  "url": "example-item",
  "static_url": "example-item",
  "ribbon": "example",
  "striked": "example",
  "price": 49.9,
  "description": "Text shown on the site.",
  "product_informations": [
    {
      "name": "Example",
      "description": "Text shown on the site.",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "product_options": [
    {
      "name": "Example",
      "options": [],
      "informations": [],
      "_id": "6543210fedcba98765432100"
    }
  ],
  "published": true,
  "available_for_purchase": true,
  "medias": [
    {
      "media": "6543210fedcba98765432100",
      "gcs_url": "example-item",
      "gcs_480_30_url": "example-item",
      "gcs_720_30_url": "example-item",
      "gcs_1080_30_url": "example-item",
      "duration": 1,
      "vimeo_uri": "example",
      "vimeo_picture": "example",
      "vimeo_url": "example-item",
      "youtube_url": "example-item",
      "youtube_picture": "example",
      "thumbnail": "example",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "collection_id": "6543210fedcba98765432100",
  "grouping": [
    {
      "collection_id": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "owner_id": "6543210fedcba98765432100",
  "connected_account_owner_id": "6543210fedcba98765432100",
  "qty": 1,
  "origin_address": "example",
  "selected": false,
  "custom_1": "example",
  "custom_2": "example",
  "custom_3": "example",
  "about_page": "6543210fedcba98765432100",
  "is_digital": false,
  "secondary_cta": {
    "show": false,
    "title": "Example",
    "webUrl": "example",
    "appUrl": "example"
  },
  "attached_priceplans": {
    "name": "Example",
    "priceplans": "example"
  }
}

Find a product by its address

Find a product by its address.

Optional user

Works without a token; with a user token the answer is personal.

Path parameters
urlstringRequired

The product's URL slug, as in its address on the site.

Status codes

200 500

GET/product-redirect/:url
curl -X GET 'http://a-plus-solutions.eu/product-redirect/{url}?ionic=true'
Response
{
  "zip_code": "example",
  "city": "example",
  "address": "example",
  "contact": "example",
  "email": "jane@example.com",
  "google_app": "example",
  "workhours": "example",
  "logo": "6543210fedcba98765432100",
  "site_name": "Example",
  "domain": "example",
  "stock_domain": "example",
  "isMarket": false,
  "forbidden_collections": [
    {
      "collection_id": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "isInit": false,
  "template": "0000",
  "lang": "en",
  "favicon": "6543210fedcba98765432100",
  "cacheEnabled": false,
  "has_completed_startup_prompt": true,
  "gmb_location": "example",
  "ga_property": "example",
  "site_generated_at": "2026-11-04T12:00:00.000Z",
  "admin_first_opened_at": "2026-11-04T12:00:00.000Z",
  "admin_last_opened_at": "2026-11-04T12:00:00.000Z",
  "allowedComponents": {
    "services": false,
    "products": false,
    "blogposts": false,
    "programs": false
  }
}

Save or unsave a product

Save or unsave a product.

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the product.

Returns

Returns the Product object.

Status codes

200 400 401 404 500

PATCH/product-saves/:id
curl -X PATCH 'http://a-plus-solutions.eu/product-saves/{id}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "name": "Example",
  "url": "example-item",
  "static_url": "example-item",
  "ribbon": "example",
  "striked": "example",
  "price": 49.9,
  "description": "Text shown on the site.",
  "product_informations": [
    {
      "name": "Example",
      "description": "Text shown on the site.",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "product_options": [
    {
      "name": "Example",
      "options": [],
      "informations": [],
      "_id": "6543210fedcba98765432100"
    }
  ],
  "published": true,
  "available_for_purchase": true,
  "medias": [
    {
      "media": "6543210fedcba98765432100",
      "gcs_url": "example-item",
      "gcs_480_30_url": "example-item",
      "gcs_720_30_url": "example-item",
      "gcs_1080_30_url": "example-item",
      "duration": 1,
      "vimeo_uri": "example",
      "vimeo_picture": "example",
      "vimeo_url": "example-item",
      "youtube_url": "example-item",
      "youtube_picture": "example",
      "thumbnail": "example",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "collection_id": "6543210fedcba98765432100",
  "grouping": [
    {
      "collection_id": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "owner_id": "6543210fedcba98765432100",
  "connected_account_owner_id": "6543210fedcba98765432100",
  "qty": 1,
  "origin_address": "example",
  "selected": false,
  "custom_1": "example",
  "custom_2": "example",
  "custom_3": "example",
  "about_page": "6543210fedcba98765432100",
  "is_digital": false,
  "secondary_cta": {
    "show": false,
    "title": "Example",
    "webUrl": "example",
    "appUrl": "example"
  },
  "attached_priceplans": {
    "name": "Example",
    "priceplans": "example"
  }
}

List all products

Returns the site's products, newest first unless a sort is given.

User with accessOptional user

Needs a signed-in user whose plan grants access.

Query parameters
publishedstring

true: only products that are published; false: only those that are not.

completedstring

Only products with this completed.

sortBystring

The order of the results.

minPricestring

Only products with a price of at least this.

maxPricestring

Only products with a price of at most this.

collectionstring

Only results in this collection.

origin_addressstring

Only products with this origin address.

skipstring

How many results to skip - for paging.

wherestring

Only products with this where.

ratingstring

Only products with this rating.

Returns

Returns a list of Product objects.

Status codes

200 401 402 404 500

GET/products
curl -X GET 'http://a-plus-solutions.eu/products?ionic=true&published=...&completed=...&sortBy=...' \
  -H 'Authorization: Bearer <TOKEN>'
Response
[
  {
    "name": "Example",
    "url": "example-item",
    "static_url": "example-item",
    "ribbon": "example",
    "striked": "example",
    "price": 49.9,
    "description": "Text shown on the site.",
    "product_informations": [
      {
        "name": "Example",
        "description": "Text shown on the site.",
        "_id": "6543210fedcba98765432100"
      }
    ],
    "product_options": [
      {
        "name": "Example",
        "options": [],
        "informations": [],
        "_id": "6543210fedcba98765432100"
      }
    ],
    "published": true,
    "available_for_purchase": true,
    "medias": [
      {
        "media": "6543210fedcba98765432100",
        "gcs_url": "example-item",
        "gcs_480_30_url": "example-item",
        "gcs_720_30_url": "example-item",
        "gcs_1080_30_url": "example-item",
        "duration": 1,
        "vimeo_uri": "example",
        "vimeo_picture": "example",
        "vimeo_url": "example-item",
        "youtube_url": "example-item",
        "youtube_picture": "example",
        "thumbnail": "example",
        "_id": "6543210fedcba98765432100"
      }
    ],
    "collection_id": "6543210fedcba98765432100",
    "grouping": [
      {
        "collection_id": "6543210fedcba98765432100",
        "_id": "6543210fedcba98765432100"
      }
    ],
    "owner_id": "6543210fedcba98765432100",
    "connected_account_owner_id": "6543210fedcba98765432100",
    "qty": 1,
    "origin_address": "example",
    "selected": false,
    "custom_1": "example",
    "custom_2": "example",
    "custom_3": "example",
    "about_page": "6543210fedcba98765432100",
    "is_digital": false,
    "secondary_cta": {
      "show": false,
      "title": "Example",
      "webUrl": "example",
      "appUrl": "example"
    },
    "attached_priceplans": {
      "name": "Example",
      "priceplans": "example"
    }
  }
]

Create a product

Create new product.

User token

Needs the token of a signed-in user.

Parameters
namestring

Name of the product, required.

on_behalf_ofstring

The product's on behalf of.

Returns

Returns the Product object.

Status codes

201 400 401 403 500

POST/products
curl -X POST 'http://a-plus-solutions.eu/products?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "name": "...", "on_behalf_of": "..." }'
Response
{
  "name": "Example",
  "url": "example-item",
  "static_url": "example-item",
  "ribbon": "example",
  "striked": "example",
  "price": 49.9,
  "description": "Text shown on the site.",
  "product_informations": [
    {
      "name": "Example",
      "description": "Text shown on the site.",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "product_options": [
    {
      "name": "Example",
      "options": [],
      "informations": [],
      "_id": "6543210fedcba98765432100"
    }
  ],
  "published": true,
  "available_for_purchase": true,
  "medias": [
    {
      "media": "6543210fedcba98765432100",
      "gcs_url": "example-item",
      "gcs_480_30_url": "example-item",
      "gcs_720_30_url": "example-item",
      "gcs_1080_30_url": "example-item",
      "duration": 1,
      "vimeo_uri": "example",
      "vimeo_picture": "example",
      "vimeo_url": "example-item",
      "youtube_url": "example-item",
      "youtube_picture": "example",
      "thumbnail": "example",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "collection_id": "6543210fedcba98765432100",
  "grouping": [
    {
      "collection_id": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "owner_id": "6543210fedcba98765432100",
  "connected_account_owner_id": "6543210fedcba98765432100",
  "qty": 1,
  "origin_address": "example",
  "selected": false,
  "custom_1": "example",
  "custom_2": "example",
  "custom_3": "example",
  "about_page": "6543210fedcba98765432100",
  "is_digital": false,
  "secondary_cta": {
    "show": false,
    "title": "Example",
    "webUrl": "example",
    "appUrl": "example"
  },
  "attached_priceplans": {
    "name": "Example",
    "priceplans": "example"
  }
}

Delete multiple products

Deletes the product. This cannot be undone.

User token

Needs the token of a signed-in user.

Path parameters
delete_idsstringRequired

The product's delete ids.

Returns

Returns an empty answer on success.

Status codes

200 401 500

DELETE/products-multiple/:delete_ids
curl -X DELETE 'http://a-plus-solutions.eu/products-multiple/{delete_ids}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'

Update multiple products

Changes the fields sent; the others stay as they are.

User token

Needs the token of a signed-in user.

Path parameters
patch_idsstringRequired

The product's patch ids.

Parameters
collection_idobjectid

Reference to the Collection model, it is the store where product is grouped.

groupingobject[]

References to the Collection model, they act as filters.

updatesstring

The product's updates.

Returns

Returns the Product object.

Status codes

200 400 401 500

PATCH/products-multiple/:patch_ids
curl -X PATCH 'http://a-plus-solutions.eu/products-multiple/{patch_ids}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "collection_id": "...", "grouping": "...", "updates": "..." }'
Response
{
  "name": "Example",
  "url": "example-item",
  "static_url": "example-item",
  "ribbon": "example",
  "striked": "example",
  "price": 49.9,
  "description": "Text shown on the site.",
  "product_informations": [
    {
      "name": "Example",
      "description": "Text shown on the site.",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "product_options": [
    {
      "name": "Example",
      "options": [],
      "informations": [],
      "_id": "6543210fedcba98765432100"
    }
  ],
  "published": true,
  "available_for_purchase": true,
  "medias": [
    {
      "media": "6543210fedcba98765432100",
      "gcs_url": "example-item",
      "gcs_480_30_url": "example-item",
      "gcs_720_30_url": "example-item",
      "gcs_1080_30_url": "example-item",
      "duration": 1,
      "vimeo_uri": "example",
      "vimeo_picture": "example",
      "vimeo_url": "example-item",
      "youtube_url": "example-item",
      "youtube_picture": "example",
      "thumbnail": "example",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "collection_id": "6543210fedcba98765432100",
  "grouping": [
    {
      "collection_id": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "owner_id": "6543210fedcba98765432100",
  "connected_account_owner_id": "6543210fedcba98765432100",
  "qty": 1,
  "origin_address": "example",
  "selected": false,
  "custom_1": "example",
  "custom_2": "example",
  "custom_3": "example",
  "about_page": "6543210fedcba98765432100",
  "is_digital": false,
  "secondary_cta": {
    "show": false,
    "title": "Example",
    "webUrl": "example",
    "appUrl": "example"
  },
  "attached_priceplans": {
    "name": "Example",
    "priceplans": "example"
  }
}

List multiple products

Returns the site's products, newest first unless a sort is given.

User token

Needs the token of a signed-in user.

Path parameters
product_idsstringRequired

The product's product ids.

Returns

Returns a list of Product objects.

Status codes

200 401 500

GET/products-multiple/:product_ids
curl -X GET 'http://a-plus-solutions.eu/products-multiple/{product_ids}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
[
  {
    "name": "Example",
    "url": "example-item",
    "static_url": "example-item",
    "ribbon": "example",
    "striked": "example",
    "price": 49.9,
    "description": "Text shown on the site.",
    "product_informations": [
      {
        "name": "Example",
        "description": "Text shown on the site.",
        "_id": "6543210fedcba98765432100"
      }
    ],
    "product_options": [
      {
        "name": "Example",
        "options": [],
        "informations": [],
        "_id": "6543210fedcba98765432100"
      }
    ],
    "published": true,
    "available_for_purchase": true,
    "medias": [
      {
        "media": "6543210fedcba98765432100",
        "gcs_url": "example-item",
        "gcs_480_30_url": "example-item",
        "gcs_720_30_url": "example-item",
        "gcs_1080_30_url": "example-item",
        "duration": 1,
        "vimeo_uri": "example",
        "vimeo_picture": "example",
        "vimeo_url": "example-item",
        "youtube_url": "example-item",
        "youtube_picture": "example",
        "thumbnail": "example",
        "_id": "6543210fedcba98765432100"
      }
    ],
    "collection_id": "6543210fedcba98765432100",
    "grouping": [
      {
        "collection_id": "6543210fedcba98765432100",
        "_id": "6543210fedcba98765432100"
      }
    ],
    "owner_id": "6543210fedcba98765432100",
    "connected_account_owner_id": "6543210fedcba98765432100",
    "qty": 1,
    "origin_address": "example",
    "selected": false,
    "custom_1": "example",
    "custom_2": "example",
    "custom_3": "example",
    "about_page": "6543210fedcba98765432100",
    "is_digital": false,
    "secondary_cta": {
      "show": false,
      "title": "Example",
      "webUrl": "example",
      "appUrl": "example"
    },
    "attached_priceplans": {
      "name": "Example",
      "priceplans": "example"
    }
  }
]

Update a product

Update Product by id.

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the product.

Parameters
convertedPricestring

The product's converted price.

product_optionsobject[]

The product's product options.

Returns

Returns the Product object.

Status codes

200 400 401 403 404 500

PATCH/products/:id
curl -X PATCH 'http://a-plus-solutions.eu/products/{id}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "convertedPrice": "...", "product_options": "..." }'
Response
{
  "name": "Example",
  "url": "example-item",
  "static_url": "example-item",
  "ribbon": "example",
  "striked": "example",
  "price": 49.9,
  "description": "Text shown on the site.",
  "product_informations": [
    {
      "name": "Example",
      "description": "Text shown on the site.",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "product_options": [
    {
      "name": "Example",
      "options": [],
      "informations": [],
      "_id": "6543210fedcba98765432100"
    }
  ],
  "published": true,
  "available_for_purchase": true,
  "medias": [
    {
      "media": "6543210fedcba98765432100",
      "gcs_url": "example-item",
      "gcs_480_30_url": "example-item",
      "gcs_720_30_url": "example-item",
      "gcs_1080_30_url": "example-item",
      "duration": 1,
      "vimeo_uri": "example",
      "vimeo_picture": "example",
      "vimeo_url": "example-item",
      "youtube_url": "example-item",
      "youtube_picture": "example",
      "thumbnail": "example",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "collection_id": "6543210fedcba98765432100",
  "grouping": [
    {
      "collection_id": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "owner_id": "6543210fedcba98765432100",
  "connected_account_owner_id": "6543210fedcba98765432100",
  "qty": 1,
  "origin_address": "example",
  "selected": false,
  "custom_1": "example",
  "custom_2": "example",
  "custom_3": "example",
  "about_page": "6543210fedcba98765432100",
  "is_digital": false,
  "secondary_cta": {
    "show": false,
    "title": "Example",
    "webUrl": "example",
    "appUrl": "example"
  },
  "attached_priceplans": {
    "name": "Example",
    "priceplans": "example"
  }
}

Delete a product

Delete Product record by id.

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the product.

Returns

Returns an empty answer on success.

Status codes

200 401 403 404 500

DELETE/products/:id
curl -X DELETE 'http://a-plus-solutions.eu/products/{id}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'

Retrieve a product

Returns one product, found by its ID.

Public

Public - no token needed.

Path parameters
idstringRequired

The ID of the product.

Returns

Returns the Product object.

Status codes

200 404 500

GET/products/:id/media
curl -X GET 'http://a-plus-solutions.eu/products/{id}/media?ionic=true'
Response
{
  "name": "Example",
  "url": "example-item",
  "static_url": "example-item",
  "ribbon": "example",
  "striked": "example",
  "price": 49.9,
  "description": "Text shown on the site.",
  "product_informations": [
    {
      "name": "Example",
      "description": "Text shown on the site.",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "product_options": [
    {
      "name": "Example",
      "options": [],
      "informations": [],
      "_id": "6543210fedcba98765432100"
    }
  ],
  "published": true,
  "available_for_purchase": true,
  "medias": [
    {
      "media": "6543210fedcba98765432100",
      "gcs_url": "example-item",
      "gcs_480_30_url": "example-item",
      "gcs_720_30_url": "example-item",
      "gcs_1080_30_url": "example-item",
      "duration": 1,
      "vimeo_uri": "example",
      "vimeo_picture": "example",
      "vimeo_url": "example-item",
      "youtube_url": "example-item",
      "youtube_picture": "example",
      "thumbnail": "example",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "collection_id": "6543210fedcba98765432100",
  "grouping": [
    {
      "collection_id": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "owner_id": "6543210fedcba98765432100",
  "connected_account_owner_id": "6543210fedcba98765432100",
  "qty": 1,
  "origin_address": "example",
  "selected": false,
  "custom_1": "example",
  "custom_2": "example",
  "custom_3": "example",
  "about_page": "6543210fedcba98765432100",
  "is_digital": false,
  "secondary_cta": {
    "show": false,
    "title": "Example",
    "webUrl": "example",
    "appUrl": "example"
  },
  "attached_priceplans": {
    "name": "Example",
    "priceplans": "example"
  }
}

Create a product

Creates a product from the fields sent.

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the product.

Status codes

200 400 401

POST/products/:id/media
curl -X POST 'http://a-plus-solutions.eu/products/{id}/media?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'

Delete a product

Deletes the product. This cannot be undone.

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the product.

media_idstringRequired

The product's media id.

Returns

Returns an empty answer on success.

Status codes

200 401

DELETE/products/:id/media/:media_id
curl -X DELETE 'http://a-plus-solutions.eu/products/{id}/media/{media_id}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'

Retrieve a product

Returns one product, found by its URL slug.

Optional userPage access

Works without a token; with a user token the answer is personal.

Path parameters
urlstringRequired

The product's URL slug, as in its address on the site.

Query parameters
sessionIdstring

Only products with this session id.

Returns

Returns the Product object.

Status codes

200 401 402 404 500

GET/products/:url
curl -X GET 'http://a-plus-solutions.eu/products/{url}?ionic=true&sessionId=...'
Response
{
  "name": "Example",
  "url": "example-item",
  "static_url": "example-item",
  "ribbon": "example",
  "striked": "example",
  "price": 49.9,
  "description": "Text shown on the site.",
  "product_informations": [
    {
      "name": "Example",
      "description": "Text shown on the site.",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "product_options": [
    {
      "name": "Example",
      "options": [],
      "informations": [],
      "_id": "6543210fedcba98765432100"
    }
  ],
  "published": true,
  "available_for_purchase": true,
  "medias": [
    {
      "media": "6543210fedcba98765432100",
      "gcs_url": "example-item",
      "gcs_480_30_url": "example-item",
      "gcs_720_30_url": "example-item",
      "gcs_1080_30_url": "example-item",
      "duration": 1,
      "vimeo_uri": "example",
      "vimeo_picture": "example",
      "vimeo_url": "example-item",
      "youtube_url": "example-item",
      "youtube_picture": "example",
      "thumbnail": "example",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "collection_id": "6543210fedcba98765432100",
  "grouping": [
    {
      "collection_id": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "owner_id": "6543210fedcba98765432100",
  "connected_account_owner_id": "6543210fedcba98765432100",
  "qty": 1,
  "origin_address": "example",
  "selected": false,
  "custom_1": "example",
  "custom_2": "example",
  "custom_3": "example",
  "about_page": "6543210fedcba98765432100",
  "is_digital": false,
  "secondary_cta": {
    "show": false,
    "title": "Example",
    "webUrl": "example",
    "appUrl": "example"
  },
  "attached_priceplans": {
    "name": "Example",
    "priceplans": "example"
  }
}

Retrieve the digital content

Returns the digital content.

Admin token

Needs a site admin token.

Returns

Returns the DigitalContent object.

Status codes

200 401 500

GET/digital-content
curl -X GET 'http://a-plus-solutions.eu/digital-content?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "name": "Example",
  "type": "example",
  "file": "example",
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

Create a digital content

Create new digital_content.

Admin token

Needs a site admin token.

Parameters
bodystring

The digital content's body.

Returns

Returns the DigitalContent object.

Status codes

201 400 401 500

POST/digital-content
curl -X POST 'http://a-plus-solutions.eu/digital-content?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "body": "..." }'
Response
{
  "name": "Example",
  "type": "example",
  "file": "example",
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

Retrieve a digital content file

Returns one digital content file, found by its ID.

User token

Needs the token of a signed-in user.

Path parameters
idstringRequired

The ID of the digital content file.

Status codes

200 401 404 500

GET/digital-content-file/:id
curl -X GET 'http://a-plus-solutions.eu/digital-content-file/{id}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "name": "Example",
  "type": "example",
  "file": "example",
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

Retrieve a digital content

Returns one digital content, found by its ID.

Admin token

Needs a site admin token.

Path parameters
idstringRequired

The ID of the digital content.

Returns

Returns the DigitalContent object.

Status codes

200 401 404 500

GET/digital-content/:id
curl -X GET 'http://a-plus-solutions.eu/digital-content/{id}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "name": "Example",
  "type": "example",
  "file": "example",
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

Update a digital content

Update DigitalContent by id.

Admin token

Needs a site admin token.

Path parameters
idstringRequired

The ID of the digital content.

Returns

Returns the DigitalContent object.

Status codes

200 400 401 404 500

PATCH/digital-content/:id
curl -X PATCH 'http://a-plus-solutions.eu/digital-content/{id}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "name": "Example",
  "type": "example",
  "file": "example",
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

Delete a digital content

Delete DigitalContent record by id.

Admin token

Needs a site admin token.

Path parameters
idstringRequired

The ID of the digital content.

Returns

Returns an empty answer on success.

Status codes

200 401 404 500

DELETE/digital-content/:id
curl -X DELETE 'http://a-plus-solutions.eu/digital-content/{id}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'

Retrieve the inventory

Returns the inventory.

Admin token

Needs a site admin token.

Returns

Returns the Inventory object.

Status codes

200 401 500

GET/inventory
curl -X GET 'http://a-plus-solutions.eu/inventory?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'
Response
{
  "product": "6543210fedcba98765432100",
  "option": "example",
  "quantity": 0,
  "sku": "example",
  "track": false,
  "trackSku": false,
  "name": {},
  "media": {},
  "category": {},
  "price": {},
  "status": {},
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

Create an inventory

Create new inventory.

Admin token

Needs a site admin token.

Status codes

201 400 401 500

POST/inventory
curl -X POST 'http://a-plus-solutions.eu/inventory?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'

Retrieve an inventory

Returns one inventory, found by its ID.

Public

Public - no token needed.

Path parameters
idstringRequired

The ID of the inventory.

Returns

Returns the Inventory object.

Status codes

200 404 500

GET/inventory/:id
curl -X GET 'http://a-plus-solutions.eu/inventory/{id}?ionic=true'
Response
{
  "product": "6543210fedcba98765432100",
  "option": "example",
  "quantity": 0,
  "sku": "example",
  "track": false,
  "trackSku": false,
  "name": {},
  "media": {},
  "category": {},
  "price": {},
  "status": {},
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

Update an inventory

Update Inventory by id.

Admin token

Needs a site admin token.

Path parameters
idstringRequired

The ID of the inventory.

Parameters
quantitynumber

The inventory's quantity.

trackboolean

Whether the inventory is track.

skustring

The inventory's sku.

Returns

Returns the Inventory object.

Status codes

200 400 401 404 500

PATCH/inventory/:id
curl -X PATCH 'http://a-plus-solutions.eu/inventory/{id}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "quantity": "...", "track": "...", "sku": "..." }'
Response
{
  "product": "6543210fedcba98765432100",
  "option": "example",
  "quantity": 0,
  "sku": "example",
  "track": false,
  "trackSku": false,
  "name": {},
  "media": {},
  "category": {},
  "price": {},
  "status": {},
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

Delete an inventory

Delete Inventory record by id.

Admin token

Needs a site admin token.

Path parameters
idstringRequired

The ID of the inventory.

Returns

Returns an empty answer on success.

Status codes

200 401 404 500

DELETE/inventory/:id
curl -X DELETE 'http://a-plus-solutions.eu/inventory/{id}?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>'

Retrieve an inventory

Returns one inventory, found by its ID.

Public

Public - no token needed.

Path parameters
product_idstringRequired

The inventory's product id.

optionstringRequired

The inventory's option.

Returns

Returns the Inventory object.

Status codes

200 404 500

GET/inventory/:product_id/:option
curl -X GET 'http://a-plus-solutions.eu/inventory/{product_id}/{option}?ionic=true'
Response
{
  "product": "6543210fedcba98765432100",
  "option": "example",
  "quantity": 0,
  "sku": "example",
  "track": false,
  "trackSku": false,
  "name": {},
  "media": {},
  "category": {},
  "price": {},
  "status": {},
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z"
}

Create a product with AI

Create a product from a prompt, written by the AI builder.

User token

Needs the token of a signed-in user.

Parameters
promptstring

What the AI should do with the product, in plain words - any language.

chatIdstring

The AI chat this request belongs to; its history and language carry over. Leave it out to start a new chat.

aiVersionstring

Which version of the AI builder to use; leave it out for the current one.

item_idstring

The ID of the product to change.

Status codes

200 401 500

POST/create-new-product
curl -X POST 'http://a-plus-solutions.eu/create-new-product?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "prompt": "...", "chatId": "...", "aiVersion": "...", "item_id": "..." }'
Response
{
  "chat_id": "6543210fedcba98765432100",
  "role": "user",
  "text": "Text shown on the site.",
  "target_url": "example-item",
  "action": "RESPONSE",
  "options": [
    "example"
  ],
  "medias": [
    {
      "media": "6543210fedcba98765432100",
      "gcs_url": "example-item",
      "gemini_uri": "example",
      "gemini_interaction_id": "example",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "products": [
    "6543210fedcba98765432101"
  ],
  "services": [
    "6543210fedcba98765432101"
  ],
  "blogposts": [
    "6543210fedcba98765432101"
  ],
  "programs": [
    "6543210fedcba98765432101"
  ],
  "suggestions": [
    {
      "text": "Text shown on the site.",
      "route": "example",
      "item_id": "6543210fedcba98765432100",
      "medias": [],
      "picture": "6543210fedcba98765432100",
      "_id": "6543210fedcba98765432100"
    }
  ],
  "is_system": false,
  "_id": "6543210fedcba98765432100",
  "updatedAt": "2026-11-04T12:00:00.000Z",
  "createdAt": "2026-11-04T12:00:00.000Z",
  "data": {
    "object": "example",
    "object_type": "example",
    "edit_summary": "example",
    "edit_diff": "example",
    "undo_record": "example",
    "hero_animation_offer": "example",
    "preview_state": "example",
    "pending_credit_cost": 0,
    "target_restore": "example",
    "media_request": "example",
    "item_request": "example",
    "reference_request": "example"
  }
}

Generate a product with AI

Use it to create one new product record from scratch or a prompt.

User token

Needs the token of a signed-in user.

Parameters
promptstring

What the AI should do with the product, in plain words - any language.

chatIdstring

The AI chat this request belongs to; its history and language carry over. Leave it out to start a new chat.

Status codes

200 401 500

POST/generate-product
curl -X POST 'http://a-plus-solutions.eu/generate-product?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "prompt": "...", "chatId": "..." }'

Modify a product with AI

Use it to edit or update existing product or add a filter to the product.

User token

Needs the token of a signed-in user.

Parameters
promptstring

What the AI should do with the product, in plain words - any language.

item_datastring

The current product, as JSON - the AI changes it and returns the result.

chatIdstring

The AI chat this request belongs to; its history and language carry over. Leave it out to start a new chat.

item_idstring

The ID of the product to change.

item_idsstring

The product's item ids.

Status codes

200 401 500

POST/modify-product
curl -X POST 'http://a-plus-solutions.eu/modify-product?ionic=true' \
  -H 'Authorization: Bearer <TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{ "prompt": "...", "item_data": "...", "chatId": "...", "item_id": "...", "item_ids": "..." }'
↑↓ Navigate↵ GoEsc Close