topi Seller API (1.0.0)
Download OpenAPI specification:Download
Strings returned can be localized when the Accept-Language header is provided in the request. It should follow the RFC-2616 convention.
Get rental overview for products
Authorizations:
Request Body schema: application/jsonrequired
required | Array of objects (RentalOverviewRequest) | ||||||||
Array
|
Responses
Response Schema: application/json
can_checkout | boolean Indicates whether the entire collection of products can be checked out with topi or not. If there is an unsupported product, then this will be false |
currency | |
Array of objects (CartProductRentalOverview) | |
total_rental_amount | integer <int64> Sum of all recommended net rental amounts. Only present when all supplied products have rental terms. |
total_rental_summary | string A string representing the minimum total rental amount for the entire topi basket, which can be directly rendered on the cart page. |
Request samples
- Payload
- cURL
- JavaScript (fetch)
{- "products": [
- {
- "base_rental_price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000,
- "tax_rate": 1900
}, - "price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000,
- "tax_rate": 1900
}, - "quantity": 1,
- "seller_product_reference": {
- "reference": "123ab-5343",
- "source": "sap"
}
}
]
}
Response samples
- 200
- 401
- 403
{- "can_checkout": false,
- "currency": "EUR",
- "product_prices": [
- {
- "available_rental_terms": [
- {
- "duration": 12,
- "id": "739b63c2-9e58-4964-b38d-4ebb424de242",
- "monthly_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000,
- "tax_rate": 1900
}
}
], - "can_checkout": false,
- "currency": "EUR",
- "has_rental_terms": false,
- "quantity": 1,
- "seller_product_reference": {
- "reference": "123ab-5343",
- "source": "sap"
}, - "summary": "Rent with topi from €23.45/month",
- "total_rental_amount": 1
}
], - "total_rental_amount": 1,
- "total_rental_summary": "Rent with topi from €123.45/month"
}
Retrieve product categorization information
get categorisation information for populating frontend dropdowns
Authorizations:
Responses
Response Schema: application/json
id required | string |
node_type required | string The kind of node, such as manufacturer, category, device. |
children | Array of objects (CategorisationNode) The value to return to the Backend from this node if chosen in frontend. |
label | string The label to display in the frontend. |
parameter | string The parameter to evaluate on, if the node is an evaluation node (nodetype = topLow). |
threshold | integer <int64> The tipping point from where the category goes from 'low' to 'top'. |
value | string The value to return to the Backend from this node if chosen in frontend. |
Request samples
- cURL
- JavaScript (fetch)
curl -X GET https://seller-api.topi.eu/v1/catalog/categorisation_information \ -H "Authorization: Bearer $ACCESS_TOKEN"
Response samples
- 200
- 401
- 403
[- {
- "children": [
- { }
], - "id": "abc123",
- "label": "abc123",
- "node_type": "abc123",
- "parameter": "abc123",
- "threshold": 1,
- "value": "abc123"
}
]
Check if products are supported
Checks whether the products with the given references are supported or not.
When using in the Sandbox
Returns the requested products with their available contract terms, depending on the combination of the supplied Source and Reference values:
- To get a product with
PayNow
contract terms : The suppliedsource
should beSAP
withreference
specified as1234-5678
. - To get a product with
Rent
contract terms : There are two ways to get this value either when the suppliedsource
isSAP
and thereference
is1111-1111
or withsource
set toB6
andreference
specified as2222-2222
. - To get a product that is not topi supported: Specify the
source
asSAP
andreference
should be8765-4321
.
In other cases this method will return an empty array.
This method has been defined as POST because the size of the input values could grow fast.
Authorizations:
Request Body schema: application/jsonrequired
required | Array of objects (SellerProductReference) the ids for obtains the available contract terms. | ||||
Array
|
Responses
Response Schema: application/json
required | Array of objects (ProductSummary) Array of product summaries, detailing each product's specifications and available contract terms. | ||||||||
Array
|
Request samples
- Payload
- cURL
- JavaScript (fetch)
{- "seller_product_references": [
- {
- "reference": "123ab-5343",
- "source": "sap"
}
]
}
Response samples
- 200
- 401
- 403
{- "products": [
- {
- "available_contract_terms": {
- "can_pay_now": false,
- "can_rent": false,
- "rent": {
- "duration": 1
}
}, - "id": "739b63c2-9e58-4964-b38d-4ebb424de242",
- "is_supported": false,
- "seller_product_reference": {
- "reference": "123ab-5343",
- "source": "sap"
}
}
]
}
Add a custom product
Add a single custom product to the catalog
Authorizations:
Request Body schema: application/jsonrequired
required | object (CustomProduct) | ||||||||||||||||
|
Responses
Response Schema: application/json
id required | string <regexp> ^[0-9A-Za-z\-]+$ The id of the import processing |
status required | string Enum: "created" "started" "completed" "failed" The current import status. |
object (SummaryInfo) |
Request samples
- Payload
- cURL
- JavaScript (fetch)
{- "product": {
- "CategorisationIdentifiers": {
- "category": "macbook",
- "device": "macbook_pro_13",
- "manufacturer": "apple",
- "price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}
}, - "base_rental_price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "description": "aaa",
- "manufacturer": "abc123",
- "price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "product_standard_identifiers": [
- {
- "id": "123ab-4567",
- "identifier_type": "EAN"
}
], - "reference": "123ab-5343",
- "title": "abc123"
}
}
Response samples
- 200
- 401
- 403
{- "id": "739b63c2-9e58-4964-b38d-4ebb424de242",
- "status": "started",
- "summary": {
- "sample_products_rejected": [
- {
- "error_code": "unsupported_product",
- "error_description": "the product type is not supported",
- "seller_product_reference": {
- "reference": "123ab-5343",
- "source": "sap"
}
}
], - "total_products": 1,
- "total_products_imported": 1,
- "total_products_rejected": 1
}
}
Remove custom product
delete a single custom product from the catalog
Authorizations:
path Parameters
id required | string Example: abc123 The productId of the product to remove |
Responses
Request samples
- cURL
- JavaScript (fetch)
curl -X DELETE https://seller-api.topi.eu/v1/catalog/custom_product/{id} \ -H "Authorization: Bearer $ACCESS_TOKEN"
Response samples
- 401
- 403
"abc123"
edit an out of catalog product
Edit an out of catalog product
Authorizations:
path Parameters
id required | string <regexp> ^[0-9A-Za-z\-]+$ Example: 739b63c2-9e58-4964-b38d-4ebb424de242 topi ID for the product |
Request Body schema: application/jsonrequired
required | object (CustomProduct) | ||||||||||||||||
|
Responses
Response Schema: application/json
product_id required | string <regexp> ^[0-9A-Za-z\-]+$ Product ID |
required | object (MoneyAmount) |
title required | string Title of the product. |
required | Array of objects (SellerProductReference) An array of the seller's unique references for this product. |
required | object (ContractTermsSummary) |
reference required | string The product reference number that matches a search term. |
origin required | string The origin of the product, 'manual','automatic' or 'central_catalog'. |
manufacturer required | string The manufacturer of the product. |
archived | boolean Whether or not the product has been archived by the seller. |
object (MoneyAmount) | |
object (CategorisationIdentifiers) | |
description | string Detailed description of the product. |
ean | string The EAN code of the product. |
mpn | string The MPN code of the product. |
pretty_id | string The pretty id/reference that the seller filled. Can be a non-unique dummy id. |
pricing_category | string The pricing category of the product. |
subtitle | string Subtitle of the product. |
Request samples
- Payload
- cURL
- JavaScript (fetch)
{- "product": {
- "CategorisationIdentifiers": {
- "category": "macbook",
- "device": "macbook_pro_13",
- "manufacturer": "apple",
- "price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}
}, - "base_rental_price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "description": "aaa",
- "manufacturer": "abc123",
- "price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "product_standard_identifiers": [
- {
- "id": "123ab-4567",
- "identifier_type": "EAN"
}
], - "reference": "123ab-5343",
- "title": "abc123"
}
}
Response samples
- 200
- 401
- 403
{- "archived": false,
- "available_contract_terms": {
- "can_pay_now": false,
- "can_rent": false,
- "rent": {
- "duration": 1
}
}, - "base_rental_price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "categorisation_identifiers": {
- "category": "macbook",
- "device": "macbook_pro_13",
- "manufacturer": "apple",
- "price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}
}, - "description": "abc123",
- "ean": "abc123",
- "list_price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "manufacturer": "abc123",
- "mpn": "abc123",
- "origin": "abc123",
- "pretty_id": "abc123",
- "pricing_category": "abc123",
- "product_id": "739b63c2-9e58-4964-b38d-4ebb424de242",
- "reference": "abc123",
- "seller_product_references": [
- {
- "reference": "123ab-5343",
- "source": "sap"
}
], - "subtitle": "abc123",
- "title": "abc123"
}
Import products into the catalog
Add a batch of products to the catalog.
When using in the Sandbox
Use the following scenarios to get different fixtures:
- Status
"completed"
:Send a catalog with less than 10 products
- Status
"created"
:Send a catalog with 10 products or more
- Status
"failed"
:Send a product inside the catalog with the "source" or the "reference" in the "seller_product_reference" as empty string
Authorizations:
Request Body schema: application/jsonrequired
required | Array of objects (AddProduct) non-empty Product payload | ||||||||||||||||||||||||||||
Array (non-empty)
|
Responses
Response Schema: application/json
id required | string <regexp> ^[0-9A-Za-z\-]+$ The id of the import processing |
status required | string Enum: "created" "started" "completed" "failed" The current import status. |
object (SummaryInfo) |
Request samples
- Payload
- cURL
- JavaScript (fetch)
{- "products": [
- {
- "base_rental_price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "description": "aaa",
- "extra_details": [
- {
- "property": "memory",
- "value": "16GB DDR5"
}
], - "is_active": false,
- "manufacturer": "abc123",
- "price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000,
- "tax_rate": 1900
}, - "product_standard_identifiers": [
- {
- "id": "123ab-4567",
- "identifier_type": "EAN"
}
], - "seller_categories": [
- {
- "id": "abc123",
- "name": "abc123",
- "parent_category_id": "abc123"
}
], - "seller_product_references": [
- {
- "reference": "123ab-5343",
- "source": "sap"
}, - {
- "reference": "123ab-5343",
- "source": "sap"
}
], - "seller_product_type": "software",
- "subtitle": "abc123",
- "title": "abc123"
}, - {
- "base_rental_price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "description": "aaa",
- "extra_details": [
- {
- "property": "memory",
- "value": "16GB DDR5"
}
], - "is_active": false,
- "manufacturer": "abc123",
- "price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000,
- "tax_rate": 1900
}, - "product_standard_identifiers": [
- {
- "id": "123ab-4567",
- "identifier_type": "EAN"
}
], - "seller_categories": [
- {
- "id": "abc123",
- "name": "abc123",
- "parent_category_id": "abc123"
}
], - "seller_product_references": [
- {
- "reference": "123ab-5343",
- "source": "sap"
}, - {
- "reference": "123ab-5343",
- "source": "sap"
}
], - "seller_product_type": "software",
- "subtitle": "abc123",
- "title": "abc123"
}
]
}
Response samples
- 200
- 401
- 403
{- "id": "739b63c2-9e58-4964-b38d-4ebb424de242",
- "status": "started",
- "summary": {
- "sample_products_rejected": [
- {
- "error_code": "unsupported_product",
- "error_description": "the product type is not supported",
- "seller_product_reference": {
- "reference": "123ab-5343",
- "source": "sap"
}
}
], - "total_products": 1,
- "total_products_imported": 1,
- "total_products_rejected": 1
}
}
List recommended rental prices for products
Given a list of products, retrieve information about the recommended monthly rental price and term, if applicable, for each of the requested products.
Authorizations:
Request Body schema: application/jsonrequired
required | Array of objects (PricingRequest) List of product pricing to request. | ||||||
Array
|
Responses
Response Schema: application/json
required | object (SellerProductReference) |
has_rental_terms required | boolean Does the product have rental terms. |
currency | |
monthly_rental_amount | integer <int64> The Net monthly rental amount, in cents. This amount is exclusive of tax. |
object (RentContractTerm) | |
summary | string A string that can be directly rendered in the page about whether topi is available. |
Request samples
- Payload
- cURL
- JavaScript (fetch)
{- "pricing_requests": [
- {
- "base_rental_price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000,
- "tax_rate": 1900
}, - "price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000,
- "tax_rate": 1900
}, - "seller_product_reference": {
- "reference": "123ab-5343",
- "source": "sap"
}
}
]
}
Response samples
- 200
- 401
- 403
[- {
- "currency": "EUR",
- "has_rental_terms": false,
- "monthly_rental_amount": 100000,
- "monthly_rental_terms": {
- "duration": 12,
- "id": "739b63c2-9e58-4964-b38d-4ebb424de242",
- "monthly_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000,
- "tax_rate": 1900
}
}, - "seller_product_reference": {
- "reference": "123ab-5343",
- "source": "sap"
}, - "summary": "Rent with topi from €23.45/month"
}
]
parseOfferText catalog
Parse offer content provided as text
Authorizations:
Request Body schema: application/jsonrequired
source_text required | string |
Responses
Response Schema: application/json
Array of objects (OfferParsinglineItem) The line items contained within the uploaded pdf offer. | |
offer_reference | string the seller-facing offer reference, most likely coming from the ERP system |
Array of objects (OfferParsingUnproccesedItem) The line items that could not be processed. |
Request samples
- Payload
- cURL
- JavaScript (fetch)
{- "source_text": "abc123"
}
Response samples
- 200
- 401
- 403
{- "line_items": [
- {
- "calculated_price_summary": {
- "available_contract_types": [
- "rent"
], - "is_supported": true,
- "pay_now": {
- "amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000,
- "tax_rate": 1900
}, - "id": "739b63c2-9e58-4964-b38d-4ebb424de242"
}, - "rent": [
- {
- "duration": 12,
- "id": "739b63c2-9e58-4964-b38d-4ebb424de242",
- "monthly_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000,
- "tax_rate": 1900
}
}
], - "sublines": [
- {
- "available_contract_types": [
- "rent"
], - "is_supported": true,
- "pay_now": {
- "amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000,
- "tax_rate": 1900
}, - "id": "739b63c2-9e58-4964-b38d-4ebb424de242"
}, - "rent": [
- {
- "duration": 12,
- "id": "739b63c2-9e58-4964-b38d-4ebb424de242",
- "monthly_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000,
- "tax_rate": 1900
}
}
], - "summary": "Rent with topi for €24.32/month"
}
], - "summary": "Rent with topi for €24.32/month"
}, - "input_quantity": 1,
- "product": {
- "archived": false,
- "available_contract_terms": {
- "can_pay_now": false,
- "can_rent": false,
- "rent": {
- "duration": 1
}
}, - "base_rental_price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "description": "abc123",
- "ean": "abc123",
- "list_price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "manufacturer": "abc123",
- "mpn": "abc123",
- "origin": "abc123",
- "pretty_id": "abc123",
- "pricing_category": "abc123",
- "product_id": "739b63c2-9e58-4964-b38d-4ebb424de242",
- "reference": "abc123",
- "seller_product_references": [
- {
- "reference": "123ab-5343",
- "source": "sap"
}
], - "subtitle": "abc123",
- "title": "abc123"
}
}
], - "offer_reference": "abc123",
- "unprocessed_items": [
- {
- "CategorisationIdentifiers": {
- "category": "macbook",
- "device": "macbook_pro_13",
- "manufacturer": "apple",
- "price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}
}, - "input_description": "abc123",
- "input_price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "input_quantity": 1,
- "input_reference": "abc123",
- "input_title": "abc123",
- "manufacturer": "abc123"
}
]
}
Calculate pricing for a single product
Deprecated
Calculate pricing endpoint is being replaced by two other endpoints:
- listRecommendedRentalPrices
- cartRentalOverview
Please make sure to migrate to one of the above endpoints based on your use case.
Description
calculate the price for a product
Authorizations:
Request Body schema: application/jsonrequired
required | object (PricingRequest) | ||||||
|
Responses
Response Schema: application/json
summary required | string A string that can be rendered in the page about whether topi is available. |
is_supported required | boolean Whether the product can be checked out through topi at all |
available_contract_types required | Array of strings Items Enum: "pay_now" "rent" The available ways in which this product can be checked out via topi. |
object (PayNowContractTerm) | |
Array of objects (RentContractTerm) Details of all rental options available for the product. | |
Array of objects (BaseCalculatePriceSummary) Pricing summaries for each service item bundled with this main product. Sublines provide detailed pricing breakdown for individual services within a bundle.
|
Request samples
- Payload
- cURL
- JavaScript (fetch)
{- "pricing_request": {
- "base_rental_price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000,
- "tax_rate": 1900
}, - "price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000,
- "tax_rate": 1900
}, - "seller_product_reference": {
- "reference": "123ab-5343",
- "source": "sap"
}
}
}
Response samples
- 200
- 401
- 403
{- "available_contract_types": [
- "rent"
], - "is_supported": true,
- "pay_now": {
- "amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000,
- "tax_rate": 1900
}, - "id": "739b63c2-9e58-4964-b38d-4ebb424de242"
}, - "rent": [
- {
- "duration": 12,
- "id": "739b63c2-9e58-4964-b38d-4ebb424de242",
- "monthly_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000,
- "tax_rate": 1900
}
}
], - "sublines": [
- {
- "available_contract_types": [
- "rent"
], - "is_supported": true,
- "pay_now": {
- "amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000,
- "tax_rate": 1900
}, - "id": "739b63c2-9e58-4964-b38d-4ebb424de242"
}, - "rent": [
- {
- "duration": 12,
- "id": "739b63c2-9e58-4964-b38d-4ebb424de242",
- "monthly_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000,
- "tax_rate": 1900
}
}
], - "summary": "Rent with topi for €24.32/month"
}
], - "summary": "Rent with topi for €24.32/month"
}
Search products by term
get products that match a search term
Authorizations:
query Parameters
term | string Example: term=abc123 The Seller Product Reference |
Responses
Response Schema: application/json
product_id required | string <regexp> ^[0-9A-Za-z\-]+$ Product ID |
required | object (MoneyAmount) |
title required | string Title of the product. |
required | Array of objects (SellerProductReference) An array of the seller's unique references for this product. |
required | object (ContractTermsSummary) |
reference required | string The product reference number that matches a search term. |
origin required | string The origin of the product, 'manual','automatic' or 'central_catalog'. |
manufacturer required | string The manufacturer of the product. |
archived | boolean Whether or not the product has been archived by the seller. |
object (MoneyAmount) | |
description | string Detailed description of the product. |
ean | string The EAN code of the product. |
mpn | string The MPN code of the product. |
pretty_id | string The pretty id/reference that the seller filled. Can be a non-unique dummy id. |
pricing_category | string The pricing category of the product. |
subtitle | string Subtitle of the product. |
Request samples
- cURL
- JavaScript (fetch)
curl -X GET https://seller-api.topi.eu/v1/catalog/products \ -H "Authorization: Bearer $ACCESS_TOKEN"
Response samples
- 200
- 401
- 403
[- {
- "archived": false,
- "available_contract_terms": {
- "can_pay_now": false,
- "can_rent": false,
- "rent": {
- "duration": 1
}
}, - "base_rental_price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "description": "abc123",
- "ean": "abc123",
- "list_price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "manufacturer": "abc123",
- "mpn": "abc123",
- "origin": "abc123",
- "pretty_id": "abc123",
- "pricing_category": "abc123",
- "product_id": "739b63c2-9e58-4964-b38d-4ebb424de242",
- "reference": "abc123",
- "seller_product_references": [
- {
- "reference": "123ab-5343",
- "source": "sap"
}
], - "subtitle": "abc123",
- "title": "abc123"
}
]
Paginated product search by term, note: this method will not support any filtering, please refer to the POST endpoint for filtering.
get paginated products that match a search term, note: this method will not support any filtering.
Authorizations:
query Parameters
term | string Example: term=abc123 The Seller Product Reference |
limit | integer <int64> Example: limit=1 the size of the page |
page | integer <int64> Example: page=1 the index of the page |
Responses
Response Schema: application/json
limit | integer <int64> the size of the page |
page | integer <int64> the index of the page |
Array of objects (SearchProductResult) The products returned. | |
totalPages | integer <int64> Total amount of pages available |
totalRows | integer <int64> The total amount of rows |
Request samples
- cURL
- JavaScript (fetch)
curl -X GET https://seller-api.topi.eu/v1/catalog/products_paginated \ -H "Authorization: Bearer $ACCESS_TOKEN"
Response samples
- 200
- 401
- 403
{- "limit": 1,
- "page": 1,
- "rows": [
- {
- "archived": false,
- "available_contract_terms": {
- "can_pay_now": false,
- "can_rent": false,
- "rent": {
- "duration": 1
}
}, - "base_rental_price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "description": "abc123",
- "ean": "abc123",
- "list_price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "manufacturer": "abc123",
- "mpn": "abc123",
- "origin": "abc123",
- "pretty_id": "abc123",
- "pricing_category": "abc123",
- "product_id": "739b63c2-9e58-4964-b38d-4ebb424de242",
- "reference": "abc123",
- "seller_product_references": [
- {
- "reference": "123ab-5343",
- "source": "sap"
}
], - "subtitle": "abc123",
- "title": "abc123"
}
], - "totalPages": 1,
- "totalRows": 1
}
Paginated product search by term, filtering by provided options
get paginated products that match a search term and the provided filters
Authorizations:
query Parameters
term | string Example: term=abc123 The Seller Product Reference |
limit | integer <int64> Example: limit=1 the size of the page |
page | integer <int64> Example: page=1 the index of the page |
Request Body schema: application/jsonrequired
filtering_logic | string Enum: "AND" "OR" The logic to use for filtering the products. Can be 'and' or 'or'. |
Array of objects (FilteringOption) Filtering options for the search |
Responses
Response Schema: application/json
limit | integer <int64> the size of the page |
page | integer <int64> the index of the page |
Array of objects (SearchProductResult) The products returned. | |
totalPages | integer <int64> Total amount of pages available |
totalRows | integer <int64> The total amount of rows |
Request samples
- Payload
- cURL
- JavaScript (fetch)
{- "filtering_logic": "OR",
- "filtering_options": [
- {
- "operation": ">",
- "property": "abc123",
- "value": "abc123"
}
]
}
Response samples
- 200
- 401
- 403
{- "limit": 1,
- "page": 1,
- "rows": [
- {
- "archived": false,
- "available_contract_terms": {
- "can_pay_now": false,
- "can_rent": false,
- "rent": {
- "duration": 1
}
}, - "base_rental_price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "description": "abc123",
- "ean": "abc123",
- "list_price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "manufacturer": "abc123",
- "mpn": "abc123",
- "origin": "abc123",
- "pretty_id": "abc123",
- "pricing_category": "abc123",
- "product_id": "739b63c2-9e58-4964-b38d-4ebb424de242",
- "reference": "abc123",
- "seller_product_references": [
- {
- "reference": "123ab-5343",
- "source": "sap"
}
], - "subtitle": "abc123",
- "title": "abc123"
}
], - "totalPages": 1,
- "totalRows": 1
}
Get services for a seller
get services for a seller
Authorizations:
query Parameters
limit | integer <int64> Default: 5 Example: limit=1 The number of services to return |
Responses
Response Schema: application/json
product_id required | string <regexp> ^[0-9A-Za-z\-]+$ Product ID |
required | object (MoneyAmount) |
title required | string Title of the product. |
required | Array of objects (SellerProductReference) An array of the seller's unique references for this product. |
required | object (ContractTermsSummary) |
reference required | string The product reference number that matches a search term. |
origin required | string The origin of the product, 'manual','automatic' or 'central_catalog'. |
manufacturer required | string The manufacturer of the product. |
archived | boolean Whether or not the product has been archived by the seller. |
object (MoneyAmount) | |
description | string Detailed description of the product. |
ean | string The EAN code of the product. |
mpn | string The MPN code of the product. |
pretty_id | string The pretty id/reference that the seller filled. Can be a non-unique dummy id. |
pricing_category | string The pricing category of the product. |
subtitle | string Subtitle of the product. |
Request samples
- cURL
- JavaScript (fetch)
curl -X GET https://seller-api.topi.eu/v1/catalog/services \ -H "Authorization: Bearer $ACCESS_TOKEN"
Response samples
- 200
- 401
- 403
[- {
- "archived": false,
- "available_contract_terms": {
- "can_pay_now": false,
- "can_rent": false,
- "rent": {
- "duration": 1
}
}, - "base_rental_price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "description": "abc123",
- "ean": "abc123",
- "list_price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "manufacturer": "abc123",
- "mpn": "abc123",
- "origin": "abc123",
- "pretty_id": "abc123",
- "pricing_category": "abc123",
- "product_id": "739b63c2-9e58-4964-b38d-4ebb424de242",
- "reference": "abc123",
- "seller_product_references": [
- {
- "reference": "123ab-5343",
- "source": "sap"
}
], - "subtitle": "abc123",
- "title": "abc123"
}
]
OfferUpdates
We will ping the URL provided whenever an offer has changed its status to: "accepted"
, "declined"
, "voided"
, "pending_review"
or "expired"
.
Payload:
- same as show offer
id
:string
created_at
:string <date-time>
status
:string enum: "accepted" | "declined" | "pending_review" | "voided" | "expired"
checkout_redirect_url
:string <uri>
List all offers
Lists the offers created by the calling seller, with filters or query
Authorizations:
query Parameters
query | string Examples:
Search query. It can be a string or a number or both |
created_by | string Example: created_by=sales-agent@example.com,anothergreatone@example.com a comma-separated list of sales agents emails |
partners_only | boolean Example: partners_only=false a boolean indicating whether to retrieve offers from partner sellers only |
Responses
Response Schema: application/json
id required | string <regexp> ^[0-9A-Za-z\-]+$ topi offer ID |
created_at required | string <date-time> |
expires_at required | string <date-time> |
checkout_redirect_url required | string <uri> |
seller_offer_redirect_url required | string <uri> |
status required | string Enum: "created" "voided" "accepted" "expired" "rejected" "pending_review" "declined" |
required | object (CustomerInfo) Customer information |
seller_offer_reference required | string Seller's own reference for the offer |
required | object (ShippingAddress) Shipping Address. If the sales_channel is ecommerce, this field will be required |
required | Array of objects (OfferLineResult) List of product lines |
sales_channel required | string Enum: "telesales" "ecommerce" "in_store_pos" |
object Metadata you can attach to and offer. You can store here any JSON information | |
object (PricingOverview) An Overview of the total price to pay by the user using topi. | |
object (SalesAgent) Sales agent related to an offer | |
object (ShippingInfo) Shipping information |
Request samples
- cURL
- JavaScript (fetch)
curl -X GET https://seller-api.topi.eu/v1/offers \ -H "Authorization: Bearer $ACCESS_TOKEN"
Response samples
- 200
- 401
- 403
[- {
- "created_at": "1970-01-01T00:00:01Z",
- "customer": {
- "company": {
- "billing_address": {
- "city": "Munich",
- "country_code": "DE",
- "line1": "10 Downing Street",
- "line2": "Flat 42",
- "postal_code": "10243",
- "region": "Bavaria"
}, - "name": "Unicorn Corp",
- "tax_number": "123456789",
- "vat_number": "DE123456789"
}, - "customer_group": "education",
- "email": "alice@example.com",
- "full_name": "John Butler",
- "phone_number": "abc123"
}, - "expires_at": "1970-01-01T00:00:01Z",
- "id": "739b63c2-9e58-4964-b38d-4ebb424de242",
- "lines": [
- {
- "applied_discount_id": "abc123",
- "available_contract_terms": {
- "pay_now": {
- "amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000,
- "tax_rate": 1900
}, - "id": "739b63c2-9e58-4964-b38d-4ebb424de242"
}, - "rent": {
- "duration": 12,
- "id": "739b63c2-9e58-4964-b38d-4ebb424de242",
- "monthly_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000,
- "tax_rate": 1900
}
}
}, - "base_rental_price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "bundle_id": "abc123",
- "id": "739b63c2-9e58-4964-b38d-4ebb424de242",
- "origin": "abc123",
- "pretty_id": "abc123",
- "price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "pricing_category": "abc123",
- "product_id": "abc123",
- "quantity": 2,
- "selected_contract_type": "abc123",
- "seller_product_references": [
- {
- "reference": "123ab-5343",
- "source": "sap"
}
], - "sublines": [
- {
- "applied_discount_id": "abc123",
- "available_contract_terms": {
- "pay_now": {
- "amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000,
- "tax_rate": 1900
}, - "id": "739b63c2-9e58-4964-b38d-4ebb424de242"
}, - "rent": {
- "duration": 12,
- "id": "739b63c2-9e58-4964-b38d-4ebb424de242",
- "monthly_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000,
- "tax_rate": 1900
}
}
}, - "base_rental_price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "bundle_id": "abc123",
- "id": "739b63c2-9e58-4964-b38d-4ebb424de242",
- "origin": "abc123",
- "pretty_id": "abc123",
- "price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "pricing_category": "abc123",
- "product_id": "abc123",
- "quantity": 2,
- "selected_contract_type": "abc123",
- "seller_product_references": [
- {
- "reference": "123ab-5343",
- "source": "sap"
}
], - "subtitle": "abc123",
- "title": "abc123"
}
], - "subtitle": "abc123",
- "title": "abc123"
}
], - "metadata": {
- "affiliate_code": "123456"
}, - "pricing_overview": {
- "breakdown": [
- {
- "amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "title": "Monthly (x36)",
- "tooltip": "The first rent fee is included in the first payment. More details later, in topi checkout."
}
], - "instead_of_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "items_summaries": [
- {
- "identifier": "abc123",
- "pay_now": {
- "pay_now_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}
}, - "pay_now_excluding_sublines": {
- "pay_now_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}
}, - "rent": [
- {
- "duration": 12,
- "monthly_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}
}
], - "rent_excluding_sublines": [
- {
- "duration": 12,
- "monthly_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}
}
], - "total_pay_now": {
- "pay_now_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}
}, - "total_rent": [
- {
- "duration": 12,
- "monthly_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}
}
]
}
], - "shipping_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "total_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}
}, - "sales_agent": {
- "email": "alice@example.com",
- "external_agent_id": "abc123",
- "name": "abc123",
- "phone": "abc123"
}, - "sales_channel": "ecommerce",
- "seller_offer_reference": "ref-1234",
- "shipping": {
- "is_in_store_pickup": false,
- "price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "seller_shipping_reference": "Sandbox Shipping Service"
}, - "shipping_address": {
- "city": "Munich",
- "country_code": "DE",
- "line1": "10 Downing Street",
- "line2": "Flat 42",
- "postal_code": "10243",
- "recipient_name": "Felix Wolf",
- "region": "Bavaria"
}, - "status": "voided"
}
]
Create an offer
Creates a topi offer.
Returns HTTP 200 plus basic information about the offer on success.
The request returns an HTTP Unprocessable Entity in the following scenarios:
- When
"lines"
is an empty array. - When
"lines"
contains any products that are not available in the topi catalog - When the
"seller_offer_reference"
is reusing a value of an offer that is currently active
When using in the Sandbox
The following seller offer references are considered to be "active":
"ref-1234"
The following seller product references are considered to be available in the catalog:
{"source": "sap", "reference": "123"}
{"source": "sap", "reference": "456"}
{"source": "sku", "reference": "123abc"}
The following seller product references are considered to be available in the catalog but not supported:
{"source": "sku", "reference": "unsupported-1"}
The following shipping reference is considered to be available but not supported:
"unsupported-shipping-reference"
Authorizations:
Request Body schema: application/jsonrequired
seller_offer_reference required | string Seller's own reference for the offer |
expires_at required | string <date-time> Expiration date and time for the offer (UTC) |
required | Array of objects (OfferLinePayload) non-empty List of product lines |
sales_channel required | string Enum: "telesales" "ecommerce" "in_store_pos" Channel from where the offer is created |
object (CustomerInfo) Customer information | |
draft_offer_id | string The ID of the draft offer from which an offer is being created |
exit_redirect | string <uri> URL to redirect to when something went wrong along the process. We will add the following parameters to the query string: |
object Metadata you can attach to and offer. You can store here any JSON information | |
object (SalesAgent) Sales agent related to an offer | |
object (ShippingInfo) Shipping information | |
object (ShippingAddress) Shipping Address. If the sales_channel is ecommerce, this field will be required | |
success_redirect | string <uri> URL to redirect to when the user finishes the checkout in topi. We will add the following parameters to the query string: |
Responses
Response Schema: application/json
id required | string <regexp> ^[0-9A-Za-z\-]+$ topi offer ID |
created_at required | string <date-time> |
expires_at required | string <date-time> |
checkout_redirect_url required | string <uri> |
seller_offer_redirect_url required | string <uri> |
status required | string Enum: "created" "voided" "accepted" "expired" "rejected" "pending_review" "declined" |
required | object (CustomerInfo) Customer information |
seller_offer_reference required | string Seller's own reference for the offer |
required | object (ShippingAddress) Shipping Address. If the sales_channel is ecommerce, this field will be required |
required | Array of objects (OfferLineResult) List of product lines |
sales_channel required | string Enum: "telesales" "ecommerce" "in_store_pos" |
object Metadata you can attach to and offer. You can store here any JSON information | |
object (PricingOverview) An Overview of the total price to pay by the user using topi. | |
object (SalesAgent) Sales agent related to an offer | |
object (ShippingInfo) Shipping information |
Request samples
- Payload
- cURL
- JavaScript (fetch)
{- "customer": {
- "company": {
- "billing_address": {
- "city": "Munich",
- "country_code": "DE",
- "line1": "10 Downing Street",
- "line2": "Flat 42",
- "postal_code": "10243",
- "region": "Bavaria"
}, - "name": "Unicorn Corp",
- "tax_number": "123456789",
- "vat_number": "DE123456789"
}, - "customer_group": "education",
- "email": "alice@example.com",
- "full_name": "John Butler",
- "phone_number": "abc123"
}, - "draft_offer_id": "abc123",
- "expires_at": "1970-01-01T00:00:01Z",
- "lines": [
- {
- "base_rental_price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "bundle_index": "abc123",
- "price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "product_id": "abc123",
- "quantity": 2,
- "seller_product_reference": {
- "reference": "123ab-5343",
- "source": "sap"
}, - "sub_lines": [
- {
- "base_rental_price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "bundle_index": "abc123",
- "price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "product_id": "abc123",
- "quantity": 2,
- "seller_product_reference": {
- "reference": "123ab-5343",
- "source": "sap"
}, - "subtitle": "abc123",
- "title": "abc123"
}
], - "subtitle": "abc123",
- "title": "abc123"
}, - {
- "base_rental_price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "bundle_index": "abc123",
- "price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "product_id": "abc123",
- "quantity": 2,
- "seller_product_reference": {
- "reference": "123ab-5343",
- "source": "sap"
}, - "sub_lines": [
- {
- "base_rental_price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "bundle_index": "abc123",
- "price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "product_id": "abc123",
- "quantity": 2,
- "seller_product_reference": {
- "reference": "123ab-5343",
- "source": "sap"
}, - "subtitle": "abc123",
- "title": "abc123"
}
], - "subtitle": "abc123",
- "title": "abc123"
}
], - "metadata": {
- "affiliate_code": "123456"
}, - "sales_agent": {
- "email": "alice@example.com",
- "external_agent_id": "abc123",
- "name": "abc123",
- "phone": "abc123"
}, - "sales_channel": "ecommerce",
- "seller_offer_reference": "ref-1234",
- "shipping": {
- "is_in_store_pickup": false,
- "price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "seller_shipping_reference": "Sandbox Shipping Service"
}, - "shipping_address": {
- "city": "Munich",
- "country_code": "DE",
- "line1": "10 Downing Street",
- "line2": "Flat 42",
- "postal_code": "10243",
- "recipient_name": "Felix Wolf",
- "region": "Bavaria"
},
}
Response samples
- 201
- 401
- 403
- 422
{- "created_at": "1970-01-01T00:00:01Z",
- "customer": {
- "company": {
- "billing_address": {
- "city": "Munich",
- "country_code": "DE",
- "line1": "10 Downing Street",
- "line2": "Flat 42",
- "postal_code": "10243",
- "region": "Bavaria"
}, - "name": "Unicorn Corp",
- "tax_number": "123456789",
- "vat_number": "DE123456789"
}, - "customer_group": "education",
- "email": "alice@example.com",
- "full_name": "John Butler",
- "phone_number": "abc123"
}, - "expires_at": "1970-01-01T00:00:01Z",
- "id": "739b63c2-9e58-4964-b38d-4ebb424de242",
- "lines": [
- {
- "applied_discount_id": "abc123",
- "available_contract_terms": {
- "pay_now": {
- "amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000,
- "tax_rate": 1900
}, - "id": "739b63c2-9e58-4964-b38d-4ebb424de242"
}, - "rent": {
- "duration": 12,
- "id": "739b63c2-9e58-4964-b38d-4ebb424de242",
- "monthly_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000,
- "tax_rate": 1900
}
}
}, - "base_rental_price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "bundle_id": "abc123",
- "id": "739b63c2-9e58-4964-b38d-4ebb424de242",
- "origin": "abc123",
- "pretty_id": "abc123",
- "price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "pricing_category": "abc123",
- "product_id": "abc123",
- "quantity": 2,
- "selected_contract_type": "abc123",
- "seller_product_references": [
- {
- "reference": "123ab-5343",
- "source": "sap"
}
], - "sublines": [
- {
- "applied_discount_id": "abc123",
- "available_contract_terms": {
- "pay_now": {
- "amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000,
- "tax_rate": 1900
}, - "id": "739b63c2-9e58-4964-b38d-4ebb424de242"
}, - "rent": {
- "duration": 12,
- "id": "739b63c2-9e58-4964-b38d-4ebb424de242",
- "monthly_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000,
- "tax_rate": 1900
}
}
}, - "base_rental_price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "bundle_id": "abc123",
- "id": "739b63c2-9e58-4964-b38d-4ebb424de242",
- "origin": "abc123",
- "pretty_id": "abc123",
- "price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "pricing_category": "abc123",
- "product_id": "abc123",
- "quantity": 2,
- "selected_contract_type": "abc123",
- "seller_product_references": [
- {
- "reference": "123ab-5343",
- "source": "sap"
}
], - "subtitle": "abc123",
- "title": "abc123"
}
], - "subtitle": "abc123",
- "title": "abc123"
}
], - "metadata": {
- "affiliate_code": "123456"
}, - "pricing_overview": {
- "breakdown": [
- {
- "amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "title": "Monthly (x36)",
- "tooltip": "The first rent fee is included in the first payment. More details later, in topi checkout."
}
], - "instead_of_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "items_summaries": [
- {
- "identifier": "abc123",
- "pay_now": {
- "pay_now_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}
}, - "pay_now_excluding_sublines": {
- "pay_now_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}
}, - "rent": [
- {
- "duration": 12,
- "monthly_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}
}
], - "rent_excluding_sublines": [
- {
- "duration": 12,
- "monthly_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}
}
], - "total_pay_now": {
- "pay_now_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}
}, - "total_rent": [
- {
- "duration": 12,
- "monthly_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}
}
]
}
], - "shipping_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "total_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}
}, - "sales_agent": {
- "email": "alice@example.com",
- "external_agent_id": "abc123",
- "name": "abc123",
- "phone": "abc123"
}, - "sales_channel": "ecommerce",
- "seller_offer_reference": "ref-1234",
- "shipping": {
- "is_in_store_pickup": false,
- "price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "seller_shipping_reference": "Sandbox Shipping Service"
}, - "shipping_address": {
- "city": "Munich",
- "country_code": "DE",
- "line1": "10 Downing Street",
- "line2": "Flat 42",
- "postal_code": "10243",
- "recipient_name": "Felix Wolf",
- "region": "Bavaria"
}, - "status": "voided"
}
Retrieve an offer
Returns a single offer.
When using in the Sandbox
Use the following ID's to get different fixtures. Remember that the URL must be encoded:
- Status
"created"
:"739b63c2-9e58-4964-b38d-4ebb424de242"
- Status
"voided"
:"ddd454b6-f23b-4f9c-a36d-74964766c3d6"
- Status
"expired"
:"3beec7f7-a258-4260-8713-6c2635e5eea5"
- Status
"accepted"
:"60412bcf-8213-4804-841e-f3c36ce46394"
Any other ID will return an HTTP 404 error.
Authorizations:
path Parameters
id required | string <regexp> ^[0-9A-Za-z\-]+$ Example: 739b63c2-9e58-4964-b38d-4ebb424de242 topi offer ID |
Responses
Response Schema: application/json
id required | string <regexp> ^[0-9A-Za-z\-]+$ topi offer ID |
created_at required | string <date-time> |
expires_at required | string <date-time> |
checkout_redirect_url required | string <uri> |
seller_offer_redirect_url required | string <uri> |
status required | string Enum: "created" "voided" "accepted" "expired" "rejected" "pending_review" "declined" |
required | object (CustomerInfo) Customer information |
seller_offer_reference required | string Seller's own reference for the offer |
required | object (ShippingAddress) Shipping Address. If the sales_channel is ecommerce, this field will be required |
required | Array of objects (OfferLineResult) List of product lines |
sales_channel required | string Enum: "telesales" "ecommerce" "in_store_pos" |
object Metadata you can attach to and offer. You can store here any JSON information | |
object (PricingOverview) An Overview of the total price to pay by the user using topi. | |
object (SalesAgent) Sales agent related to an offer | |
object (ShippingInfo) Shipping information |
Request samples
- cURL
- JavaScript (fetch)
curl -X GET https://seller-api.topi.eu/v1/offers/{id} \ -H "Authorization: Bearer $ACCESS_TOKEN"
Response samples
- 200
- 401
- 403
{- "created_at": "1970-01-01T00:00:01Z",
- "customer": {
- "company": {
- "billing_address": {
- "city": "Munich",
- "country_code": "DE",
- "line1": "10 Downing Street",
- "line2": "Flat 42",
- "postal_code": "10243",
- "region": "Bavaria"
}, - "name": "Unicorn Corp",
- "tax_number": "123456789",
- "vat_number": "DE123456789"
}, - "customer_group": "education",
- "email": "alice@example.com",
- "full_name": "John Butler",
- "phone_number": "abc123"
}, - "expires_at": "1970-01-01T00:00:01Z",
- "id": "739b63c2-9e58-4964-b38d-4ebb424de242",
- "lines": [
- {
- "applied_discount_id": "abc123",
- "available_contract_terms": {
- "pay_now": {
- "amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000,
- "tax_rate": 1900
}, - "id": "739b63c2-9e58-4964-b38d-4ebb424de242"
}, - "rent": {
- "duration": 12,
- "id": "739b63c2-9e58-4964-b38d-4ebb424de242",
- "monthly_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000,
- "tax_rate": 1900
}
}
}, - "base_rental_price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "bundle_id": "abc123",
- "id": "739b63c2-9e58-4964-b38d-4ebb424de242",
- "origin": "abc123",
- "pretty_id": "abc123",
- "price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "pricing_category": "abc123",
- "product_id": "abc123",
- "quantity": 2,
- "selected_contract_type": "abc123",
- "seller_product_references": [
- {
- "reference": "123ab-5343",
- "source": "sap"
}
], - "sublines": [
- {
- "applied_discount_id": "abc123",
- "available_contract_terms": {
- "pay_now": {
- "amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000,
- "tax_rate": 1900
}, - "id": "739b63c2-9e58-4964-b38d-4ebb424de242"
}, - "rent": {
- "duration": 12,
- "id": "739b63c2-9e58-4964-b38d-4ebb424de242",
- "monthly_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000,
- "tax_rate": 1900
}
}
}, - "base_rental_price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "bundle_id": "abc123",
- "id": "739b63c2-9e58-4964-b38d-4ebb424de242",
- "origin": "abc123",
- "pretty_id": "abc123",
- "price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "pricing_category": "abc123",
- "product_id": "abc123",
- "quantity": 2,
- "selected_contract_type": "abc123",
- "seller_product_references": [
- {
- "reference": "123ab-5343",
- "source": "sap"
}
], - "subtitle": "abc123",
- "title": "abc123"
}
], - "subtitle": "abc123",
- "title": "abc123"
}
], - "metadata": {
- "affiliate_code": "123456"
}, - "pricing_overview": {
- "breakdown": [
- {
- "amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "title": "Monthly (x36)",
- "tooltip": "The first rent fee is included in the first payment. More details later, in topi checkout."
}
], - "instead_of_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "items_summaries": [
- {
- "identifier": "abc123",
- "pay_now": {
- "pay_now_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}
}, - "pay_now_excluding_sublines": {
- "pay_now_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}
}, - "rent": [
- {
- "duration": 12,
- "monthly_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}
}
], - "rent_excluding_sublines": [
- {
- "duration": 12,
- "monthly_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}
}
], - "total_pay_now": {
- "pay_now_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}
}, - "total_rent": [
- {
- "duration": 12,
- "monthly_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}
}
]
}
], - "shipping_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "total_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}
}, - "sales_agent": {
- "email": "alice@example.com",
- "external_agent_id": "abc123",
- "name": "abc123",
- "phone": "abc123"
}, - "sales_channel": "ecommerce",
- "seller_offer_reference": "ref-1234",
- "shipping": {
- "is_in_store_pickup": false,
- "price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "seller_shipping_reference": "Sandbox Shipping Service"
}, - "shipping_address": {
- "city": "Munich",
- "country_code": "DE",
- "line1": "10 Downing Street",
- "line2": "Flat 42",
- "postal_code": "10243",
- "recipient_name": "Felix Wolf",
- "region": "Bavaria"
}, - "status": "voided"
}
Edit an offer
Edits an offer by voiding it and creating a new offer superseding it with the provided details.
Note: Offer details will be replaced with the validated payload passed to this endpoint. Make sure to send the full offer details information.
Authorizations:
path Parameters
id required | string <regexp> ^[0-9A-Za-z\-]+$ Example: 739b63c2-9e58-4964-b38d-4ebb424de242 Offer ID |
Request Body schema: application/jsonrequired
seller_offer_reference required | string Seller's own reference for the offer |
expires_at required | string <date-time> |
required | Array of objects (OfferLinePayload) non-empty List of product lines |
sales_channel required | string Enum: "telesales" "ecommerce" "in_store_pos" |
object (CustomerInfo) Customer information | |
draft_offer_id | string The ID of the draft offer from which an offer is being created |
exit_redirect | string <uri> |
object Metadata you can attach to and offer. You can store here any JSON information | |
object (SalesAgent) Sales agent related to an offer | |
object (ShippingInfo) Shipping information | |
object (ShippingAddress) Shipping Address. If the sales_channel is ecommerce, this field will be required | |
success_redirect | string <uri> |
Responses
Response Schema: application/json
id required | string <regexp> ^[0-9A-Za-z\-]+$ topi offer ID |
created_at required | string <date-time> |
expires_at required | string <date-time> |
checkout_redirect_url required | string <uri> |
seller_offer_redirect_url required | string <uri> |
status required | string Enum: "created" "voided" "accepted" "expired" "rejected" "pending_review" "declined" |
required | object (CustomerInfo) Customer information |
seller_offer_reference required | string Seller's own reference for the offer |
required | object (ShippingAddress) Shipping Address. If the sales_channel is ecommerce, this field will be required |
required | Array of objects (OfferLineResult) List of product lines |
sales_channel required | string Enum: "telesales" "ecommerce" "in_store_pos" |
object Metadata you can attach to and offer. You can store here any JSON information | |
object (PricingOverview) An Overview of the total price to pay by the user using topi. | |
object (SalesAgent) Sales agent related to an offer | |
object (ShippingInfo) Shipping information |
Request samples
- Payload
- cURL
- JavaScript (fetch)
{- "customer": {
- "company": {
- "billing_address": {
- "city": "Munich",
- "country_code": "DE",
- "line1": "10 Downing Street",
- "line2": "Flat 42",
- "postal_code": "10243",
- "region": "Bavaria"
}, - "name": "Unicorn Corp",
- "tax_number": "123456789",
- "vat_number": "DE123456789"
}, - "customer_group": "education",
- "email": "alice@example.com",
- "full_name": "John Butler",
- "phone_number": "abc123"
}, - "draft_offer_id": "abc123",
- "expires_at": "1970-01-01T00:00:01Z",
- "lines": [
- {
- "base_rental_price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "bundle_index": "abc123",
- "price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "product_id": "abc123",
- "quantity": 2,
- "seller_product_reference": {
- "reference": "123ab-5343",
- "source": "sap"
}, - "sub_lines": [
- {
- "base_rental_price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "bundle_index": "abc123",
- "price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "product_id": "abc123",
- "quantity": 2,
- "seller_product_reference": {
- "reference": "123ab-5343",
- "source": "sap"
}, - "subtitle": "abc123",
- "title": "abc123"
}
], - "subtitle": "abc123",
- "title": "abc123"
}, - {
- "base_rental_price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "bundle_index": "abc123",
- "price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "product_id": "abc123",
- "quantity": 2,
- "seller_product_reference": {
- "reference": "123ab-5343",
- "source": "sap"
}, - "sub_lines": [
- {
- "base_rental_price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "bundle_index": "abc123",
- "price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "product_id": "abc123",
- "quantity": 2,
- "seller_product_reference": {
- "reference": "123ab-5343",
- "source": "sap"
}, - "subtitle": "abc123",
- "title": "abc123"
}
], - "subtitle": "abc123",
- "title": "abc123"
}
], - "metadata": {
- "affiliate_code": "123456"
}, - "sales_agent": {
- "email": "alice@example.com",
- "external_agent_id": "abc123",
- "name": "abc123",
- "phone": "abc123"
}, - "sales_channel": "ecommerce",
- "seller_offer_reference": "ref-1234",
- "shipping": {
- "is_in_store_pickup": false,
- "price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "seller_shipping_reference": "Sandbox Shipping Service"
}, - "shipping_address": {
- "city": "Munich",
- "country_code": "DE",
- "line1": "10 Downing Street",
- "line2": "Flat 42",
- "postal_code": "10243",
- "recipient_name": "Felix Wolf",
- "region": "Bavaria"
},
}
Response samples
- 202
- 401
- 403
- 422
{- "created_at": "1970-01-01T00:00:01Z",
- "customer": {
- "company": {
- "billing_address": {
- "city": "Munich",
- "country_code": "DE",
- "line1": "10 Downing Street",
- "line2": "Flat 42",
- "postal_code": "10243",
- "region": "Bavaria"
}, - "name": "Unicorn Corp",
- "tax_number": "123456789",
- "vat_number": "DE123456789"
}, - "customer_group": "education",
- "email": "alice@example.com",
- "full_name": "John Butler",
- "phone_number": "abc123"
}, - "expires_at": "1970-01-01T00:00:01Z",
- "id": "739b63c2-9e58-4964-b38d-4ebb424de242",
- "lines": [
- {
- "applied_discount_id": "abc123",
- "available_contract_terms": {
- "pay_now": {
- "amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000,
- "tax_rate": 1900
}, - "id": "739b63c2-9e58-4964-b38d-4ebb424de242"
}, - "rent": {
- "duration": 12,
- "id": "739b63c2-9e58-4964-b38d-4ebb424de242",
- "monthly_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000,
- "tax_rate": 1900
}
}
}, - "base_rental_price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "bundle_id": "abc123",
- "id": "739b63c2-9e58-4964-b38d-4ebb424de242",
- "origin": "abc123",
- "pretty_id": "abc123",
- "price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "pricing_category": "abc123",
- "product_id": "abc123",
- "quantity": 2,
- "selected_contract_type": "abc123",
- "seller_product_references": [
- {
- "reference": "123ab-5343",
- "source": "sap"
}
], - "sublines": [
- {
- "applied_discount_id": "abc123",
- "available_contract_terms": {
- "pay_now": {
- "amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000,
- "tax_rate": 1900
}, - "id": "739b63c2-9e58-4964-b38d-4ebb424de242"
}, - "rent": {
- "duration": 12,
- "id": "739b63c2-9e58-4964-b38d-4ebb424de242",
- "monthly_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000,
- "tax_rate": 1900
}
}
}, - "base_rental_price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "bundle_id": "abc123",
- "id": "739b63c2-9e58-4964-b38d-4ebb424de242",
- "origin": "abc123",
- "pretty_id": "abc123",
- "price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "pricing_category": "abc123",
- "product_id": "abc123",
- "quantity": 2,
- "selected_contract_type": "abc123",
- "seller_product_references": [
- {
- "reference": "123ab-5343",
- "source": "sap"
}
], - "subtitle": "abc123",
- "title": "abc123"
}
], - "subtitle": "abc123",
- "title": "abc123"
}
], - "metadata": {
- "affiliate_code": "123456"
}, - "pricing_overview": {
- "breakdown": [
- {
- "amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "title": "Monthly (x36)",
- "tooltip": "The first rent fee is included in the first payment. More details later, in topi checkout."
}
], - "instead_of_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "items_summaries": [
- {
- "identifier": "abc123",
- "pay_now": {
- "pay_now_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}
}, - "pay_now_excluding_sublines": {
- "pay_now_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}
}, - "rent": [
- {
- "duration": 12,
- "monthly_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}
}
], - "rent_excluding_sublines": [
- {
- "duration": 12,
- "monthly_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}
}
], - "total_pay_now": {
- "pay_now_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}
}, - "total_rent": [
- {
- "duration": 12,
- "monthly_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}
}
]
}
], - "shipping_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "total_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}
}, - "sales_agent": {
- "email": "alice@example.com",
- "external_agent_id": "abc123",
- "name": "abc123",
- "phone": "abc123"
}, - "sales_channel": "ecommerce",
- "seller_offer_reference": "ref-1234",
- "shipping": {
- "is_in_store_pickup": false,
- "price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "seller_shipping_reference": "Sandbox Shipping Service"
}, - "shipping_address": {
- "city": "Munich",
- "country_code": "DE",
- "line1": "10 Downing Street",
- "line2": "Flat 42",
- "postal_code": "10243",
- "recipient_name": "Felix Wolf",
- "region": "Bavaria"
}, - "status": "voided"
}
Void an offer
Voids an offer. Optionally, marks an existing offer as superseding this one.
All offers can be voided except those with status accepted
. A HTTP 402 Unprocesssable Entity error will be returned in this case.
If the superseding offer ID does not exist or has the same ID has the voided offer, HTTP 402 Unprocessable Entity will be returned.
When using in the Sandbox
You can use the following IDs to refer to different offer fixtures and test this endpoint. Remember that URL's must be encoded.
- Status
"created"
:"739b63c2-9e58-4964-b38d-4ebb424de242"
- Status
"voided"
:"ddd454b6-f23b-4f9c-a36d-74964766c3d6"
- Status
"expired"
:"3beec7f7-a258-4260-8713-6c2635e5eea5"
- Status
"accepted"
:"60412bcf-8213-4804-841e-f3c36ce46394"
Keep in mind that the Sandbox does not persist state. Even if you void an offer, subsequent calls to different API endpoints will yield the same results.
Authorizations:
path Parameters
id required | string <regexp> ^[0-9A-Za-z\-]+$ Example: 739b63c2-9e58-4964-b38d-4ebb424de242 topi offer ID |
Request Body schema: application/jsonrequired
superseded_by_id | string <regexp> ^[0-9A-Za-z\-]+$ The topi offer ID of the offer that supersedes this voided one |
Responses
Response Schema: application/json
id required | string <regexp> ^[0-9A-Za-z\-]+$ topi offer ID |
created_at required | string <date-time> |
expires_at required | string <date-time> |
checkout_redirect_url required | string <uri> |
seller_offer_redirect_url required | string <uri> |
status required | string Enum: "created" "voided" "accepted" "expired" "rejected" "pending_review" "declined" |
required | object (CustomerInfo) Customer information |
seller_offer_reference required | string Seller's own reference for the offer |
required | object (ShippingAddress) Shipping Address. If the sales_channel is ecommerce, this field will be required |
required | Array of objects (OfferLineResult) List of product lines |
sales_channel required | string Enum: "telesales" "ecommerce" "in_store_pos" |
object Metadata you can attach to and offer. You can store here any JSON information | |
object (PricingOverview) An Overview of the total price to pay by the user using topi. | |
object (SalesAgent) Sales agent related to an offer | |
object (ShippingInfo) Shipping information |
Request samples
- Payload
- cURL
- JavaScript (fetch)
{- "superseded_by_id": "739b63c2-9e58-4964-b38d-4ebb424de242"
}
Response samples
- 200
- 401
- 403
{- "created_at": "1971-05-24T04:42:31Z"
}
Create an offer for a partner
Creates a topi offer.
Returns HTTP 200 plus basic information about the offer on success.
The request returns an HTTP Unprocessable Entity in the following scenarios:
- When
"lines"
is an empty array. - When
"lines"
contains any products that are not available in the topi catalog - When the
"seller_offer_reference"
is reusing a value of an offer that is currently active
When using in the Sandbox
The following seller offer references are considered to be "active":
"ref-1234"
The following seller product references are considered to be available in the catalog:
{"source": "sap", "reference": "123"}
{"source": "sap", "reference": "456"}
{"source": "sku", "reference": "123abc"}
The following seller product references are considered to be available in the catalog but not supported:
{"source": "sku", "reference": "unsupported-1"}
The following shipping reference is considered to be available but not supported:
"unsupported-shipping-reference"
Authorizations:
Request Body schema: application/jsonrequired
required | object (SalesAgent) Sales agent related to an offer |
seller_offer_reference required | string Seller's own reference for the offer |
expires_at required | string <date-time> Expiration date and time for the offer (UTC) |
required | Array of objects (OfferLinePayload) non-empty List of product lines |
sales_channel required | string Enum: "telesales" "ecommerce" "in_store_pos" Channel from where the offer is created |
object (CustomerInfo) Customer information | |
draft_offer_id | string The ID of the draft offer from which an offer is being created |
exit_redirect | string <uri> URL to redirect to when something went wrong along the process. We will add the following parameters to the query string: |
object Metadata you can attach to and offer. You can store here any JSON information | |
object (ShippingInfo) Shipping information | |
object (ShippingAddress) Shipping Address. If the sales_channel is ecommerce, this field will be required | |
success_redirect | string <uri> URL to redirect to when the user finishes the checkout in topi. We will add the following parameters to the query string: |
Responses
Response Schema: application/json
id required | string <regexp> ^[0-9A-Za-z\-]+$ topi offer ID |
created_at required | string <date-time> |
expires_at required | string <date-time> |
checkout_redirect_url required | string <uri> |
seller_offer_redirect_url required | string <uri> |
status required | string Enum: "created" "voided" "accepted" "expired" "rejected" "pending_review" "declined" |
required | object (CustomerInfo) Customer information |
seller_offer_reference required | string Seller's own reference for the offer |
required | object (ShippingAddress) Shipping Address. If the sales_channel is ecommerce, this field will be required |
required | Array of objects (OfferLineResult) List of product lines |
sales_channel required | string Enum: "telesales" "ecommerce" "in_store_pos" |
object Metadata you can attach to and offer. You can store here any JSON information | |
object (PricingOverview) An Overview of the total price to pay by the user using topi. | |
object (SalesAgent) Sales agent related to an offer | |
object (ShippingInfo) Shipping information |
Request samples
- Payload
- cURL
- JavaScript (fetch)
{- "customer": {
- "company": {
- "billing_address": {
- "city": "Munich",
- "country_code": "DE",
- "line1": "10 Downing Street",
- "line2": "Flat 42",
- "postal_code": "10243",
- "region": "Bavaria"
}, - "name": "Unicorn Corp",
- "tax_number": "123456789",
- "vat_number": "DE123456789"
}, - "customer_group": "education",
- "email": "alice@example.com",
- "full_name": "John Butler",
- "phone_number": "abc123"
}, - "draft_offer_id": "abc123",
- "expires_at": "1970-01-01T00:00:01Z",
- "lines": [
- {
- "base_rental_price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "bundle_index": "abc123",
- "price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "product_id": "abc123",
- "quantity": 2,
- "seller_product_reference": {
- "reference": "123ab-5343",
- "source": "sap"
}, - "sub_lines": [
- {
- "base_rental_price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "bundle_index": "abc123",
- "price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "product_id": "abc123",
- "quantity": 2,
- "seller_product_reference": {
- "reference": "123ab-5343",
- "source": "sap"
}, - "subtitle": "abc123",
- "title": "abc123"
}
], - "subtitle": "abc123",
- "title": "abc123"
}, - {
- "base_rental_price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "bundle_index": "abc123",
- "price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "product_id": "abc123",
- "quantity": 2,
- "seller_product_reference": {
- "reference": "123ab-5343",
- "source": "sap"
}, - "sub_lines": [
- {
- "base_rental_price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "bundle_index": "abc123",
- "price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "product_id": "abc123",
- "quantity": 2,
- "seller_product_reference": {
- "reference": "123ab-5343",
- "source": "sap"
}, - "subtitle": "abc123",
- "title": "abc123"
}
], - "subtitle": "abc123",
- "title": "abc123"
}
], - "metadata": {
- "affiliate_code": "123456"
}, - "sales_agent": {
- "email": "alice@example.com",
- "external_agent_id": "abc123",
- "name": "abc123",
- "phone": "abc123"
}, - "sales_channel": "ecommerce",
- "seller_offer_reference": "ref-1234",
- "shipping": {
- "is_in_store_pickup": false,
- "price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "seller_shipping_reference": "Sandbox Shipping Service"
}, - "shipping_address": {
- "city": "Munich",
- "country_code": "DE",
- "line1": "10 Downing Street",
- "line2": "Flat 42",
- "postal_code": "10243",
- "recipient_name": "Felix Wolf",
- "region": "Bavaria"
},
}
Response samples
- 201
- 401
- 403
- 422
{- "created_at": "1970-01-01T00:00:01Z",
- "customer": {
- "company": {
- "billing_address": {
- "city": "Munich",
- "country_code": "DE",
- "line1": "10 Downing Street",
- "line2": "Flat 42",
- "postal_code": "10243",
- "region": "Bavaria"
}, - "name": "Unicorn Corp",
- "tax_number": "123456789",
- "vat_number": "DE123456789"
}, - "customer_group": "education",
- "email": "alice@example.com",
- "full_name": "John Butler",
- "phone_number": "abc123"
}, - "expires_at": "1970-01-01T00:00:01Z",
- "id": "739b63c2-9e58-4964-b38d-4ebb424de242",
- "lines": [
- {
- "applied_discount_id": "abc123",
- "available_contract_terms": {
- "pay_now": {
- "amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000,
- "tax_rate": 1900
}, - "id": "739b63c2-9e58-4964-b38d-4ebb424de242"
}, - "rent": {
- "duration": 12,
- "id": "739b63c2-9e58-4964-b38d-4ebb424de242",
- "monthly_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000,
- "tax_rate": 1900
}
}
}, - "base_rental_price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "bundle_id": "abc123",
- "id": "739b63c2-9e58-4964-b38d-4ebb424de242",
- "origin": "abc123",
- "pretty_id": "abc123",
- "price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "pricing_category": "abc123",
- "product_id": "abc123",
- "quantity": 2,
- "selected_contract_type": "abc123",
- "seller_product_references": [
- {
- "reference": "123ab-5343",
- "source": "sap"
}
], - "sublines": [
- {
- "applied_discount_id": "abc123",
- "available_contract_terms": {
- "pay_now": {
- "amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000,
- "tax_rate": 1900
}, - "id": "739b63c2-9e58-4964-b38d-4ebb424de242"
}, - "rent": {
- "duration": 12,
- "id": "739b63c2-9e58-4964-b38d-4ebb424de242",
- "monthly_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000,
- "tax_rate": 1900
}
}
}, - "base_rental_price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "bundle_id": "abc123",
- "id": "739b63c2-9e58-4964-b38d-4ebb424de242",
- "origin": "abc123",
- "pretty_id": "abc123",
- "price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "pricing_category": "abc123",
- "product_id": "abc123",
- "quantity": 2,
- "selected_contract_type": "abc123",
- "seller_product_references": [
- {
- "reference": "123ab-5343",
- "source": "sap"
}
], - "subtitle": "abc123",
- "title": "abc123"
}
], - "subtitle": "abc123",
- "title": "abc123"
}
], - "metadata": {
- "affiliate_code": "123456"
}, - "pricing_overview": {
- "breakdown": [
- {
- "amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "title": "Monthly (x36)",
- "tooltip": "The first rent fee is included in the first payment. More details later, in topi checkout."
}
], - "instead_of_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "items_summaries": [
- {
- "identifier": "abc123",
- "pay_now": {
- "pay_now_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}
}, - "pay_now_excluding_sublines": {
- "pay_now_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}
}, - "rent": [
- {
- "duration": 12,
- "monthly_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}
}
], - "rent_excluding_sublines": [
- {
- "duration": 12,
- "monthly_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}
}
], - "total_pay_now": {
- "pay_now_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}
}, - "total_rent": [
- {
- "duration": 12,
- "monthly_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}
}
]
}
], - "shipping_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "total_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}
}, - "sales_agent": {
- "email": "alice@example.com",
- "external_agent_id": "abc123",
- "name": "abc123",
- "phone": "abc123"
}, - "sales_channel": "ecommerce",
- "seller_offer_reference": "ref-1234",
- "shipping": {
- "is_in_store_pickup": false,
- "price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "seller_shipping_reference": "Sandbox Shipping Service"
}, - "shipping_address": {
- "city": "Munich",
- "country_code": "DE",
- "line1": "10 Downing Street",
- "line2": "Flat 42",
- "postal_code": "10243",
- "recipient_name": "Felix Wolf",
- "region": "Bavaria"
}, - "status": "voided"
}
Retrieve an offer by seller reference
Returns a single offer, fetched by the seller's own reference.
When using in the Sandbox
Use the following references to get different offer fixtures:
- Status
"created"
:"ref-created"
- Status
"voided"
:"ref-voided"
- Status
"expired"
:"ref-expired"
- Status
"accepted"
:"ref-accepted"
Any other ID will return an HTTP 404 error.
Authorizations:
path Parameters
seller_offer_reference required | string Example: ref-1234 Seller's own reference for the offer |
Responses
Response Schema: application/json
seller_offer_reference required | string Seller's own reference for the offer |
id required | string <regexp> ^[0-9A-Za-z\-]+$ topi offer ID |
created_at required | string <date-time> |
expires_at required | string <date-time> |
checkout_redirect_url required | string <uri> |
seller_offer_redirect_url required | string <uri> |
status required | string Enum: "created" "voided" "accepted" "expired" "rejected" "pending_review" "declined" |
required | object (CustomerInfo) Customer information |
required | object (ShippingAddress) Shipping Address. If the sales_channel is ecommerce, this field will be required |
required | Array of objects (OfferLineResult) List of product lines |
sales_channel required | string Enum: "telesales" "ecommerce" "in_store_pos" |
object Metadata you can attach to and offer. You can store here any JSON information | |
object (PricingOverview) An Overview of the total price to pay by the user using topi. | |
object (SalesAgent) Sales agent related to an offer | |
object (ShippingInfo) Shipping information |
Request samples
- cURL
- JavaScript (fetch)
curl -X GET https://seller-api.topi.eu/v1/offers/ref/{seller_offer_reference} \ -H "Authorization: Bearer $ACCESS_TOKEN"
Response samples
- 200
- 401
- 403
{- "created_at": "1970-01-01T00:00:01Z",
- "customer": {
- "company": {
- "billing_address": {
- "city": "Munich",
- "country_code": "DE",
- "line1": "10 Downing Street",
- "line2": "Flat 42",
- "postal_code": "10243",
- "region": "Bavaria"
}, - "name": "Unicorn Corp",
- "tax_number": "123456789",
- "vat_number": "DE123456789"
}, - "customer_group": "education",
- "email": "alice@example.com",
- "full_name": "John Butler",
- "phone_number": "abc123"
}, - "expires_at": "1970-01-01T00:00:01Z",
- "id": "739b63c2-9e58-4964-b38d-4ebb424de242",
- "lines": [
- {
- "applied_discount_id": "abc123",
- "available_contract_terms": {
- "pay_now": {
- "amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000,
- "tax_rate": 1900
}, - "id": "739b63c2-9e58-4964-b38d-4ebb424de242"
}, - "rent": {
- "duration": 12,
- "id": "739b63c2-9e58-4964-b38d-4ebb424de242",
- "monthly_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000,
- "tax_rate": 1900
}
}
}, - "base_rental_price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "bundle_id": "abc123",
- "id": "739b63c2-9e58-4964-b38d-4ebb424de242",
- "origin": "abc123",
- "pretty_id": "abc123",
- "price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "pricing_category": "abc123",
- "product_id": "abc123",
- "quantity": 2,
- "selected_contract_type": "abc123",
- "seller_product_references": [
- {
- "reference": "123ab-5343",
- "source": "sap"
}
], - "sublines": [
- {
- "applied_discount_id": "abc123",
- "available_contract_terms": {
- "pay_now": {
- "amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000,
- "tax_rate": 1900
}, - "id": "739b63c2-9e58-4964-b38d-4ebb424de242"
}, - "rent": {
- "duration": 12,
- "id": "739b63c2-9e58-4964-b38d-4ebb424de242",
- "monthly_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000,
- "tax_rate": 1900
}
}
}, - "base_rental_price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "bundle_id": "abc123",
- "id": "739b63c2-9e58-4964-b38d-4ebb424de242",
- "origin": "abc123",
- "pretty_id": "abc123",
- "price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "pricing_category": "abc123",
- "product_id": "abc123",
- "quantity": 2,
- "selected_contract_type": "abc123",
- "seller_product_references": [
- {
- "reference": "123ab-5343",
- "source": "sap"
}
], - "subtitle": "abc123",
- "title": "abc123"
}
], - "subtitle": "abc123",
- "title": "abc123"
}
], - "metadata": {
- "affiliate_code": "123456"
}, - "pricing_overview": {
- "breakdown": [
- {
- "amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "title": "Monthly (x36)",
- "tooltip": "The first rent fee is included in the first payment. More details later, in topi checkout."
}
], - "instead_of_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "items_summaries": [
- {
- "identifier": "abc123",
- "pay_now": {
- "pay_now_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}
}, - "pay_now_excluding_sublines": {
- "pay_now_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}
}, - "rent": [
- {
- "duration": 12,
- "monthly_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}
}
], - "rent_excluding_sublines": [
- {
- "duration": 12,
- "monthly_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}
}
], - "total_pay_now": {
- "pay_now_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}
}, - "total_rent": [
- {
- "duration": 12,
- "monthly_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}
}
]
}
], - "shipping_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "total_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}
}, - "sales_agent": {
- "email": "alice@example.com",
- "external_agent_id": "abc123",
- "name": "abc123",
- "phone": "abc123"
}, - "sales_channel": "ecommerce",
- "seller_offer_reference": "ref-1234",
- "shipping": {
- "is_in_store_pickup": false,
- "price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "seller_shipping_reference": "Sandbox Shipping Service"
}, - "shipping_address": {
- "city": "Munich",
- "country_code": "DE",
- "line1": "10 Downing Street",
- "line2": "Flat 42",
- "postal_code": "10243",
- "recipient_name": "Felix Wolf",
- "region": "Bavaria"
}, - "status": "voided"
}
Validate an offer
Validates the input for creating a topi offer. This endpoint does not create an offer. It can be used to check in advance if an offer can be created with certain products in the cart or if a shipping method is supported, etc.
Returns a HTTP 200 on success.
The request returns an HTTP Unprocessable Entity in the following scenarios:
- When
"lines"
is an empty array. - When
"lines"
contains any products that are not available in the topi catalog - When the
"seller_offer_reference"
is reusing a value of an offer that is currently active
When using in the Sandbox
The following seller offer references are considered to be "active":
"ref-1234"
The following seller product references are considered to be available in the catalog:
{"source": "sap", "reference": "123"}
{"source": "sap", "reference": "456"}
{"source": "sku", "reference": "123abc"}
The following seller product references are considered to be available in the catalog but not supported:
{"source": "sku", "reference": "unsupported-1"}
The following shipping reference is considered to be available but not supported:
"unsupported-shipping-reference"
Authorizations:
Request Body schema: application/jsonrequired
seller_offer_reference required | string Seller's own reference for the offer |
expires_at required | string <date-time> Expiration date and time for the offer (UTC) |
required | Array of objects (OfferLinePayload) non-empty List of product lines |
sales_channel required | string Enum: "telesales" "ecommerce" "in_store_pos" Channel from where the offer is created |
Accept-Language | string |
object (CustomerInfo) Customer information | |
draft_offer_id | string The ID of the draft offer from which an offer is being created |
exit_redirect | string <uri> URL to redirect to when something went wrong along the process. We will add the following parameters to the query string: |
object Metadata you can attach to and offer. You can store here any JSON information | |
object (SalesAgent) Sales agent related to an offer | |
object (ShippingInfo) Shipping information | |
object (ShippingAddress) Shipping Address. If the sales_channel is ecommerce, this field will be required | |
success_redirect | string <uri> URL to redirect to when the user finishes the checkout in topi. We will add the following parameters to the query string: |
Responses
Response Schema: application/json
required | object (PricingOverview) An Overview of the total price to pay by the user using topi. | ||||||||||
|
Request samples
- Payload
- cURL
- JavaScript (fetch)
{- "Accept-Language": "abc123",
- "customer": {
- "company": {
- "billing_address": {
- "city": "Munich",
- "country_code": "DE",
- "line1": "10 Downing Street",
- "line2": "Flat 42",
- "postal_code": "10243",
- "region": "Bavaria"
}, - "name": "Unicorn Corp",
- "tax_number": "123456789",
- "vat_number": "DE123456789"
}, - "customer_group": "education",
- "email": "alice@example.com",
- "full_name": "John Butler",
- "phone_number": "abc123"
}, - "draft_offer_id": "abc123",
- "expires_at": "1970-01-01T00:00:01Z",
- "lines": [
- {
- "base_rental_price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "bundle_index": "abc123",
- "price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "product_id": "abc123",
- "quantity": 2,
- "seller_product_reference": {
- "reference": "123ab-5343",
- "source": "sap"
}, - "sub_lines": [
- {
- "base_rental_price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "bundle_index": "abc123",
- "price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "product_id": "abc123",
- "quantity": 2,
- "seller_product_reference": {
- "reference": "123ab-5343",
- "source": "sap"
}, - "subtitle": "abc123",
- "title": "abc123"
}
], - "subtitle": "abc123",
- "title": "abc123"
}, - {
- "base_rental_price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "bundle_index": "abc123",
- "price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "product_id": "abc123",
- "quantity": 2,
- "seller_product_reference": {
- "reference": "123ab-5343",
- "source": "sap"
}, - "sub_lines": [
- {
- "base_rental_price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "bundle_index": "abc123",
- "price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "product_id": "abc123",
- "quantity": 2,
- "seller_product_reference": {
- "reference": "123ab-5343",
- "source": "sap"
}, - "subtitle": "abc123",
- "title": "abc123"
}
], - "subtitle": "abc123",
- "title": "abc123"
}
], - "metadata": {
- "affiliate_code": "123456"
}, - "sales_agent": {
- "email": "alice@example.com",
- "external_agent_id": "abc123",
- "name": "abc123",
- "phone": "abc123"
}, - "sales_channel": "ecommerce",
- "seller_offer_reference": "ref-1234",
- "shipping": {
- "is_in_store_pickup": false,
- "price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "seller_shipping_reference": "Sandbox Shipping Service"
}, - "shipping_address": {
- "city": "Munich",
- "country_code": "DE",
- "line1": "10 Downing Street",
- "line2": "Flat 42",
- "postal_code": "10243",
- "recipient_name": "Felix Wolf",
- "region": "Bavaria"
},
}
Response samples
- 200
- 401
- 403
- 422
{- "pricing_overview": {
- "breakdown": [
- {
- "amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "title": "Monthly (x36)",
- "tooltip": "The first rent fee is included in the first payment. More details later, in topi checkout."
}
], - "instead_of_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "items_summaries": [
- {
- "identifier": "abc123",
- "pay_now": {
- "pay_now_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}
}, - "pay_now_excluding_sublines": {
- "pay_now_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}
}, - "rent": [
- {
- "duration": 12,
- "monthly_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}
}
], - "rent_excluding_sublines": [
- {
- "duration": 12,
- "monthly_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}
}
], - "total_pay_now": {
- "pay_now_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}
}, - "total_rent": [
- {
- "duration": 12,
- "monthly_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}
}
]
}
], - "shipping_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "total_amount": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}
}
}
We will ping the URL provided whenever an order has changed its status to: "created"
, "partially_fulfilled"
, "completed"
, "canceled"
, or "rejected"
.
Payload:
- same as show order
id
:string
assets
:array
ofAsset
metadata
:object
offer_id
:string
seller_offer_reference
:string
status
:string enum
List all orders
Returns a list of created orders, filterable by query
or created_by
.
Authorizations:
query Parameters
query | string Examples:
Search query. It can be a string or a number or both |
created_by | string Example: created_by=sales-agent@example.com,anothergreatone@example.com a comma-separated list of sales agents emails |
partners_only | boolean Example: partners_only=false a boolean indicating whether to retrieve orders from partner sellers only |
Responses
Response Schema: application/json
Array of objects (OrderSummary) an array with the orders requested | |||||||||||||||||
Array
|
Request samples
- cURL
- JavaScript (fetch)
curl -X GET https://seller-api.topi.eu/v1/orders \ -H "Authorization: Bearer $ACCESS_TOKEN"
Response samples
- 200
- 401
- 403
{- "orders": [
- {
- "agent_name": "abc123",
- "company_name": "abc123",
- "created_at": "1970-01-01T00:00:01Z",
- "full_name": "abc123",
- "id": "739b63c2-9e58-4964-b38d-4ebb424de242",
- "offer_id": "739b63c2-9e58-4964-b38d-4ebb424de242",
- "seller_offer_reference": "abc123",
- "status": "confirmed"
}
]
}
Retrieve an order
Returns a single order.
When using in the Sandbox
Use the following ID's to get different fixtures. Remember that the URL must be encoded:
- Status
"created"
:"52c1e8ec-a592-48a9-b574-ab88b0937b38"
- Status
"confirmed"
:"aac1e833-3391-134a-c567-acd8b0937ad3"
- Status
"partially_fulfilled"
:"b3a64e36-6fa2-40a6-9402-e949c47feb87"
- Status
"completed"
:"aa6a50f4-c2d4-4961-9689-ebd0f0f92a9e"
- Status
"canceled"
:"17c45c3d-cd61-4e2f-a562-ff8f349067de"
Any other ID will return an HTTP 404 error.
Authorizations:
path Parameters
id required | string <regexp> ^[0-9A-Za-z\-]+$ Example: 739b63c2-9e58-4964-b38d-4ebb424de242 topi order ID |
Responses
Response Schema: application/json
created_at required | string <date-time> |
offer_created_at required | string <date-time> |
required | object (CustomerInfo) Customer information |
required | object (ShippingAddress) Shipping Address. If the sales_channel is ecommerce, this field will be required |
required | Array of objects (OrderLineItem) A list of order lines in an order |
tracking_urls required | Array of strings All the tracking urls |
required | object (SellerInfo) |
id required | string <regexp> ^[0-9A-Za-z\-]+$ topi order ID |
offer_id required | string <regexp> ^[0-9A-Za-z\-]+$ Reference to the topi offer ID |
seller_offer_reference required | string Seller's own reference for this order |
status required | string Enum: "created" "confirmed" "acknowledged" "accepted" "partially_fulfilled" "completed" "canceled" "rejected" |
required | Array of objects (Asset) A list of assets in an offer |
canceled_at | string <date-time> |
object Metadata you can attach to and order. You can store here any JSON information | |
object (SalesAgent) Sales agent related to an offer | |
object (ShippingInfo) Shipping information |
Request samples
- cURL
- JavaScript (fetch)
curl -X GET https://seller-api.topi.eu/v1/orders/{id} \ -H "Authorization: Bearer $ACCESS_TOKEN"
Response samples
- 200
- 401
- 403
{- "assets": [
- {
- "id": "739b63c2-9e58-4964-b38d-4ebb424de242",
- "product_id": "739b63c2-9e58-4964-b38d-4ebb424de242",
- "seller_product_references": [
- {
- "reference": "123ab-5343",
- "source": "sap"
}
], - "serial_number": "BA-3456786-334-9",
- "status": "shipped",
- "title": "Pro Laptop 64GB",
- "tracking_url": "abc123"
}
], - "canceled_at": "1970-01-01T00:00:01Z",
- "created_at": "1970-01-01T00:00:01Z",
- "customer_info": {
- "company": {
- "billing_address": {
- "city": "Munich",
- "country_code": "DE",
- "line1": "10 Downing Street",
- "line2": "Flat 42",
- "postal_code": "10243",
- "region": "Bavaria"
}, - "name": "Unicorn Corp",
- "tax_number": "123456789",
- "vat_number": "DE123456789"
}, - "customer_group": "education",
- "email": "alice@example.com",
- "full_name": "John Butler",
- "phone_number": "abc123"
}, - "id": "739b63c2-9e58-4964-b38d-4ebb424de242",
- "metadata": {
- "tracking_number": "123456"
}, - "offer_created_at": "1970-01-01T00:00:01Z",
- "offer_id": "739b63c2-9e58-4964-b38d-4ebb424de242",
- "order_lines": [
- {
- "base_rental_price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "contract_type": "rent",
- "duration": 6,
- "monthly_price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "product_id": "739b63c2-9e58-4964-b38d-4ebb424de242",
- "quantity": 1,
- "selected_first_party_services": [
- {
- "additional_values": {
- "accessory_type": "experiment_charger"
}, - "id": "739b63c2-9e58-4964-b38d-4ebb424de242",
- "monthly_price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "type": "topi_replace"
}
], - "seller_product_references": [
- {
- "reference": "123ab-5343",
- "source": "sap"
}
], - "sublines": [
- {
- "base_rental_price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "contract_type": "rent",
- "duration": 6,
- "monthly_price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "product_id": "739b63c2-9e58-4964-b38d-4ebb424de242",
- "quantity": 1,
- "selected_first_party_services": [
- {
- "additional_values": {
- "accessory_type": "experiment_charger"
}, - "id": "739b63c2-9e58-4964-b38d-4ebb424de242",
- "monthly_price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "type": "topi_replace"
}
], - "seller_product_references": [
- {
- "reference": "123ab-5343",
- "source": "sap"
}
], - "subtitle": "abc123",
- "title": "abc123",
- "unit_price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}
}
], - "subtitle": "abc123",
- "title": "abc123",
- "unit_price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}
}
], - "sales_agent": {
- "email": "alice@example.com",
- "external_agent_id": "abc123",
- "name": "abc123",
- "phone": "abc123"
}, - "seller_info": {
- "address": {
- "city": "abc123",
- "country_code": "DE",
- "line1": "abc123",
- "line2": "abc123",
- "postal_code": "abc123",
- "region": "abc123"
}, - "capability_anonymized_pricing": false,
- "capability_anonymous_ecom_offer_creation": false,
- "capability_bundles": false,
- "capability_chatbot_id": "abc123",
- "capability_dual_pricing": false,
- "capability_hide_buy_now": false,
- "currency": "abc123",
- "email": "abc123",
- "id": "739b63c2-9e58-4964-b38d-4ebb424de242",
- "logo_url": "abc123",
- "name": "abc123",
- "parent_seller_id": "abc123",
- "pdf_reader_assistant_id": "abc123",
- "pretty_name": "abc123",
- "product_reference_source": "abc123"
}, - "seller_offer_reference": "abc123",
- "shipping_address": {
- "city": "Munich",
- "country_code": "DE",
- "line1": "10 Downing Street",
- "line2": "Flat 42",
- "postal_code": "10243",
- "recipient_name": "Felix Wolf",
- "region": "Bavaria"
}, - "shipping_info": {
- "is_in_store_pickup": false,
- "price": {
- "currency": "EUR",
- "gross": 119000,
- "net": 100000
}, - "seller_shipping_reference": "Sandbox Shipping Service"
}, - "status": "confirmed",
- "tracking_urls": [
- "abc123"
]
}
Set metadata on an order
Sets arbitrary JSON metadata on an order.
Authorizations:
path Parameters
id required | string <regexp> ^[0-9A-Za-z\-]+$ Example: 739b63c2-9e58-4964-b38d-4ebb424de242 topi order ID |
Request Body schema: application/jsonrequired
required | object Metadata to attach. You can store any JSON information. | ||
|
Responses
Response Schema: application/json
id required | string <regexp> ^[0-9A-Za-z\-]+$ topi order ID |
offer_id required | string <regexp> ^[0-9A-Za-z\-]+$ Reference to the topi offer ID |
seller_offer_reference required | string Seller's own reference for this order |
status required | string Enum: "created" "confirmed" "acknowledged" "accepted" "partially_fulfilled" "completed" "canceled" "rejected" |
required | Array of objects (Asset) A list of assets in an offer |
object Metadata you can attach to and order. You can store here any JSON information |
Request samples
- Payload
- cURL
- JavaScript (fetch)
{- "metadata": {
- "tracking_number": "123456"
}
}
Response samples
- 200
- 401
- 403
{- "assets": [
- {
- "id": "739b63c2-9e58-4964-b38d-4ebb424de242",
- "product_id": "739b63c2-9e58-4964-b38d-4ebb424de242",
- "seller_product_references": [
- {
- "reference": "123ab-5343",
- "source": "sap"
}
], - "serial_number": "BA-3456786-334-9",
- "status": "shipped",
- "title": "Pro Laptop 64GB",
- "tracking_url": "abc123"
}
], - "id": "739b63c2-9e58-4964-b38d-4ebb424de242",
- "metadata": {
- "tracking_number": "123456"
}, - "offer_id": "739b63c2-9e58-4964-b38d-4ebb424de242",
- "seller_offer_reference": "abc123",
- "status": "confirmed"
}
Confirm an order
Sets the status of an existing order to "confirmed". You can only accept orders that have been in the status "created" or "acknowledged".
Authorizations:
path Parameters
id required | string <regexp> ^[0-9A-Za-z\-]+$ Example: 739b63c2-9e58-4964-b38d-4ebb424de242 topi order ID |
Responses
Response Schema: application/json
id required | string <regexp> ^[0-9A-Za-z\-]+$ topi order ID |
offer_id required | string <regexp> ^[0-9A-Za-z\-]+$ Reference to the topi offer ID |
seller_offer_reference required | string Seller's own reference for this order |
status required | string Enum: "created" "confirmed" "acknowledged" "accepted" "partially_fulfilled" "completed" "canceled" "rejected" |
required | Array of objects (Asset) A list of assets in an offer |
object Metadata you can attach to and order. You can store here any JSON information |
Request samples
- cURL
- JavaScript (fetch)
curl -X POST https://seller-api.topi.eu/v1/orders/{id}/accept \ -H "Authorization: Bearer $ACCESS_TOKEN"
Response samples
- 200
- 401
- 403
{- "assets": [
- {
- "id": "739b63c2-9e58-4964-b38d-4ebb424de242",
- "product_id": "739b63c2-9e58-4964-b38d-4ebb424de242",
- "seller_product_references": [
- {
- "reference": "123ab-5343",
- "source": "sap"
}
], - "serial_number": "BA-3456786-334-9",
- "status": "shipped",
- "title": "Pro Laptop 64GB",
- "tracking_url": "abc123"
}
], - "id": "739b63c2-9e58-4964-b38d-4ebb424de242",
- "metadata": {
- "tracking_number": "123456"
}, - "offer_id": "739b63c2-9e58-4964-b38d-4ebb424de242",
- "seller_offer_reference": "abc123",
- "status": "confirmed"
}
Acknowledge an order
Sets the status of an existing order to "acknowledged". You can only acknowledge orders that have been in the status "created".
Authorizations:
path Parameters
id required | string <regexp> ^[0-9A-Za-z\-]+$ Example: 739b63c2-9e58-4964-b38d-4ebb424de242 topi order ID |
Responses
Response Schema: application/json
id required | string <regexp> ^[0-9A-Za-z\-]+$ topi order ID |
offer_id required | string <regexp> ^[0-9A-Za-z\-]+$ Reference to the topi offer ID |
seller_offer_reference required | string Seller's own reference for this order |
status required | string Enum: "created" "confirmed" "acknowledged" "accepted" "partially_fulfilled" "completed" "canceled" "rejected" |
required | Array of objects (Asset) A list of assets in an offer |
object Metadata you can attach to and order. You can store here any JSON information |
Request samples
- cURL
- JavaScript (fetch)
curl -X POST https://seller-api.topi.eu/v1/orders/{id}/acknowledge \ -H "Authorization: Bearer $ACCESS_TOKEN"
Response samples
- 200
- 401
- 403
{- "assets": [
- {
- "id": "739b63c2-9e58-4964-b38d-4ebb424de242",
- "product_id": "739b63c2-9e58-4964-b38d-4ebb424de242",
- "seller_product_references": [
- {
- "reference": "123ab-5343",
- "source": "sap"
}
], - "serial_number": "BA-3456786-334-9",
- "status": "shipped",
- "title": "Pro Laptop 64GB",
- "tracking_url": "abc123"
}
], - "id": "739b63c2-9e58-4964-b38d-4ebb424de242",
- "metadata": {
- "tracking_number": "123456"
}, - "offer_id": "739b63c2-9e58-4964-b38d-4ebb424de242",
- "seller_offer_reference": "abc123",
- "status": "confirmed"
}
Reject an order
Sets the status of an existing order to "rejected". You can only reject orders that have been in the status "created" or "acknowledged".
Authorizations:
path Parameters
id required | string <regexp> ^[0-9A-Za-z\-]+$ Example: 739b63c2-9e58-4964-b38d-4ebb424de242 topi order ID |
Responses
Response Schema: application/json
id required | string <regexp> ^[0-9A-Za-z\-]+$ topi order ID |
offer_id required | string <regexp> ^[0-9A-Za-z\-]+$ Reference to the topi offer ID |
seller_offer_reference required | string Seller's own reference for this order |
status required | string Enum: "created" "confirmed" "acknowledged" "accepted" "partially_fulfilled" "completed" "canceled" "rejected" |
required | Array of objects (Asset) A list of assets in an offer |
object Metadata you can attach to and order. You can store here any JSON information |
Request samples
- cURL
- JavaScript (fetch)
curl -X POST https://seller-api.topi.eu/v1/orders/{id}/reject \ -H "Authorization: Bearer $ACCESS_TOKEN"
Response samples
- 200
- 401
- 403
{- "assets": [
- {
- "id": "739b63c2-9e58-4964-b38d-4ebb424de242",
- "product_id": "739b63c2-9e58-4964-b38d-4ebb424de242",
- "seller_product_references": [
- {
- "reference": "123ab-5343",
- "source": "sap"
}
], - "serial_number": "BA-3456786-334-9",
- "status": "shipped",
- "title": "Pro Laptop 64GB",
- "tracking_url": "abc123"
}
], - "id": "739b63c2-9e58-4964-b38d-4ebb424de242",
- "metadata": {
- "tracking_number": "123456"
}, - "offer_id": "739b63c2-9e58-4964-b38d-4ebb424de242",
- "seller_offer_reference": "abc123",
- "status": "confirmed"
}
Assets without serial numbers
Some assets might not have a serial number (e.g. accessories). In order to send them with the shipment, explicitly pass an empty string ""
as the serial_number
for this asset.
Note, that every asset, that has a rent option, requires a serial number even if it has been directly purchased. The request will fail with an according message if such a serial number is missing.
Also note, that every item of an order has to be shipped for the order to be completed. This can be done in multiple shipments.
Create a shipment
Add shipment info for an order. Partial shipments are allowed and will update the order status to "partially_fulfilled". All items must have shipment info before an order is considered "completed".
Authorizations:
Request Body schema: application/jsonrequired
order_id required | string <regexp> ^[0-9A-Za-z\-]+$ topi order ID |
required | Array of objects (SerialNumberByAsset) The products' serial numbers to register |
object Metadata that you can attach to an order. You can store any JSON information. | |
tracking_url | string <uri> The tracking URL of the asset |
Responses
Response Schema: application/json
required | Array of objects (SerialNumberByAsset) The products' serial numbers to register |
object Metadata that you can attach to an order. You can store any JSON information. | |
tracking_url | string <uri> The tracking URL of the asset |
Request samples
- Payload
- cURL
- JavaScript (fetch)
{- "metadata": {
- "tracking_number": "123456"
}, - "order_id": "739b63c2-9e58-4964-b38d-4ebb424de242",
- "serial_numbers": [
- {
- "seller_product_reference": {
- "reference": "123ab-5343",
- "source": "sap"
}, - "serial_number": "BA-3456786-334-9"
}
],
}
Response samples
- 200
- 401
- 403
{- "metadata": {
- "tracking_number": "123456"
}, - "serial_numbers": [
- {
- "seller_product_reference": {
- "reference": "123ab-5343",
- "source": "sap"
}, - "serial_number": "BA-3456786-334-9"
}
],
}
Get all shipping methods
Get all shipping methods
Authorizations:
query Parameters
page | integer <int64> Default: 0 Example: page=0 Which page number to fetch (zero-indexed) |
Responses
Response Schema: application/json
required | Array of objects (ShippingMethodResult) Array of ShippingMethodResult |
required | object (PageMetadata) Metadata about the returned page |
Request samples
- cURL
- JavaScript (fetch)
curl -X GET https://seller-api.topi.eu/v1/shipping-method \ -H "Authorization: Bearer $ACCESS_TOKEN"
Response samples
- 200
- 401
- 403
{- "data": [
- {
- "id": "739b63c2-9e58-4964-b38d-4ebb424de242",
- "is_in_store_pickup": true,
- "name": "United Parcel Service",
- "seller_shipping_method_reference": "Sandbox Shipping Service",
- "supported": true
}
], - "pagination": {
- "has_more": false,
- "page": 0
}
}
Create shipping method
Creates a shipping method. This is global for all the offers.
Returns HTTP 200 plus basic information about the newly created shipping method.
The request returns an HTTP Unprocessable Entity when the provided "seller_shipping_method_reference"
is not unique.
When using in the Sandbox
The following seller shipping method references are considered to be available and will make the API return an HTTP Unprocessable Entity error.
"Bridges"
Note: The sandbox will always return the same fixture regardless of the payload provided.
Authorizations:
Request Body schema: application/jsonrequired
seller_shipping_method_reference required | string Seller's own reference for this shipping method. |
is_in_store_pickup | boolean Is this shipping method in store pickup |
name | string Name for the shipping method. |
Responses
Response Schema: application/json
id required | string <regexp> ^[0-9A-Za-z\-]+$ topi shipping method ID. |
seller_shipping_method_reference required | string Seller's own reference for this shipping method. |
supported required | boolean Supported shipping method. |
is_in_store_pickup | boolean Is this shipping method in store pickup |
name | string Name for the shipping method. |
Request samples
- Payload
- cURL
- JavaScript (fetch)
{- "is_in_store_pickup": true,
- "name": "United Parcel Service",
- "seller_shipping_method_reference": "Sandbox Shipping Service"
}
Response samples
- 201
- 401
- 403
{- "id": "739b63c2-9e58-4964-b38d-4ebb424de242",
- "is_in_store_pickup": true,
- "name": "United Parcel Service",
- "seller_shipping_method_reference": "Sandbox Shipping Service",
- "supported": true
}