# Pricelist API
**Base URL**: https://dev-cloud.acronis.com/api/price_sync/v1
## Security
### OAuth 2.0
OAuth 2.0 security scheme definition for a user authorization.
Supported grant types:
* `password`
* `client_credentials`
* `authorization_code`
* `urn:ietf:params:oauth:grant-type:jwt-bearer`
Authorization URI example: `/api/2/idp/authorize`
Access token URI example: `/api/2/idp/token`
### Request parameters
#### Headers
| Name | Description |
|------|-------------|
| `Authorization` | (Required) OAuth 2.0 access token.
**Type**: String
**Pattern**: `^Bearer [0-9a-zA-Z\-\._~+/]+={0,2}$` |
### Scopes
* `urn:acronis.com::service_plans_manager:|cti.a.p.lic.service_plan.v1.0[type={plan type}]:writer`
* `urn:acronis.com::service_plans_manager:|cti.a.p.lic.service_plan.v1.0[type={plan type}]:reader`
* `urn:acronis.com::service_plans_manager::price_list_writer`
* `urn:acronis.com::service_plans_manager::price_list_reader`
## Endpoints
### Fetch tenant's price lists (GET /effective_price_lists)
Returns a tenant's price lists for one or more months.
#### Security
The endpoint supports the following authorization methods: `OAuth 2.0`
For OAuth2 authorization method, one of the following scopes is required by the endpoint:
* `urn:acronis.com::service_plans_manager::price_list_reader`
#### Request parameters
##### Headers
| Name | Description |
|------|-------------|
| `Authorization` | (Required) JWT authorization header
**Type**: String
**Pattern**: `^Bearer (.*)$` |
##### Query parameters
| Name | Description |
|------|-------------|
| `tenant_id` | (Required) Tenant UUID to fetch prices for.
**Type**: String
**Pattern**: `^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$` |
| `months` | (Required) Array of months (format YYYY-MM) for which to retrieve price lists.
**Type**: String |
#### Responses
##### `200` — Price lists have been successfully retrieved.
**Media type**: `application/json`
- `price_lists` — Collected price lists for the requested months.
**Type**: Array of Object
**Array type description:**
**Type**: Object
**Example**:
```json
{
"price_lists": [
{
"month": "",
"currency": "",
"commitment": "",
"pricelist_code": "",
"prices": [
{
"sku": "",
"effective_price": "",
"list_price": "",
"sku_discount": "",
"pricelist_discount": "",
"category": "",
"sub_category": "",
"name": "",
"friendly_name": ""
}
]
}
]
}
```
##### `500` — Something unexpected has gone wrong on the server.
**Media type**: `application/json`
- `reason` — Obsolete. Error id or code, unique in the domain. Same as in 'code' field
**Type**: String
- `context` — Error context dictionary
**Type**: Object
- `code` — Error id or code, unique in the domain. Same as in 'reason' field
**Type**: String
**Allowed values**:
- `INTERNAL_SERVER_ERROR`
- `domain` — Error type or category. Can be ['Licensing','Access'] or name of service (for example 'PolicyManager' or 'VaultManager')
**Type**: String
**Allowed values**:
- `GENERAL`
- `debug` — Error debug information (map type)
**Type**: Object
- `kb_link` — Components for kblink
**Type**: Object
- `message` — human-readable message, describing the error.
**Type**: String
**Example**:
```json
{
"domain": "GENERAL",
"code": "INTERNAL_SERVER_ERROR"
}
```
##### `400` — The request cannot be processed since it's malformed or contains invalid data.
**Media type**: `application/json`
- `reason` — Obsolete. Error id or code, unique in the domain. Same as in 'code' field
**Type**: String
- `context` — Error context dictionary
**Type**: Object
- `code` — Error id or code, unique in the domain. Same as in 'reason' field
**Type**: String
**Allowed values**:
- `BAD_REQUEST_ERROR`
- `domain` — Error type or category. Can be ['Licensing','Access'] or name of service (for example 'PolicyManager' or 'VaultManager')
**Type**: String
**Allowed values**:
- `GENERAL`
- `debug` — Error debug information (map type)
**Type**: Object
- `kb_link` — Components for kblink
**Type**: Object
- `message` — human-readable message, describing the error.
**Type**: String
**Example**:
```json
{
"domain": "GENERAL",
"code": "BAD_REQUEST_ERROR"
}
```
##### `401` — Method required an authenticated user.
**Media type**: `application/json`
- `reason` — Obsolete. Error id or code, unique in the domain. Same as in 'code' field
**Type**: String
- `context` — Error context dictionary
**Type**: Object
- `code` — Error id or code, unique in the domain. Same as in 'reason' field
**Type**: String
**Allowed values**:
- `UNAUTHORIZED_REQUEST`
- `domain` — Error type or category. Can be ['Licensing','Access'] or name of service (for example 'PolicyManager' or 'VaultManager')
**Type**: String
**Allowed values**:
- `ACCESS`
- `debug` — Error debug information (map type)
**Type**: Object
- `kb_link` — Components for kblink
**Type**: Object
- `message` — human-readable message, describing the error.
**Type**: String
**Example**:
```json
{
"domain": "ACCESS",
"code": "UNAUTHORIZED_REQUEST"
}
```
##### `403` — Current user has no permissions for this URL/method.
**Media type**: `application/json`
- `reason` — Obsolete. Error id or code, unique in the domain. Same as in 'code' field
**Type**: String
- `context` — Error context dictionary
**Type**: Object
- `code` — Error id or code, unique in the domain. Same as in 'reason' field
**Type**: String
**Allowed values**:
- `ACCESS_DENIED_ERROR`
- `domain` — Error type or category. Can be ['Licensing','Access'] or name of service (for example 'PolicyManager' or 'VaultManager')
**Type**: String
**Allowed values**:
- `ACCESS`
- `debug` — Error debug information (map type)
**Type**: Object
- `kb_link` — Components for kblink
**Type**: Object
- `message` — human-readable message, describing the error.
**Type**: String
**Example**:
```json
{
"domain": "ACCESS",
"code": "ACCESS_DENIED_ERROR",
"context": {
"scope": "urn:acronis.com:tenant-id:1234567890:company_admin"
}
}
```