Skip to content

Services & Products

15 endpoints. Authentication, errors, paging and rate limits are described once, in the API overview.

Action Method Description
addcancelrequest POST Request cancellation of a service
addproduct POST Create a new product/package
getcancelledpackages GET List cancellation requests
getclientsaddons GET Get all addons for a client
getclientsproducts GET List services/products for a client
modulechangepackage POST Run Change Package on a service module
modulechangepw POST Change the account password on the server
modulecreate POST Run the module Create function for a service
modulecustom POST Run a custom function of a server module
modulesuspend POST Suspend a hosting service
moduleterminate POST Run the module Terminate function
moduleunsuspend POST Unsuspend/reactivate a service
updateclientaddon POST Update a service addon
updateclientproduct POST Update a client's hosting service record
upgradeproduct POST Move a service to another product, billing the difference

addcancelrequest

Request cancellation of a service.

POST /api/v1/addcancelrequest

Permission: manage_services

Parameters

Name Type Required Description
serviceid integer yes The service.
type string no Immediate, or End of Billing Period (the default).
reason string no Up to 1000 characters.

Response

Field Description
result success
serviceid integer

Errors

Status When
404 No such service.
409 A request is already open for it.
422 The service is terminated, cancelled or fraud.

Example

curl -X POST https://example.com/api/v1/addcancelrequest \
  -H "X-API-Key: $PNLCS_IDENTIFIER" \
  -H "X-API-Secret: $PNLCS_SECRET" \
  --data-urlencode "serviceid=1"

addproduct

Create a new product/package.

POST /api/v1/addproduct

Permission: manage_services

Parameters

Name Type Required Description
name string yes Up to 255 characters.
gid integer yes The product group.
type string yes hostingaccount, reselleraccount, server or other (hosting, reseller, vps, ssl, other are accepted too).
paytype string yes free, onetime or recurring.
description string no Description.
module string no The server module that provisions it, for example panelica.
servergroupid integer no The server group.
autosetup string no order (set up when ordered; on is accepted too), payment, or manual.
package_name string no The package on the server.
pricing object no pricing[currencyid][cycle]=price, cycles monthly to triennially; -1 means not sold on that cycle.

Response

Field Description
result success
pid integer

Note

Created as the product screen creates it.

Example

curl -X POST https://example.com/api/v1/addproduct \
  -H "X-API-Key: $PNLCS_IDENTIFIER" \
  -H "X-API-Secret: $PNLCS_SECRET" \
  --data-urlencode "name=Starter" \
  --data-urlencode "gid=1" \
  --data-urlencode "type=hostingaccount" \
  --data-urlencode "paytype=recurring" \
  --data-urlencode "module=panelica" \
  --data-urlencode "pricing[1][monthly]=4.99"

getcancelledpackages

List cancellation requests.

GET /api/v1/getcancelledpackages

Permission: list_services

Parameters

Name Type Required Description
limitstart integer no Where the page starts. Default 0.
limitnum integer no Page size, 1 to 250. Default 25.

Response

Field Description
result success
totalresults integer: rows matching the filters
startnumber integer: where this page starts
numreturned integer: rows on this page
data array: the rows

Note

The cancellation requests, newest first, each with its service.

Example

curl -G https://example.com/api/v1/getcancelledpackages \
  -H "X-API-Key: $PNLCS_IDENTIFIER" \
  -H "X-API-Secret: $PNLCS_SECRET"

getclientsaddons

Get all addons for a client.

GET /api/v1/getclientsaddons

Permission: list_services

Parameters

Name Type Required Description
clientid integer no Only this client's addons. userid is accepted too.
serviceid integer no Only this service's addons.

Response

Field Description
result success
addons array of service addons, each with its service and addon

Example

curl -G https://example.com/api/v1/getclientsaddons \
  -H "X-API-Key: $PNLCS_IDENTIFIER" \
  -H "X-API-Secret: $PNLCS_SECRET"

getclientsproducts

List services/products for a client.

GET /api/v1/getclientsproducts

Permission: list_services

Parameters

Name Type Required Description
clientid integer no Only this client's services. userid is accepted too.
serviceid integer no One service.
pid integer no Only services of this product.
domain string no Only the service for this exact domain.
status string no pending, active, suspended, terminated, cancelled, fraud or completed.
limitstart integer no Where the page starts. Default 0.
limitnum integer no Page size, 1 to 250. Default 25.

Response

Field Description
result success
totalresults integer: rows matching the filters
startnumber integer: where this page starts
numreturned integer: rows on this page
data array: the rows

Note

Each service carries its client and product.

Example

curl -G https://example.com/api/v1/getclientsproducts \
  -H "X-API-Key: $PNLCS_IDENTIFIER" \
  -H "X-API-Secret: $PNLCS_SECRET"

modulechangepackage

Run Change Package on a service module.

POST /api/v1/modulechangepackage

Permission: manage_services

Parameters

Name Type Required Description
serviceid integer yes The service.
packageid integer yes The product to move the account to.

Response

Field Description
result success

Errors

Status When
400 The server module refused.
404 No such service or product.

Note

Changes the plan on the server only; billing is not touched. To bill the difference, use upgradeproduct.

Example

curl -X POST https://example.com/api/v1/modulechangepackage \
  -H "X-API-Key: $PNLCS_IDENTIFIER" \
  -H "X-API-Secret: $PNLCS_SECRET" \
  --data-urlencode "serviceid=1" \
  --data-urlencode "packageid=1"

modulechangepw

Change the account password on the server.

POST /api/v1/modulechangepw

Permission: manage_services

Parameters

Name Type Required Description
serviceid integer yes The service.
servicepassword string yes The new password, at least 6 characters. password is accepted too.

Response

Field Description
result success

Errors

