When ordering a service on the Zomro platform, it is necessary to follow several important steps: adding the service to the cart, activating the promo code (if available), and directly purchasing the service. These steps allow for effective use of the promo code functionality during the order. To place an order, it is necessary to pass certain parameters of the service, the details of which are presented below.
The process of creating an order consists of the following stages:
- Adding the service to the cart
- Activating the promo code
- Purchasing the service from the cart
Using these specific stages of purchase allows for the use of a promo code during the order.
To create an order, you need to pass the parameters of the service that interest us. How to obtain the available parameters is described here.
Request structure for placing an order for the Cloud VPS service from Zomro:
URL:
https://api.zomro.com/
Method: POST
Request body (Form-data):
Parameter | Example value | Required parameter | Description of the value |
func | v2.instances.order.param | Yes | Function for ordering the service |
auth | 21fc199...c43f71 | No | Session token. This is one of the authorization options. More details on other options are described here |
out | json | No | In what format to expect a response from the API |
sok | ok | Yes | Operation confirmation |
order_period | -50 | Yes | For cloudvps services, daily billing is used. To purchase the service, use the value: -50, 1, 3, 6, 12. -50 - daily billing, 1 - order the service for 1 month, 3 - order for 3 months, and so on. |
licence_agreement | on | Yes | Corresponds to the agreement with the license for use |
pricelist | 6740 | Yes | ID of the tariff to be ordered. The tariff ID can be obtained from the function v2.instances.order.pricelist. More details on how to use it are described here |
order_count | 1 | Yes | The number of services that can be ordered in one request |
force_use_new_cart | on | Yes | Adding the service to a new billmanager cart |
instances_ssh_keys | 490 | No | ID of the SSH key to be added to the server after the OS installation. Do not pass if the parameter use_ssh_key=off |
password | Mypassword1 | No | Access password to the server. In the case of Linux - password for the root user. In the case of Windows - password for the Administrator user. Do not pass if the parameter use_ssh_key=on. Also, the password must contain at least 1 uppercase English letter, 1 numeric character, and a minimum of 8 characters. |
servername | MyServer | No | Custom server name |
instances_os | 18d0ee2e-4d57-4f40-9b56-03c1773b5831 | Yes | UID of the operating system to be installed. The UID of the operating system can be obtained from the function v2.instances.order.pricelist. More details on how to use it are described here |
use_ssh_key | off | No | Whether to use an SSH key or not. Can take values off or on. |
addon_xxx |
260 |
No | Additional parameters of the service. Can be RAM, number of CPUs, disk size, traffic volume, type of IPv4 or IPv6. Available parameters depend on the tariff. To find out which options are available, you can refer to the example described here |
datacenter |
13 |
Yes | Datacenter number. To find out which options are available, you can refer to the example described here |
Example of ordering a service
For example, we will use the Cloud Essential tariff with the Linux Ubuntu 20.04 OS, a server only with IPv6, and using the root user password.
URL:
https://api.zomro.com/
Method: POST
Request body (Form-data):
Parameter | Value |
func | v2.instances.order.param |
auth | 21fc199...c43f71 |
out | json |
sok | ok |
order_period | -50 |
licence_agreement | on |
pricelist |
6740 |
order_count | 1 |
password | MyPassword1 |
servername | MyServer-1 |
instances_os |
479c96f1-ccc6-47a2-952c-c9e3bbdc8d07 |
use_ssh_key | off |
addon_6746 |
260 |
force_use_new_cart | on |
datacenter | 13 |
Here is an example of a request that can be executed from the console:
curl --location 'https://api.zomro.com/' \
--form 'func="v2.instances.order.param"' \
--form 'auth="211a9ac6309a9f0c340bdebf"' \
--form 'out="json"' \
--form 'sok="on"' \
--form 'order_period="-50"' \
--form 'licence_agreement="on"' \
--form 'use_ssh_key="off"' \
--form 'pricelist="6740"' \
--form 'servername="MyServer-1"' \
--form 'password="Mypassword1"' \
--form 'instances_os="479c96f1-ccc6-47a2-952c-c9e3bbdc8d07"' \
--form 'order_count="1"' \
--form 'addon_6746="260"' \
--form 'datacenter="13"' \
--form 'force_use_new_cart="on"'
After executing the request, we need the data that is located in the following nesting:
doc
Here are the values obtained as a result of executing the request:
...,
"lineitem.id": {
"$": "1818"
},
...
This value "1818", which is the order number in the cart, is needed for further activation of the service. We will remember it for future use.
After executing this request, the existing product can also be seen in the cart.
The next step will be the activation of the promo code, if available. This step is not mandatory, but if the client has a promo code, it would be great to have the opportunity to use it.
URL:
https://api.zomro.com/
Method: POST
Request body (Form-data):
Parameter | Example value | Required parameter | Description of the value |
func | cart | Yes | Function name for working with the cart |
auth | 21fc199...c43f71 | No | Session token. This is one of the authorization options. More details on other options are described here |
out | json | No | In what format to expect a response from the API |
sok | ok | Yes | Operation confirmation |
promocode | PROMO_2024 | Yes | Promo code that is planned to be used. |
clicked_button | apply_promocode | Yes | Confirmation of promo code activation |
Here is an example of a request that can be executed from the console:
curl --location 'https://api.zomro.com/' \
--form 'out="json"' \
--form 'auth="46ffb314c8d46ec1f2f1df16"' \
--form 'func="cart"' \
--form 'promocode="PROMO_2024"' \
--form 'sok="ok"' \
--form 'clicked_button="apply_promocode"'
After executing this request, the result of the promo code activation can be seen in the cart:
In the image, it can be seen that the promo code PROMO_2024 has been successfully activated.
PS: In reality, the promo code PROMO_2024 is not valid in your case; it was created solely for writing this instruction.
The next step will be the activation of the service.
In case the promo code does not provide a 100% discount, it is necessary to additionally pay for the service from the personal account.
Let’s consider the situation where the promo code does not cover 100% of the service cost. The API request will look as follows:
URL:
https://api.zomro.com/
Method: POST
Request body (Form-data):
Parameter | Example value | Required parameter | Description of the value |
func | cartorder.create.confirm | Yes | Function for working with the cart |
auth | 21fc199...c43f71 | No | Session token. This is one of the authorization options. More details on other options are described here |
out | json | No | In what format to expect a response from the API |
sok | ok | Yes | Operation confirmation |
elid | 1818 | Yes | Order ID. This value is obtained when adding the service to the cart |
paymethod_id | 0 | Yes | Payment method ID. The value 0 is standard and corresponds to the method of paying for the order from the personal account |
Here is an example of a request that can be executed from the console:
curl --location 'https://api.zomro.com/' \
--form 'out="json"' \
--form 'auth="cd63c7832f0ae5947c49ac06"' \
--form 'func="cartorder.create.confirm"' \
--form 'sok="on"' \
--form 'elid="1818"' \
--form 'paymethod_id="0"'
After executing this request, there should be no items in the cart for this service, and in the general list of CloudVPS services, we see our service in the status "Activation in progress":
During the service activation process, there are no additional actions with the service. After the service is activated, we will have a list of available actions to manage the services, such as: Start, Stop, Delete, Resize, and others.
We also recommend studying articles that may be useful for interacting with Cloud VPS products using the API:
- API - Obtaining Information About Available Tariffs and Their Parameters
- API - Operation Start & Stop
- API - Operation Reboot
- API - Operation Rebuild
- API - Operation Delete
- API - Interaction with Backup Schedule
- API - Interacting with Rescue
- API - Interaction with Backup
- API - Interacting with Snapshots
- API - Interacting with Boot From ISO
- API - Interaction with Image