Overview
API allows you to control all features of c0x0.com in a programistic way. Full access to this features is available for Developer subscribers.There is special-purpose open API available for all users with limitted functionality for browser extensions - or any other app that one want to develop. This API is called XPI and details are below.
API endpoint is located at https://api-mgmt.c0x0.com/VERSION/. Current version is v1. See below examples how to construct proper calls.
Response Codes
In general we are following RESTfull recommendations regarding HTTP response codes. To keep things short: HTTP 200 (OK) always means action on API was executed and result is correct - responses are in JSON format.Error codes are not JSON formated and descriptive text of the error is attached in the message, example:
curl -I -H "Authorization: Bearer $token" -X POST https://api-mgmt.c0x0.com/v1/delete-domain/c0x0.com Domain do not exist or not en owner curl -I -H "Authorization: Bearer $token" -X POST https://api-mgmt.c0x0.com/v1/delete-domain/c0x0.com HTTP/1.1 400 Bad Request Server: nginx Date: Wed, 22 May 2019 13:58:44 GMT Content-Type: text/plain; charset=utf-8 Content-Length: 36 Connection: keep-alive X-Content-Type-Options: nosniff
General Access XPI API
XPI endpint is: https://api-mgmt.c0x0.com/xpi/See our browser extension source code for example usage in JavaScript.
Create Alias with Tag
Creates new alias and attaches tag/description to it. Tag is optional.
- parm1: FQDN of the service
- parm2: base64url description of the alias (this is optional parameter)
POST /xpi/create-alias-xpi/{parm1}/{parm2}
List Aliases with given scope
Return aliases used with given scope
- parm1: scope need to be FQDN
GET /xpi/list-aliases/{parm1}
[
{
"alias_id": "3548026197058423",
"alias": "zek6r5ekz4k5p5r@c0x0.com",
"dest": "john@doe.com",
"tag": "LLoyd Bank",
"status": "active",
"scope": "example.com"
},
{
"alias_id": "27691808423",
"alias": "rkw0335sef04y00@c0x0.com",
"dest": "john@doe.com",
"tag": "Facebook",
"status": "active",
"scope": "example.com"
},
{
"alias_id": "3307827691808423",
"alias": "cpfeup49chp4gye@c0x0.com",
"dest": "john@doe.com",
"tag": "eBay",
"status": "active",
"scope": "example.com"
},
]
Developer API
Endpint is: https://api-mgmt.c0x0.com/v1/Renew JWT token
Renew JWT token. Tokens expiry every 7 days. It is good practice to renew them when possible
GET /v1/renew-token
Create Alias
Create alias for given endpoint
- parm1: confirmed endpoint e-mail address
POST /v1/create-alias/{parm1}
{
"result": "ttq27dgc0tebn9b@c0x0.com"
}
Create Alias in Custom Domain
Create alias for given endpoint in hosted custom domain
-parm1: confirmed endpoint e-mail address
-parm2: valid and verified domain name
POST /v1/create-alias/{parm1}/{parm2}
{
"result": "ttq27dgc0tebn9b@example.com"
}
Create Alias in Custom Domain with Custom Alias
Create alias for given endpoint in hosted domain with custom alias (non-random)
-parm1: confirmed endpoint e-mail address
-parm2: valid and verified domain name
-parm3: valid alias that forms valid e-mail address
POST /v1/create-alias/{parm1}/{parm2}/{parm3}
{
"result": "johnny@example.com"
}
Set Tag on alias
Adds tag or name to previously created alias
-parm1: base64url encoded tag name
-parm2: alias
POST /v1/set-tag/{parm1}/{parm2}
{
"result": "ok"
}
Enable or Disable given alias
Enables or Disabled given alias on backend. Aliases in disabled state drop incomming mail at protocol level
-parm1: alias
-parm2: one of actions: [active|inactive]
POST /v1/set-alias/{parm1}/{parm2}
{
"result":"Alias deactivated"
}
List aliases
Lists aliases and their metadata as json payload
GET /v1/list-aliases
[
{
"alias_id": "3548026197058423",
"alias": "zek6r5ekz4k5p5r@c0x0.com",
"dest": "john@doe.com",
"tag": "LLoyd Bank",
"status": "active"
},
{
"alias_id": "27691808423",
"alias": "rkw0335sef04y00@c0x0.com",
"dest": "john@doe.com",
"tag": "Facebook",
"status": "active"
},
{
"alias_id": "3307827691808423",
"alias": "cpfeup49chp4gye@c0x0.com",
"dest": "john@doe.com",
"tag": "eBay",
"status": "active"
},
]
Delete Alias
This call delete alias. First you need to get AliasID from call describe-alias, see below
- parm1: alias id
POST /v1/delete-alias/{parm1}
{
"result":"Alias Deleted"
}
Describe Alias
Shows alias metadata
- parm1: alias
GET /v1/describe-alias/{parm1}
[
{
"alias_id": "98540593194375",
"tag_name": "name tag",
"destination": "john@doe.com"
}
]
Get Account Status
Shows account status
GET /v1/get-user-status
{
"result":"active"
}
Get User Subscription
Shows user current subscription level
GET /v1/get-user-subscription
{
"result":"4"
}
Update Endpoint
Updates endpoint e-mail address. Due to sensitivity of this call, it is disabled by default.
To enable it go to account settings. Endpoint first need to be confirmed, see below.
- parm1: alias
- parm1: valid and confirmed endpoint e-mail address
POST /v1/update-endpoint/{parm1}/{parm2}
{
"result":"ok"
}
Validate Endpoint
Add endpoint e-mail address to validation queue. Confirmation mail is sent to the address.
Confirmation code need to be then used below to verify ownership of the address
- parm1: e-mail address
POST /v1/validate-endpoint/{parm1}
{
"result":"Confirmation Code Sent"
}
Confirm Endpoint
Performs validation of the given endpoint e-mail address. Code first need to be generated by validate-endpoint call.
- parm1: e-mail address
- parm1: confirmation code
POST /v1/confirm-endpoint/{parm1}/{parm2}
{
"result":"Confirmed"
}
Delete Endpoint
Delete endpoint and all it's related aliases
- parm1: endpoint e-mail address
POST /v1/delete-endpoint/{parm1}
{
"result":"Deleted"
}
List Endpoints
Lists all available endpoints and their statuses
GET /v1/list-endpoints
[
{
"endpoint": "john@doe.com",
"status": "johnthesecond@doe.com"
},
{
"endpoint": "john@doe.com",
"status": "confirmed"
}
]
Add Domain
Add custom domain for aliases. Domain need to be confirmed. Call returns formated DNS RR in bind format.
- parm1: fqdn
POST /v1/add-domain/{parm1}
{
"result": "_c0-token.example.com. IN TXT a9em07jp6qb8"
}
Confirm Domain
Triggers backend check if domain is valid (checks for TXT record, see above)
- parm1: fqdn
POST /v1/confirm-domain/{parm1}
{
"result": "Domain Confirmed"
}
List Domains
List domains and their metadata
GET /v1/list-domains
[
{
"domain": "example2.com",
"status": "confirmed",
"v_code": "63wg0txe0y2k"
},
{
"domain": "example.com",
"status": "pending",
"v_code": "a9em07jp6qb8"
}
]
Delete Domain
Delete domain and all aliases related
- parm1: fqdn
POST /v1/delete-domain/{parm1}
{
"result": "Deleted"
}