/v1/order/@product_idOrder one service
Create an order for one plan by product_id, cycle, domain (legacy form; prefer POST /v1/order). Requires both orders:write and billing:write: missing either returns 403 insufficient_scope.
Call it through the gateway https://api.tino.vn/v1 with a token that has the orders:write scope; see Calling the Tino API.
Authentication
Send the token in the header Authorization:
Authorization: Bearer <token>
Tokens that can call it: app tokens (tinoat_, Sign in with Tino) or personal API tokens (tinopat_).
Scopes
orders:write
Parameters
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
product_id | integer | Required | Product ID (service plan, certificate) |
Body (JSON)
| Name | Type | Required | Description |
|---|---|---|---|
domain | string | Optional | Domain name, ie. example.com, may be optional |
cycle | string | Optional | Billing period symbol |
pay_method | integer | Optional | Payment method ID |
custom | array | Optional | Additional options data available for sop products |
promocode | string | Optional | Promotion code |
aff_id | integer | Optional | Affiliate ID |
Response
No live sample: the route changes real data or the test account has no data for it. The answer is a JSON object; errors follow the common shape in Calling the Tino API.
Error codes
| Error code | Description |
|---|---|
401 · invalid_token | The token is wrong, expired or revoked. |
403 · insufficient_scope | The token lacks the orders:write scope. |
403 · ip_not_allowed | A personal API token called from an IP outside its allow-list. |
Business errors of a route usually come as HTTP 200 with {"error": ["<code>"]}; see common error codes.