Status When
400 No password was sent, or the server module refused.
404 No such service.

Example

curl -X POST https://example.com/api/v1/modulechangepw \
  -H "X-API-Key: $PNLCS_IDENTIFIER" \
  -H "X-API-Secret: $PNLCS_SECRET" \
  --data-urlencode "serviceid=1" \
  --data-urlencode "servicepassword=example"

modulecreate

Run the module Create function for a service.

POST /api/v1/modulecreate

Permission: manage_services

Parameters

Name Type Required Description
serviceid integer yes The service.

Response

Field Description
result success
(module fields) whatever the server module reports, such as message

Errors

Status When
400 The server module refused; message says why.
404 No such service.

Note

Creates the account on the server through the product's server module.

Example

curl -X POST https://example.com/api/v1/modulecreate \
  -H "X-API-Key: $PNLCS_IDENTIFIER" \
  -H "X-API-Secret: $PNLCS_SECRET" \
  --data-urlencode "serviceid=1"

modulecustom

Run a custom function of a server module.

POST /api/v1/modulecustom

Permission: manage_services

Parameters

Name Type Required Description
serviceid integer yes The service.
func_name string yes A function the service's server module lists in customFunctions().

Response

Field Description
result success

Errors

Status When
404 No such service, or its module offers no function by that name (the message lists the ones it offers).
422 The function ran and reported a failure.
502 The function failed.

Note

None of the built-in server modules offers a custom function; this is for third-party modules.

Example

curl -X POST https://example.com/api/v1/modulecustom \
  -H "X-API-Key: $PNLCS_IDENTIFIER" \
  -H "X-API-Secret: $PNLCS_SECRET" \
  --data-urlencode "serviceid=1" \
  --data-urlencode "func_name=example"

modulesuspend

Suspend a hosting service.

POST /api/v1/modulesuspend

Permission: manage_services

Parameters

Name Type Required Description
serviceid integer yes The service.
reason string no Stored as the suspension reason and passed to the server module.

Response

Field Description
result success

Errors

Status When
400 The server module refused.
404 No such service.

Example

curl -X POST https://example.com/api/v1/modulesuspend \
  -H "X-API-Key: $PNLCS_IDENTIFIER" \
  -H "X-API-Secret: $PNLCS_SECRET" \
  --data-urlencode "serviceid=1"

moduleterminate

Run the module Terminate function.

POST /api/v1/moduleterminate

Permission: manage_services

Parameters

Name Type Required Description
serviceid integer yes The service.

Response

Field Description
result success

Errors

Status When
400 The server module refused.
404 No such service.

Note

Deletes the account on the server. It cannot be undone.

Example

curl -X POST https://example.com/api/v1/moduleterminate \
  -H "X-API-Key: $PNLCS_IDENTIFIER" \
  -H "X-API-Secret: $PNLCS_SECRET" \
  --data-urlencode "serviceid=1"

moduleunsuspend

Unsuspend/reactivate a service.

POST /api/v1/moduleunsuspend

Permission: manage_services

Parameters

Name Type Required Description
serviceid integer yes The service.

Response

Field Description
result success

Errors

Status When
400 The server module refused.
404 No such service.

Example

curl -X POST https://example.com/api/v1/moduleunsuspend \
  -H "X-API-Key: $PNLCS_IDENTIFIER" \
  -H "X-API-Secret: $PNLCS_SECRET" \
  --data-urlencode "serviceid=1"

updateclientaddon

Update a service addon.

POST /api/v1/updateclientaddon

Permission: manage_services

Parameters

Name Type Required Description
id integer yes The service addon.
status string no pending, active, suspended, terminated, cancelled, fraud or completed. cancelled stops its billing too.
notes string no Notes.

Response

Field Description
result success
addonid integer

Errors

Status When
404 No such addon.

Example

curl -X POST https://example.com/api/v1/updateclientaddon \
  -H "X-API-Key: $PNLCS_IDENTIFIER" \
  -H "X-API-Secret: $PNLCS_SECRET" \
  --data-urlencode "id=1"

updateclientproduct

Update a client's hosting service record.

POST /api/v1/updateclientproduct

Permission: manage_services

Parameters

Name Type Required Description
serviceid integer yes The service.
status string no pending, active, suspended, terminated, cancelled, fraud or completed.
domain string no A domain name.
username string no The account user name on the server.
password string no The account password as stored in PNLCS. This does not change it on the server; use modulechangepw for that.
next_due_date date no Next due date.
billing_cycle string no onetime, monthly, quarterly, semiannually, annually, biennially or triennially.
notes string no Admin notes.

Response

Field Description
result success
serviceid integer

Errors

Status When
404 No such service.

Note

Changes the record only; nothing is sent to the server.

Example

curl -X POST https://example.com/api/v1/updateclientproduct \
  -H "X-API-Key: $PNLCS_IDENTIFIER" \
  -H "X-API-Secret: $PNLCS_SECRET" \
  --data-urlencode "serviceid=1"

upgradeproduct

Move a service to another product, billing the difference.

POST /api/v1/upgradeproduct

Permission: manage_services

Parameters

Name Type Required Description
serviceid integer yes The service.
packageid integer yes The new product.

Response

Field Description
result success
serviceid integer
upgradeid integer
invoiceid integer or null: the invoice for the difference
applied boolean: true when the change was made at once (nothing to pay)

Errors

Status When
422 The change is not allowed.

Note

The same upgrade the client area offers: the difference is billed, and the server is changed once it is paid.

Example

curl -X POST https://example.com/api/v1/upgradeproduct \
  -H "X-API-Key: $PNLCS_IDENTIFIER" \
  -H "X-API-Secret: $PNLCS_SECRET" \
  --data-urlencode "serviceid=1" \
  --data-urlencode "packageid=1"