API requests must be made using the ApisCP X.509 provided after establishing a vendor relationship with ApisCP. The ApisCP Root Certificates must be used to validate authenticity. These are bundled in /usr/local/apnscp/resources/apnscp.ca
or through the public Yum repository (opens new window).
Requests are made using REST. All vendor requests are prefixed in the vendor/ namespace.
API in development
This API is still under development. This may change! Please direct all feedback to matt@apisnetworks.com
# Managing activation codes
POST vendor/code
Adds a new license code that may be converted into a license. Codes, once created, count toward license allowance regardless of redemption status.
See LICENSE.md for upgrading from an activation code within ApisCP. Codes may be activated at install time (opens new window) as well; however, it's advised to install without specifying a code to use a trial license until satisfied with the system configuration. MySQL and PostgreSQL cannot be changed once provisioned.
SAMPLE CODE
curl -i \
--cacert ./apnscp.ca \
-E ./license.pem \
-H "Content-Type: application/json" \
-X POST
-d '{"type":"startup"}' \
https://license.apiscp.com/vendor/code
SAMPLE RESPONSE
{"code":"iifGi10LQpKo6cAk2oNKSMMvgz5t2ZC4qcOHN5W8iyssD85TZzYHKhIxUcCB"}
DETAILS
Above creates 1 Startup license activation without any features, such as network restrictions. This means the license may be used anywhere!
Use network restrictions!
Network restrictions limit the license usage on a single machine or subnet. Network restrictions may be set using the features
property + net
subproperty. In the above payload, the license may be restricted on 64.22.68.1/24 by specifying features.net: 64.22.68.1/24:
-d '{"type":"startup","features":{"net":["64.22.68.1/24"]}}'
Codes accept a variety of parameters that influence generation.
Parameter | Type |
---|---|
type REQUIRED | enum from set ['mini','startup','pro'] |
common_name | string, max length 64 characters |
features | array |
Likewise features may consist of one or more optional license attributes.
Feature parameter | Type | Description |
---|---|---|
net | array | Network CIDR or IP address restrictions. See warning. |
IP restriction usage
IP range must include network gateway. If single IP, then IP listed must be in /24 of gateway. ip route show 0/0
will show primary route on server.
- 64.22.68.14 is valid if gateway is 64.22.68.1.
- 64.22.68.14 is not valid if gateway is 64.22.69.1. 64.22.68.1/23 would be used instead.
Rationale Failure to do this would allow one to bind an IP restricted address to server in multi-home environment without ever using it thus satisfying restriction requirement.
# Removing codes
DELETE vendor/code/ID
Activation codes that have not yet been redeemed may be deleted.
SAMPLE CODE
curl -i \
--cacert ./apnscp.ca \
-E ./license.pem \
-H "Content-Type: application/json" \
-X DELETE \
"https://license.apiscp.com/vendor/code/iifGi10LQpKo6cAk2oNKSMMvgz5t2ZC4qcOHN5W8iyssD85TZzYHKhIxUcCB"
# Listing codes
GET vendor/code
A list of all codes generated may be retrieved through this endpoint.
curl -i \
--cacert ./apnscp.ca \
-E ./license.pem \
-H "Content-Type: application/json" \
-X GET \
"https://license.apiscp.com/vendor/code"
SAMPLE RESPONSE
[{"code":"iifGi10LQpKo6cAk2oNKSMMvgz5t2ZC4qcOHN5W8iyssD85TZzYHKhIxUcCB","available":1,"issued":1591601554,"created_at":1591601554,"common_name":"server123"}]
# Listing redemptions by code
GET vendor/code/ID
A list of all codes generated may be retrieved through this endpoint.
curl -i \
--cacert ./apnscp.ca \
-E ./license.pem \
-H "Content-Type: application/json" \
-X GET \
"https://license.apiscp.com/vendor/code/iifGi10LQpKo6cAk2oNKSMMvgz5t2ZC4qcOHN5W8iyssD85TZzYHKhIxUcCB"
SAMPLE RESPONSE
[{"id":"1","certificate_id":91,"ip":"192.168.0.147","created_at":1591693179}]
Note: certificate_id is the license ID. id is sequential redemption ID, which is unused in vendor licensing.
# Managing licenses
# Listing licenses
GET vendor/license
List all redeemed licenses.
SAMPLE REQUEST
curl -i \
--cacert ./apnscp.ca \
-E ./license.pem \
-H "Content-Type: application/json" \
-X GET \
"https://license.apiscp.com/vendor/license"
SAMPLE RESPONSE
[{"id":91,"common_name":"server123","ip":"192.168.0.147","expire":1595149179,"created":1591693179}]
# Revoking licenses
DELETE vendor/license/ID
SAMPLE CODE
curl -i \
--cacert ./apnscp.ca \
-E ./license.pem \
-H "Content-Type: application/json" \
-X DELETE \
"https://license.apiscp.com/vendor/license/91"
SAMPLE RESPONSE
true
A 204 is returned when the request succeeds otherwise a 403 if the license ID is unknown or has already been revoked.
# Vendor stats
GET vendor/stats
List license statistics.
SAMPLE REQUEST
curl -i \
--cacert ./apnscp.ca \
-E ./license.pem \
-H "Content-Type: application/json" \
-X GET \
"https://license.apiscp.com/vendor/stats"
SAMPLE RESPONSE
[{"type":"startup","total":1,"expired":"0","revoked":"0"}]
"total" reflects all licenses issued. "active" would be determined from total - expired - revoked.