---
title: "Personalization Platform Services | Customer&#x27;s Canvas Hub"
canonical: "https://customerscanvas.com/docs/hub/dev-center/api/"
---

# Personalization Platform Services

> The Personalization Platform provides several web services that expose REST APIs. This page explains how to work with them.

## Services

At the moment, the platform includes the following backend services:

- **[Asset Storage API](https://customerscanvas.com/docs/hub/dev-center/api/asset-storage.md)** manages Customer's Canvas data, CRUD operations for the designs, fonts, images, etc.
- **[Asset Processor API](https://customerscanvas.com/docs/hub/dev-center/api/asset-processor.md)** works with Customer's Canvas data when you need to process it, e.g. importing designs, getting previews, and similar operations.
- **[Asset Generator API](https://customerscanvas.com/docs/hub/dev-center/api/asset-generator.md)** generates die-cut templates and 3D mockups for packaging according to predefined specifications.
- **[Design Atoms API](https://customerscanvas.com/docs/hub/dev-center/api/design-atoms.md)** is mostly needed when working with the design object model, e.g. when you create your own editor.
- **[Storefront API](https://customerscanvas.com/docs/hub/dev-center/api/storefront.md)** provides all the operations you need to make the integration with an online store or e-commerce system.
- **[BackOffice API](https://customerscanvas.com/docs/hub/dev-center/api/backoffice.md)** manages tenant-related data and manipulates PIM products.

## API Gateway

All these services are connected through an API Gateway. You can access it at:

https://api.customerscanvashub.com

If your Customer's Canvas tenant is hosted in the European environment, use https://api.eu.customerscanvashub.com. If it is hosted in the Australian environment, use https://api.au.customerscanvashub.com.

The API Gateway provides a Swagger UI interface that allows you to try the API without writing any code.

![Swagger UI](images/SwaggerUI.png)

### Authorization

Backend services authorization is based on the OAuth2 protocol. Customer's Canvas Hub supports three OAuth2 flows — Client Credentials, Implicit, and Authorization Code — and recommends the Client Credentials flow for backend integrations. To receive an access token, send a Client ID and Client Secret to `https://customerscanvashub.com/connect/token`. You create them in your Customer's Canvas account in **Settings** > **External apps**. For details, see [Authentication](https://customerscanvas.com/docs/hub/dev-center/api/auth.md).

![Authorization for external apps](images/ExternalApps.png)

Once you receive an access token, you need to send it along with each request in the `Authorization` header with the `Bearer` prefix:

```http
Authorization: Bearer <token>
```

You can also use the External App credentials directly in the Swagger UI (**Authorize** button) or in tools like Postman to receive a token automatically.

### URLs

The API URL structure is always the same:  

`https://api.customerscanvashub.com/api/{short-service-name}/{version}/{endpoint}` 

The service that returns Swagger specs (as OpenAPI v3) has a similar structure:

`https://api.customerscanvashub.com/openapi3/{short-service-name}/{version}` 

The table below puts it together. The info endpoint can be used as the simplest example of a working URL - feel free to copy it to Postman or another API testing tool and modify the address to the required endpoint. 

| Service           | Short name | Info endpoint | Swagger |
|-------------------|------------|---------------|---------|
| Asset Storage     | storage    | [Info URL](https://api.customerscanvashub.com/api/storage/v1/info)    | [Swagger specs](https://api.customerscanvashub.com/openapi3/storage/v1)    |
| Asset Processor   | processor  | [Info URL](https://api.customerscanvashub.com/api/processor/v1/info)  | [Swagger specs](https://api.customerscanvashub.com/openapi3/processor/v1)  |
| Asset Generator   | asset-generator  | [Info URL](https://api.customerscanvashub.com/api/asset-generator/v1/info)  | [Swagger specs](https://api.customerscanvashub.com/openapi3/asset-generator/v1)  |
| Design Atoms API  | atoms      | [Info URL](https://api.customerscanvashub.com/api/atoms/v1/info)      | [Swagger specs](https://api.customerscanvashub.com/openapi3/atoms/v1)      |
| Storefront API    | storefront | [Info URL](https://api.customerscanvashub.com/api/storefront/v1/info) | [Swagger specs](https://api.customerscanvashub.com/openapi3/storefront/v1) |
| BackOffice API    | backoffice | [Info URL](https://api.customerscanvashub.com/api/backoffice/v1/info) | [Swagger specs](https://api.customerscanvashub.com/openapi3/backoffice/v1) |

### API clients

Although you can use any HTTP client to send requests to the API endpoints directly, it is not the most efficient way to work with the API. Constructing JSON payloads before each call is error-prone, and hardcoding endpoint URLs is tedious.

You have the following options:

#### Use official API clients

We provide official API clients for five platforms:

- .NET (both .NET Core and .NET Framework)
- TypeScript for Angular
- Node.js (Axios-based)
- PHP
- Python

You can install them from NuGet, npm, Composer, or pip. You get all necessary data models implemented as native classes and also special HTTP client wrapper classes for making API calls.

See [API clients](https://customerscanvas.com/docs/hub/dev-center/api/clients.md) for the full list, installation commands, and step-by-step guides.

#### Generate it from an OpenAPI document

As you have already noticed, you can get a Swagger spec for each service and create an API client yourself. You may use your favorite tools - NSwag, OpenAPI Generator, Jane, Swagger Editor/Codegen, and others. They allow you to generate an API client for the most popular platforms and languages - PHP, Python, JavaScript, Java, C#, and many more.

Most of these tools do not support 100% of the OpenAPI v3 specification and may fail to generate the correct code for certain endpoints. In this case, you may need to change the auto-generated code manually.

If the tools don't support the OpenAPI v3 specification but can work with OpenAPI v2, feel free to contact us. We can provide you with the v2 specs if it is more convenient for you.

#### Write a wrapper yourself

You don't have to learn the code generation tools and use the Swagger files at all. For example, if there are no tools for your platform, or if you just need to use a couple endpoints and you consider creating a separate library is excessive. In this case, just write mappers to transform your data structures into JSON payloads and a wrapper for the HTTP client manually.
