CP4 API documentation version 1.0
https://api.cp4dev.be/v1/
This service handles all cp4 endpoints
- Media types: (string)
Available response types:
- json
- csv (available for GET requests)
- Headers: (string)
Authorization: Authorization hash (returned be /login endpoint)
- Non token endpoints: (string)
Enpoints which don't require authorization token:
- /login
- /resetting/send_email
- /resetting/{token}
- /downloadpdf/{id}/{contactId}/{hash}
- /domains/check
- Statuses: (string)
- to_create, creating, creating_failed
- ok
- to_import, importing, imported, importing_failed
- credited, processed, partially_processed, partial_payment, payment_processed
- to_transfer, transferring, transfer_failed
- accepted
- to_update, updating, update_failed
- opened, warning, critical, closed
- to_deactivate, deactivating, deactivation_failed, deactivated
- to_delete, deleting, deleting_failed, deleted
/login
Log in
post /login
Log in
Body
Media type: application/json
Type: object
Properties- username: required(string)
Login or email
- password: required(string)
Valid password:
- should be longer than 8 characters
- should be shorter than 30 characters
- should contain at least 1 capital letter and 1 number
- cannot contain spaces, : , " or '
Examples:
Using email:
{
"username": "testemail@testemail.com",
"password": "Test123password"
}
Using login:
{
"username": "testlogin",
"password": "Test123password"
}
HTTP status code 200
Response when a user was successfully logged in
Body
Media type: application/json
Type: object
Example:
{
"success": true,
"user": {
"id": 123,
"username": "testlogin",
"email": "testemail@testemail.com",
"firstName": "Test",
"lastName": "User",
"roles": [
"ROLE_SYSTEM",
"ROLE_DOMAIN",
"ROLE_MAIL",
"ROLE_APP"
],
"status": "ok",
"language": "nl",
"organisation": {
"id": 1,
"name": "Test Company",
"street": "Test-Street",
"houseNumber": "23",
"zip": "1000",
"city": "Test City"
},
"country": {
"id": "BE",
"name": "Belgium"
},
"fullname": "Test User"
},
"hash": "vO3isKQe80YnggT3s1Svh4QejJlg44zpNF7mRTf+0V8XEq5kHGBgJIui13RG11JbZ9upIbpaGDsy8IKKW6aYzaRg=="
}
HTTP status code 400
Bad request
HTTP status code 401
Bad credentials
HTTP status code 404
Response when a username is not found
/logout
/registerInvitation
Register invitation (deprecated)
post /registerInvitation
Register invitation (deprecated)
Body
Media type: application/json
Type: object
Properties- email: required(string)
Email (unique)
- organisationId: required(integer)
The unique identifier of an organisation
- inviationId: required(integer)
The unique identifier of a invitation
- password: required(string)
Valid password:
- should be longer than 8 characters
- should be shorter than 30 characters
- should contain at least 1 capital letter and 1 number
- cannot contain spaces, : , " or '
Example:
{
"email": "testemail@testemail.com",
"invitationId": 123,
"organisationId": 123,
"password": "Test123password"
}
HTTP status code 400
Bad request - validation failed
Register invitation - create a user and a first contact
post /registerInvitation/{token}
Register invitation - create a user and a first contact
URI Parameters
- token: required(string)
Body
Media type: application/json
Type: object
Properties- email: required(string)
Email (unique)
- organisationId: required(integer)
The unique identifier of an organisation
- inviationId: required(integer)
The unique identifier of a invitation
- password: required(string)
Valid password:
- should be longer than 8 characters
- should be shorter than 30 characters
- should contain at least 1 capital letter and 1 number
- cannot contain spaces, : , " or '
Example:
{
"email": "testemail@testemail.com",
"invitationId": 123,
"organisationId": 123,
"password": "Test123password"
}
HTTP status code 201
Response when a user and contact were successfully created
Body
Media type: application/json
Type: object
Example:
{
"user": {
"id": 123,
"username": "testemail@testemail.com",
"email": "testemail@testemail.com",
"firstName": "Test",
"lastName": "User",
"roles": [
"ROLE_SYSTEM",
"ROLE_APP",
"ROLE_DOMAIN",
"ROLE_MAIL"
],
"status": "ok",
"language": "en",
"organisation": {
"id": 123,
"name": "Test Company",
"street": "Test-Street",
"houseNumber": "23",
"zip": "1000",
"city": "Test City",
"reseller": null
},
"country": {
"id": "BE",
"name": "Belgium"
},
"fullname": "Test User",
"teams": [
{
"id": 123,
"name": "MyTeam",
"autoAddSshkey": false
}
]
}
}
HTTP status code 400
Bad request - validation failed
/resetting
Reset password request
post /resetting/send_email
Reset password request
Body
Media type: application/json
Type: object
Properties- username: required(string)
Login or email
Examples:
Using email:
{
"username": "testemail@testemail.com"
}
Using login:
{
"username": "testlogin"
}
Confirm reset password
post /resetting/{token}
Confirm reset password
URI Parameters
- token: required(string)
Body
Media type: application/json
Type: object
Properties- password: required(string)
Valid password:
- should be longer than 8 characters
- should be shorter than 30 characters
- should contain at least 1 capital letter and 1 number
- cannot contain spaces, : , " or '
Example:
{
"password": "Test123password"
}
HTTP status code 200
Response when a password was successfully reset
Body
Media type: application/json
Type: object
Example:
{
"user": {
"id": 123,
"username": "testemail@testemail.com",
"email": "testemail@testemail.com",
"firstName": "Test",
"lastName": "User",
"roles": [
"ROLE_SYSTEM",
"ROLE_APP",
"ROLE_DOMAIN",
"ROLE_MAIL"
],
"status": "ok",
"language": "en",
"organisation": {
"id": 123,
"name": "Test Company",
"street": "Test-Street",
"houseNumber": "23",
"zip": "1000",
"city": "Test City",
"reseller": null
},
"country": {
"id": "BE",
"name": "Belgium"
},
"fullname": "Test User",
"teams": [
{
"id": 123,
"name": "MyTeam",
"autoAddSshkey": false
}
]
}
}
HTTP status code 400
Bad request - resetting request is expired
HTTP status code 404
Response when a user is not found
/organisations
Create a new organisation
List of all available organisations
post /organisations
Create a new organisation
Body
Media type: application/json
Type: object
Properties- name: required(string)
Name
- taxNumber: required(string)
Tax number
- resellerOrganisation: (integer)
Reseller organisation id
- parentOrganisation: (string)
ParentOrganisation (default - level27) - admin only
- externalId: (string)
External id (admin only)
- street: (string)
Street
- houseNumber: (string)
House number
- zip: (string)
Zip
- city: (string)
City
- country: (string)
Country id
Examples:
1:
{
"name": "Test SubCompany",
"taxNumber": "EB123456",
"resellerOrganisation": null,
"parentOrganisation": "level27",
"externalId": 123,
"street": "Test123",
"houseNumber": 123,
"zip": 123,
"city": "Test City",
"country": "BE"
}
2:
{
"name": "Test SubCompany",
"taxNumber": "EB123456",
"resellerOrganisation": 123,
"street": "Test123",
"houseNumber": 123,
"zip": 123,
"city": "Test City",
"country": "BE"
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Examples:
without reseller:
{
"organisation": {
"id": 123,
"name": "Test Company",
"taxNumber": "EB123456",
"mustPayTax": true,
"street": null,
"houseNumber": null,
"zip": null,
"city": null,
"country": null,
"resellerOrganisation": null,
"users": [],
"remarksToPrintInvoice": null,
"updateEntitiesOnly": false
}
}
with reseller:
{
"organisation": {
"id": 123,
"name": "Test Company",
"taxNumber": "EB123456",
"mustPayTax": true,
"street": null,
"houseNumber": null,
"zip": null,
"city": null,
"country": null,
"resellerOrganisation": {
"id": 231,
"name": "Test Company 2",
"taxNumber": "BE123456"
},
"users": [],
"remarksToPrintInvoice": null,
"updateEntitiesOnly": true
}
}
HTTP status code 400
Validation of new organisation failed
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /organisations
List of all available organisations
Query Parameters
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- orderBy: (string)
- orderType: (string)
ASC or DESC
- filter: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"organisations": [
{
"id": 1,
"name": "Test Company 1",
"taxNumber": "BE123456",
"mustPayTax": true,
"street": "Test-Street",
"houseNumber": "23",
"zip": "123",
"city": "Test City",
"country": {
"id": "BE",
"name": "Belgium"
},
"resellerOrganisation": null,
"users": [
{
"id": 1,
"username": "test@email.be",
"email": "test@email.be",
"firstName": "Test",
"lastName": "User",
"roles": [
"ROLE_CUSTADMIN"
]
}
],
"remarksToPrintInvoice": null,
"updateEntitiesOnly": false
},
{
"id": 2,
"name": "Test Company 2",
"taxNumber": "BE654321",
"mustPayTax": true,
"street": "Test-Street",
"houseNumber": "24",
"zip": "123",
"city": "Test City",
"country": {
"id": "BE",
"name": "Belgium"
},
"resellerOrganisation": null,
"users": [
{
"id": 3,
"username": "user.test@test.be",
"email": "user.test@test.be",
"firstName": "Test",
"lastName": "UserTest",
"roles": [
"ROLE_DOMAIN",
"ROLE_SYSTEM"
]
}
],
"remarksToPrintInvoice": null,
"updateEntitiesOnly": false
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Update an organisation
Update an organisation's field
Delete a organisation
Get an organisation
put /organisations/{organisationId}
Update an organisation
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
Body
Media type: application/json
Type: object
Properties- name: required(string)
Name
- taxNumber: required(string)
Tax number
- resellerOrganisation: (integer)
Reseller organisation id
- street: (string)
Street
- houseNumber: (string)
House number
- zip: (string)
Zip
- city: (string)
City
- country: (string)
Country id
- resellerKickback: (integer)
Commission eg. 100 = 1% (admin only)
- paymentperiod: (one of 0, 30, 60, 90)
Payment period in days (admin only) (default: 30)
- commissionFactor: (integer)
Commission factor (admin only)
- documentInterval: (string)
Document interval (admin only) (default: 0)
- source1: (string)
Source1 (admin only)
- source2: (string)
Source2 (admin only)
- mustPayTax: (boolean)
The tax will be added to invoice price or not (admin only) (default: true)
- pricegroup: (string)
Pricegroup id (admin only) (default: default)
- remarksToPrintInvoice: (string)
Remarks to print on invoices
- updateEntitiesOnly: (boolean)
Users of sub organisations with updateEntitiesOnly = true can't create or delete entities (admin and reseller only) (default: false)
- preventDeactivation: (boolean)
Prevent deactivation (default: true) - admin only
- parentOrganisation: (string)
ParentOrganisation (default - level27) - admin only
- externalId: (string)
External id (admin only)
- pdfInvoice: (string)
PdfInvoice - send pdf invoices in attachments (admin only)
- invoiceDay: (object)
Invoice day (defaults - min: 1, max: 28)
Examples:
1:
{
"name": "Test SubCompany",
"taxNumber": "EB123456",
"resellerOrganisation": null,
"street": "Test123",
"houseNumber": 123,
"zip": 123,
"city": "Test City",
"country": "BE",
"remarksToPrintInvoice": null
}
2 (admin only):
{
"name": "Test SubCompany",
"taxNumber": "EB123456",
"resellerOrganisation": null,
"street": "Test123",
"houseNumber": 123,
"zip": 123,
"city": "Test City",
"country": "BE",
"paymentperiod": 30,
"commissionFactor": 100,
"documentInterval": 0,
"source1": null,
"source2": null,
"mustPayTax": false,
"pricegroup": "default",
"remarksToPrintInvoice": null,
"updateEntitiesOnly": true,
"parentOrganisation": "level27",
"externalId": 123,
"pdfInvoice": true
}
HTTP status code 204
Response when update of a organisation succeeded
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a organisation
HTTP status code 404
Response when organisation is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
patch /organisations/{organisationId}
Update an organisation's field
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
Body
Media type: application/json
Type: object
Properties- name: required(string)
Name
- taxNumber: required(string)
Tax number
- resellerOrganisation: (integer)
Reseller organisation id
- street: (string)
Street
- houseNumber: (string)
House number
- zip: (string)
Zip
- city: (string)
City
- country: (string)
Country id
- resellerKickback: (integer)
Commission eg. 100 = 1% (admin only)
- paymentperiod: (one of 0, 30, 60, 90)
Payment period in days (admin only) (default: 30)
- commissionFactor: (integer)
Commission factor (admin only)
- documentInterval: (string)
Document interval (admin only) (default: 0)
- source1: (string)
Source1 (admin only)
- source2: (string)
Source2 (admin only)
- mustPayTax: (boolean)
The tax will be added to invoice price or not (admin only) (default: true)
- pricegroup: (string)
Pricegroup id (admin only) (default: default)
- remarksToPrintInvoice: (string)
Remarks to print on invoices
- updateEntitiesOnly: (boolean)
Users of sub organisations with updateEntitiesOnly = true can't create or delete entities (admin and reseller only) (default: false)
- preventDeactivation: (boolean)
Prevent deactivation (default: true) - admin only
- parentOrganisation: (string)
ParentOrganisation (default - level27) - admin only
- externalId: (string)
External id (admin only)
- pdfInvoice: (string)
PdfInvoice - send pdf invoices in attachments (admin only)
- invoiceDay: (object)
Invoice day (defaults - min: 1, max: 28)
Examples:
1:
{
"name": "Test SubCompany",
"taxNumber": "EB123456",
"resellerOrganisation": null,
"street": "Test123",
"houseNumber": 123,
"zip": 123,
"city": "Test City",
"country": "BE",
"remarksToPrintInvoice": null
}
2 (admin only):
{
"name": "Test SubCompany",
"taxNumber": "EB123456",
"resellerOrganisation": null,
"street": "Test123",
"houseNumber": 123,
"zip": 123,
"city": "Test City",
"country": "BE",
"paymentperiod": 30,
"commissionFactor": 100,
"documentInterval": 0,
"source1": null,
"source2": null,
"mustPayTax": false,
"pricegroup": "default",
"remarksToPrintInvoice": null,
"updateEntitiesOnly": true,
"parentOrganisation": "level27",
"externalId": 123,
"pdfInvoice": true
}
HTTP status code 204
Response when update of a organisation succeeded
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a organisation
HTTP status code 404
Response when organisation is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
delete /organisations/{organisationId}
Delete a organisation
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
HTTP status code 204
Request successfully processed
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a organisation
HTTP status code 404
Response when organisation is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /organisations/{organisationId}
Get an organisation
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
HTTP status code 200
Response when an organisation is found
Body
Media type: application/json
Type: object
Example:
{
"organisation": {
"id": 123,
"name": "Test Company",
"taxNumber": "EB123456",
"mustPayTax": true,
"street": "Test-Street",
"houseNumber": "23",
"zip": "123",
"city": "Test City",
"country": {
"id": "BE",
"name": "Belgium"
},
"resellerOrganisation": null,
"users": [
{
"id": 3,
"username": "testuser",
"email": "user.test@test.be",
"firstName": "Test",
"lastName": "UserTest",
"roles": [
"ROLE_CUSTADMIN",
"ROLE_DOMAIN",
"ROLE_SYSTEM"
]
},
{
"id": 4,
"username": "testuser2",
"email": "user2.test@test.be",
"firstName": "Test2",
"lastName": "UserTest2",
"roles": [
"ROLE_MAIL"
]
}
],
"remarksToPrintInvoice": null,
"updateEntitiesOnly": false,
"preventDeactivation": false
}
}
HTTP status code 403
Response when a user does not have access to an organisation
HTTP status code 404
Response when an organisation is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Get list of suborganisations
get /organisations/{organisationId}/organisations
Get list of suborganisations
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
Query Parameters
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- orderBy: (string)
- orderType: (string)
ASC or DESC
- filter: (string)
HTTP status code 200
Response when an organisation is found
Body
Media type: application/json
Type: object
Example:
{
"subOrganisations": [
{
"id": 123,
"name": "Test SubCompany 1",
"street": "Test-Street",
"houseNumber": "23",
"zip": "123",
"city": "Test City",
"country": {
"id": "BE",
"name": "Belgium"
},
"users": [
{
"id": 1,
"username": "test@email.be",
"email": "test@email.be",
"firstName": "Test",
"lastName": "User",
"roles": [
"ROLE_CUSTADMIN"
]
}
]
},
{
"id": 321,
"name": "Test SubCompany 2",
"street": "Test-Street",
"houseNumber": "24",
"zip": "123",
"city": "Test City",
"country": {
"id": "BE",
"name": "Belgium"
},
"users": [
{
"id": 3,
"username": "user.test@test.be",
"email": "user.test@test.be",
"firstName": "Test",
"lastName": "UserTest",
"roles": [
"ROLE_DOMAIN",
"ROLE_SYSTEM"
]
}
]
}
]
}
HTTP status code 403
Response when a user does not have access to an organisation
HTTP status code 404
Response when an organisation is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Create a new invitation
List of all available invitations
post /organisations/{organisationId}/invitations
Create a new invitation
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
Body
Media type: application/json
Type: object
Properties- email: required(string)
Email (unique)
- firstName: required(string)
First name
- lastName: required(string)
Last name
- language: (one of nl, en, fr)
Language id (default: nl)
- autoRoles: (string)
User roles (csv roles)
Example:
{
"firstName": "Test",
"lastName": "TestInvitation",
"email": "test123@level27.be",
"language": "en",
"autoRoles": ""
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"invitation": {
"id": 3,
"firstName": "Test",
"lastName": "TestInvitation",
"email": "test123@level27.be",
"status": "ok",
"language": "en",
"organisation": {
"id": 1
},
"fullname": "Test TestInvitation"
}
}
HTTP status code 400
Validation of new invitation failed
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /organisations/{organisationId}/invitations
List of all available invitations
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
Query Parameters
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- orderBy: (string)
- orderType: (string)
ASC or DESC
- filter: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"invitations": [
{
"id": 1,
"firstName": "Test",
"lastName": "Test",
"email": "test@test.com",
"status": "ok",
"language": "en",
"fullname": "Test Test"
},
{
"id": 2,
"firstName": "TestFirstName",
"lastName": "TestLastName",
"email": "testemail@test.com",
"status": "ok",
"language": "nl",
"fullname": "TestFirstName TestLastName"
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Update a invitation
Delete a invitation
Get a invitation
put /organisations/{organisationId}/invitations/{invitationId}
Update a invitation
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- invitationId: required(string)
The unique identifier of a invitation
Body
Media type: application/json
Type: object
Properties- email: required(string)
Email (unique)
- firstName: required(string)
First name
- lastName: required(string)
Last name
- language: (one of nl, en, fr)
Language id (default: nl)
- autoRoles: (string)
User roles (csv roles)
Example:
{
"firstName": "Test",
"lastName": "TestInvitation",
"email": "test123@level27.be",
"language": "en",
"autoRoles": ""
}
HTTP status code 204
Response when update of a invitation succeeded
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a invitation
HTTP status code 404
Response when invitation is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
delete /organisations/{organisationId}/invitations/{invitationId}
Delete a invitation
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- invitationId: required(string)
The unique identifier of a invitation
HTTP status code 204
Request successfully processed
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a invitation
HTTP status code 404
Response when invitation is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /organisations/{organisationId}/invitations/{invitationId}
Get a invitation
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- invitationId: required(string)
The unique identifier of a invitation
HTTP status code 200
Response when invitation is found
Body
Media type: application/json
Type: object
Example:
{
"invitation": {
"id": 3,
"firstName": "Test",
"lastName": "TestInvitation",
"email": "test123@level27.be",
"status": "ok",
"language": "en",
"organisation": {
"id": 1
},
"fullname": "Test TestInvitation"
}
}
HTTP status code 403
Response when a user does not have access to a invitation
HTTP status code 404
Response when invitation is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Check if an invitation is still available
get /organisations/{organisationId}/invitations/{invitationId}/check
Check if an invitation is still available
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- invitationId: required(string)
The unique identifier of a invitation
Create cp3 user on cp4 (action only for admin)
List of all available users
post /organisations/{organisationId}/users
Create cp3 user on cp4 (action only for admin)
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
Body
Media type: application/json
Type: object
Properties- firstName: required(string)
First name
- lastName: required(string)
Last name
- username: required(string)
Login or email
- cp3Password: required(string)
Hashed password
- websiteOrderInfo: (string)
websiteOrderInfo
Examples:
1:
{
"firstName": "Test",
"lastName": "TestCp3User",
"username": "test123@test.com",
"cp3Password": "$2y$12$bsoehmtvl9kogkkwc7kk0ezVdR5ua73CfQwY7ZB6/DSx/u5ttP5u.n",
"websiteOrderInfo": null
}
2:
{
"firstName": "Test",
"lastName": "TestCp3User",
"username": "test123",
"cp3Password": "$2y$12$bsoehmtvl9kogkkwc7kk0ezVdR5ua73CfQwY7ZB6/DSx/u5ttP5u.n",
"websiteOrderInfo": null
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"user": {
"id": 123,
"username": "testemail@testemail.com",
"email": "testemail@testemail.com",
"firstName": "Test",
"lastName": "User",
"roles": [
"ROLE_SYSTEM",
"ROLE_APP",
"ROLE_DOMAIN",
"ROLE_MAIL"
],
"status": "ok",
"language": "en",
"organisation": {
"id": 123,
"name": "Test Company",
"street": "Test-Street",
"houseNumber": "23",
"zip": "1000",
"city": "Test City",
"reseller": null
},
"country": {
"id": "BE",
"name": "Belgium"
},
"fullname": "Test User",
"teams": [
{
"id": 123,
"name": "MyTeam",
"autoAddSshkey": false
}
]
}
}
HTTP status code 400
Validation of new user failed
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /organisations/{organisationId}/users
List of all available users
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
Query Parameters
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- orderBy: (string)
- orderType: (string)
ASC or DESC
- filter: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"users": [
{
"id": 1,
"username": "testlogin",
"email": "test@test.be",
"firstName": "Test",
"lastName": "User",
"roles": [
"ROLE_CUSTADMIN"
],
"status": "ok",
"fullname": "Test User"
},
{
"id": 2,
"username": "test",
"email": "user@test.be",
"firstName": "Test2",
"lastName": "Test2",
"roles": [
"ROLE_SYSTEM"
],
"status": "ok",
"fullname": "Test2 Test2"
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Update part of the user
Delete a user
Get a user
patch /organisations/{organisationId}/users/{userId}
Update part of the user
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- userId: required(string)
The unique identifier of a user
Body
Media type: application/json
Type: object
Properties- username: required(string)
Login or email
- firstName: required(string)
First name
- lastName: required(string)
Last name
- defaultRoles: (string)
User roles (csv roles)
- language: (one of nl, en, fr)
Language id (default: nl)
- websiteOrderInfo: (string)
websiteOrderInfo
Example:
{
"username": "test123@test.com",
"firstName": "Test",
"lastName": "TestUser",
"language": "nl",
"defaultRoles": "ROLE_CUSTADMIN,ROLE_FINANCE",
"websiteOrderInfo": null
}
HTTP status code 204
Response when update of a user succeeded
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a user
HTTP status code 404
Response when user is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
delete /organisations/{organisationId}/users/{userId}
Delete a user
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- userId: required(string)
The unique identifier of a user
get /organisations/{organisationId}/users/{userId}
Get a user
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- userId: required(string)
The unique identifier of a user
HTTP status code 200
Response when user is found
Body
Media type: application/json
Type: object
Example:
{
"user": {
"id": 123,
"username": "testemail@testemail.com",
"email": "testemail@testemail.com",
"firstName": "Test",
"lastName": "User",
"roles": [
"ROLE_SYSTEM",
"ROLE_APP",
"ROLE_DOMAIN",
"ROLE_MAIL"
],
"status": "ok",
"language": "en",
"organisation": {
"id": 123,
"name": "Test Company",
"street": "Test-Street",
"houseNumber": "23",
"zip": "1000",
"city": "Test City",
"reseller": null
},
"country": {
"id": "BE",
"name": "Belgium"
},
"fullname": "Test User",
"teams": [
{
"id": 123,
"name": "MyTeam",
"autoAddSshkey": false
}
]
}
}
HTTP status code 403
Response when a user does not have access to a user
HTTP status code 404
Response when user is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Change user password
post /organisations/{organisationId}/users/{userId}/changepassword
Change user password
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- userId: required(string)
The unique identifier of a user
Body
Media type: application/json
Type: object
Properties- oldPassword: required(string)
Current password
- password: required(string)
Valid password:
- should be longer than 8 characters
- should be shorter than 30 characters
- should contain at least 1 capital letter and 1 number
- cannot contain spaces, : , " or '
Example:
{
"oldPassword": "OldPassword123",
"password": "NewPassword123"
}
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"user": {
"id": 123,
"username": "testemail@testemail.com",
"email": "testemail@testemail.com",
"firstName": "Test",
"lastName": "User",
"roles": [
"ROLE_SYSTEM",
"ROLE_APP",
"ROLE_DOMAIN",
"ROLE_MAIL"
],
"status": "ok",
"language": "en",
"organisation": {
"id": 123,
"name": "Test Company",
"street": "Test-Street",
"houseNumber": "23",
"zip": "1000",
"city": "Test City",
"reseller": null
},
"country": {
"id": "BE",
"name": "Belgium"
},
"fullname": "Test User",
"teams": [
{
"id": 123,
"name": "MyTeam",
"autoAddSshkey": false
}
]
}
}
HTTP status code 400
Bad request - validation failed
HTTP status code 403
Response when a user does not have access to a user
HTTP status code 404
Response when a user is not found
Disable or enable a user
post /organisations/{organisationId}/users/{userId}/actions
Disable or enable a user
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- userId: required(string)
The unique identifier of a user
Body
Media type: application/json
Type: object
Properties- type: required(one of enable, disable)
Action type
Examples:
1:
{
"type": "enable"
}
2:
{
"type": "disable"
}
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"user": {
"id": 123,
"username": "testemail@testemail.com",
"email": "testemail@testemail.com",
"firstName": "Test",
"lastName": "User",
"roles": [
"ROLE_SYSTEM",
"ROLE_APP",
"ROLE_DOMAIN",
"ROLE_MAIL"
],
"status": "ok",
"language": "en",
"organisation": {
"id": 123,
"name": "Test Company",
"street": "Test-Street",
"houseNumber": "23",
"zip": "1000",
"city": "Test City",
"reseller": null
},
"country": {
"id": "BE",
"name": "Belgium"
},
"fullname": "Test User",
"teams": [
{
"id": 123,
"name": "MyTeam",
"autoAddSshkey": false
}
]
}
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a user
HTTP status code 404
Response when a user is not found
Create a new contact
List of all available contacts
post /organisations/{organisationId}/users/{userId}/contacts
Create a new contact
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- userId: required(string)
The unique identifier of a user
Body
Media type: application/json
Type: object
Properties- type: required(one of email, phone, slack)
Contact type (It can't be change afterwards)
- name: required(string)
Name (unique for the same type)
- preferences: (string)
Notification preferences (csv roles)
Examples:
1:
{
"type": "email",
"name": "test@testconatct.com",
"preferences": "Finance,App"
}
2:
{
"type": "phone",
"name": 32.111111111,
"preferences": "System,App"
}
3:
{
"type": "slack",
"name": "#testchannel",
"preferences": "Crm,Mail,Domain"
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"contact": {
"id": 123,
"type": "email",
"name": "test@test.be",
"preferences": [
{
"name": "System",
"value": true
},
{
"name": "Domain",
"value": true
},
{
"name": "App",
"value": true
},
{
"name": "Finance",
"value": true
},
{
"name": "Job",
"value": false
},
{
"name": "Crm",
"value": true
},
{
"name": "Mail",
"value": false
}
]
}
}
HTTP status code 400
Validation of new contact failed
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /organisations/{organisationId}/users/{userId}/contacts
List of all available contacts
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- userId: required(string)
The unique identifier of a user
Query Parameters
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- orderBy: (string)
- orderType: (string)
ASC or DESC
- filter: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"contacts": [
{
"id": 1,
"type": "email",
"name": "admin@level27.be",
"preferences": [
{
"name": "System",
"value": true
},
{
"name": "Domain",
"value": true
},
{
"name": "App",
"value": true
},
{
"name": "Finance",
"value": true
},
{
"name": "Job",
"value": false
},
{
"name": "Crm",
"value": true
},
{
"name": "Mail",
"value": false
}
]
},
{
"id": 2,
"type": "slack",
"name": "#testchannel",
"preferences": [
{
"name": "System",
"value": true
},
{
"name": "Domain",
"value": false
},
{
"name": "App",
"value": true
},
{
"name": "Finance",
"value": true
},
{
"name": "Job",
"value": false
},
{
"name": "Crm",
"value": true
},
{
"name": "Mail",
"value": true
}
]
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Update a contact
Delete a contact
Get a contact
put /organisations/{organisationId}/users/{userId}/contacts/{contactId}
Update a contact
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- userId: required(string)
The unique identifier of a user
- contactId: required(string)
The unique identifier of a contact
Body
Media type: application/json
Type: object
Properties- type: required(one of email, phone, slack)
Contact type (It can't be change afterwards)
- name: required(string)
Name (unique for the same type)
- preferences: (string)
Notification preferences (csv roles)
Examples:
1:
{
"type": "email",
"name": "test@testconatct.com",
"preferences": "Finance,App"
}
2:
{
"type": "phone",
"name": 32.111111111,
"preferences": "System,App"
}
3:
{
"type": "slack",
"name": "#testchannel",
"preferences": "Crm,Mail,Domain"
}
HTTP status code 204
Response when update of a contact succeeded
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a contact
HTTP status code 404
Response when contact is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
delete /organisations/{organisationId}/users/{userId}/contacts/{contactId}
Delete a contact
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- userId: required(string)
The unique identifier of a user
- contactId: required(string)
The unique identifier of a contact
HTTP status code 204
Request successfully processed
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a contact
HTTP status code 404
Response when contact is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /organisations/{organisationId}/users/{userId}/contacts/{contactId}
Get a contact
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- userId: required(string)
The unique identifier of a user
- contactId: required(string)
The unique identifier of a contact
HTTP status code 200
Response when contact is found
Body
Media type: application/json
Type: object
Example:
{
"contact": {
"id": 123,
"type": "email",
"name": "test@test.be",
"preferences": [
{
"name": "System",
"value": true
},
{
"name": "Domain",
"value": true
},
{
"name": "App",
"value": true
},
{
"name": "Finance",
"value": true
},
{
"name": "Job",
"value": false
},
{
"name": "Crm",
"value": true
},
{
"name": "Mail",
"value": false
}
]
}
}
HTTP status code 403
Response when a user does not have access to a contact
HTTP status code 404
Response when contact is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Create a new sshkey
List of all available sshkeys
post /organisations/{organisationId}/users/{userId}/sshkeys
Create a new sshkey
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- userId: required(string)
The unique identifier of a user
Body
Media type: application/json
Type: object
Properties- content: required(string)
Content (required Open ssh format, unique)
- description: required(string)
Description (autogenerated for POST request, required for PUT request)
Example:
{
"description": "My sshkey 1",
"content": "ssh-rsa AAAAB3NzaD3331yc2EAAAADAQABAAABAQC+BlfTestsehGmZLGvzBnEN2fAtlCdvGQ1G8TeststeststststaZa1iiSY8QbJhSY8nx64bgsmVAylkwcRVl2AT6aktupYMR+dEkNZci6pateststststsTbsyshDsenaaFmIaYZjbYxnpUVESySLVodMN3+ZHl+k3BLkjV6RsGmqrm52axuLwbwUM8KcbECy8dfISrhnolfKQRKWQVz15CKVoouk5aUO3lhdjAkgc6afCmKzTestTestETsststststzeJnOfuWav7qByFvzq//Lwx0AxonJK1Test5k+K3uixntDqlCrKe9KMqizZqPHYJ1sDrTzZfcg/iqnaNcuxqQ/9K8IhhEzVwVZ test@test-MacBook-Pro.local"
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"sshkey": {
"id": 1,
"description": "My sshkey 1",
"content": "ssh-rsa AAAAB3NzaD3331yc2EAAAADAQABAAABAQC+BlfTestsehGmZLGvzBnEN2fAtlCdvGQ1G8TeststeststststaZa1iiSY8QbJhSY8nx64bgsmVAylkwcRVl2AT6aktupYMR+dEkNZci6pateststststsTbsyshDsenaaFmIaYZjbYxnpUVESySLVodMN3+ZHl+k3BLkjV6RsGmqrm52axuLwbwUM8KcbECy8dfISrhnolfKQRKWQVz15CKVoouk5aUO3lhdjAkgc6afCmKzTestTestETsststststzeJnOfuWav7qByFvzq//Lwx0AxonJK1Test5k+K3uixntDqlCrKe9KMqizZqPHYJ1sDrTzZfcg/iqnaNcuxqQ/9K8IhhEzVwVZ test@test-MacBook-Pro.local",
"status": "ok",
"fingerprint": "85:b7:c8:37:71:7b:e6:57:53:59:04:a6:7c:ce:ce:7a",
"organisation": {
"id": 1,
"name": "level27"
}
}
}
HTTP status code 400
Validation of new sshkey failed
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /organisations/{organisationId}/users/{userId}/sshkeys
List of all available sshkeys
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- userId: required(string)
The unique identifier of a user
Query Parameters
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- orderBy: (string)
- orderType: (string)
ASC or DESC
- filter: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"sshkeys": [
{
"id": 1,
"description": " My sshkey 1",
"content": "ssh-rsa AAAAB3NzaD3331yc2EAAAADAQABAAABAQC+BlfTestsehGmZLGvzBnEN2fAtlCdvGQ1G8TeststeststststaZa1iiSY8QbJhSY8nx64bgsmVAylkwcRVl2AT6aktupYMR+dEkNZci6pateststststsTbsyshDsenaaFmIaYZjbYxnpUVESySLVodMN3+ZHl+k3BLkjV6RsGmqrm52axuLwbwUM8KcbECy8dfISrhnolfKQRKWQVz15CKVoouk5aUO3lhdjAkgc6afCmKzTestTestETsststststzeJnOfuWav7qByFvzq//Lwx0AxonJK1Test5k+K3uixntDqlCrKe9KMqizZqPHYJ1sDrTzZfcg/iqnaNcuxqQ/9K8IhhEzVwVZ test@test-MacBook-Pro.local",
"status": "ok",
"fingerprint": "85:b7:c8:37:71:7b:e6:57:53:59:04:a6:7c:ce:ce:7a",
"organisation": {
"id": 1,
"name": "level27"
}
},
{
"id": 2,
"description": " My sshkey 2",
"content": "ssh-rsa AAAAB3NzaD3331yc2EAAAADAQABAAABAQC+BlfTestsehGmZLGvzBnEN2fAtlCdvGQ1G8TeststeststststaZa1iiSY8QbJhSY8nx64bgsmVAylkwcRVl2AT6aktupYMR+dEkNZci6pateststststsTbsyshDsenaaFmIaYZjbYxnpUVESySLVodMN3+ZHl+k3BLkjV6RsGmqrm52axuLwbwUM8KcbECy8dfISrhnolfKQRKWQVz15CKVoouk5aUO3lhdjAkgc6afCmKzTestTestETsststststzeJnOfuWav7qByFvzq//Lwx0AxonJK1Test5k+K3uixntDqlCrKe9KMqizZqPHYJ1sDrTzZfcg/iqnaNcuxqQ/9K8I22222222 test2@test-MacBook-Pro.local",
"status": "ok",
"fingerprint": "85:b7:c8:37:71:7b:e6:57:53:59:04:a6:7c:ce:ce:2a",
"organisation": {
"id": 1,
"name": "level27"
}
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Update a sshkey
Delete a sshkey
Get a sshkey
put /organisations/{organisationId}/users/{userId}/sshkeys/{sshkeyId}
Update a sshkey
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- userId: required(string)
The unique identifier of a user
- sshkeyId: required(string)
The unique identifier of a sshkey
Body
Media type: application/json
Type: object
Properties- content: required(string)
Content (required Open ssh format, unique)
- description: required(string)
Description (autogenerated for POST request, required for PUT request)
Example:
{
"description": "My sshkey 1",
"content": "ssh-rsa AAAAB3NzaD3331yc2EAAAADAQABAAABAQC+BlfTestsehGmZLGvzBnEN2fAtlCdvGQ1G8TeststeststststaZa1iiSY8QbJhSY8nx64bgsmVAylkwcRVl2AT6aktupYMR+dEkNZci6pateststststsTbsyshDsenaaFmIaYZjbYxnpUVESySLVodMN3+ZHl+k3BLkjV6RsGmqrm52axuLwbwUM8KcbECy8dfISrhnolfKQRKWQVz15CKVoouk5aUO3lhdjAkgc6afCmKzTestTestETsststststzeJnOfuWav7qByFvzq//Lwx0AxonJK1Test5k+K3uixntDqlCrKe9KMqizZqPHYJ1sDrTzZfcg/iqnaNcuxqQ/9K8IhhEzVwVZ test@test-MacBook-Pro.local"
}
HTTP status code 204
Response when update of a sshkey succeeded
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a sshkey
HTTP status code 404
Response when sshkey is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
delete /organisations/{organisationId}/users/{userId}/sshkeys/{sshkeyId}
Delete a sshkey
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- userId: required(string)
The unique identifier of a user
- sshkeyId: required(string)
The unique identifier of a sshkey
get /organisations/{organisationId}/users/{userId}/sshkeys/{sshkeyId}
Get a sshkey
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- userId: required(string)
The unique identifier of a user
- sshkeyId: required(string)
The unique identifier of a sshkey
HTTP status code 200
Response when sshkey is found
Body
Media type: application/json
Type: object
Example:
{
"sshkey": {
"id": 1,
"description": "My sshkey 1",
"content": "ssh-rsa AAAAB3NzaD3331yc2EAAAADAQABAAABAQC+BlfTestsehGmZLGvzBnEN2fAtlCdvGQ1G8TeststeststststaZa1iiSY8QbJhSY8nx64bgsmVAylkwcRVl2AT6aktupYMR+dEkNZci6pateststststsTbsyshDsenaaFmIaYZjbYxnpUVESySLVodMN3+ZHl+k3BLkjV6RsGmqrm52axuLwbwUM8KcbECy8dfISrhnolfKQRKWQVz15CKVoouk5aUO3lhdjAkgc6afCmKzTestTestETsststststzeJnOfuWav7qByFvzq//Lwx0AxonJK1Test5k+K3uixntDqlCrKe9KMqizZqPHYJ1sDrTzZfcg/iqnaNcuxqQ/9K8IhhEzVwVZ test@test-MacBook-Pro.local",
"status": "ok",
"fingerprint": "85:b7:c8:37:71:7b:e6:57:53:59:04:a6:7c:ce:ce:7a",
"organisation": {
"id": 1,
"name": "level27"
}
}
}
HTTP status code 403
Response when a user does not have access to a sshkey
HTTP status code 404
Response when sshkey is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Create a new contact
List of all available contacts
post /organisations/{organisationId}/contacts
Create a new contact
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
Body
Media type: application/json
Type: object
Properties- type: required(one of email, phone, slack)
Contact type (It can't be change afterwards)
- name: required(string)
Name (unique for the same type)
- preferences: (string)
Notification preferences (csv roles)
Examples:
1:
{
"type": "email",
"name": "test@testconatct.com",
"preferences": "Finance,App"
}
2:
{
"type": "phone",
"name": 32.111111111,
"preferences": "System,App"
}
3:
{
"type": "slack",
"name": "#testchannel",
"preferences": "Crm,Mail,Domain"
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"contact": {
"id": 123,
"type": "email",
"name": "test@test.be",
"preferences": [
{
"name": "System",
"value": true
},
{
"name": "Domain",
"value": true
},
{
"name": "App",
"value": true
},
{
"name": "Finance",
"value": true
},
{
"name": "Job",
"value": false
},
{
"name": "Crm",
"value": true
},
{
"name": "Mail",
"value": false
}
]
}
}
HTTP status code 400
Validation of new contact failed
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /organisations/{organisationId}/contacts
List of all available contacts
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
Query Parameters
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- orderBy: (string)
- orderType: (string)
ASC or DESC
- filter: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"contacts": [
{
"id": 1,
"type": "email",
"name": "admin@level27.be",
"preferences": [
{
"name": "System",
"value": true
},
{
"name": "Domain",
"value": true
},
{
"name": "App",
"value": true
},
{
"name": "Finance",
"value": true
},
{
"name": "Job",
"value": false
},
{
"name": "Crm",
"value": true
},
{
"name": "Mail",
"value": false
}
]
},
{
"id": 2,
"type": "slack",
"name": "#testchannel",
"preferences": [
{
"name": "System",
"value": true
},
{
"name": "Domain",
"value": false
},
{
"name": "App",
"value": true
},
{
"name": "Finance",
"value": true
},
{
"name": "Job",
"value": false
},
{
"name": "Crm",
"value": true
},
{
"name": "Mail",
"value": true
}
]
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Update a contact
Delete a contact
Get a contact
put /organisations/{organisationId}/contacts/{contactId}
Update a contact
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- contactId: required(string)
The unique identifier of a contact
Body
Media type: application/json
Type: object
Properties- type: required(one of email, phone, slack)
Contact type (It can't be change afterwards)
- name: required(string)
Name (unique for the same type)
- preferences: (string)
Notification preferences (csv roles)
Examples:
1:
{
"type": "email",
"name": "test@testconatct.com",
"preferences": "Finance,App"
}
2:
{
"type": "phone",
"name": 32.111111111,
"preferences": "System,App"
}
3:
{
"type": "slack",
"name": "#testchannel",
"preferences": "Crm,Mail,Domain"
}
HTTP status code 204
Response when update of a contact succeeded
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a contact
HTTP status code 404
Response when contact is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
delete /organisations/{organisationId}/contacts/{contactId}
Delete a contact
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- contactId: required(string)
The unique identifier of a contact
HTTP status code 204
Request successfully processed
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a contact
HTTP status code 404
Response when contact is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /organisations/{organisationId}/contacts/{contactId}
Get a contact
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- contactId: required(string)
The unique identifier of a contact
HTTP status code 200
Response when contact is found
Body
Media type: application/json
Type: object
Example:
{
"contact": {
"id": 123,
"type": "email",
"name": "test@test.be",
"preferences": [
{
"name": "System",
"value": true
},
{
"name": "Domain",
"value": true
},
{
"name": "App",
"value": true
},
{
"name": "Finance",
"value": true
},
{
"name": "Job",
"value": false
},
{
"name": "Crm",
"value": true
},
{
"name": "Mail",
"value": false
}
]
}
}
HTTP status code 403
Response when a user does not have access to a contact
HTTP status code 404
Response when contact is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Create a new user and their first contact (admin only)
post /organisations/{organisationId}/userandcontact
Create a new user and their first contact (admin only)
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
Body
Media type: application/json
Type: object
Properties- username: required(string)
Login or email
- firstName: required(string)
First name
- lastName: required(string)
Last name
- password: required(string)
Password
- defaultRoles: (string)
User roles (csv roles)
- language: (one of nl, en, fr)
Language id (default: nl)
Example:
{
"username": "test@test.be",
"firstName": "Test1",
"lastName": "User",
"password": "bla",
"defaultRoles": "ROLE_CUSTADMIN,ROLE_SYSTEM,",
"language": "en"
}
HTTP status code 201
Response when a request was successfully processed
Body
Media type: application/json
Type: object
Example:
{
"user": {
"id": 123,
"username": "testemail@testemail.com",
"email": "testemail@testemail.com",
"firstName": "Test",
"lastName": "User",
"roles": [
"ROLE_SYSTEM",
"ROLE_APP",
"ROLE_DOMAIN",
"ROLE_MAIL"
],
"status": "ok",
"language": "en",
"organisation": {
"id": 123,
"name": "Test Company",
"street": "Test-Street",
"houseNumber": "23",
"zip": "1000",
"city": "Test City",
"reseller": null
},
"country": {
"id": "BE",
"name": "Belgium"
},
"fullname": "Test User",
"teams": [
{
"id": 123,
"name": "MyTeam",
"autoAddSshkey": false
}
]
}
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to an organisation
HTTP status code 404
Response when a organisation is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Update a cp3 user
patch /organisations/{organisationId}/cp3/users/{userId}
Update a cp3 user
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- userId: required(string)
Body
Media type: application/json
Type: object
Properties- firstName: required(string)
First name
- lastName: required(string)
Last name
- username: required(string)
Login or email
- cp3Password: required(string)
Hashed password
- websiteOrderInfo: (string)
websiteOrderInfo
Examples:
1:
{
"firstName": "Test",
"lastName": "TestCp3User",
"username": "test123@test.com",
"cp3Password": "$2y$12$bsoehmtvl9kogkkwc7kk0ezVdR5ua73CfQwY7ZB6/DSx/u5ttP5u.n",
"websiteOrderInfo": null
}
2:
{
"firstName": "Test",
"lastName": "TestCp3User",
"username": "test123",
"cp3Password": "$2y$12$bsoehmtvl9kogkkwc7kk0ezVdR5ua73CfQwY7ZB6/DSx/u5ttP5u.n",
"websiteOrderInfo": null
}
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"user": {
"id": 123,
"username": "testemail@testemail.com",
"email": "testemail@testemail.com",
"firstName": "Test",
"lastName": "User",
"roles": [
"ROLE_SYSTEM",
"ROLE_APP",
"ROLE_DOMAIN",
"ROLE_MAIL"
],
"status": "ok",
"language": "en",
"organisation": {
"id": 123,
"name": "Test Company",
"street": "Test-Street",
"houseNumber": "23",
"zip": "1000",
"city": "Test City",
"reseller": null
},
"country": {
"id": "BE",
"name": "Belgium"
},
"fullname": "Test User",
"teams": [
{
"id": 123,
"name": "MyTeam",
"autoAddSshkey": false
}
]
}
}
HTTP status code 400
Bad request
HTTP status code 404
Response when a user is not found
Add access to an organisation
post /organisations/{organisationId}/acls
Add access to an organisation
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
Body
Media type: application/json
Type: object
Properties- organisation: required(integer)
The unique identifier of an organisation
Example:
{
"organisation": 123
}
HTTP status code 201
Response when access to an organisation was successfully added
Body
Media type: application/json
Type: object
Example:
{
"acl": {
"id": 654,
"object": "Level27\\CrmBundle\\Entity\\Organisation",
"objectId": 123,
"permissions": null,
"extra": null,
"type": "manual",
"organisation": {
"id": 321,
"name": "test1"
}
}
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to an organisation
HTTP status code 404
Response when a organisation is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Remove access to an organisation
delete /organisations/{organisationId}/acls/{organisationId}
Remove access to an organisation
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- organisationId: required(string)
HTTP status code 204
Response when access to an organisation was successfully removed
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to an organisation
HTTP status code 404
Response when a organisation is not found
HTTP status code 500
Response when a user does not have a proper role to access a control
Get all entities for organisation which user has access for
get /organisations/{organisationId}/entities
Get all entities for organisation which user has access for
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"total": {
"apps": 3,
"domains": 2,
"mailgroups": 1,
"systems": 3
},
"domains": [
{
"id": 1,
"fullname": "test1.be",
"organisationId": 17,
"organisationName": "test1"
},
{
"id": 2,
"fullname": "test1.nl",
"organisationId": 17,
"organisationName": "test1"
}
],
"systems": [
{
"id": 1,
"name": "dns1test",
"organisationId": 17,
"organisationName": "test1"
},
{
"id": 2,
"name": "dns1test",
"organisationId": 17,
"organisationName": "test1"
},
{
"id": 3,
"name": "mail1test",
"organisationId": 17,
"organisationName": "test1"
}
],
"mailgroups": [
{
"id": 3,
"name": "myMailgroup",
"organisationId": 17,
"organisationName": "test1",
"domains": [
{
"id": 6326,
"name": "test2344test",
"mailPrimary": true,
"domaintype": {
"id": 364,
"extension": "be"
}
}
]
}
],
"apps": [
{
"id": 1,
"name": "App1",
"organisationId": 17,
"organisationName": "test1"
},
{
"id": 2,
"name": "AppTest",
"organisationId": 17,
"organisationName": "test1"
},
{
"id": 4,
"name": "Test1App",
"organisationId": 17,
"organisationName": "test1"
}
]
}
Get a lit of all entities (csv)
Get all organisation notifications
Send a notification for an organisation (currently no available organisation notifications exist)
get /organisations/{organisationId}/notifications
Get all organisation notifications
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
Query Parameters
- orderBy: (string)
- orderType: (string)
ASC or DESC
- type: (string)
- limit: (integer - default: 5)
- offset: (integer - default: 0)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"notifications": [
{
"id": 30,
"entityIndex": "Level27\\CrmBundle\\Entity\\Invitation_3",
"entityName": "invitation",
"dtStamp": "1517992497",
"notificationGroup": "Crm",
"type": "new",
"entityClass": "Level27\\CrmBundle\\Entity\\Invitation",
"entityId": 3,
"rootEntityClass": "Level27\\CrmBundle\\Entity\\Organisation",
"rootEntityId": 123,
"status": 10,
"statusDisplay": "created",
"statusCategory": "grey",
"sendMode": 2,
"priority": 250,
"subject": null,
"params": {
"handler": "level27_crm.invitation.handler"
},
"userId": 2,
"contacts": [],
"extraRecipients": [
{
"id": 1,
"dtStamp": "1517992497",
"fullName": "Test TestInvitation",
"language": "en",
"status": 10,
"type": "email",
"value": "test123@test.com",
"hash": null
}
],
"entity": {
"id": 3,
"firstName": "Test",
"lastName": "TestInvitation",
"email": "test123@test.com",
"status": "ok",
"statusCategory": "green",
"language": "en",
"organisation": {
"id": 123
},
"fullname": "Test TestInvitation"
},
"user": {
"id": 2,
"username": "test",
"email": "user@test.be",
"firstName": "Test2",
"lastName": "Test2",
"roles": [
"ROLE_CUSTADMIN",
"ROLE_FINANCE"
],
"status": "ok",
"statusCategory": "green",
"language": "nl",
"organisation": {
"id": 123,
"name": "Test Company",
"street": "Test-Street",
"houseNumber": "23",
"zip": "123",
"city": "Test City"
},
"country": {
"id": "BE",
"name": "Belgium"
},
"fullname": "Test2 Test2"
}
}
]
}
HTTP status code 400
Bad request
HTTP status code 500
Response when a user does not have a proper role to access a controller
post /organisations/{organisationId}/notifications
Send a notification for an organisation (currently no available organisation notifications exist)
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
Body
Media type: application/json
Type: object
Properties- type: required(string)
Notification type
- group: required(one of App, Crm, Domain, Finance, Mail, System)
Notification group
- params: (object)
Additional parameters (json)
Example:
{
"type": "loginsuccess",
"group": "Crm"
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: notificationOrganisation
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to an organisation
HTTP status code 500
Response when a user does not have a proper role to access a controller
Get crm notifications for an organisation
get /organisations/{organisationId}/notifications/crm
Get crm notifications for an organisation
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
Query Parameters
- orderBy: (string)
- orderType: (string)
ASC or DESC
- type: (string)
- limit: (integer - default: 5)
- offset: (integer - default: 0)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"notifications": [
{
"id": 30,
"entityIndex": "Level27\\CrmBundle\\Entity\\Invitation_3",
"entityName": "invitation",
"dtStamp": "1517992497",
"notificationGroup": "Crm",
"type": "new",
"entityClass": "Level27\\CrmBundle\\Entity\\Invitation",
"entityId": 3,
"rootEntityClass": "Level27\\CrmBundle\\Entity\\Organisation",
"rootEntityId": 123,
"status": 10,
"statusDisplay": "created",
"statusCategory": "grey",
"sendMode": 2,
"priority": 250,
"subject": null,
"params": {
"handler": "level27_crm.invitation.handler"
},
"userId": 2,
"contacts": [],
"extraRecipients": [
{
"id": 1,
"dtStamp": "1517992497",
"fullName": "Test TestInvitation",
"language": "en",
"status": 10,
"type": "email",
"value": "test123@test.com",
"hash": null
}
],
"entity": {
"id": 3,
"firstName": "Test",
"lastName": "TestInvitation",
"email": "test123@test.com",
"status": "ok",
"statusCategory": "green",
"language": "en",
"organisation": {
"id": 123
},
"fullname": "Test TestInvitation"
},
"user": {
"id": 2,
"username": "test",
"email": "user@test.be",
"firstName": "Test2",
"lastName": "Test2",
"roles": [
"ROLE_CUSTADMIN",
"ROLE_FINANCE"
],
"status": "ok",
"statusCategory": "green",
"language": "nl",
"organisation": {
"id": 123,
"name": "Test Company",
"street": "Test-Street",
"houseNumber": "23",
"zip": "123",
"city": "Test City"
},
"country": {
"id": "BE",
"name": "Belgium"
},
"fullname": "Test2 Test2"
}
}
]
}
HTTP status code 400
Bad request
HTTP status code 500
Response when a user does not have a proper role to access a controller
Create a new sshkey
List of all available sshkeys
post /organisations/{organisationId}/sshkeys
Create a new sshkey
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
Body
Media type: application/json
Type: object
Properties- content: required(string)
Content (required Open ssh format, unique)
- description: required(string)
Description (autogenerated for POST request, required for PUT request)
Example:
{
"description": "My sshkey 1",
"content": "ssh-rsa AAAAB3NzaD3331yc2EAAAADAQABAAABAQC+BlfTestsehGmZLGvzBnEN2fAtlCdvGQ1G8TeststeststststaZa1iiSY8QbJhSY8nx64bgsmVAylkwcRVl2AT6aktupYMR+dEkNZci6pateststststsTbsyshDsenaaFmIaYZjbYxnpUVESySLVodMN3+ZHl+k3BLkjV6RsGmqrm52axuLwbwUM8KcbECy8dfISrhnolfKQRKWQVz15CKVoouk5aUO3lhdjAkgc6afCmKzTestTestETsststststzeJnOfuWav7qByFvzq//Lwx0AxonJK1Test5k+K3uixntDqlCrKe9KMqizZqPHYJ1sDrTzZfcg/iqnaNcuxqQ/9K8IhhEzVwVZ test@test-MacBook-Pro.local"
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"sshkey": {
"id": 1,
"description": "My sshkey 1",
"content": "ssh-rsa AAAAB3NzaD3331yc2EAAAADAQABAAABAQC+BlfTestsehGmZLGvzBnEN2fAtlCdvGQ1G8TeststeststststaZa1iiSY8QbJhSY8nx64bgsmVAylkwcRVl2AT6aktupYMR+dEkNZci6pateststststsTbsyshDsenaaFmIaYZjbYxnpUVESySLVodMN3+ZHl+k3BLkjV6RsGmqrm52axuLwbwUM8KcbECy8dfISrhnolfKQRKWQVz15CKVoouk5aUO3lhdjAkgc6afCmKzTestTestETsststststzeJnOfuWav7qByFvzq//Lwx0AxonJK1Test5k+K3uixntDqlCrKe9KMqizZqPHYJ1sDrTzZfcg/iqnaNcuxqQ/9K8IhhEzVwVZ test@test-MacBook-Pro.local",
"status": "ok",
"fingerprint": "85:b7:c8:37:71:7b:e6:57:53:59:04:a6:7c:ce:ce:7a",
"organisation": {
"id": 1,
"name": "level27"
}
}
}
HTTP status code 400
Validation of new sshkey failed
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /organisations/{organisationId}/sshkeys
List of all available sshkeys
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
Query Parameters
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- orderBy: (string)
- orderType: (string)
ASC or DESC
- filter: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"sshkeys": [
{
"id": 1,
"description": " My sshkey 1",
"content": "ssh-rsa AAAAB3NzaD3331yc2EAAAADAQABAAABAQC+BlfTestsehGmZLGvzBnEN2fAtlCdvGQ1G8TeststeststststaZa1iiSY8QbJhSY8nx64bgsmVAylkwcRVl2AT6aktupYMR+dEkNZci6pateststststsTbsyshDsenaaFmIaYZjbYxnpUVESySLVodMN3+ZHl+k3BLkjV6RsGmqrm52axuLwbwUM8KcbECy8dfISrhnolfKQRKWQVz15CKVoouk5aUO3lhdjAkgc6afCmKzTestTestETsststststzeJnOfuWav7qByFvzq//Lwx0AxonJK1Test5k+K3uixntDqlCrKe9KMqizZqPHYJ1sDrTzZfcg/iqnaNcuxqQ/9K8IhhEzVwVZ test@test-MacBook-Pro.local",
"status": "ok",
"fingerprint": "85:b7:c8:37:71:7b:e6:57:53:59:04:a6:7c:ce:ce:7a",
"organisation": {
"id": 1,
"name": "level27"
}
},
{
"id": 2,
"description": " My sshkey 2",
"content": "ssh-rsa AAAAB3NzaD3331yc2EAAAADAQABAAABAQC+BlfTestsehGmZLGvzBnEN2fAtlCdvGQ1G8TeststeststststaZa1iiSY8QbJhSY8nx64bgsmVAylkwcRVl2AT6aktupYMR+dEkNZci6pateststststsTbsyshDsenaaFmIaYZjbYxnpUVESySLVodMN3+ZHl+k3BLkjV6RsGmqrm52axuLwbwUM8KcbECy8dfISrhnolfKQRKWQVz15CKVoouk5aUO3lhdjAkgc6afCmKzTestTestETsststststzeJnOfuWav7qByFvzq//Lwx0AxonJK1Test5k+K3uixntDqlCrKe9KMqizZqPHYJ1sDrTzZfcg/iqnaNcuxqQ/9K8I22222222 test2@test-MacBook-Pro.local",
"status": "ok",
"fingerprint": "85:b7:c8:37:71:7b:e6:57:53:59:04:a6:7c:ce:ce:2a",
"organisation": {
"id": 1,
"name": "level27"
}
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Update a sshkey
Delete a sshkey
Get a sshkey
put /organisations/{organisationId}/sshkeys/{sshkeyId}
Update a sshkey
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- sshkeyId: required(string)
The unique identifier of a sshkey
Body
Media type: application/json
Type: object
Properties- content: required(string)
Content (required Open ssh format, unique)
- description: required(string)
Description (autogenerated for POST request, required for PUT request)
Example:
{
"description": "My sshkey 1",
"content": "ssh-rsa AAAAB3NzaD3331yc2EAAAADAQABAAABAQC+BlfTestsehGmZLGvzBnEN2fAtlCdvGQ1G8TeststeststststaZa1iiSY8QbJhSY8nx64bgsmVAylkwcRVl2AT6aktupYMR+dEkNZci6pateststststsTbsyshDsenaaFmIaYZjbYxnpUVESySLVodMN3+ZHl+k3BLkjV6RsGmqrm52axuLwbwUM8KcbECy8dfISrhnolfKQRKWQVz15CKVoouk5aUO3lhdjAkgc6afCmKzTestTestETsststststzeJnOfuWav7qByFvzq//Lwx0AxonJK1Test5k+K3uixntDqlCrKe9KMqizZqPHYJ1sDrTzZfcg/iqnaNcuxqQ/9K8IhhEzVwVZ test@test-MacBook-Pro.local"
}
HTTP status code 204
Response when update of a sshkey succeeded
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a sshkey
HTTP status code 404
Response when sshkey is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
delete /organisations/{organisationId}/sshkeys/{sshkeyId}
Delete a sshkey
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- sshkeyId: required(string)
The unique identifier of a sshkey
get /organisations/{organisationId}/sshkeys/{sshkeyId}
Get a sshkey
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- sshkeyId: required(string)
The unique identifier of a sshkey
HTTP status code 200
Response when sshkey is found
Body
Media type: application/json
Type: object
Example:
{
"sshkey": {
"id": 1,
"description": "My sshkey 1",
"content": "ssh-rsa AAAAB3NzaD3331yc2EAAAADAQABAAABAQC+BlfTestsehGmZLGvzBnEN2fAtlCdvGQ1G8TeststeststststaZa1iiSY8QbJhSY8nx64bgsmVAylkwcRVl2AT6aktupYMR+dEkNZci6pateststststsTbsyshDsenaaFmIaYZjbYxnpUVESySLVodMN3+ZHl+k3BLkjV6RsGmqrm52axuLwbwUM8KcbECy8dfISrhnolfKQRKWQVz15CKVoouk5aUO3lhdjAkgc6afCmKzTestTestETsststststzeJnOfuWav7qByFvzq//Lwx0AxonJK1Test5k+K3uixntDqlCrKe9KMqizZqPHYJ1sDrTzZfcg/iqnaNcuxqQ/9K8IhhEzVwVZ test@test-MacBook-Pro.local",
"status": "ok",
"fingerprint": "85:b7:c8:37:71:7b:e6:57:53:59:04:a6:7c:ce:ce:7a",
"organisation": {
"id": 1,
"name": "level27"
}
}
}
HTTP status code 403
Response when a user does not have access to a sshkey
HTTP status code 404
Response when sshkey is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Get all organisation's sshkeys (user and deploy sshkeys) (admin only)
get /organisations/{organisationId}/all/sshkeys
Get all organisation's sshkeys (user and deploy sshkeys) (admin only)
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"sshkeys": [
{
"id": 1,
"description": " My sshkey 1",
"content": "ssh-rsa AAAAB3NzaD3331yc2EAAAADAQABAAABAQC+BlfTestsehGmZLGvzBnEN2fAtlCdvGQ1G8TeststeststststaZa1iiSY8QbJhSY8nx64bgsmVAylkwcRVl2AT6aktupYMR+dEkNZci6pateststststsTbsyshDsenaaFmIaYZjbYxnpUVESySLVodMN3+ZHl+k3BLkjV6RsGmqrm52axuLwbwUM8KcbECy8dfISrhnolfKQRKWQVz15CKVoouk5aUO3lhdjAkgc6afCmKzTestTestETsststststzeJnOfuWav7qByFvzq//Lwx0AxonJK1Test5k+K3uixntDqlCrKe9KMqizZqPHYJ1sDrTzZfcg/iqnaNcuxqQ/9K8IhhEzVwVZ test@test-MacBook-Pro.local",
"status": "ok",
"fingerprint": "85:b7:c8:37:71:7b:e6:57:53:59:04:a6:7c:ce:ce:7a",
"organisation": {
"id": 1,
"name": "level27"
}
},
{
"id": 2,
"description": " My sshkey 2",
"content": "ssh-rsa AAAAB3NzaD3331yc2EAAAADAQABAAABAQC+BlfTestsehGmZLGvzBnEN2fAtlCdvGQ1G8TeststeststststaZa1iiSY8QbJhSY8nx64bgsmVAylkwcRVl2AT6aktupYMR+dEkNZci6pateststststsTbsyshDsenaaFmIaYZjbYxnpUVESySLVodMN3+ZHl+k3BLkjV6RsGmqrm52axuLwbwUM8KcbECy8dfISrhnolfKQRKWQVz15CKVoouk5aUO3lhdjAkgc6afCmKzTestTestETsststststzeJnOfuWav7qByFvzq//Lwx0AxonJK1Test5k+K3uixntDqlCrKe9KMqizZqPHYJ1sDrTzZfcg/iqnaNcuxqQ/9K8I22222222 test2@test-MacBook-Pro.local",
"status": "ok",
"fingerprint": "85:b7:c8:37:71:7b:e6:57:53:59:04:a6:7c:ce:ce:2a",
"organisation": {
"id": 1,
"name": "level27"
}
}
]
}
HTTP status code 403
Response when a user does not have access to a organisation
HTTP status code 500
Response when a user does not have a proper role to access a controller
Create a new team
Get list of all available teams
post /organisations/{organisationId}/teams
Create a new team
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
Body
Media type: application/json
Type: object
Properties- name: required(string)
Name
- organisation: required(integer)
The unique identifier of an organisation
- adminOnly: (boolean)
Admin only field (default: false)
Example:
{
"name": "myTeam",
"adminOnly": false
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"team": {
"id": 2,
"name": "myTeam2",
"adminOnly": false,
"users": [
{
"id": 2705,
"username": "test@test234.be",
"firstName": "Test",
"lastName": "User",
"roles": [
"ROLE_SYSTEM",
"ROLE_APP",
"ROLE_DOMAIN",
"ROLE_MAIL"
],
"status": "ok",
"teamStatus": "ok",
"userHasTeamId": 15
}
],
"entities": [
{
"objectId": 491,
"object": "Level27\\AppBundle\\Entity\\App"
},
{
"objectId": 491,
"object": "Level27\\SystemBundle\\Entity\\System"
},
{
"objectId": 492,
"object": "Level27\\DomainBundle\\Entity\\Domain"
},
{
"objectId": 491,
"object": "Level27\\MailBundle\\Entity\\Mailgroup"
}
],
"teamEntities": {
"apps": [
{
"id": 491,
"name": "testApp"
}
],
"domains": [
{
"id": 492,
"fullname": "testdomain.be"
}
],
"mailgroups": [
{
"id": 491,
"name": "testMailgroup",
"domains": [
{
"id": 6326,
"name": "test2344test",
"mailPrimary": true,
"domaintype": {
"id": 364,
"extension": "be"
}
}
]
}
],
"systems": [
{
"id": 491,
"name": "testSystem"
}
]
}
}
}
HTTP status code 400
Validation of new team failed
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /organisations/{organisationId}/teams
Get list of all available teams
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
Query Parameters
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- orderBy: (string)
- orderType: (string)
ASC or DESC
- filter: (string)
- showAdminOnlyTeams: (one of false, false - default: 0)
admin only
HTTP status code 200
Response when teams are found
Body
Media type: application/json
Type: object
Example:
{
"teams": [
{
"id": 1,
"name": "myTeam1",
"adminOnly": false,
"users": [
{
"id": 2705,
"username": "test@test234.be",
"firstName": "Test",
"lastName": "User",
"roles": [
"ROLE_SYSTEM",
"ROLE_APP",
"ROLE_DOMAIN",
"ROLE_MAIL"
],
"status": "ok",
"teamStatus": "ok",
"userHasTeamId": 15
}
],
"entities": [
{
"objectId": 491,
"object": "Level27\\SystemBundle\\Entity\\System"
},
{
"objectId": 492,
"object": "Level27\\DomainBundle\\Entity\\Domain"
}
]
},
{
"id": 2,
"name": "myTeam2",
"adminOnly": false,
"users": [],
"entities": []
}
]
}
HTTP status code 404
Response when an organisation is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Update a team
Delete a team
Get a team
put /organisations/{organisationId}/teams/{teamId}
Update a team
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- teamId: required(string)
The unique identifier of a team
Body
Media type: application/json
Type: object
Properties- name: required(string)
Name
- organisation: required(integer)
The unique identifier of an organisation
- adminOnly: (boolean)
Admin only field (default: false)
Example:
{
"name": "myTeam",
"adminOnly": false
}
HTTP status code 204
Response when update of a team succeeded
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a team
HTTP status code 404
Response when team is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
delete /organisations/{organisationId}/teams/{teamId}
Delete a team
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- teamId: required(string)
The unique identifier of a team
get /organisations/{organisationId}/teams/{teamId}
Get a team
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- teamId: required(string)
The unique identifier of a team
HTTP status code 200
Response when team is found
Body
Media type: application/json
Type: object
Example:
{
"team": {
"id": 2,
"name": "myTeam2",
"adminOnly": false,
"users": [
{
"id": 2705,
"username": "test@test234.be",
"firstName": "Test",
"lastName": "User",
"roles": [
"ROLE_SYSTEM",
"ROLE_APP",
"ROLE_DOMAIN",
"ROLE_MAIL"
],
"status": "ok",
"teamStatus": "ok",
"userHasTeamId": 15
}
],
"entities": [
{
"objectId": 491,
"object": "Level27\\AppBundle\\Entity\\App"
},
{
"objectId": 491,
"object": "Level27\\SystemBundle\\Entity\\System"
},
{
"objectId": 492,
"object": "Level27\\DomainBundle\\Entity\\Domain"
},
{
"objectId": 491,
"object": "Level27\\MailBundle\\Entity\\Mailgroup"
}
],
"teamEntities": {
"apps": [
{
"id": 491,
"name": "testApp"
}
],
"domains": [
{
"id": 492,
"fullname": "testdomain.be"
}
],
"mailgroups": [
{
"id": 491,
"name": "testMailgroup",
"domains": [
{
"id": 6326,
"name": "test2344test",
"mailPrimary": true,
"domaintype": {
"id": 364,
"extension": "be"
}
}
]
}
],
"systems": [
{
"id": 491,
"name": "testSystem"
}
]
}
}
}
HTTP status code 403
Response when a user does not have access to a team
HTTP status code 404
Response when team is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Add a user to the team
List of all available users
post /organisations/{organisationId}/teams/{teamId}/users
Add a user to the team
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- teamId: required(string)
The unique identifier of a team
Body
Media type: application/json
Type: object
Properties- user: required(integer)
The unique identifier of a user
- autoAddSshkey: (boolean)
If autoAddSshkey = true all User's sshKeys will be added to all Systems and Components in the Team (default: false)
Example:
{
"user": 123,
"autoAddSshkey": false
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"user": {
"id": 2,
"username": "user@test.be",
"firstName": "John",
"lastName": "User",
"roles": [
"ROLE_CUSTADMIN",
"ROLE_MAIL",
"ROLE_SYSTEM",
"ROLE_APP",
"ROLE_DOMAIN"
],
"autoAddSshkey": false
}
}
HTTP status code 400
Validation of new user failed
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /organisations/{organisationId}/teams/{teamId}/users
List of all available users
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- teamId: required(string)
The unique identifier of a team
Query Parameters
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- orderBy: (string)
- orderType: (string)
ASC or DESC
- filter: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"users": [
{
"id": 2,
"username": "user@test.be",
"firstName": "John",
"lastName": "User",
"roles": [
"ROLE_CUSTADMIN",
"ROLE_MAIL",
"ROLE_SYSTEM",
"ROLE_APP",
"ROLE_DOMAIN"
],
"status": "ok"
},
{
"id": 14,
"username": "user2@test.be",
"firstName": "Adam",
"lastName": "User",
"roles": [
"ROLE_MAIL",
"ROLE_SYSTEM",
"ROLE_APP",
"ROLE_DOMAIN"
],
"status": "deactivated"
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Get a user in a team
Remove the user from the team
Update autoAddSshkey parameter
get /organisations/{organisationId}/teams/{teamId}/users/{userId}
Get a user in a team
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- teamId: required(string)
The unique identifier of a team
- userId: required(string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"user": {
"id": 2,
"username": "user@test.be",
"firstName": "John",
"lastName": "User",
"roles": [
"ROLE_CUSTADMIN",
"ROLE_MAIL",
"ROLE_SYSTEM",
"ROLE_APP",
"ROLE_DOMAIN"
],
"autoAddSshkey": false
}
}
HTTP status code 403
Response when a user does not have access to a team
HTTP status code 404
Response when a user in a team is not found
delete /organisations/{organisationId}/teams/{teamId}/users/{userId}
Remove the user from the team
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- teamId: required(string)
The unique identifier of a team
- userId: required(string)
patch /organisations/{organisationId}/teams/{teamId}/users/{userId}
Update autoAddSshkey parameter
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- teamId: required(string)
The unique identifier of a team
- userId: required(string)
Body
Media type: application/json
Type: object
Properties- user: required(integer)
The unique identifier of a user
- autoAddSshkey: (boolean)
If autoAddSshkey = true all User's sshKeys will be added to all Systems and Components in the Team (default: false)
Example:
{
"user": 123,
"autoAddSshkey": false
}
Get users who don't belong to a team
get /organisations/{organisationId}/teams/{teamId}/nonmember-users
Get users who don't belong to a team
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- teamId: required(string)
The unique identifier of a team
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"users": [
{
"id": 27,
"username": "test1@test.be",
"firstName": "Test1",
"lastName": "User",
"status": "ok"
},
{
"id": 27,
"username": "test2@test.be",
"firstName": "Test2",
"lastName": "User",
"status": "ok"
}
]
}
HTTP status code 403
Response when a user does not have access to a team
HTTP status code 404
Response when a user in a team is not found
Get all entities for an organisation which can be added to a team
get /organisations/{organisationId}/teams/{teamId}/nonmember-entities
Get all entities for an organisation which can be added to a team
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- teamId: required(string)
The unique identifier of a team
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"total": {
"apps": 3,
"domains": 2,
"mailgroups": 1,
"systems": 3
},
"domains": [
{
"id": 1,
"fullname": "test1.be",
"organisationId": 17,
"organisationName": "test1"
},
{
"id": 2,
"fullname": "test1.nl",
"organisationId": 17,
"organisationName": "test1"
}
],
"systems": [
{
"id": 1,
"name": "dns1test",
"organisationId": 17,
"organisationName": "test1"
},
{
"id": 2,
"name": "dns1test",
"organisationId": 17,
"organisationName": "test1"
},
{
"id": 3,
"name": "mail1test",
"organisationId": 17,
"organisationName": "test1"
}
],
"mailgroups": [
{
"id": 3,
"name": "myMailgroup",
"organisationId": 17,
"organisationName": "test1",
"domains": [
{
"id": 6326,
"name": "test2344test",
"mailPrimary": true,
"domaintype": {
"id": 364,
"extension": "be"
}
}
]
}
],
"apps": [
{
"id": 1,
"name": "App1",
"organisationId": 17,
"organisationName": "test1"
},
{
"id": 2,
"name": "AppTest",
"organisationId": 17,
"organisationName": "test1"
},
{
"id": 4,
"name": "Test1App",
"organisationId": 17,
"organisationName": "test1"
}
]
}
Get all entities which can be added to a team (admin only)
get /organisations/{organisationId}/teams/{teamId}/nonmember-entities/all
Get all entities which can be added to a team (admin only)
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- teamId: required(string)
The unique identifier of a team
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"total": {
"apps": 3,
"domains": 2,
"mailgroups": 1,
"systems": 3
},
"domains": [
{
"id": 1,
"fullname": "test1.be",
"organisationId": 17,
"organisationName": "test1"
},
{
"id": 2,
"fullname": "test1.nl",
"organisationId": 17,
"organisationName": "test1"
}
],
"systems": [
{
"id": 1,
"name": "dns1test",
"organisationId": 17,
"organisationName": "test1"
},
{
"id": 2,
"name": "dns1test",
"organisationId": 17,
"organisationName": "test1"
},
{
"id": 3,
"name": "mail1test",
"organisationId": 17,
"organisationName": "test1"
}
],
"mailgroups": [
{
"id": 3,
"name": "myMailgroup",
"organisationId": 17,
"organisationName": "test1",
"domains": [
{
"id": 6326,
"name": "test2344test",
"mailPrimary": true,
"domaintype": {
"id": 364,
"extension": "be"
}
}
]
}
],
"apps": [
{
"id": 1,
"name": "App1",
"organisationId": 17,
"organisationName": "test1"
},
{
"id": 2,
"name": "AppTest",
"organisationId": 17,
"organisationName": "test1"
},
{
"id": 4,
"name": "Test1App",
"organisationId": 17,
"organisationName": "test1"
}
]
}
Add an app to the team
List of all available apps
post /organisations/{organisationId}/teams/{teamId}/apps
Add an app to the team
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- teamId: required(string)
The unique identifier of a team
Body
Media type: application/json
Type: object
Properties- objectId: required(integer)
The unique identifier of an entity
Example:
{
"objectId": 123
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"entity": {
"id": 1,
"object": "Level27\\AppBundle\\Entity\\App",
"objectId": 1
}
}
HTTP status code 400
Validation of new app failed
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /organisations/{organisationId}/teams/{teamId}/apps
List of all available apps
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- teamId: required(string)
The unique identifier of a team
Query Parameters
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- orderBy: (string)
- orderType: (string)
ASC or DESC
- filter: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"entities": [
{
"id": 1,
"object": "Level27\\AppBundle\\Entity\\App",
"objectId": 1
},
{
"id": 2,
"object": "Level27\\AppBundle\\Entity\\App",
"objectId": 2
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Get the app for the team
Remove the app from the team
get /organisations/{organisationId}/teams/{teamId}/apps/{appId}
Get the app for the team
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- teamId: required(string)
The unique identifier of a team
- appId: required(string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"type": "object",
"example": {
"entity": {
"id": 1,
"object": "Level27\\AppBundle\\Entity\\App",
"objectId": 1
}
}
}
delete /organisations/{organisationId}/teams/{teamId}/apps/{appId}
Remove the app from the team
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- teamId: required(string)
The unique identifier of a team
- appId: required(string)
Add a domain to the team
List of all available domains
post /organisations/{organisationId}/teams/{teamId}/domains
Add a domain to the team
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- teamId: required(string)
The unique identifier of a team
Body
Media type: application/json
Type: object
Properties- objectId: required(integer)
The unique identifier of an entity
Example:
{
"objectId": 123
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"entity": {
"id": 1,
"object": "Level27\\DomainBundle\\Entity\\Domain",
"objectId": 1
}
}
HTTP status code 400
Validation of new domain failed
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /organisations/{organisationId}/teams/{teamId}/domains
List of all available domains
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- teamId: required(string)
The unique identifier of a team
Query Parameters
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- orderBy: (string)
- orderType: (string)
ASC or DESC
- filter: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"entities": [
{
"id": 1,
"object": "Level27\\DomainBundle\\Entity\\Domain",
"objectId": 1
},
{
"id": 2,
"object": "Level27\\DomainBundle\\Entity\\Domain",
"objectId": 2
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Get the domain for the team
Remove the domain from the team
get /organisations/{organisationId}/teams/{teamId}/domains/{domainId}
Get the domain for the team
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- teamId: required(string)
The unique identifier of a team
- domainId: required(string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"type": "object",
"example": {
"entity": {
"id": 1,
"object": "Level27\\DomainBundle\\Entity\\Domain",
"objectId": 1
}
}
}
delete /organisations/{organisationId}/teams/{teamId}/domains/{domainId}
Remove the domain from the team
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- teamId: required(string)
The unique identifier of a team
- domainId: required(string)
Add a mailgroup to the team
List of all available mailgroups
post /organisations/{organisationId}/teams/{teamId}/mailgroups
Add a mailgroup to the team
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- teamId: required(string)
The unique identifier of a team
Body
Media type: application/json
Type: object
Properties- objectId: required(integer)
The unique identifier of an entity
Example:
{
"objectId": 123
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"entity": {
"id": 1,
"object": "Level27\\MailBundle\\Entity\\Mailgroup",
"objectId": 1
}
}
HTTP status code 400
Validation of new mailgroup failed
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /organisations/{organisationId}/teams/{teamId}/mailgroups
List of all available mailgroups
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- teamId: required(string)
The unique identifier of a team
Query Parameters
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- orderBy: (string)
- orderType: (string)
ASC or DESC
- filter: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"entities": [
{
"id": 1,
"object": "Level27\\MailBundle\\Entity\\Mailgroup",
"objectId": 1
},
{
"id": 2,
"object": "Level27\\MailBundle\\Entity\\Mailgroup",
"objectId": 2
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Get the mailgroup for the team
Remove the mailgroup from the team
get /organisations/{organisationId}/teams/{teamId}/mailgroups/{mailgroupId}
Get the mailgroup for the team
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- teamId: required(string)
The unique identifier of a team
- mailgroupId: required(string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"type": "object",
"example": {
"entity": {
"id": 1,
"object": "Level27\\MailBundle\\Entity\\Mailgroup",
"objectId": 1
}
}
}
delete /organisations/{organisationId}/teams/{teamId}/mailgroups/{mailgroupId}
Remove the mailgroup from the team
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- teamId: required(string)
The unique identifier of a team
- mailgroupId: required(string)
Add a system to the team
List of all available systems
post /organisations/{organisationId}/teams/{teamId}/systems
Add a system to the team
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- teamId: required(string)
The unique identifier of a team
Body
Media type: application/json
Type: object
Properties- objectId: required(integer)
The unique identifier of an entity
Example:
{
"objectId": 123
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"entity": {
"id": 1,
"object": "Level27\\SystemBundle\\Entity\\System",
"objectId": 1
}
}
HTTP status code 400
Validation of new system failed
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /organisations/{organisationId}/teams/{teamId}/systems
List of all available systems
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- teamId: required(string)
The unique identifier of a team
Query Parameters
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- orderBy: (string)
- orderType: (string)
ASC or DESC
- filter: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"entities": [
{
"id": 1,
"object": "Level27\\SystemBundle\\Entity\\System",
"objectId": 1
},
{
"id": 2,
"object": "Level27\\SystemBundle\\Entity\\System",
"objectId": 2
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Get the system for the team
Remove the system from the team
get /organisations/{organisationId}/teams/{teamId}/systems/{systemId}
Get the system for the team
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- teamId: required(string)
The unique identifier of a team
- systemId: required(string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"type": "object",
"example": {
"entity": {
"id": 1,
"object": "Level27\\SystemBundle\\Entity\\System",
"objectId": 1
}
}
}
delete /organisations/{organisationId}/teams/{teamId}/systems/{systemId}
Remove the system from the team
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- teamId: required(string)
The unique identifier of a team
- systemId: required(string)
Get billableitemInfo data
get /organisations/{organisationId}/billableiteminfo
Get billableitemInfo data
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
Query Parameters
- orderBy: (string)
- orderType: (string)
ASC or DESC
- filter: (string)
- limit: (integer - default: 5)
- offset: (integer - default: 0)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"billableitemInfo": [
{
"id": 46,
"value": "vnashgJK2321",
"description": "Customer XYZ"
},
{
"id": 47,
"value": "tsadas5Tkhhp",
"description": "Customer FirstName LastName"
},
{
"id": 48,
"value": "9giuguawhGH6",
"description": "My description"
}
]
}
Get available pricegroups for an organisation
get /organisations/{organisationId}/pricegroups
Get available pricegroups for an organisation
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"pricegroups": [
{
"id": "bronze",
"description": "Bronze"
},
{
"id": "default",
"description": "Default"
},
{
"id": "gold",
"description": "Gold"
},
{
"id": "silver",
"description": "Silver"
}
]
}
Get available genericItem products for an organisation
get /organisations/{organisationId}/genericitem/products
Get available genericItem products for an organisation
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"products": [
{
"id": "genericitem_newrelic_professional",
"description": "Newrelic professional"
},
{
"id": "genericitem_sslcertificate_comodo_domain",
"description": "Ssl certificate comodo domain"
},
{
"id": "genericitem_sslcertificate_comodo_ev",
"description": "Ssl certificate comodo ev"
}
]
}
Create a new project
List of all available projects
post /organisations/{organisationId}/projects
Create a new project
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
Body
Media type: application/json
Type: object
Properties- name: required(string)
Name
Example:
{
"name": "Test1"
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"project": {
"id": 1,
"name": "Test1",
"status": "ok"
}
}
HTTP status code 400
Validation of new project failed
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /organisations/{organisationId}/projects
List of all available projects
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
Query Parameters
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- orderBy: (string)
- orderType: (string)
ASC or DESC
- filter: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"projects": [
{
"id": 1,
"name": "Test1",
"status": "ok"
},
{
"id": 2,
"name": "Test2",
"status": "ok"
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Update a project
Delete a project
Get a project
put /organisations/{organisationId}/projects/{projectId}
Update a project
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- projectId: required(string)
The unique identifier of a project
Body
Media type: application/json
Type: object
Properties- name: required(string)
Name
Example:
{
"name": "Test1"
}
HTTP status code 204
Response when update of a project succeeded
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a project
HTTP status code 404
Response when project is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
delete /organisations/{organisationId}/projects/{projectId}
Delete a project
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- projectId: required(string)
The unique identifier of a project
HTTP status code 204
Request successfully processed
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a project
HTTP status code 404
Response when project is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /organisations/{organisationId}/projects/{projectId}
Get a project
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- projectId: required(string)
The unique identifier of a project
HTTP status code 200
Response when project is found
Body
Media type: application/json
Type: object
Example:
{
"project": {
"id": 1,
"name": "Test1",
"status": "ok"
}
}
HTTP status code 403
Response when a user does not have access to a project
HTTP status code 404
Response when project is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Add an app to a project
Get apps for a project
post /organisations/{organisationId}/projects/{projectId}/apps
Add an app to a project
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- projectId: required(string)
The unique identifier of a project
Body
Media type: application/json
Type: object
Properties- app: required(integer)
The unique identifier of an app
Example:
{
"app": 1
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"app": {
"id": 12,
"name": "Test1",
"status": "ok",
"organisation": {
"id": 414,
"name": "Test bv"
},
"statusCategory": "green"
}
}
HTTP status code 400
Validation of new app failed
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /organisations/{organisationId}/projects/{projectId}/apps
Get apps for a project
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- projectId: required(string)
The unique identifier of a project
Query Parameters
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- orderBy: (string)
- orderType: (string)
ASC or DESC
- filter: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"apps": [
{
"id": 12,
"name": "Test12",
"status": "ok",
"organisation": {
"id": 414,
"name": "Test bv"
},
"statusCategory": "green"
},
{
"id": 122,
"name": "Test122",
"status": "ok",
"organisation": {
"id": 414,
"name": "Test bv"
},
"statusCategory": "green"
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Remove an app from a project
Get an app for a project
delete /organisations/{organisationId}/projects/{projectId}/apps/{appId}
Remove an app from a project
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- projectId: required(string)
The unique identifier of a project
- appId: required(string)
- projectHasAppId: required(string)
The unique identifier of a app
get /organisations/{organisationId}/projects/{projectId}/apps/{appId}
Get an app for a project
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- projectId: required(string)
The unique identifier of a project
- appId: required(string)
- projectHasAppId: required(string)
The unique identifier of a app
HTTP status code 200
Response when app is found
Body
Media type: application/json
Type: object
Example:
{
"app": {
"id": 12,
"name": "Test1",
"status": "ok",
"organisation": {
"id": 414,
"name": "Test bv"
},
"statusCategory": "green"
}
}
HTTP status code 403
Response when a user does not have access to a app
HTTP status code 404
Response when app is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Add a domain to a project
Get domains for a project
post /organisations/{organisationId}/projects/{projectId}/domains
Add a domain to a project
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- projectId: required(string)
The unique identifier of a project
Body
Media type: application/json
Type: object
Properties- app: required(integer)
The unique identifier of a domain
Example:
{
"domain": 1
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"domain": {
"id": 12,
"name": "test1.be",
"status": "ok",
"handleDns": true,
"organisation": {
"id": 1,
"name": "level27"
},
"statusCategory": "green",
"linkedToUrl": true,
"dtExpires": null
}
}
HTTP status code 400
Validation of new domain failed
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /organisations/{organisationId}/projects/{projectId}/domains
Get domains for a project
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- projectId: required(string)
The unique identifier of a project
Query Parameters
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- orderBy: (string)
- orderType: (string)
ASC or DESC
- filter: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"domains": [
{
"id": 12,
"name": "test12.be",
"status": "ok",
"handleDns": true,
"organisation": {
"id": 1,
"name": "level27"
},
"statusCategory": "green",
"linkedToUrl": true,
"dtExpires": null
},
{
"id": 122,
"name": "test122.nl",
"status": "ok",
"handleDns": true,
"organisation": {
"id": 1,
"name": "level27"
},
"statusCategory": "green",
"linkedToUrl": true,
"dtExpires": null
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Remove a domain from a project
Get a domain for a project
delete /organisations/{organisationId}/projects/{projectId}/domains/{domainId}
Remove a domain from a project
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- projectId: required(string)
The unique identifier of a project
- domainId: required(string)
- projectHasDomainId: required(string)
The unique identifier of a domain
get /organisations/{organisationId}/projects/{projectId}/domains/{domainId}
Get a domain for a project
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- projectId: required(string)
The unique identifier of a project
- domainId: required(string)
- projectHasDomainId: required(string)
The unique identifier of a domain
HTTP status code 200
Response when domain is found
Body
Media type: application/json
Type: object
Example:
{
"domain": {
"id": 12,
"name": "test1.be",
"status": "ok",
"handleDns": true,
"organisation": {
"id": 1,
"name": "level27"
},
"statusCategory": "green",
"linkedToUrl": true,
"dtExpires": null
}
}
HTTP status code 403
Response when a user does not have access to a domain
HTTP status code 404
Response when domain is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Add a mailgroup to a project
Get mailgroups for a project
post /organisations/{organisationId}/projects/{projectId}/mailgroups
Add a mailgroup to a project
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- projectId: required(string)
The unique identifier of a project
Body
Media type: application/json
Type: object
Properties- app: required(integer)
The unique identifier of a mailgroup
Example:
{
"mailgroup": 1
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"mailgroup": {
"id": 12,
"name": "Test1",
"status": "ok",
"organisation": {
"id": 2570,
"name": "Test123"
},
"domains": [
{
"id": 10361,
"name": "testbalxxx",
"mailPrimary": true,
"domaintype": {
"id": 364,
"extension": "be"
}
}
],
"statusCategory": "green",
"mailboxCount": 3,
"mailforwarderCount": 0
}
}
HTTP status code 400
Validation of new mailgroup failed
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /organisations/{organisationId}/projects/{projectId}/mailgroups
Get mailgroups for a project
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- projectId: required(string)
The unique identifier of a project
Query Parameters
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- orderBy: (string)
- orderType: (string)
ASC or DESC
- filter: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"mailgroups": [
{
"id": 12,
"name": "Test12",
"status": "ok",
"organisation": {
"id": 2570,
"name": "Test123"
},
"domains": [
{
"id": 10361,
"name": "balxxx1",
"mailPrimary": true,
"domaintype": {
"id": 364,
"extension": "be"
}
}
],
"statusCategory": "green",
"mailboxCount": 3,
"mailforwarderCount": 0
},
{
"id": 122,
"name": "Test122",
"status": "ok",
"organisation": {
"id": 2570,
"name": "Test123"
},
"domains": [
{
"id": 10361,
"name": "balxx2",
"mailPrimary": true,
"domaintype": {
"id": 364,
"extension": "be"
}
}
],
"statusCategory": "green",
"mailboxCount": 1,
"mailforwarderCount": 1
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Remove a mailgroup from a project
Get a mailgroup for a project
delete /organisations/{organisationId}/projects/{projectId}/mailgroups/{mailgroupId}
Remove a mailgroup from a project
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- projectId: required(string)
The unique identifier of a project
- mailgroupId: required(string)
- projectHasMailgroupId: required(string)
The unique identifier of a mailgroup
HTTP status code 204
Request successfully processed
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a mailgroup
HTTP status code 404
Response when mailgroup is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /organisations/{organisationId}/projects/{projectId}/mailgroups/{mailgroupId}
Get a mailgroup for a project
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- projectId: required(string)
The unique identifier of a project
- mailgroupId: required(string)
- projectHasMailgroupId: required(string)
The unique identifier of a mailgroup
HTTP status code 200
Response when mailgroup is found
Body
Media type: application/json
Type: object
Example:
{
"mailgroup": {
"id": 12,
"name": "Test1",
"status": "ok",
"organisation": {
"id": 2570,
"name": "Test123"
},
"domains": [
{
"id": 10361,
"name": "testbalxxx",
"mailPrimary": true,
"domaintype": {
"id": 364,
"extension": "be"
}
}
],
"statusCategory": "green",
"mailboxCount": 3,
"mailforwarderCount": 0
}
}
HTTP status code 403
Response when a user does not have access to a mailgroup
HTTP status code 404
Response when mailgroup is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Add a system to a project
Get systems for a project
post /organisations/{organisationId}/projects/{projectId}/systems
Add a system to a project
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- projectId: required(string)
The unique identifier of a project
Body
Media type: application/json
Type: object
Properties- app: (integer)
The unique identifier of a system
Example:
{
"system": 1
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"system": {
"id": 12,
"name": "Test1",
"status": "ok",
"cpu": 2,
"memory": 4,
"disk": "200.0",
"organisation": {
"id": 1736,
"name": "Test321"
},
"statusCategory": "green",
"os": "Ubuntu 18.04 LTS"
}
}
HTTP status code 400
Validation of new system failed
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /organisations/{organisationId}/projects/{projectId}/systems
Get systems for a project
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- projectId: required(string)
The unique identifier of a project
Query Parameters
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- orderBy: (string)
- orderType: (string)
ASC or DESC
- filter: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"systems": [
{
"id": 12,
"name": "Test12",
"status": "ok",
"cpu": 2,
"memory": 4,
"disk": "200.0",
"organisation": {
"id": 1736,
"name": "Test321"
},
"statusCategory": "green",
"os": "Ubuntu 18.04 LTS"
},
{
"id": 122,
"name": "Test122",
"status": "ok",
"cpu": 2,
"memory": 4,
"disk": "200.0",
"organisation": {
"id": 1736,
"name": "Test321"
},
"statusCategory": "green",
"os": "Ubuntu 18.04 LTS"
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Remove a system from a project
Get a system for a project
delete /organisations/{organisationId}/projects/{projectId}/systems/{systemId}
Remove a system from a project
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- projectId: required(string)
The unique identifier of a project
- systemId: required(string)
- projectHasSystemId: required(string)
The unique identifier of a system
get /organisations/{organisationId}/projects/{projectId}/systems/{systemId}
Get a system for a project
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- projectId: required(string)
The unique identifier of a project
- systemId: required(string)
- projectHasSystemId: required(string)
The unique identifier of a system
HTTP status code 200
Response when system is found
Body
Media type: application/json
Type: object
Example:
{
"system": {
"id": 12,
"name": "Test1",
"status": "ok",
"cpu": 2,
"memory": 4,
"disk": "200.0",
"organisation": {
"id": 1736,
"name": "Test321"
},
"statusCategory": "green",
"os": "Ubuntu 18.04 LTS"
}
}
HTTP status code 403
Response when a user does not have access to a system
HTTP status code 404
Response when system is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Add a systemgroup to a project
Get systemgroups for a project
post /organisations/{organisationId}/projects/{projectId}/systemgroups
Add a systemgroup to a project
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- projectId: required(string)
The unique identifier of a project
Body
Media type: application/json
Type: object
Properties- app: (integer)
The unique identifier of a systemgroup
Example:
{
"systemgroup": 1
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"systemgroup": {
"id": 12,
"name": "Test1",
"status": "ok",
"organisation": {
"id": 1135,
"name": "Test Be"
},
"statusCategory": "green"
}
}
HTTP status code 400
Validation of new systemgroup failed
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /organisations/{organisationId}/projects/{projectId}/systemgroups
Get systemgroups for a project
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- projectId: required(string)
The unique identifier of a project
Query Parameters
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- orderBy: (string)
- orderType: (string)
ASC or DESC
- filter: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"systemgroups": [
{
"id": 12,
"name": "Test12",
"status": "ok",
"organisation": {
"id": 1135,
"name": "Test Be"
},
"statusCategory": "green"
},
{
"id": 122,
"name": "Test122",
"status": "ok",
"organisation": {
"id": 1135,
"name": "Test Be"
},
"statusCategory": "green"
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Remove a systemgroup from a project
Get a systemgroup for a project
delete /organisations/{organisationId}/projects/{projectId}/systemgroups/{systemgroupId}
Remove a systemgroup from a project
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- projectId: required(string)
The unique identifier of a project
- systemgroupId: required(string)
- projectHasSystemgroupId: required(string)
The unique identifier of a systemgroup
HTTP status code 204
Request successfully processed
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a systemgroup
HTTP status code 404
Response when systemgroup is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /organisations/{organisationId}/projects/{projectId}/systemgroups/{systemgroupId}
Get a systemgroup for a project
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- projectId: required(string)
The unique identifier of a project
- systemgroupId: required(string)
- projectHasSystemgroupId: required(string)
The unique identifier of a systemgroup
HTTP status code 200
Response when systemgroup is found
Body
Media type: application/json
Type: object
Example:
{
"systemgroup": {
"id": 12,
"name": "Test1",
"status": "ok",
"organisation": {
"id": 1135,
"name": "Test Be"
},
"statusCategory": "green"
}
}
HTTP status code 403
Response when a user does not have access to a systemgroup
HTTP status code 404
Response when systemgroup is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Get all entities which belongs to a project
get /organisations/{organisationId}/projects/{projectId}/entities
Get all entities which belongs to a project
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- projectId: required(string)
The unique identifier of a project
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"total": {
"apps": 2,
"domains": 1,
"mailgroups": 1,
"systems": 1,
"systemgroups": 1
},
"apps": [
{
"id": 7,
"name": "Test1",
"status": "ok",
"organisation": {
"id": 1,
"name": "TestOrganisation1"
},
"statusCategory": "green"
},
{
"id": 12,
"name": "Test2\"",
"status": "ok",
"organisation": {
"id": 13,
"name": "TestOrganisation2"
},
"statusCategory": "green"
}
],
"domains": [
{
"id": 1,
"name": "testdomain.be",
"status": "ok",
"handleDns": true,
"organisation": {
"id": 1,
"name": "TestOrganisation1"
},
"statusCategory": "green",
"linkedToUrl": true,
"dtExpires": null
}
],
"mailgroups": [
{
"id": 1,
"name": "TestGroup",
"status": "ok",
"organisation": {
"id": 1,
"name": "TestOrganisation1"
},
"domains": [
{
"id": 1,
"name": "testdomain",
"mailPrimary": true,
"domaintype": {
"id": 364,
"extension": "be"
}
}
],
"statusCategory": "green",
"mailboxCount": 3,
"mailforwarderCount": 0
}
],
"systems": [
{
"id": 1124,
"name": "TestSystem",
"status": "ok",
"cpu": 2,
"memory": 4,
"disk": 200,
"organisation": {
"id": 1,
"name": "TestOrganisation1"
},
"statusCategory": "green",
"os": "Ubuntu 18.04 LTS"
}
],
"systemgroups": [
{
"id": 1,
"name": "TestSystemgroup",
"status": "ok",
"organisation": {
"id": 1,
"name": "TestOrganisation1"
},
"statusCategory": "green"
}
]
}
Get all entities which can be added to a project
get /organisations/{organisationId}/projects/{projectId}/nonmember-entities
Get all entities which can be added to a project
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- projectId: required(string)
The unique identifier of a project
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"total": {
"apps": 3,
"domains": 2,
"mailgroups": 1,
"systems": 3,
"systemgroups": 0
},
"apps": [
{
"id": 1,
"name": "App1",
"organisationId": 17,
"organisationName": "test1"
},
{
"id": 2,
"name": "AppTest",
"organisationId": 17,
"organisationName": "test1"
},
{
"id": 4,
"name": "Test1App",
"organisationId": 17,
"organisationName": "test1"
}
],
"domains": [
{
"id": 1,
"fullname": "test1.be",
"organisationId": 17,
"organisationName": "test1"
},
{
"id": 2,
"fullname": "test1.nl",
"organisationId": 17,
"organisationName": "test1"
}
],
"mailgroups": [
{
"id": 3,
"name": "myMailgroup",
"organisationId": 17,
"organisationName": "test1"
}
],
"systems": [
{
"id": 1,
"name": "dns1test",
"organisationId": 17,
"organisationName": "test1"
},
{
"id": 2,
"name": "dns1test",
"organisationId": 17,
"organisationName": "test1"
},
{
"id": 3,
"name": "mail1test",
"organisationId": 17,
"organisationName": "test1"
}
],
"systemgroups": []
}
Get count of an organisation's entities
get /organisations/{organisationId}/countofentities
Get count of an organisation's entities
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"apps": 63,
"components": {
"asp": 39,
"mysql": 28,
"php": 48,
"redis": 1,
"sftp": 1,
"testbook": 3,
"url": 2
},
"sslCertificates": 44,
"domains": 170,
"mailboxes": 110,
"mailforwarders": 28,
"systems": 98,
"systemgroups": 7,
"projects": 2
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to an organisation
HTTP status code 404
Response when a organisation is not found
Get total price to pay
get /organisations/{organisationId}/documents/pricetopay
Get total price to pay
Download a finance overview in pdf (admin only)
get /organisations/{organisationId}/finance/overview
Create a new agreement
List of all available agreements
post /organisations/{organisationId}/agreements
Create a new agreement
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
Body
Media type: application/json
Type: object
Properties- name: required(string)
Name
- description: (string)
Description
- discount: (integer)
Discount
- durationDiscount: (integer)
Discount
- cashPaymentDiscount: (integer)
Discount
- dtFrom: (string)
DateTime - timestamp
- dtUntil: (string)
DateTime - timestamp
Example:
{
"name": "My agreement",
"description": "My great agreement",
"discount": 1000,
"durationDiscount": 500,
"cashPaymentDiscount": 250,
"dtFrom": 1628188851,
"dtUntil": 1628189851
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"agreement": {
"id": 3,
"name": "My agreement",
"description": "My great agreement",
"dtFrom": "1628188851",
"dtUntil": "1628708251",
"discount": "1000",
"durationDiscount": "1000",
"cashPaymentDiscount": "200",
"parentOrganisation": "level27",
"status": "ok",
"statusCategory": "green"
}
}
HTTP status code 400
Validation of new agreement failed
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /organisations/{organisationId}/agreements
List of all available agreements
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
Query Parameters
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- orderBy: (string)
- orderType: (string)
ASC or DESC
- filter: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"total": 2,
"agreements": [
{
"id": 1,
"name": "My agreement 1",
"description": "My agreement 1",
"dtFrom": null,
"dtUntil": null,
"discount": "1000",
"durationDiscount": null,
"cashPaymentDiscount": null,
"parentOrganisation": "level27",
"status": "ok",
"statusCategory": "green"
},
{
"id": 3,
"name": "My agreement 2",
"description": "My agreement 2",
"dtFrom": "1628188851",
"dtUntil": "1628708251",
"discount": "1000",
"durationDiscount": "1000",
"cashPaymentDiscount": "200",
"parentOrganisation": "level27",
"status": "ok",
"statusCategory": "green"
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Delete a agreement
Get a agreement
delete /organisations/{organisationId}/agreements/{agreementId}
Delete a agreement
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- agreementId: required(string)
The unique identifier of a agreement
HTTP status code 204
Request successfully processed
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a agreement
HTTP status code 404
Response when agreement is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /organisations/{organisationId}/agreements/{agreementId}
Get a agreement
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- agreementId: required(string)
The unique identifier of a agreement
HTTP status code 200
Response when agreement is found
Body
Media type: application/json
Type: object
Example:
{
"agreement": {
"id": 3,
"name": "My agreement",
"description": "My great agreement",
"dtFrom": "1628188851",
"dtUntil": "1628708251",
"discount": "1000",
"durationDiscount": "1000",
"cashPaymentDiscount": "200",
"parentOrganisation": "level27",
"status": "ok",
"statusCategory": "green"
}
}
HTTP status code 403
Response when a user does not have access to a agreement
HTTP status code 404
Response when agreement is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Get a list of agreement's billableitems
get /organisations/{organisationId}/agreements/{agreementId}/billableitems
Get a list of agreement's billableitems
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- agreementId: required(string)
The unique identifier of a agreement
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"total": 2,
"billableitems": [
{
"id": 1423,
"autoRenew": true,
"description": "App Test1",
"status": "ok",
"dtExpires": "1630839737",
"extra1": null,
"extra2": null,
"externalInfo": null,
"preventDeactivation": false,
"statusCategory": "green"
},
{
"id": 12806,
"autoRenew": true,
"description": "System test.test.net",
"status": "ok",
"dtExpires": "1630829512",
"extra1": null,
"extra2": null,
"externalInfo": null,
"preventDeactivation": false,
"statusCategory": "green"
}
]
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to an agreement
HTTP status code 404
Response when an agreement is not found
Get a list of agreement's attachments
get /organisations/{organisationId}/agreements/{agreementId}/attachments
Get a list of agreement's attachments
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- agreementId: required(string)
The unique identifier of a agreement
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"total": 4,
"attachments": [
{
"id": 1,
"name": "test1",
"entityClass": "Level27\\FinanceBundle\\Entity\\Agreement",
"entityId": 3,
"filename": "document1628761186-6114ec62e5ab6.pdf",
"status": "ok",
"statusCategory": "green"
},
{
"id": 2,
"name": "test2",
"entityClass": "Level27\\FinanceBundle\\Entity\\Agreement",
"entityId": 3,
"filename": "attachment1628764379_6114f8db4dbae-6114f8db631d5.pdf",
"status": "ok",
"statusCategory": "green"
}
]
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to an agreement
HTTP status code 404
Response when an agreement is not found
/organisationandinvitation
Create an organisation and a first invitation
post /organisationandinvitation
Create an organisation and a first invitation
Body
Media type: application/json
Type: object
Properties- name: required(string)
Name
- taxNumber: required(string)
Tax number
- resellerOrganisation: (integer)
Reseller organisation id
- street: (string)
Street
- houseNumber: (string)
House number
- zip: (string)
Zip
- city: (string)
City
- country: (string)
Country id
- email: required(string)
Email (unique)
- firstName: required(string)
First name
- lastName: required(string)
Last name
- language: (one of nl, en, fr)
Language id (default: nl)
- websiteOrderInfo: (string)
websiteOrderInfo
Example:
{
"organisation": {
"name": "TestOrganisation",
"taxNumber": "BE1234567890",
"resellerOrganisation": null,
"street": "Test",
"houseNumber": 123,
"zip": 12345,
"city": "Test",
"country": "BE"
},
"invitation": {
"firstName": "Test",
"lastName": "Test",
"email": "test@test.be",
"websiteOrderInfo": {
"domaincontact": {
"type": "licensee",
"firstName": "Test User",
"street": "Test",
"zip": "12345",
"city": "Test",
"phone": "+32.123456789",
"email": "test@test.be",
"country": "BE"
},
"domains": [
"testdomain.be",
"testdomain.eu"
],
"system": null,
"app": 0
},
"language": "en"
}
}
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"organisation": {
"id": 71
},
"invitation": {
"id": 90
}
}
HTTP status code 400
Bad request
Body
Media type: application/json
Type: object
Example:
{
"organisation": {
"errors": {
"errors": [
"This organisation with the same tax number already exists in our database."
],
"children": {
"name": {},
"taxNumber": {},
"resellerOrganisation": {},
"street": {},
"houseNumber": {},
"zip": {},
"city": {},
"country": {}
}
}
},
"invitation": {
"errors": {
"children": {
"firstName": {},
"lastName": {},
"email": {
"errors": [
"Duplicate email"
]
},
"websiteOrderInfo": {},
"language": {}
}
}
}
}
/invitations
Send a notification for an invitation
post /invitations/{invitationId}/notifications
Send a notification for an invitation
URI Parameters
- invitationId: required(string)
The unique identifier of an invitation
Body
Media type: application/json
Type: object
Properties- type: required(string)
Notification type
- group: required(one of App, Crm, Domain, Finance, Mail, System)
Notification group
- params: (object)
Additional parameters (json)
Example:
{
"type": "new",
"params": {
"handler": "level27_crm.invitation.handler"
},
"group": "Crm"
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"id": 4207,
"entityIndex": "Level27\\CrmBundle\\Entity\\Invitation_173",
"entityName": "invitation",
"dtStamp": "1522136563",
"notificationGroup": "Crm",
"type": "new",
"entityClass": "Level27\\CrmBundle\\Entity\\Invitation",
"entityId": 173,
"rootEntityClass": null,
"rootEntityId": null,
"status": 21,
"statusDisplay": "queued",
"statusCategory": "yellow",
"sendMode": 0,
"priority": 250,
"subject": null,
"params": {
"handler": "level27_crm.invitation.handler"
},
"userId": 1,
"contacts": [],
"extraRecipients": [],
"entity": null,
"user": null
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to an invitation
HTTP status code 500
Response when a user does not have a proper role to access a controller
/users
Send a notification for an user
post /users/{userId}/notifications
Send a notification for an user
URI Parameters
- userId: required(string)
The unique identifier of an user
Body
Media type: application/json
Type: object
Properties- type: required(string)
Notification type
- group: required(one of App, Crm, Domain, Finance, Mail, System)
Notification group
- params: (object)
Additional parameters (json)
Example:
{
"type": "loginsuccess",
"group": "Crm"
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"id": 4208,
"entityIndex": "Level27\\CrmBundle\\Entity\\User_1",
"entityName": "user",
"dtStamp": "1522137018",
"notificationGroup": "Crm",
"type": "loginsuccess",
"entityClass": "Level27\\CrmBundle\\Entity\\User",
"entityId": 1,
"rootEntityClass": null,
"rootEntityId": null,
"status": 21,
"statusDisplay": "queued",
"statusCategory": "yellow",
"sendMode": 0,
"priority": 250,
"subject": null,
"params": [],
"userId": 1,
"contacts": [],
"extraRecipients": [],
"entity": null,
"user": null
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to an user
HTTP status code 500
Response when a user does not have a proper role to access a controller
/contacts
List of all accessible contacts
get /contacts
List of all accessible contacts
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"contacts": [
{
"id": 12,
"type": "email",
"name": "test1@test.be",
"user": {
"id": 1,
"username": "test1@test.be",
"firstName": "Test",
"lastName": "User",
"organisation": {
"id": 1,
"name": "test"
}
}
},
{
"id": 125,
"type": "email",
"name": "test2@test.be",
"user": {
"id": 25,
"username": "test2@test.be",
"firstName": "Test2",
"lastName": "User",
"organisation": {
"id": 13,
"name": "Test2"
}
}
}
]
}
HTTP status code 403
When a user doesn't have role admin or customer admin
/apps
Create a new app
List of all available apps
post /apps
Create a new app
Query Parameters
- source: (string)
Body
Media type: application/json
Type: object
Properties- name: required(string)
Name
- organisation: required(integer)
The unique identifier of an organisation
- autoTeams: (string)
A csv list of team ids
- externalInfo: (string)
ExternalInfo (required when billableitemInfo entities for an Organisation exist in db)
Example:
{
"name": "MyApp",
"organisation": 123,
"autoTeams": null,
"externalInfo": null
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"app": {
"id": 321,
"name": "MyApp",
"status": "ok",
"organisation": {
"id": 123,
"name": "Test Company",
"reseller": null
},
"dtExpires": null,
"billingStatus": "to_create",
"components": []
}
}
HTTP status code 400
Validation of new app failed
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /apps
List of all available apps
Query Parameters
- status: (string)
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- orderBy: (string)
- orderType: (string)
ASC or DESC
- filter: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"apps": [
{
"id": 1,
"name": "API 1",
"status": "ok",
"organisation": {
"id": 123,
"name": "Test Company"
},
"dtExpires": 1517842630,
"billingStatus": "ok",
"components": [
{
"id": 123,
"name": "TestComponent1",
"category": "config",
"appcomponenttype": "mysql"
},
{
"id": 2,
"name": "TestComponent3",
"category": "external",
"appcomponenttype": "php"
}
]
},
{
"id": 3,
"name": "MyApp",
"status": "ok",
"organisation": {
"id": 123,
"name": "Test Company"
},
"dtExpires": null,
"billingStatus": "to_create",
"components": []
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Update an app
Delete a app
Get a app
put /apps/{appId}
Update an app
URI Parameters
- appId: required(string)
The unique identifier of a app
Body
Media type: application/json
Type: object
Properties- name: required(string)
Name
- organisation: required(integer)
The unique identifier of an organisation
- autoTeams: (string)
A csv list of team ids
Example:
{
"name": "MyApp",
"organisation": 123,
"autoTeams": null
}
HTTP status code 204
Response when update of an app succeeded
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to an app
HTTP status code 404
Response when an app is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
delete /apps/{appId}
Delete a app
URI Parameters
- appId: required(string)
The unique identifier of a app
get /apps/{appId}
Get a app
URI Parameters
- appId: required(string)
The unique identifier of a app
HTTP status code 200
Response when app is found
Body
Media type: application/json
Type: object
Example:
{
"app": {
"id": 321,
"name": "MyApp",
"status": "ok",
"organisation": {
"id": 123,
"name": "Test Company",
"reseller": null
},
"dtExpires": null,
"billingStatus": "to_create",
"components": []
}
}
HTTP status code 403
Response when a user does not have access to a app
HTTP status code 404
Response when app is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Get users for an app
get /apps/{appId}/users
Get users for an app
URI Parameters
- appId: required(string)
The unique identifier of a app
Query Parameters
- limit: (integer - default: 5)
- offset: (integer - default: 0)
HTTP status code 200
Response when users are found
Body
Media type: application/json
Type: object
Example:
{
"users": [
{
"id": 1,
"fullname": "Test User",
"username": "admin@test.be",
"email": "admin@test.be",
"firstName": "Test",
"lastName": "User",
"roles": [
"ROLE_CUSTADMIN",
"ROLE_USER"
],
"organisation": {
"id": 123,
"name": "Test Company"
}
},
{
"id": 2,
"fullname": "Test2 Test2",
"username": "test",
"email": "user@test.be",
"firstName": "Test2",
"lastName": "Test2",
"roles": [
"ROLE_FINANCE"
],
"organisation": {
"id": 321,
"name": "Test Company 2"
}
}
]
}
HTTP status code 403
Response when a user does not have access to an app
HTTP status code 404
Response when an app is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Get organisations with acl access to an app
get /apps/{appId}/organisations
Get organisations with acl access to an app
URI Parameters
- appId: required(string)
The unique identifier of a app
HTTP status code 200
Response when organisations are found
Body
Media type: application/json
Type: object
Example:
{
"organisations": [
{
"id": 2,
"name": "test",
"users": [
{
"id": 3,
"username": "user.test@test1.be",
"email": "user.test@test1.be",
"firstName": "Jane",
"lastName": "User",
"roles": [
"ROLE_SYSTEM",
"ROLE_APP",
"ROLE_DOMAIN",
"ROLE_MAIL",
"ROLE_CUSTADMIN",
"ROLE_FINANCE"
],
"status": "ok",
"teams": []
},
{
"id": 4,
"username": "user2.test@test1.be",
"email": "user2.test@test1.be",
"firstName": "John",
"lastName": "User",
"roles": [
"ROLE_APP",
"ROLE_DOMAIN",
"ROLE_MAIL",
"ROLE_SYSTEM"
],
"status": "ok",
"teams": [
{
"id": 2,
"name": "myTeam2"
}
]
}
],
"type": "owner"
},
{
"id": 5,
"name": "tests",
"users": [
{
"id": 17,
"username": "user.test@test2.be",
"email": "user.test@test2.be",
"firstName": "Paul",
"lastName": "User2",
"roles": [
"ROLE_SYSTEM",
"ROLE_APP",
"ROLE_DOMAIN",
"ROLE_MAIL",
"ROLE_CUSTADMIN",
"ROLE_FINANCE"
],
"status": "ok",
"teams": []
}
],
"type": "reseller"
},
{
"id": 6,
"name": "tests6",
"users": [
{
"id": 3,
"username": "user.test@test3.be",
"email": "user.test@test3.be",
"firstName": "Sam",
"lastName": "User3",
"roles": [
"ROLE_SYSTEM",
"ROLE_APP",
"ROLE_DOMAIN",
"ROLE_MAIL",
"ROLE_CUSTADMIN",
"ROLE_FINANCE"
],
"status": "ok",
"teams": []
}
],
"type": "manual"
}
]
}
HTTP status code 403
Response when a user does not have access to an app
HTTP status code 404
Response when an app is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Deactivate or activate an app
post /apps/{appId}/actions
Deactivate or activate an app
URI Parameters
- appId: required(string)
The unique identifier of a app
Body
Media type: application/json
Type: object
Properties- type: required(one of deactivate, activate)
Action type
Examples:
1:
{
"type": "deactivate"
}
2:
{
"type": "activate"
}
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"app": {
"id": 321,
"name": "MyApp",
"status": "ok",
"organisation": {
"id": 123,
"name": "Test Company",
"reseller": null
},
"dtExpires": null,
"billingStatus": "to_create",
"components": []
}
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to an app
HTTP status code 404
Response when an app is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Create a new component
List of all available components
post /apps/{appId}/components
Create a new component
URI Parameters
- appId: required(string)
The unique identifier of a app
Query Parameters
- source: (string)
Body
Media type: application/json
Type: object
Properties- name: required(string)
Name
- category: required(one of config, external, docker)
Category (non-editable)
- appcomponenttype: required(one of asp, mssql, mysql, php, sftp, testbook)
Component type (non-editable)
- system: (integer)
- The unique identifier of a system
- A system has to have component type cookbook installed
- System or Systemgrup are required
- (non-editable)
- systemgroup: (integer)
- The unique identifier of a systemgroup
- At least one of system group system has to have component type cookbook installed
- System or Systemgrup are required
- (non-editable)
- systemprovider: (integer)
The unique identifier of a systemprovider (This functionality is not active yet)
- optional parameters: (string)
Additional params can be required for specific component type. See list of avaliable types and parameters: /appcomponenttypes. Extra paramaters:
- appcomponent type asp:
- "pass": string (default: auto) - not required
- "path": string (default: /public_html) - required
- "sshkeys": array (default: []) - not required (array of sshkey ids)
- "version": string (default:) - required
- appcomponent type mssql:
- "pass": string (default: auto) - not required
- "size": string (default: 100) - not required
- appcomponent type mysql:
- "pass": string (default: auto) - not required
- "host": string (default:) - not required
- appcomponent type php:
- "pass": string (default: auto) - not required
- "path": string (default: /public_html) - not required
- "sshkeys": array (default: []) - not required (array of sshkey ids)
- "version": string (default:) - required (one of php versions installed on appcomponent's system or system's in systemgroup)
- "extraconfig": textarea (default:) - not required
- appcomponent type sftp:
- "pass": string (default: auto) - not required
- "sshkeys": array (default: []) - not required (array of sshkey ids)
- "jailed": boolean (default:false) - not required
Examples:
1:
{
"name": "MyComponent",
"appcomponenttype": "php",
"category": "config",
"system": 123,
"systemgroup": null,
"version": "7.2"
}
2:
{
"name": "MyComponent2",
"appcomponenttype": "php",
"category": "config",
"system": null,
"systemgroup": 5,
"version": "7.0",
"pass": "AdditionalParameter123"
}
3:
{
"name": "MyComponent3",
"appcomponenttype": "mysql",
"category": "config",
"system": 123,
"systemgroup": null
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"component": {
"id": 23,
"name": "MyComponent",
"category": "config",
"appcomponenttype": "php",
"billableitemDetailId": 47,
"appcomponentparameters": {
"user": "pp10003",
"pass": "******",
"path": "/public_html",
"sshkeys": null,
"version": "7.0"
},
"appcomponentparameterDescriptions": {
"user": "Username",
"pass": "password",
"path": "Relative path",
"sshkeys": "sshkeys"
},
"status": "to_create",
"app": {
"id": 1,
"status": "ok"
},
"organisation": {
"id": 123,
"name": "Test Copany"
},
"systems": [
{
"id": 8,
"name": "Test System"
}
],
"systemgroup": null,
"provider": {
"id": null,
"name": null
}
}
}
HTTP status code 400
Validation of new component failed
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /apps/{appId}/components
List of all available components
URI Parameters
- appId: required(string)
The unique identifier of a app
Query Parameters
- status: (string)
- type: (string)
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- orderBy: (string)
- orderType: (string)
ASC or DESC
- filter: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"components": [
{
"id": 23,
"name": "MyComponent",
"category": "config",
"appcomponenttype": "php",
"billableitemDetailId": 47,
"appcomponentparameters": {
"user": "pp10003",
"pass": "******",
"path": "/public_html",
"sshkeys": null,
"version": "7.0"
},
"appcomponentparameterDescriptions": {
"user": "Username",
"pass": "password",
"path": "Relative path",
"sshkeys": "sshkeys"
},
"status": "to_create",
"app": {
"id": 1,
"status": "ok"
},
"organisation": {
"id": 123,
"name": "Test Company"
},
"systems": [
{
"id": 8,
"name": "Test System"
}
],
"systemgroup": null,
"provider": {
"id": null,
"name": null
}
},
{
"id": 24,
"name": "testTTTT",
"category": null,
"appcomponenttype": "mysql",
"billableitemDetailId": 33,
"appcomponentparameters": {
"user": "ml11097",
"pass": "******",
"host": null
},
"appcomponentparameterDescriptions": {
"user": "Username",
"pass": "encrypted password",
"host": "%"
},
"status": "to_create",
"app": {
"id": 1,
"status": "ok"
},
"organisation": {
"id": 123,
"name": "Test Company"
},
"systems": [
{
"id": 8,
"name": "Test System"
}
],
"systemgroup": null,
"provider": {
"id": null,
"name": null
}
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Update a component
Delete a component
Get a component
put /apps/{appId}/components/{componentId}
Update a component
URI Parameters
- appId: required(string)
The unique identifier of a app
- componentId: required(string)
The unique identifier of a component
Body
Media type: application/json
Type: object
Properties- name: required(string)
Name
- category: required(one of config, external, docker)
Category (non-editable)
- appcomponenttype: required(one of asp, mssql, mysql, php, sftp, testbook)
Component type (non-editable)
- system: (integer)
- The unique identifier of a system
- A system has to have component type cookbook installed
- System or Systemgrup are required
- (non-editable)
- systemgroup: (integer)
- The unique identifier of a systemgroup
- At least one of system group system has to have component type cookbook installed
- System or Systemgrup are required
- (non-editable)
- systemprovider: (integer)
The unique identifier of a systemprovider (This functionality is not active yet)
- optional parameters: (string)
Additional params can be required for specific component type. See list of avaliable types and parameters: /appcomponenttypes. Extra paramaters:
- appcomponent type asp:
- "pass": string (default: auto) - not required
- "path": string (default: /public_html) - required
- "sshkeys": array (default: []) - not required (array of sshkey ids)
- "version": string (default:) - required
- appcomponent type mssql:
- "pass": string (default: auto) - not required
- "size": string (default: 100) - not required
- appcomponent type mysql:
- "pass": string (default: auto) - not required
- "host": string (default:) - not required
- appcomponent type php:
- "pass": string (default: auto) - not required
- "path": string (default: /public_html) - not required
- "sshkeys": array (default: []) - not required (array of sshkey ids)
- "version": string (default:) - required (one of php versions installed on appcomponent's system or system's in systemgroup)
- "extraconfig": textarea (default:) - not required
- appcomponent type sftp:
- "pass": string (default: auto) - not required
- "sshkeys": array (default: []) - not required (array of sshkey ids)
- "jailed": boolean (default:false) - not required
Examples:
1:
{
"name": "MyComponent",
"appcomponenttype": "php",
"category": "config",
"system": 123,
"systemgroup": null,
"version": "7.2"
}
2:
{
"name": "MyComponent2",
"appcomponenttype": "php",
"category": "config",
"system": null,
"systemgroup": 5,
"version": "7.0",
"pass": "AdditionalParameter123"
}
3:
{
"name": "MyComponent3",
"appcomponenttype": "mysql",
"category": "config",
"system": 123,
"systemgroup": null
}
HTTP status code 204
Response when update of a component succeeded
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a component
HTTP status code 404
Response when component is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
delete /apps/{appId}/components/{componentId}
Delete a component
URI Parameters
- appId: required(string)
The unique identifier of a app
- componentId: required(string)
The unique identifier of a component
HTTP status code 204
Request successfully processed
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a component
HTTP status code 404
Response when component is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /apps/{appId}/components/{componentId}
Get a component
URI Parameters
- appId: required(string)
The unique identifier of a app
- componentId: required(string)
The unique identifier of a component
HTTP status code 200
Response when component is found
Body
Media type: application/json
Type: object
Example:
{
"component": {
"id": 23,
"name": "MyComponent",
"category": "config",
"appcomponenttype": "php",
"billableitemDetailId": 47,
"appcomponentparameters": {
"user": "pp10003",
"pass": "******",
"path": "/public_html",
"sshkeys": null,
"version": "7.0"
},
"appcomponentparameterDescriptions": {
"user": "Username",
"pass": "password",
"path": "Relative path",
"sshkeys": "sshkeys"
},
"status": "to_create",
"app": {
"id": 1,
"status": "ok"
},
"organisation": {
"id": 123,
"name": "Test Copany"
},
"systems": [
{
"id": 8,
"name": "Test System"
}
],
"systemgroup": null,
"provider": {
"id": null,
"name": null
}
}
}
HTTP status code 403
Response when a user does not have access to a component
HTTP status code 404
Response when component is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Execute an action for an appcomponent
post /apps/{appId}/components/{componentId}/actions
Execute an action for an appcomponent
URI Parameters
- appId: required(string)
The unique identifier of a app
- componentId: required(string)
The unique identifier of a component
Body
Media type: application/json
Type: object
Properties- type: required(string)
Action type | Get a list of appcomponent types to see what actions are allowed
Examples:
1:
{
"type": "start"
}
2:
{
"type": "stop"
}
Create a new url
List of all available urls
post /apps/{appId}/components/{componentId}/urls
Create a new url
URI Parameters
- appId: required(string)
The unique identifier of a app
- componentId: required(string)
The unique identifier of a component
Query Parameters
- source: (string)
Body
Media type: application/json
Type: object
Properties- content: required(string)
Url (unique)
- sslForce: (boolean)
Force ssl (default: true)
- sslCertificate: (integer)
The unique identifier of a SslCertificate
- It must match the url's content
- handleDns: (boolean)
Should domain records be created? (default: false)
Examples:
1:
{
"content": "test1.test.be",
"sslForce": true,
"sslCertificate": 123
}
2:
{
"content": "test2.test.be",
"sslForce": false,
"sslCertificate": null,
"handleDns": true
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"url": {
"id": 1,
"content": "testurl.be",
"https": true,
"status": "ok",
"sslForce": true,
"appcomponent": {
"id": 3,
"name": "Test component",
"appcomponenttype": "php",
"status": "ok"
},
"sslCertificate": {
"id": 123,
"name": "TestCert1",
"sslStatus": "ok",
"status": "ok"
},
"matchingCertificates": [
{
"id": 123,
"name": "TestCert1"
},
{
"id": 321,
"name": "TestCert2"
}
],
"type": "linked"
}
}
HTTP status code 400
Validation of new url failed
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /apps/{appId}/components/{componentId}/urls
List of all available urls
URI Parameters
- appId: required(string)
The unique identifier of a app
- componentId: required(string)
The unique identifier of a component
Query Parameters
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- orderBy: (string)
- orderType: (string)
ASC or DESC
- filter: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"urls": [
{
"id": 1,
"content": "testurl.be",
"https": false,
"status": "ok",
"sslForce": true,
"appcomponent": {
"id": 3,
"name": "Test component",
"appcomponenttype": "php",
"status": "ok"
},
"type": "linked",
"sslCertificate": null
},
{
"id": 2,
"content": "www.testurl.be",
"https": false,
"status": "ok",
"sslForce": true,
"appcomponent": {
"id": 3,
"name": "Test component",
"appcomponenttype": "php",
"status": "ok"
},
"type": "linked",
"sslCertificate": null
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Update a url
Delete a url
Get a url
put /apps/{appId}/components/{componentId}/urls/{urlId}
Update a url
URI Parameters
- appId: required(string)
The unique identifier of a app
- componentId: required(string)
The unique identifier of a component
- urlId: required(string)
The unique identifier of a url
Body
Media type: application/json
Type: object
Properties- content: required(string)
Url (unique)
- sslForce: (boolean)
Force ssl (default: true)
- sslCertificate: (integer)
The unique identifier of a SslCertificate
- It must match the url's content
- handleDns: (boolean)
Should domain records be created? (default: false)
Examples:
1:
{
"content": "test1.test.be",
"sslForce": true,
"sslCertificate": 123
}
2:
{
"content": "test2.test.be",
"sslForce": false,
"sslCertificate": null,
"handleDns": true
}
HTTP status code 204
Response when update of a url succeeded
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a url
HTTP status code 404
Response when url is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
delete /apps/{appId}/components/{componentId}/urls/{urlId}
Delete a url
URI Parameters
- appId: required(string)
The unique identifier of a app
- componentId: required(string)
The unique identifier of a component
- urlId: required(string)
The unique identifier of a url
get /apps/{appId}/components/{componentId}/urls/{urlId}
Get a url
URI Parameters
- appId: required(string)
The unique identifier of a app
- componentId: required(string)
The unique identifier of a component
- urlId: required(string)
The unique identifier of a url
HTTP status code 200
Response when url is found
Body
Media type: application/json
Type: object
Example:
{
"url": {
"id": 1,
"content": "testurl.be",
"https": true,
"status": "ok",
"sslForce": true,
"appcomponent": {
"id": 3,
"name": "Test component",
"appcomponenttype": "php",
"status": "ok"
},
"sslCertificate": {
"id": 123,
"name": "TestCert1",
"sslStatus": "ok",
"status": "ok"
},
"matchingCertificates": [
{
"id": 123,
"name": "TestCert1"
},
{
"id": 321,
"name": "TestCert2"
}
],
"type": "linked"
}
}
HTTP status code 403
Response when a user does not have access to a url
HTTP status code 404
Response when url is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Get available backups for an appcomponent
get /apps/{appId}/components/{componentId}/availablebackups
/apps/{appId}/components/{componentId}/organisations/{organisationId}/users/{userId}/nonadded-sshkeys get
Get all sshkeys which can be added to a component for a logged in user
get /apps/{appId}/components/{componentId}/organisations/{organisationId}/users/{userId}/nonadded-sshkeys
Get all sshkeys which can be added to a component for a logged in user
URI Parameters
- appId: required(string)
The unique identifier of a app
- componentId: required(string)
The unique identifier of a component
- organisationId: required(string)
- userId: required(string)
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"sshkeys": [
{
"id": 1,
"description": " My sshkey 1",
"content": "ssh-rsa AAAAB3NzaD3331yc2EAAAADAQABAAABAQC+BlfTestsehGmZLGvzBnEN2fAtlCdvGQ1G8TeststeststststaZa1iiSY8QbJhSY8nx64bgsmVAylkwcRVl2AT6aktupYMR+dEkNZci6pateststststsTbsyshDsenaaFmIaYZjbYxnpUVESySLVodMN3+ZHl+k3BLkjV6RsGmqrm52axuLwbwUM8KcbECy8dfISrhnolfKQRKWQVz15CKVoouk5aUO3lhdjAkgc6afCmKzTestTestETsststststzeJnOfuWav7qByFvzq//Lwx0AxonJK1Test5k+K3uixntDqlCrKe9KMqizZqPHYJ1sDrTzZfcg/iqnaNcuxqQ/9K8IhhEzVwVZ test@test-MacBook-Pro.local",
"status": "ok",
"fingerprint": "85:b7:c8:37:71:7b:e6:57:53:59:04:a6:7c:ce:ce:7a",
"organisation": {
"id": 1,
"name": "level27"
}
},
{
"id": 2,
"description": " My sshkey 2",
"content": "ssh-rsa AAAAB3NzaD3331yc2EAAAADAQABAAABAQC+BlfTestsehGmZLGvzBnEN2fAtlCdvGQ1G8TeststeststststaZa1iiSY8QbJhSY8nx64bgsmVAylkwcRVl2AT6aktupYMR+dEkNZci6pateststststsTbsyshDsenaaFmIaYZjbYxnpUVESySLVodMN3+ZHl+k3BLkjV6RsGmqrm52axuLwbwUM8KcbECy8dfISrhnolfKQRKWQVz15CKVoouk5aUO3lhdjAkgc6afCmKzTestTestETsststststzeJnOfuWav7qByFvzq//Lwx0AxonJK1Test5k+K3uixntDqlCrKe9KMqizZqPHYJ1sDrTzZfcg/iqnaNcuxqQ/9K8I22222222 test2@test-MacBook-Pro.local",
"status": "ok",
"fingerprint": "85:b7:c8:37:71:7b:e6:57:53:59:04:a6:7c:ce:ce:2a",
"organisation": {
"id": 1,
"name": "level27"
}
}
]
}
HTTP status code 403
Response when a user does not have access to a component
Create a new sslcertificate
List of all available sslcertificates
post /apps/{appId}/sslcertificates
Create a new sslcertificate
URI Parameters
- appId: required(string)
The unique identifier of a app
Query Parameters
- source: (string)
Body
Media type: application/json
Type: object
Properties- name: required(string)
Name
- sslType: (one of letsencrypt, xolphin, own)
Ssl type
- autoSslCertificateUrls: (string)
AutoSslCertificateUrls: url or csv list of urls (required for type letsencrypt)
- sslKey: (string)
Ssl key (Required for ssl type own)
- sslCrt: (string)
Ssl crt (Required for ssl type own)
- sslCabundle: (string)
Ssl cabundle (Required for ssl type own)
- autoUrlLink: (boolean)
If 'autoUrlLink' is set to true then a certificate's urls, which don't have another cettificate, will be linked to the certificate after successful creation (default: false)
- sslForce: (boolean)
Force ssl (default: true)
Examples:
1:
{
"name": "MyCertificate1",
"sslType": "letsencrypt",
"autoSslCertificateUrls": "*.testdomain.be",
"autoUrlLink": true,
"sslForce": true
}
2:
{
"name": "MyCertificate2",
"sslType": "xolphin",
"autoSslCertificateUrls": "test1.testdomain.be, test2.testdomain.be",
"autoUrlLink": false
}
3:
{
"name": "MyCertificate3",
"sslType": "own",
"autoSslCertificateUrls": null,
"sslKey": "-----BEGIN RSA PRIVATE KEY-----\\(...)-----END RSA PRIVATE KEY-----",
"sslCrt": "-----BEGIN CERTIFICATE-----(...)-----END CERTIFICATE-----",
"sslCabundle": "-----BEGIN CERTIFICATE-----(...)-----END CERTIFICATE-----",
"autoUrlLink": true
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"sslCertificate": {
"id": 123,
"name": "MyCertificate1",
"sslType": "xolphin",
"sslCrt": "CERTIFICATE_HERE",
"sslCabundle": "CERTIFICATE_HERE",
"sslKey": "***",
"newSslKey": "***",
"autoUrlLink": false,
"sslForce": false,
"sslStatus": "ok",
"status": "ok",
"reminderStatus": "ok",
"dtExpires": "1545226069",
"validationParams": null,
"source": null,
"billableitemDetail": {
"id": 34546,
"price": null,
"dtExpires": "1657956378",
"productPrice": {
"id": 2420,
"period": 12,
"price": "4000"
},
"product": {
"id": "sslcertificate_comodo_single_domain",
"description": "Comodo Domain validation Single domain",
"allowQuantityChange": null,
"parentOrganisation": null
}
},
"statusCategory": "green",
"sslStatusCategory": "green",
"urls": [
{
"id": 321,
"content": "cer1.testdomain.be",
"status": "ok"
}
],
"sslCertificateUrls": [
{
"id": 28,
"content": "*.testdomain.be",
"sslStatus": "validation_succeeded",
"errorMsg": null,
"validationType": "dns"
}
],
"matchingUrls": [
"cer1.testdomain.be",
"cer1.testdomain.be",
"cer1.testdomain.be"
]
}
}
HTTP status code 400
Validation of new sslcertificate failed
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /apps/{appId}/sslcertificates
List of all available sslcertificates
URI Parameters
- appId: required(string)
The unique identifier of a app
Query Parameters
- status: (string)
- sslType: (string)
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- orderBy: (string)
- orderType: (string)
ASC or DESC
- filter: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"total": 1,
"sslCertificates": [
{
"id": 7,
"name": "Certificate 72672t31",
"sslType": "letsencrypt",
"sslKey": "***",
"newSslKey": "***",
"sslCrt": "SSLCERT_HERE",
"sslCabundle": "CABUNDLE_HERE",
"autoUrlLink": false,
"sslForce": false,
"sslStatus": "ok",
"status": "ok",
"reminderStatus": 1,
"dtExpires": "1620173261",
"validationParams": null,
"source": null,
"sslCertificateUrls": [
{
"id": 7,
"content": "1e211.test.be",
"sslStatus": "validation_succeeded",
"errorMsg": null,
"sslStatusCategory": "green",
"validationType": "http"
}
],
"billableitemDetail": null,
"statusCategory": "green",
"sslStatusCategory": "green",
"urls": [
{
"id": 215,
"content": "1e211.test.be",
"status": "ok",
"statusCategory": "green"
}
],
"matchingUrls": [
"1e211.test.be"
]
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Update sslCertificate
Delete a sslcertificate
Get a sslcertificate
put /apps/{appId}/sslcertificates/{sslcertificateId}
Update sslCertificate
URI Parameters
- appId: required(string)
The unique identifier of a app
- sslcertificateId: required(string)
The unique identifier of a sslcertificate
Body
Media type: application/json
Type: object
Properties- name: required(string)
Name
- sslType: (one of letsencrypt, xolphin, own)
Ssl type
Example:
{
"name": "MyCertificate1NameChanged",
"sslType": "letsencrypt"
}
HTTP status code 204
Request successfully processed
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to an app
HTTP status code 404
Response when an sslcertificate is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
delete /apps/{appId}/sslcertificates/{sslcertificateId}
Delete a sslcertificate
URI Parameters
- appId: required(string)
The unique identifier of a app
- sslcertificateId: required(string)
The unique identifier of a sslcertificate
HTTP status code 204
Request successfully processed
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a sslcertificate
HTTP status code 404
Response when sslcertificate is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /apps/{appId}/sslcertificates/{sslcertificateId}
Get a sslcertificate
URI Parameters
- appId: required(string)
The unique identifier of a app
- sslcertificateId: required(string)
The unique identifier of a sslcertificate
HTTP status code 200
Response when sslcertificate is found
Body
Media type: application/json
Type: object
Example:
{
"sslCertificate": {
"id": 123,
"name": "MyCertificate1",
"sslType": "xolphin",
"sslCrt": "CERTIFICATE_HERE",
"sslCabundle": "CERTIFICATE_HERE",
"sslKey": "***",
"newSslKey": "***",
"autoUrlLink": false,
"sslForce": false,
"sslStatus": "ok",
"status": "ok",
"reminderStatus": "ok",
"dtExpires": "1545226069",
"validationParams": null,
"source": null,
"billableitemDetail": {
"id": 34546,
"price": null,
"dtExpires": "1657956378",
"productPrice": {
"id": 2420,
"period": 12,
"price": "4000"
},
"product": {
"id": "sslcertificate_comodo_single_domain",
"description": "Comodo Domain validation Single domain",
"allowQuantityChange": null,
"parentOrganisation": null
}
},
"statusCategory": "green",
"sslStatusCategory": "green",
"urls": [
{
"id": 321,
"content": "cer1.testdomain.be",
"status": "ok"
}
],
"sslCertificateUrls": [
{
"id": 28,
"content": "*.testdomain.be",
"sslStatus": "validation_succeeded",
"errorMsg": null,
"validationType": "dns"
}
],
"matchingUrls": [
"cer1.testdomain.be",
"cer1.testdomain.be",
"cer1.testdomain.be"
]
}
}
HTTP status code 403
Response when a user does not have access to a sslcertificate
HTTP status code 404
Response when sslcertificate is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Create a job for an SslCertificate
post /apps/{appId}/sslcertificates/{sslcertificateId}/actions
Create a job for an SslCertificate
URI Parameters
- appId: required(string)
The unique identifier of a app
- sslcertificateId: required(string)
The unique identifier of a sslcertificate
Body
Media type: application/json
Type: object
Properties- type: required(one of validateChallenge, retry)
Action type
Examples:
1:
{
"type": "validateChallenge"
}
2:
{
"type": "retry"
}
HTTP status code 204
Request successfully processed
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to an app
HTTP status code 404
Response when an sslcertificate is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Fix an invalid certificate
post /apps/{appId}/sslcertificates/{sslcertificateId}/fix
Fix an invalid certificate
URI Parameters
- appId: required(string)
The unique identifier of a app
- sslcertificateId: required(string)
The unique identifier of a sslcertificate
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"sslCertificate": {
"id": 123,
"name": "MyCertificate1",
"sslType": "xolphin",
"sslCrt": "CERTIFICATE_HERE",
"sslCabundle": "CERTIFICATE_HERE",
"sslKey": "***",
"newSslKey": "***",
"autoUrlLink": false,
"sslForce": false,
"sslStatus": "ok",
"status": "ok",
"reminderStatus": "ok",
"dtExpires": "1545226069",
"validationParams": null,
"source": null,
"billableitemDetail": {
"id": 34546,
"price": null,
"dtExpires": "1657956378",
"productPrice": {
"id": 2420,
"period": 12,
"price": "4000"
},
"product": {
"id": "sslcertificate_comodo_single_domain",
"description": "Comodo Domain validation Single domain",
"allowQuantityChange": null,
"parentOrganisation": null
}
},
"statusCategory": "green",
"sslStatusCategory": "green",
"urls": [
{
"id": 321,
"content": "cer1.testdomain.be",
"status": "ok"
}
],
"sslCertificateUrls": [
{
"id": 28,
"content": "*.testdomain.be",
"sslStatus": "validation_succeeded",
"errorMsg": null,
"validationType": "dns"
}
],
"matchingUrls": [
"cer1.testdomain.be",
"cer1.testdomain.be",
"cer1.testdomain.be"
]
}
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to an app
HTTP status code 404
Response when an sslcertificate is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Return a private key for type own sslCertificate
get /apps/{appId}/sslcertificates/{sslcertificateId}/key
Return a private key for type own sslCertificate
URI Parameters
- appId: required(string)
The unique identifier of a app
- sslcertificateId: required(string)
The unique identifier of a sslcertificate
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"sslKey": "PRIVATE_KEY_HERE"
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to an app
HTTP status code 404
Response when an sslcertificate is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Get all urls for an app
get /apps/{appId}/urls
Get all urls for an app
URI Parameters
- appId: required(string)
The unique identifier of a app
Query Parameters
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- orderBy: (string)
- orderType: (string)
ASC or DESC
- filter: (string)
HTTP status code 200
Response when urls are found
Body
Media type: application/json
Type: object
Example:
{
"total": 12,
"urls": [
{
"id": 1,
"content": "test1.testdomain.be",
"sslCertificate": {
"id": 25,
"name": "testCertificate2"
},
"appcomponent": {
"id": 13,
"app": {
"id": 7,
"name": "My App"
}
},
"status": "ok",
"statusCategory": "green"
},
{
"id": 10,
"content": "test2.testdomain.be",
"sslCertificate": {
"id": 22,
"name": "testCertificate1"
},
"appcomponent": {
"id": 13,
"app": {
"id": 7,
"name": "My App"
}
},
"status": "ok",
"statusCategory": "green"
},
{
"id": 48,
"content": "test2.testdomain.be",
"sslCertificate": null,
"appcomponent": {
"id": 13,
"app": {
"id": 7,
"name": "My App"
}
},
"status": "ok",
"statusCategory": "green"
}
]
}
HTTP status code 403
Response when a user does not have access to an app
HTTP status code 404
Response when an app is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Get all matching sslCertificates for the url
get /apps/{appId}/matchingsslcetificates
Get all matching sslCertificates for the url
URI Parameters
- appId: required(string)
The unique identifier of a app
Query Parameters
- content: required(string)
HTTP status code 200
Response when urls are found
Body
Media type: application/json
Type: object
Example:
{
"sslCertificates": [
{
"id": 21,
"name": "Let's Encrypt: test1.testdomain.be"
},
{
"id": 24,
"name": "Xolphin: test1.testdomain.be, test2.testdomain.be"
},
{
"id": 25,
"name": "Own Certificate"
}
]
}
HTTP status code 403
Response when a user does not have access to an app
HTTP status code 404
Response when an app is not found
Create a new migration
List of all available migrations
post /apps/{appId}/migrations
Create a new migration
URI Parameters
- appId: required(string)
The unique identifier of a app
Body
Media type: application/json
Type: object
Properties- migrationType: required(one of automatic (all migration steps are done automatically), confirmed (a user has to confirm each migration step))
Migration type
- dtPlanned: (string)
DateTime - timestamp
- migrationItemArray: required(string)
Migration items. Each migration item should contain:
- type (php, mysql)
- source (cp4, cp3, external)
- sourceInformation (appcomponent_id, virtualdir_id, database_id, login + password)
- destinationEntity (appcomponent, system, systemgroup)
- destinationEntityId
- ord
- sshkey (open ssh format)
Example:
{
"migrationType": "confirmed",
"dtPlanned": null,
"migrationItemArray": [
{
"type": "php",
"source": "cp4",
"sourceInformation": 122,
"destinationEntity": "systemgroup",
"destinationEntityId": 12,
"ord": "1",
"sshkey": null
}
]
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"migration": {
"id": 5,
"migrationType": "confirmed",
"dtPlanned": null,
"status": "investigating",
"confirmationStatus": null,
"app": {
"id": 122,
"name": "php-test"
},
"migrationItems": [
{
"id": 5,
"type": "php",
"source": "cp4",
"sourceInformation": "122",
"destinationEntity": "systemgroup",
"destinationEntityId": 12,
"status": null,
"ord": 1,
"sshkey": null,
"investigationResults": [],
"preparationResults": [],
"presyncResults": [],
"migrationResults": [],
"logs": []
}
]
}
}
HTTP status code 400
Validation of new migration failed
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /apps/{appId}/migrations
List of all available migrations
URI Parameters
- appId: required(string)
The unique identifier of a app
Query Parameters
- status: (string)
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- orderBy: (string)
- orderType: (string)
ASC or DESC
- filter: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"migrations": [
{
"id": 1,
"migrationType": "confirmed",
"dtPlanned": null,
"status": "investigating",
"confirmationStatus": 340
},
{
"id": 2,
"migrationType": "automatic",
"dtPlanned": null,
"status": "investigating",
"confirmationStatus": null
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Update an migration
Get a migration
put /apps/{appId}/migrations/{migrationId}
Update an migration
URI Parameters
- appId: required(string)
The unique identifier of a app
- migrationId: required(string)
The unique identifier of a migration
Body
Media type: application/json
Type: object
Properties- migrationType: required(one of automatic (all migration steps are done automatically), confirmed (a user has to confirm each migration step))
Migration type
- dtPlanned: (string)
DateTime - timestamp
Example:
{
"migrationType": "confirmed",
"dtPlanned": null
}
HTTP status code 204
Response when update of a migartion succeeded
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to an app
HTTP status code 404
Response when an app is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /apps/{appId}/migrations/{migrationId}
Get a migration
URI Parameters
- appId: required(string)
The unique identifier of a app
- migrationId: required(string)
The unique identifier of a migration
HTTP status code 200
Response when migration is found
Body
Media type: application/json
Type: object
Example:
{
"migration": {
"id": 5,
"migrationType": "confirmed",
"dtPlanned": null,
"status": "investigating",
"confirmationStatus": null,
"app": {
"id": 122,
"name": "php-test"
},
"migrationItems": [
{
"id": 5,
"type": "php",
"source": "cp4",
"sourceInformation": "122",
"destinationEntity": "systemgroup",
"destinationEntityId": 12,
"status": null,
"ord": 1,
"sshkey": null,
"investigationResults": [],
"preparationResults": [],
"presyncResults": [],
"migrationResults": [],
"logs": []
}
]
}
}
HTTP status code 403
Response when a user does not have access to a migration
HTTP status code 404
Response when migration is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Execute an action for a migration
post /apps/{appId}/migrations/{migrationId}/actions
Execute an action for a migration
URI Parameters
- appId: required(string)
The unique identifier of a app
- migrationId: required(string)
The unique identifier of a migration
Body
Media type: application/json
Type: object
Properties- type: required(one of confirm, deny, restart)
Action type
Examples:
1:
{
"type": "confirm"
}
2:
{
"type": "deny"
}
3:
{
"type": "retry"
}
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"migration": {
"id": 5,
"migrationType": "confirmed",
"dtPlanned": null,
"status": "investigating",
"confirmationStatus": null,
"app": {
"id": 122,
"name": "php-test"
},
"migrationItems": [
{
"id": 5,
"type": "php",
"source": "cp4",
"sourceInformation": "122",
"destinationEntity": "systemgroup",
"destinationEntityId": 12,
"status": null,
"ord": 1,
"sshkey": null,
"investigationResults": [],
"preparationResults": [],
"presyncResults": [],
"migrationResults": [],
"logs": []
}
]
}
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to an app
HTTP status code 404
Response when an app is not found
Create a new restore
List of all available restores
post /apps/{appId}/restores
Create a new restore
URI Parameters
- appId: required(string)
The unique identifier of a app
Body
Media type: application/json
Type: object
Properties- appcomponent: required(integer)
The unique identifier of an appcomponent
- availableBackup: required(integer)
The unique identifier of aan availableBackup
Example:
{
"appcomponent": "123,",
"availableBackup": 321
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"restore": {
"id": 1,
"filename": "xhsahgda7.rar",
"size": 1024,
"dtExpires": 1607731200,
"status": "to_create",
"appcomponent": {
"id": 17171,
"name": "test",
"appcomponenttype": "php",
"appcomponentparameters": {
"username": "vd12344",
"pass": "*****"
},
"status": "ok",
"app": {
"id": 7341
}
},
"availableBackup": {
"id": 18,
"date": "1600217679",
"volumeUid": "23y12874y2heb",
"storageUid": "2ey82y4u21h4j",
"status": 10,
"snapshotName": "b-2020556-025439",
"system": {
"id": 1151,
"fqdn": "d7ss0a656c.test.eu",
"customerFqdn": null,
"name": "behatForceSystem1"
},
"restoreSystem": {
"id": 1152,
"fqdn": "sjdnjwss.test.eu",
"customerFqdn": null,
"name": "behatForceSystem2"
}
}
}
}
HTTP status code 400
Validation of new restore failed
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /apps/{appId}/restores
List of all available restores
URI Parameters
- appId: required(string)
The unique identifier of a app
Query Parameters
- status: (string)
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- orderBy: (string)
- orderType: (string)
ASC or DESC
- filter: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"restores": [
{
"id": 1,
"filename": "xhsahgda7.rar",
"size": 1024,
"dtExpires": 1607731200,
"status": "to_create",
"appcomponent": {
"id": 17171,
"name": "test",
"appcomponenttype": "php",
"appcomponentparameters": {
"username": "vd12344",
"pass": "*****"
},
"status": "ok",
"app": {
"id": 7341
}
},
"availableBackup": {
"id": 18,
"date": "1600217679",
"volumeUid": "23y12874y2heb",
"storageUid": "2ey82y4u21h4j",
"status": 10,
"snapshotName": "b-2020556-025439",
"system": {
"id": 1151,
"fqdn": "d7ss0a656c.test.eu",
"customerFqdn": null,
"name": "behatForceSystem1"
},
"restoreSystem": {
"id": 1152,
"fqdn": "sjdnjwss.test.eu",
"customerFqdn": null,
"name": "behatForceSystem2"
}
}
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Update a restore
Delete a restore
Get a restore
put /apps/{appId}/restores/{restoreId}
Update a restore
URI Parameters
- appId: required(string)
The unique identifier of a app
- restoreId: required(string)
The unique identifier of a restore
Body
Media type: application/json
Type: object
Properties- appcomponent: required(integer)
The unique identifier of an appcomponent
- availableBackup: required(integer)
The unique identifier of aan availableBackup
Example:
{
"appcomponent": "123,",
"availableBackup": 321
}
HTTP status code 204
Response when update of a restore succeeded
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a restore
HTTP status code 404
Response when restore is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
delete /apps/{appId}/restores/{restoreId}
Delete a restore
URI Parameters
- appId: required(string)
The unique identifier of a app
- restoreId: required(string)
The unique identifier of a restore
HTTP status code 204
Request successfully processed
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a restore
HTTP status code 404
Response when restore is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /apps/{appId}/restores/{restoreId}
Get a restore
URI Parameters
- appId: required(string)
The unique identifier of a app
- restoreId: required(string)
The unique identifier of a restore
HTTP status code 200
Response when restore is found
Body
Media type: application/json
Type: object
Example:
{
"restore": {
"id": 1,
"filename": "xhsahgda7.rar",
"size": 1024,
"dtExpires": 1607731200,
"status": "to_create",
"appcomponent": {
"id": 17171,
"name": "test",
"appcomponenttype": "php",
"appcomponentparameters": {
"username": "vd12344",
"pass": "*****"
},
"status": "ok",
"app": {
"id": 7341
}
},
"availableBackup": {
"id": 18,
"date": "1600217679",
"volumeUid": "23y12874y2heb",
"storageUid": "2ey82y4u21h4j",
"status": 10,
"snapshotName": "b-2020556-025439",
"system": {
"id": 1151,
"fqdn": "d7ss0a656c.test.eu",
"customerFqdn": null,
"name": "behatForceSystem1"
},
"restoreSystem": {
"id": 1152,
"fqdn": "sjdnjwss.test.eu",
"customerFqdn": null,
"name": "behatForceSystem2"
}
}
}
}
HTTP status code 403
Response when a user does not have access to a restore
HTTP status code 404
Response when restore is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Get a restore file
get /apps/{appId}/restores/{restoreId}/downloand
Get a restore file
URI Parameters
- appId: required(string)
The unique identifier of a app
- restoreId: required(string)
The unique identifier of a restore
Add access to an app
post /apps/{appId}/acls
Add access to an app
URI Parameters
- appId: required(string)
The unique identifier of a app
Body
Media type: application/json
Type: object
Properties- organisation: required(integer)
The unique identifier of an organisation
Example:
{
"organisation": 123
}
HTTP status code 201
Response when access to an app was successfully added
Body
Media type: application/json
Type: object
Example:
{
"acl": {
"id": 56,
"object": "Level27\\AppBundle\\Entity\\App",
"objectId": 1,
"permissions": null,
"extra": null,
"type": "manual",
"organisation": {
"id": 123,
"name": "Test Company"
}
}
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to an app
HTTP status code 404
Response when an app is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Remove access to an app
delete /apps/{appId}/acls/{organisationId}
Remove access to an app
URI Parameters
- appId: required(string)
The unique identifier of a app
- organisationId: required(string)
HTTP status code 204
Response when access to an app was successfully removed
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to an app
HTTP status code 404
Response when an app is not found
HTTP status code 500
Response when a user does not have a proper role to access a control
Get notifications for an app
Send a notification for an app (currently no available app notifications exist)
get /apps/{appId}/notifications
Get notifications for an app
URI Parameters
- appId: required(string)
The unique identifier of a app
Query Parameters
- orderBy: (string)
- orderType: (string)
ASC or DESC
- type: (string)
- limit: (integer - default: 5)
- offset: (integer - default: 0)
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"notifications": [
{
"id": 1653,
"entityIndex": "Level27\\AppBundle\\Entity\\Appcomponent_4",
"entityName": "appcomponent",
"dtStamp": "1516708333",
"notificationGroup": "App",
"type": "jobremoveAppcomponent50",
"entityClass": "Level27\\AppBundle\\Entity\\Appcomponent",
"entityId": 4,
"rootEntityClass": "Level27\\AppBundle\\Entity\\App",
"rootEntityId": 1,
"status": 50,
"statusDisplay": "success",
"statusCategory": "green",
"sendMode": 0,
"priority": 250,
"subject": "App component Php7 deleted succesfully",
"params": {
"exceptionCode": null,
"exceptionMsg": null,
"systemId": 42
},
"userId": 1,
"contacts": [
{
"id": 1183,
"dtStamp": "1516708333",
"fullName": "Test User",
"language": "en",
"message": null,
"status": 50,
"type": "email",
"value": "testuser@test.be",
"contactId": 1
}
],
"extraRecipients": [],
"entity": {
"id": 4,
"name": "Php7",
"category": "config",
"appcomponenttype": "php",
"billableitemDetailId": 101,
"appcomponentparameters": {
"user": "pp10014",
"pass": "******",
"path": "/public_html",
"sshkeys": null
},
"appcomponentparameterDescriptions": {
"user": "Username",
"pass": "password",
"path": "Relative path",
"sshkeys": "sshkeys"
},
"status": "deleted",
"statusCategory": "green",
"app": {
"id": 1,
"status": "ok"
},
"organisation": {
"id": 123,
"name": "Test Company"
},
"systems": [
{
"id": 42,
"name": "Test System"
}
],
"systemgroup": null,
"provider": {
"id": null,
"name": null
}
},
"user": null
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
post /apps/{appId}/notifications
Send a notification for an app (currently no available app notifications exist)
URI Parameters
- appId: required(string)
The unique identifier of a app
Create a billableitem (action only for admin)
post /apps/{appId}/bill
Create a billableitem (action only for admin)
URI Parameters
- appId: required(string)
The unique identifier of a app
Body
Media type: application/json
Type: object
Properties- externalInfo: (string)
ExternalInfo (required when billableitemInfo entities for an Organisation exist in db)
Example:
{
"externalInfo": "123B5"
}
HTTP status code 201
Response when a billableitem was successfully created
Body
Media type: application/json
Type: object
Example:
{
"billableitem": {
"id": 21,
"organisation": {
"id": 123,
"name": "Test Company"
},
"status": 10,
"statusDisplay": "ok",
"description": "Billableitem description",
"autoRenew": true,
"dtExpires": 1518024820,
"dtNextRenewal": 1518024820,
"documentsExist": false,
"details": "null \"extra1\"",
"ull": null,
"extra2": null,
"externalInfo": "123Yw"
}
}
HTTP status code 403
Response when a user does not have access to an app
HTTP status code 404
Response when an app is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Get billableitem for an existing app
Update an existing billableitem
Delete a billableitem (action only for admin)
get /apps/{appId}/billableitem
Get billableitem for an existing app
URI Parameters
- appId: required(string)
The unique identifier of a app
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"billableitem": {
"id": 21,
"organisation": {
"id": 123,
"name": "Test Company"
},
"status": 10,
"statusDisplay": "ok",
"description": "App test1",
"autoRenew": true,
"dtExpires": 1518024820,
"dtNextRenewal": 1518024820,
"documentsExist": false,
"details": [
{
"id": 128,
"price": "0",
"dtExpires": "1518024820",
"quantity": 1,
"description": "PHP website",
"product": {
"id": "appcomponent_php",
"description": "PHP website",
"allowQuantityChange": false
},
"productPrice": {
"id": 1556,
"period": 1,
"currency": "EUR",
"price": "300",
"timing": "pre",
"status": 10
},
"type": "php"
}
],
"extra1": null,
"extra2": null,
"externalInfo": "123",
"agreement": {
"id": 3,
"name": "My agreement"
}
}
}
HTTP status code 403
Response when a user does not have access to an app
patch /apps/{appId}/billableitem
Update an existing billableitem
URI Parameters
- appId: required(string)
The unique identifier of a app
Body
Media type: application/json
Type: object
Properties- autoRenew: (boolean)
Renew automatically (default: true)
- extra1: (string)
Extra1
- extra2: (string)
Extra2
- externalInfo: (string)
ExternalInfo (required when billableitemInfo entities for an Organisation exist in db)
- preventDeactivation: (boolean)
Prevent deactivation (default: true) - admin only
Example:
{
"autoRenew": false,
"extra1": null,
"extra2": null,
"externalInfo": "123B5"
}
HTTP status code 204
Response when update of a billableitem succeeded
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to an app
HTTP status code 404
Response when a billableitem is not found
HTTP status code 500
Response when a user does not have a proper role to access a control
delete /apps/{appId}/billableitem
Delete a billableitem (action only for admin)
URI Parameters
- appId: required(string)
The unique identifier of a app
HTTP status code 204
Response when deletion of a billableitem succeeded
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to an app
HTTP status code 404
Response when a billableitem is not found
HTTP status code 500
Response when a user does not have a proper role to access a control
Add an agreement to billableitem (action only for admin)
Delete an agreement from billableitem (action only for admin)
post /apps/{appId}/billableitem/agreements
Add an agreement to billableitem (action only for admin)
URI Parameters
- appId: required(string)
The unique identifier of a app
Body
Media type: application/json
Type: object
Properties- agreement: required(integer)
The unique identifier of an agreement
Example:
{
"agreement": 3
}
HTTP status code 204
Response when agreement was added to billableitem
Body
Media type: application/json
Type: object
Example:
{
"billableitem": {
"id": 21,
"organisation": {
"id": 123,
"name": "Test Company"
},
"status": 10,
"statusDisplay": "ok",
"description": "App test1",
"autoRenew": true,
"dtExpires": 1518024820,
"dtNextRenewal": 1518024820,
"documentsExist": false,
"details": [
{
"id": 128,
"price": "0",
"dtExpires": "1518024820",
"quantity": 1,
"description": "PHP website",
"product": {
"id": "appcomponent_php",
"description": "PHP website",
"allowQuantityChange": false
},
"productPrice": {
"id": 1556,
"period": 1,
"currency": "EUR",
"price": "300",
"timing": "pre",
"status": 10
},
"type": "php"
}
],
"extra1": null,
"extra2": null,
"externalInfo": "123",
"agreement": {
"id": 3,
"name": "My agreement"
}
}
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to an app
HTTP status code 404
Response when a billableitem is not found
delete /apps/{appId}/billableitem/agreements
Delete an agreement from billableitem (action only for admin)
URI Parameters
- appId: required(string)
The unique identifier of a app
Update an existing billableitem detail
patch /apps/{appId}/billableitem/details/{detailId}
Update an existing billableitem detail
URI Parameters
- appId: required(string)
The unique identifier of a app
- detailId: required(string)
Body
Media type: application/json
Type: object
Properties- price: (integer)
Price in cents (admin only)
- description: (string)
Description
- productPrice: (integer)
The unique identifier of a ProductPrice
- quantity: (integer)
Quantity (admin only)
Examples:
1:
{
"description": "May description",
"productPrice": "product_price_id"
}
2 (admin only):
{
"price": 100,
"quantity": 2
}
HTTP status code 204
Response when update of a billableitem detail succeeded
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to an app
HTTP status code 404
Response when a billableitem detail is not found
HTTP status code 500
Response when a user does not have a proper role to access a control
Update externalInfo for an existing billableitem
patch /apps/{appId}/billableitem/externalinfo
Update externalInfo for an existing billableitem
URI Parameters
- appId: required(string)
The unique identifier of a app
Body
Media type: application/json
Type: object
Properties- externalInfo: (string)
ExternalInfo (required when billableitemInfo entities for an Organisation exist in db)
Example:
{
"externalInfo": "x-0001"
}
Create integrity check for app
Get app integrity checks
post /apps/{appId}/integritychecks
Create integrity check for app
URI Parameters
- appId: required(string)
The unique identifier of a app
Body
Media type: application/json
Type: object
Properties- dojobs: (boolean)
Create jobs (default: true)
- forcejobs: (boolean)
Create jobs even if integrity check failed (default: false)
Example:
{
"dojobs": false,
"forcejobs": false
}
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"integritycheck": {
"id": 267,
"dtRequested": "1584960057",
"object": "Level27\\AppBundle\\Entity\\App",
"objectId": 184,
"results": {
"app": {
"id": 184,
"data": {
"name": "test",
"status": "ok",
"statusColor": "green"
},
"results": {
"name": "ok",
"status": "ok",
"okStatus": "ok",
"organisation": "ok"
},
"components": [
{
"id": 253,
"data": {
"type": "php",
"name": "vd171011",
"category": "config",
"parameters": {
"user": "vd171011",
"path": "/var/web/vd171011",
"sshkeys": []
},
"status": "to_update",
"statusColor": "orange",
"location": {
"type": "system",
"name": "web20test"
}
},
"results": {
"name": "ok",
"category": "ok",
"appcomponenttype": "ok",
"appcomponentparameters": "ok",
"appcomponentparameterDescriptions": "ok",
"status": "ok",
"okStatus": "NOT OK - bad status: to_update",
"system-systemgroup": "ok",
"system": "NOT OK - required cookbook is not installed",
"systemgroup": "ok",
"urlPossible": "ok"
},
"urls": [
{
"id": 2305,
"data": {
"content": "test2.test1.be",
"status": "creating",
"statusColor": "orange",
"https": false,
"sslCertificate": {
"id": null,
"name": null
}
},
"results": {
"content": "ok",
"ssl": false,
"https": "ok",
"status": "ok",
"sslForce": "ok",
"system-systemgroup": "ok",
"dnsLookUp": {
"canWeManagedHostname": true,
"message": "We don't expect records. No system with url cookbook found.",
"ipv4": null,
"ipv6": null,
"statusv4": null,
"statusv6": null
},
"checkSsl": {
"isAccessibleUsingHttps": false,
"certificateRealExpireDate": null,
"isExpired": null,
"certificatesMatch": null
}
}
}
],
"jobs": [
{
"id": 325666,
"action": "updateAppcomponent",
"status": 40,
"message": "NOT OK - failed job or busy job found",
"dtEnd": null,
"dtStamp": "2019-06-11",
"exceptionMsq": null
}
]
}
],
"sslCertificates": [
{
"id": 1459,
"data": {
"name": "*.",
"type": "letsencrypt",
"displayType": "Let's Encrypt",
"productType": "wildcard",
"status": "creating_failed",
"statusColor": "red",
"sslStatus": "validation_failed",
"urls": [
"*.test.be",
"test.be"
],
"linkedUrls": [],
"dtExpires": "N/A"
},
"results": {
"name": "ok",
"sslType": "ok",
"sslStatus": "ok",
"sslStatusOk": "NOT OK - unknown sslStatus: 40",
"status": "ok",
"okStatus": "NOT OK - unexpected status: creating_failed",
"challenge": "ok",
"wildcard": "NOT OK - wildcard found among urls",
"sslCertificateUrls": "ok",
"dtExpires": "N\\A",
"sslKey": null,
"sslCrt": null,
"sslCabundle": null
},
"jobs": [
{
"id": 326359,
"action": "letsencryptRequest",
"status": 50,
"message": "ok",
"dtEnd": "2019-06-27",
"dtStamp": "2019-06-27",
"exceptionMsq": null
},
{
"id": 326363,
"action": "validateChallengeAndRequestCertificate",
"status": 40,
"message": "NOT OK - failed job or busy job found",
"dtEnd": null,
"dtStamp": "2019-06-27",
"exceptionMsq": "Certificate did not validate: Url: *.hemisfeeer.be - error: Challenge failed (response: {\"type\":\"dns-01\",\"status\":\"invalid\",\"error\":{\"type\":\"urn:ietf:params:acme:error:dns\",\"detail\":\"DNS problem: NXDOMAIN looking up TXT for _acme-challenge.hemisfeeer.be\",\"status\":400},\"url\":\"https:\\/\\/acme-v02.api.letsencrypt.org\\/acme\\/challenge\\/WJAjX1lIv5ffEUrbFQ5KbQPkAq94B7YLGL1Gom6Sg8Y\\/17579803647\",\"token\":\"m1FTCfnzy1-rMGvq8j8d357PMiOYzUMa7rkZ5b14siM\"}).. Url: hemisfeeer.be - error: Challenge failed (response: {\"type\":\"http-01\",\"status\":\"invalid\",\"error\":{\"type\":\"urn:ietf:params:acme:error:connection\",\"detail\":\"dns :: DNS problem: NXDOMAIN looking up A for hemisfeeer.be\",\"status\":400},\"url\":\"https:\\/\\/acme-v02.api.letsencrypt.org\\/acme\\/challenge\\/oMt-1kvMgiAlKN53FGdLHR-zR1XQc2rQODZhaBwudok\\/17579803649\",\"token\":\"WRlbpTd3L-TpUEJi4qT6a227rEvjhovc8yD274DQoAg\"}).. "
}
]
}
]
},
"organisations": {
"manual": [],
"owner": "level27"
},
"teams": [],
"financeData": {
"billing": "ON",
"billingStatus": "green",
"autoRenew": "ON",
"autoRenewStatus": "green",
"dtExpires": "2018-06-21",
"billingItems": [
{
"id": 1936,
"description": "PHP website",
"type": "php",
"period": "6 month(s)",
"dtExpires": "2018-06-21",
"price": 24
}
],
"totalPrice": 48
},
"isHealthy": false,
"extraMessage": "No jobs because entity is not healthy or forcejobs is not called."
},
"status": "ok",
"dojobs": true,
"forcejobs": false,
"localIntegritychecks": []
}
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to an app
HTTP status code 404
Response when an app is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /apps/{appId}/integritychecks
Get app integrity checks
URI Parameters
- appId: required(string)
The unique identifier of a app
Query Parameters
- status: (string)
- orderBy: (string)
- orderType: (string)
ASC or DESC
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- filter: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"integritychecks": [
{
"id": 268,
"dtRequested": "1584960307",
"status": "ok"
},
{
"id": 259,
"dtRequested": "1584734256",
"status": "ok"
},
{
"id": 254,
"dtRequested": "1584732272",
"status": "ok"
},
{
"id": 251,
"dtRequested": "1584709340",
"status": "ok"
},
{
"id": 249,
"dtRequested": "1584708665",
"status": "ok"
}
]
}
HTTP status code 400
Bad request
HTTP status code 401
Unauthorized - when user doesn't have role admin, custadmin or app
HTTP status code 403
Access Denied - when user doesn't have access to app
HTTP status code 404
Not found - when integritycheck doesn't exist
HTTP status code 500
Response when a user does not have a proper role to access a controller
Get app integrity check
get /apps/{appId}/integritychecks/{integritycheckId}
Get app integrity check
URI Parameters
- appId: required(string)
The unique identifier of a app
- integritycheckId: required(string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"integritycheck": {
"id": 267,
"dtRequested": "1584960057",
"object": "Level27\\AppBundle\\Entity\\App",
"objectId": 184,
"results": {
"app": {
"id": 184,
"data": {
"name": "test",
"status": "ok",
"statusColor": "green"
},
"results": {
"name": "ok",
"status": "ok",
"okStatus": "ok",
"organisation": "ok"
},
"components": [
{
"id": 253,
"data": {
"type": "php",
"name": "vd171011",
"category": "config",
"parameters": {
"user": "vd171011",
"path": "/var/web/vd171011",
"sshkeys": []
},
"status": "to_update",
"statusColor": "orange",
"location": {
"type": "system",
"name": "web20test"
}
},
"results": {
"name": "ok",
"category": "ok",
"appcomponenttype": "ok",
"appcomponentparameters": "ok",
"appcomponentparameterDescriptions": "ok",
"status": "ok",
"okStatus": "NOT OK - bad status: to_update",
"system-systemgroup": "ok",
"system": "NOT OK - required cookbook is not installed",
"systemgroup": "ok",
"urlPossible": "ok"
},
"urls": [
{
"id": 2305,
"data": {
"content": "test2.test1.be",
"status": "creating",
"statusColor": "orange",
"https": false,
"sslCertificate": {
"id": null,
"name": null
}
},
"results": {
"content": "ok",
"ssl": false,
"https": "ok",
"status": "ok",
"sslForce": "ok",
"system-systemgroup": "ok",
"dnsLookUp": {
"canWeManagedHostname": true,
"message": "We don't expect records. No system with url cookbook found.",
"ipv4": null,
"ipv6": null,
"statusv4": null,
"statusv6": null
},
"checkSsl": {
"isAccessibleUsingHttps": false,
"certificateRealExpireDate": null,
"isExpired": null,
"certificatesMatch": null
}
}
}
],
"jobs": [
{
"id": 325666,
"action": "updateAppcomponent",
"status": 40,
"message": "NOT OK - failed job or busy job found",
"dtEnd": null,
"dtStamp": "2019-06-11",
"exceptionMsq": null
}
]
}
],
"sslCertificates": [
{
"id": 1459,
"data": {
"name": "*.",
"type": "letsencrypt",
"displayType": "Let's Encrypt",
"productType": "wildcard",
"status": "creating_failed",
"statusColor": "red",
"sslStatus": "validation_failed",
"urls": [
"*.test.be",
"test.be"
],
"linkedUrls": [],
"dtExpires": "N/A"
},
"results": {
"name": "ok",
"sslType": "ok",
"sslStatus": "ok",
"sslStatusOk": "NOT OK - unknown sslStatus: 40",
"status": "ok",
"okStatus": "NOT OK - unexpected status: creating_failed",
"challenge": "ok",
"wildcard": "NOT OK - wildcard found among urls",
"sslCertificateUrls": "ok",
"dtExpires": "N\\A",
"sslKey": null,
"sslCrt": null,
"sslCabundle": null
},
"jobs": [
{
"id": 326359,
"action": "letsencryptRequest",
"status": 50,
"message": "ok",
"dtEnd": "2019-06-27",
"dtStamp": "2019-06-27",
"exceptionMsq": null
},
{
"id": 326363,
"action": "validateChallengeAndRequestCertificate",
"status": 40,
"message": "NOT OK - failed job or busy job found",
"dtEnd": null,
"dtStamp": "2019-06-27",
"exceptionMsq": "Certificate did not validate: Url: *.hemisfeeer.be - error: Challenge failed (response: {\"type\":\"dns-01\",\"status\":\"invalid\",\"error\":{\"type\":\"urn:ietf:params:acme:error:dns\",\"detail\":\"DNS problem: NXDOMAIN looking up TXT for _acme-challenge.hemisfeeer.be\",\"status\":400},\"url\":\"https:\\/\\/acme-v02.api.letsencrypt.org\\/acme\\/challenge\\/WJAjX1lIv5ffEUrbFQ5KbQPkAq94B7YLGL1Gom6Sg8Y\\/17579803647\",\"token\":\"m1FTCfnzy1-rMGvq8j8d357PMiOYzUMa7rkZ5b14siM\"}).. Url: hemisfeeer.be - error: Challenge failed (response: {\"type\":\"http-01\",\"status\":\"invalid\",\"error\":{\"type\":\"urn:ietf:params:acme:error:connection\",\"detail\":\"dns :: DNS problem: NXDOMAIN looking up A for hemisfeeer.be\",\"status\":400},\"url\":\"https:\\/\\/acme-v02.api.letsencrypt.org\\/acme\\/challenge\\/oMt-1kvMgiAlKN53FGdLHR-zR1XQc2rQODZhaBwudok\\/17579803649\",\"token\":\"WRlbpTd3L-TpUEJi4qT6a227rEvjhovc8yD274DQoAg\"}).. "
}
]
}
]
},
"organisations": {
"manual": [],
"owner": "level27"
},
"teams": [],
"financeData": {
"billing": "ON",
"billingStatus": "green",
"autoRenew": "ON",
"autoRenewStatus": "green",
"dtExpires": "2018-06-21",
"billingItems": [
{
"id": 1936,
"description": "PHP website",
"type": "php",
"period": "6 month(s)",
"dtExpires": "2018-06-21",
"price": 24
}
],
"totalPrice": 48
},
"isHealthy": false,
"extraMessage": "No jobs because entity is not healthy or forcejobs is not called."
},
"status": "ok",
"dojobs": true,
"forcejobs": false,
"localIntegritychecks": []
}
}
HTTP status code 400
Bad request
HTTP status code 401
Unauthorized - when user doesn't have role admin, custadmin or app
HTTP status code 403
Access Denied - when user doesn't have access to app
HTTP status code 404
Not found - when integritycheck doesn't exist
HTTP status code 500
Response when a user does not have a proper role to access a controller
Get app integrity check
get /apps/{appId}/integritychecks/{integritycheckId}/report
Get app integrity check
URI Parameters
- appId: required(string)
The unique identifier of a app
- integritycheckId: required(string)
HTTP status code 200
Returns report in pdf
HTTP status code 400
Bad request
HTTP status code 401
Unauthorized - when user doesn't have role admin, custadmin or app
HTTP status code 403
Access Denied - when user doesn't have access to app
HTTP status code 404
Not found - when integritycheck doesn't exist
HTTP status code 500
Response when a user does not have a proper role to access a controller
Calculate price for a new component
get /apps/priceproposal/componenttype/{type}
Calculate price for a new component
URI Parameters
- type: required(string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"products": [
{
"id": "appcomponent_php",
"description": "PHP website",
"prices": [
{
"id": 1556,
"period": 1,
"currency": "EUR",
"price": "300",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1557,
"period": 3,
"currency": "EUR",
"price": "855",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1558,
"period": 6,
"currency": "EUR",
"price": "1620",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1559,
"period": 12,
"currency": "EUR",
"price": "3060",
"timing": "pre",
"default": true,
"status": 10
}
],
"allowQuantityChange": null
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Calculate price for a new component for a reseller organisation
get /apps/priceproposal/componenttype/{type}/organisation/{organisationId}
Calculate price for a new component for a reseller organisation
URI Parameters
- type: required(string)
- organisationId: required(string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"products": [
{
"id": "appcomponent_php",
"description": "PHP website",
"prices": [
{
"id": 1556,
"period": 1,
"currency": "EUR",
"price": "300",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1557,
"period": 3,
"currency": "EUR",
"price": "855",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1558,
"period": 6,
"currency": "EUR",
"price": "1620",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1559,
"period": 12,
"currency": "EUR",
"price": "3060",
"timing": "pre",
"default": true,
"status": 10
}
],
"allowQuantityChange": null
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Returns all prices for appcomponents
get /apps/priceproposal/components/organisation/{organisationId}
Returns all prices for appcomponents
URI Parameters
- organisationId: required(string)
Query Parameters
- orderBy: (string)
- orderType: (string)
ASC or DESC
- filter: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"products": [
{
"id": "appcomponent_asp",
"description": "ASP",
"prices": [
{
"id": 2492,
"period": 1,
"currency": "EUR",
"price": "575",
"timing": "pre",
"default": false
},
{
"id": 2493,
"period": 3,
"currency": "EUR",
"price": "1650",
"timing": "pre",
"default": false
},
{
"id": 2494,
"period": 6,
"currency": "EUR",
"price": "3150",
"timing": "pre",
"default": false
},
{
"id": 2495,
"period": 12,
"currency": "EUR",
"price": "6000",
"timing": "pre",
"default": true
}
]
},
{
"id": "appcomponent_database_mysql",
"description": "MySQL database",
"prices": [
{
"id": 1461,
"period": 1,
"currency": "EUR",
"price": "300",
"timing": "pre",
"default": false
},
{
"id": 1462,
"period": 3,
"currency": "EUR",
"price": "855",
"timing": "pre",
"default": false
},
{
"id": 1463,
"period": 6,
"currency": "EUR",
"price": "1620",
"timing": "pre",
"default": true
},
{
"id": 1464,
"period": 12,
"currency": "EUR",
"price": "3060",
"timing": "pre",
"default": false
}
]
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Calculate price for a new sslCertificate
get /apps/priceproposal/ssltype/{type}
Calculate price for a new sslCertificate
URI Parameters
- type: required(string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"products": [
{
"id": "sslcertificate_comodo_single_domain",
"description": "Comodo Domain validation Single domain",
"prices": [
{
"id": 2364,
"period": 12,
"currency": "EUR",
"price": "4000",
"timing": "pre",
"default": true,
"status": 10
}
],
"allowQuantityChange": null
},
{
"id": "sslcertificate_comodo_multi_domain",
"description": "Comodo Domain validation Multi domain",
"prices": [
{
"id": 2365,
"period": 12,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
}
],
"allowQuantityChange": null
},
{
"id": "sslcertificate_comodo_wildcard_domain",
"description": "Comodo Domain validation Wildcard",
"prices": [
{
"id": 2366,
"period": 12,
"currency": "EUR",
"price": "10000",
"timing": "pre",
"default": true,
"status": 10
}
],
"allowQuantityChange": null
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Calculate price for a new sslCertificate for a reseller organisation
get /apps/priceproposal/ssltype/{type}/organisation/{organisationId}
Calculate price for a new sslCertificate for a reseller organisation
URI Parameters
- type: required(string)
- organisationId: required(string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"products": [
{
"id": "sslcertificate_comodo_single_domain",
"description": "Comodo Domain validation Single domain",
"prices": [
{
"id": 2364,
"period": 12,
"currency": "EUR",
"price": "4000",
"timing": "pre",
"default": true,
"status": 10
}
],
"allowQuantityChange": null
},
{
"id": "sslcertificate_comodo_multi_domain",
"description": "Comodo Domain validation Multi domain",
"prices": [
{
"id": 2365,
"period": 12,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
}
],
"allowQuantityChange": null
},
{
"id": "sslcertificate_comodo_wildcard_domain",
"description": "Comodo Domain validation Wildcard",
"prices": [
{
"id": 2366,
"period": 12,
"currency": "EUR",
"price": "10000",
"timing": "pre",
"default": true,
"status": 10
}
],
"allowQuantityChange": null
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Returns all prices for sslCertificates
get /apps/priceproposal/sslcertificates/organisation/{organisationId}
Returns all prices for sslCertificates
URI Parameters
- organisationId: required(string)
Query Parameters
- orderBy: (string)
- orderType: (string)
ASC or DESC
- filter: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"products": [
{
"id": "sslcertificate_comodo_multi_domain",
"description": "Comodo Domain validation Multi domain",
"prices": [
{
"id": 2421,
"period": 12,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true
}
],
"allowQuantityChange": null
},
{
"id": "sslcertificate_comodo_single_domain",
"description": "Comodo Domain validation Single domain",
"prices": [
{
"id": 2420,
"period": 12,
"currency": "EUR",
"price": "4000",
"timing": "pre",
"default": true
}
],
"allowQuantityChange": null
},
{
"id": "sslcertificate_comodo_wildcard_domain",
"description": "Comodo Domain validation Wildcard",
"prices": [
{
"id": 2422,
"period": 12,
"currency": "EUR",
"price": "10000",
"timing": "pre",
"default": true
}
],
"allowQuantityChange": null
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
/appcomponenttypes
List of all available component types
get /appcomponenttypes
List of all available component types
Query Parameters
- category: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"appcomponenttypes": {
"mongodb": {
"servicetype": {
"name": "mongodb",
"cookbook": "mongodb",
"displayName": "MongoDB",
"description": "MongoDB database",
"urlPossible": false,
"restorePossible": false,
"migrationPossible": false,
"selectingSystemPossible": false,
"disabledOnProduction": false,
"invisibleOnProduction": false,
"runlist": "mongodb",
"allowedActions": [],
"category": "Databases",
"parameters": [
{
"name": "user",
"displayName": "username",
"description": "Username",
"type": "username",
"defaultValue": "auto",
"readonly": true,
"disableEdit": true,
"required": false,
"category": "credentials"
},
{
"name": "pass",
"displayName": "password",
"description": "password",
"type": "password-plain",
"defaultValue": "auto",
"readonly": false,
"disableEdit": false,
"required": false,
"category": "credentials"
}
]
}
},
"mssql": {
"servicetype": {
"name": "mssql",
"cookbook": "mssql",
"displayName": "MS SQL",
"description": "Microsoft SQL Server",
"urlPossible": false,
"restorePossible": false,
"migrationPossible": false,
"selectingSystemPossible": false,
"disabledOnProduction": false,
"invisibleOnProduction": false,
"runlist": "mssql",
"allowedActions": [],
"category": "Databases",
"parameters": [
{
"name": "user",
"displayName": "username",
"description": "Username",
"type": "username",
"defaultValue": "auto",
"readonly": true,
"disableEdit": true,
"required": false,
"category": "credentials"
},
{
"name": "pass",
"displayName": "password",
"description": "password",
"type": "password-plain",
"defaultValue": "auto",
"readonly": false,
"disableEdit": false,
"required": false,
"category": "credentials"
},
{
"name": "size",
"displayName": "Database Size",
"description": "Size of the database",
"type": "string",
"defaultValue": "100",
"readonly": false,
"disableEdit": false,
"required": false,
"category": "advanced"
}
]
}
},
"mysql": {
"servicetype": {
"name": "mysql",
"cookbook": "mysql",
"displayName": "MySQL",
"description": "Database mysql",
"urlPossible": false,
"restorePossible": true,
"migrationPossible": true,
"selectingSystemPossible": false,
"disabledOnProduction": false,
"invisibleOnProduction": false,
"runlist": "mysql",
"allowedActions": [],
"category": "Databases",
"parameters": [
{
"name": "user",
"displayName": "username",
"description": "Username",
"type": "username",
"defaultValue": "auto",
"readonly": true,
"disableEdit": true,
"required": false,
"category": "credentials"
},
{
"name": "pass",
"displayName": "password",
"description": "encrypted password",
"type": "password-sha1",
"defaultValue": "auto",
"readonly": false,
"disableEdit": false,
"required": false,
"category": "credentials"
},
{
"name": "host",
"displayName": "Host",
"description": "Host",
"type": "string",
"defaultValue": null,
"readonly": false,
"disableEdit": false,
"required": false,
"category": "advanced"
}
]
}
}
}
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
/appcomponents
Get appcomponents for a chosen category
get /appcomponents/{category}
Get appcomponents for a chosen category
URI Parameters
- category: required(string)
Query Parameters
- status: (string)
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- orderBy: (string)
- orderType: (string)
ASC or DESC
- filter: (string)
- type: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"total": 1,
"components": [
{
"id": 213,
"name": "Php component",
"appcomponenttype": "php",
"status": "ok",
"statusCategory": "green",
"appcomponentparameters": {
"user": "pp10003",
"pass": "******",
"path": "/public_html",
"sshkeys": null,
"version": "7.0"
},
"app": {
"id": 211,
"status": "ok",
"statusCategory": "green"
},
"systems": [
{
"id": 89,
"name": "php system",
"fqdn": "d23r34.l27test.eu",
"cookbooks": [
{
"id": 87,
"cookbooktype": "php",
"status": "ok",
"statusCategory": "green",
"versions": [
"7.1"
]
},
{
"id": 88,
"cookbooktype": "url",
"status": "ok",
"statusCategory": "green"
}
]
}
],
"systemgroup": null,
"containerSystem": null,
"provider": {
"id": null,
"name": null
},
"linkedUrlsCount": 1
}
]
}
HTTP status code 403
Response when a user does not have a proper role to access a controller
Send a notification for an appcomponent
post /appcomponents/{componentId}/notifications
Send a notification for an appcomponent
URI Parameters
- componentId: required(string)
The unique identifier of an appcomponent
Body
Media type: application/json
Type: object
Properties- type: required(string)
Notification type
- group: required(one of App, Crm, Domain, Finance, Mail, System)
Notification group
- params: (object)
Additional parameters (json)
Example:
{
"type": "jobremoveAppcomponent50",
"params": {
"guiUrl": "gui.cp4dev.be"
},
"group": "App"
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"id": 4201,
"entityIndex": "Level27\\AppBundle\\Entity\\Appcomponent_1",
"entityName": "appcomponent",
"dtStamp": "1522078632",
"notificationGroup": "App",
"type": "jobremoveAppcomponent50",
"entityClass": "Level27\\AppBundle\\Entity\\Appcomponent",
"entityId": 1,
"rootEntityClass": null,
"rootEntityId": null,
"status": 21,
"statusDisplay": "queued",
"statusCategory": "yellow",
"sendMode": 0,
"priority": 250,
"subject": null,
"params": {
"guiUrl": "gui.cp4dev.be"
},
"userId": 1,
"contacts": [],
"extraRecipients": [],
"entity": null,
"user": null
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to an appcomponent
HTTP status code 500
Response when a user does not have a proper role to access a controller
/urls
Get all urls
get /urls
Get all urls
Query Parameters
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- orderBy: (string)
- orderType: (string)
ASC or DESC
- filter: (string)
HTTP status code 200
Response when urls are found
Body
Media type: application/json
Type: object
Example:
{
"total": 12,
"urls": [
{
"id": 1,
"content": "test1.testdomain.be",
"sslCertificate": {
"id": 25,
"name": "testCertificate2"
},
"appcomponent": {
"id": 13,
"app": {
"id": 7,
"name": "My App"
}
},
"status": "ok",
"statusCategory": "green"
},
{
"id": 10,
"content": "test2.testdomain.be",
"sslCertificate": {
"id": 22,
"name": "testCertificate1"
},
"appcomponent": {
"id": 13,
"app": {
"id": 7,
"name": "My App"
}
},
"status": "ok",
"statusCategory": "green"
},
{
"id": 48,
"content": "test2.testdomain.be",
"sslCertificate": null,
"appcomponent": {
"id": 13,
"app": {
"id": 7,
"name": "My App"
}
},
"status": "ok",
"statusCategory": "green"
}
]
}
HTTP status code 404
Response when an app is not found
Send a notification for an url
post /urls/{urlId}/notifications
Send a notification for an url
URI Parameters
- urlId: required(string)
The unique identifier of an url
Body
Media type: application/json
Type: object
Properties- type: required(string)
Notification type
- group: required(one of App, Crm, Domain, Finance, Mail, System)
Notification group
- params: (object)
Additional parameters (json)
Example:
{
"type": "jobremoveUrl50",
"params": {
"guiUrl": "gui.cp4dev.be"
},
"group": "App"
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"id": 4200,
"entityIndex": "Level27\\AppBundle\\Entity\\Url_1",
"entityName": "url",
"dtStamp": "1522077090",
"notificationGroup": "App",
"type": "jobremoveUrl50",
"entityClass": "Level27\\AppBundle\\Entity\\Url",
"entityId": 1,
"rootEntityClass": null,
"rootEntityId": null,
"status": 21,
"statusDisplay": "queued",
"statusCategory": "yellow",
"sendMode": 0,
"priority": 250,
"subject": null,
"params": {
"guiUrl": "gui.cp4dev.be"
},
"userId": 1,
"contacts": [],
"extraRecipients": [],
"entity": null,
"user": null
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to an url
HTTP status code 500
Response when a user does not have a proper role to access a controller
/sslcertificates
Get sslCertificates from all apps
get /sslcertificates
Get sslCertificates from all apps
Query Parameters
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- orderBy: (string)
- orderType: (string)
ASC or DESC
- filter: (string)
- status: (string)
- sslType: (string)
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"total": 20,
"sslCertificates": [
{
"id": 7,
"name": "Certificate 72672t31",
"sslType": "letsencrypt",
"sslKey": "***",
"newSslKey": "***",
"sslCrt": "SSLCERT_HERE",
"sslCabundle": "CABUNDLE_HERE",
"autoUrlLink": false,
"sslForce": false,
"sslStatus": "ok",
"status": "ok",
"reminderStatus": 1,
"dtExpires": "1620173261",
"validationParams": null,
"source": null,
"sslCertificateUrls": [
{
"id": 7,
"content": "1e211.test.be",
"sslStatus": "validation_succeeded",
"errorMsg": null,
"sslStatusCategory": "green",
"validationType": "http"
}
],
"billableitemDetail": null,
"app": {
"id": 20,
"name": "My Test App"
},
"statusCategory": "green",
"sslStatusCategory": "green",
"urls": [
{
"id": 215,
"content": "1e211.test.be",
"status": "ok",
"statusCategory": "green"
}
],
"matchingUrls": [
"1e211.test.be"
]
}
]
}
HTTP status code 400
Bad request
/systemsandgroups
Get available systems and groups
get /systemsandgroups
Get available systems and groups
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"shared_systems": [
{
"id": 85,
"name": "test.level27.be",
"organisation": {
"id": 1,
"name": "level27"
}
}
],
"systems": [
{
"id": 42,
"name": "Test system",
"organisation": {
"id": 123,
"name": "Test Organisation"
}
}
],
"shared_systemgroups": [
{
"id": 7,
"name": "level27-mail",
"systems": [
{
"id": 96,
"name": "mail1",
"organisation": {
"id": 1,
"name": "level27"
}
},
{
"id": 92,
"name": "mail2",
"organisation": {
"id": 1,
"name": "level27"
}
}
]
}
],
"systemgroups": []
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Get available systems and groups for component type
get /systemsandgroups/componenttype/{type}
Get available systems and groups for component type
URI Parameters
- type: required(string)
The component type
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"shared_systems": [
{
"id": 85,
"name": "test.level27.be",
"organisation": {
"id": 1,
"name": "level27"
}
}
],
"systems": [
{
"id": 42,
"name": "Test system",
"organisation": {
"id": 123,
"name": "Test Organisation"
}
}
],
"shared_systemgroups": [
{
"id": 7,
"name": "level27-mail",
"systems": [
{
"id": 96,
"name": "mail1",
"organisation": {
"id": 1,
"name": "level27"
}
},
{
"id": 92,
"name": "mail2",
"organisation": {
"id": 1,
"name": "level27"
}
}
]
}
],
"systemgroups": []
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
/domains
Create a new domain
List of all available domains
post /domains
Create a new domain
Query Parameters
- source: (string)
Body
Media type: application/json
Type: object
Properties- name: required(string)
Name
- nameserver1: (string)
Nameserver (at least one of name servers have to be filled in when dns is not handled by us)
- nameserver2: (string)
Nameserver (at least one of name servers have to be filled in when dns is not handled by us)
- nameserver3: (string)
Nameserver (at least one of name servers have to be filled in when dns is not handled by us)
- nameserver4: (string)
Nameserver (at least one of name servers have to be filled in when dns is not handled by us)
- nameserverIp1: (string)
nameserverIp
- nameserverIp2: (string)
nameserverIp
- nameserverIp3: (string)
nameserverIp
- nameserverIp4: (string)
nameserverIp
- nameserverIpv61: (string)
nameserverIpv6
- nameserverIpv62: (string)
nameserverIpv6
- nameserverIpv63: (string)
nameserverIpv6
- nameserverIpv64: (string)
nameserverIpv6
- ttl: (integer)
Ttl (default: 28800)
- action: required(one of none, create, transfer, transferFromQuarantine)
Action type
- eppCode: (string)
EppCode (required when action = transfer)
- handleDns: (boolean)
Should dns be handled by us? (default: true)
- extraFields: (string)
Extra fields (json, non-editable)
- domaintype: required(integer)
The unique identifier of a domaintype (non-editable)
- domaincontactLicensee: required(integer)
The unique identifier of a domaincontact with type licensee
- domaincontactOnsite: (integer)
The unique identifier of a domaincontact with type onsite
- organisation: required(integer)
The unique identifier of an organisation
- autorecordTemplate: (string)
AutorecordTemplate
- autorecordTemplateReplace: (boolean)
(default: null)
- domainprovider: (integer)
The unique identifier of a domain provider (admin only)
- dtExternalCreated: (string)
Creation timestamp (admin only)
- dtExternalExpires: (string)
Expire date timestamp (admin only)
- convertDomainrecords: (string)
Domainrecords json (admin only)
- autoTeams: (string)
A csv list of team ids
- externalInfo: (string)
ExternalInfo (required when billableitemInfo entities for an Organisation exist in db)
Examples:
none:
{
"name": "testdomain123",
"domaintype": 1,
"handleDns": true,
"domaincontactLicensee": 1,
"action": "none",
"autoTeams": null,
"externalInfo": null
}
create:
{
"name": "testdomain123",
"domaintype": 1,
"handleDns": false,
"domaincontactLicensee": 1,
"action": "create",
"nameserver1": "test.test.com",
"nameserverIp1": "142.425.1.2",
"nameserverIpv61": "2001:0db8:0000:0000:0000:ff00:0042:8329",
"autoTeams": null,
"externalInfo": "123TB"
}
transfer:
{
"name": "testdomain123",
"domaintype": 1,
"handleDns": true,
"domaincontactLicensee": null,
"action": "transfer",
"autoTeams": "1,14,23",
"externalInfo": null
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"domain": {
"id": 16,
"name": "testdomain123",
"fullname": "testdomain123.nl",
"ttl": 28800,
"eppCode": null,
"status": "to_create",
"dnssecStatus": "does_not_need_signing",
"registrationIsHandled": true,
"provider": "Key Systems",
"dnsIsHandled": true,
"dtRegister": null,
"nameserver1": null,
"nameserver2": null,
"nameserver3": null,
"nameserver4": null,
"nameserverIp1": null,
"nameserverIp2": null,
"nameserverIp3": null,
"nameserverIp4": null,
"nameserverIpv61": null,
"nameserverIpv62": null,
"nameserverIpv63": null,
"nameserverIpv64": null,
"organisation": {
"id": 123,
"name": "Test Company",
"reseller": null
},
"domaintype": {
"id": 1,
"name": "nl",
"extension": "nl",
"renewPeriod": null,
"transferAutoLicensee": true,
"requestIncomingTransferCodePossible": false,
"requestOutgoingTransferCodePossible": true,
"licenseeChangePossible": false,
"dnssecSupported": false
},
"domaincontactLicensee": {
"id": 1,
"firstName": "Test",
"lastName": "Test",
"organisationName": "Test Org",
"street": "Test",
"houseNumber": "12",
"zip": "12345",
"city": "Test",
"state": "Test",
"phone": "+48.1345612",
"fax": null,
"email": "test@test.pl",
"taxNumber": "123456",
"status": 10,
"passportNumber": "EB1234565",
"socialNumber": "123456822",
"birthStreet": "Test",
"birthZip": "12345",
"birthCity": "Test",
"birthDate": null,
"gender": "M",
"type": "licensee",
"country": {
"id": "BE",
"name": "Belgium"
},
"fullname": "Test Test"
},
"domaincontactOnsite": null,
"mailgroup": {
"id": 911,
"name": "TestMailgroup"
},
"dtExpires": 1518030935,
"billingStatus": "to_create",
"handleMailDns": true
}
}
HTTP status code 400
Validation of new domain failed
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /domains
List of all available domains
Query Parameters
- action: (one of create, none, transfer)
- mailgroup: (one of linked, not_linked)
- status: (string)
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- orderBy: (string)
- orderType: (string)
ASC or DESC
- filter: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"domains": [
{
"id": 16,
"name": "testdomain123",
"fullname": "testdomain123.nl",
"ttl": 28800,
"eppCode": null,
"status": "to_create",
"dnssecStatus": "does_not_need_signing",
"registrationIsHandled": true,
"provider": "Key Systems",
"dnsIsHandled": true,
"dtRegister": null,
"nameserver1": null,
"nameserver2": null,
"nameserver3": null,
"nameserver4": null,
"nameserverIp1": null,
"nameserverIp2": null,
"nameserverIp3": null,
"nameserverIp4": null,
"nameserverIpv61": null,
"nameserverIpv62": null,
"nameserverIpv63": null,
"nameserverIpv64": null,
"organisation": {
"id": 123,
"name": "Test Company",
"reseller": null
},
"domaintype": {
"id": 1,
"name": "nl",
"extension": "nl",
"renewPeriod": null,
"transferAutoLicensee": true,
"requestIncomingTransferCodePossible": false,
"requestOutgoingTransferCodePossible": true,
"licenseeChangePossible": false,
"dnssecSupported": false
},
"domaincontactLicensee": {
"id": 1,
"firstName": "Test",
"lastName": "Test",
"organisationName": "Test Org",
"street": "Test",
"houseNumber": "12",
"zip": "12345",
"city": "Test",
"state": "Test",
"phone": "+48.1345612",
"fax": null,
"email": "test@test.pl",
"taxNumber": "123456",
"status": 10,
"passportNumber": "EB1234565",
"socialNumber": "123456822",
"birthStreet": "Test",
"birthZip": "12345",
"birthCity": "Test",
"birthDate": null,
"gender": "M",
"type": "licensee",
"country": {
"id": "BE",
"name": "Belgium"
},
"fullname": "Test Test"
},
"domaincontactOnsite": null,
"dtExpires": 1518030935,
"billingStatus": "to_create",
"linkedToUrl": true
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Update a domain
Update a domain
Delete a domain
Get a domain
put /domains/{domainId}
Update a domain
URI Parameters
- domainId: required(string)
The unique identifier of a domain
Body
Media type: application/json
Type: object
Properties- name: required(string)
Name
- nameserver1: (string)
Nameserver (at least one of name servers have to be filled in when dns is not handled by us)
- nameserver2: (string)
Nameserver (at least one of name servers have to be filled in when dns is not handled by us)
- nameserver3: (string)
Nameserver (at least one of name servers have to be filled in when dns is not handled by us)
- nameserverIp1: (string)
nameserverIp
- nameserverIp2: (string)
nameserverIp
- nameserverIp3: (string)
nameserverIp
- nameserverIpv61: (string)
nameserverIpv6
- nameserverIpv62: (string)
nameserverIpv6
- nameserverIpv63: (string)
nameserverIpv6
- ttl: (integer)
Ttl (default: 28800)
- action: required(one of none, create, transfer, transferFromQuarantine)
Action type
- eppCode: (string)
EppCode (required when action = transfer)
- handleDns: (boolean)
Should dns be handled by us? (default: true)
- extraFields: (string)
Extra fields (json, non-editable)
- domaintype: required(integer)
The unique identifier of a domaintype (non-editable)
- domaincontactLicensee: required(integer)
The unique identifier of a domaincontact with type licensee
- domaincontactOnsite: (integer)
The unique identifier of a domaincontact with type onsite
- organisation: required(integer)
The unique identifier of an organisation
- autorecordTemplate: (string)
AutorecordTemplate
- autorecordTemplateReplace: (boolean)
(default: null)
- domainprovider: (integer)
The unique identifier of a domain provider (admin only)
- dtExternalCreated: (string)
Creation timestamp (admin only)
- dtExternalExpires: (string)
Expire date timestamp (admin only)
- convertDomainrecords: (string)
Domainrecords json (admin only)
- autoTeams: (string)
A csv list of team ids
Examples:
none:
{
"name": "testdomain123",
"domaintype": 1,
"handleDns": true,
"domaincontactLicensee": 1,
"action": "none",
"autoTeams": null
}
create:
{
"name": "testdomain123",
"domaintype": 1,
"handleDns": false,
"domaincontactLicensee": 1,
"action": "create",
"nameserver1": "test.test.com",
"nameserverIp1": "142.425.1.2",
"nameserverIpv61": "2001:0db8:0000:0000:0000:ff00:0042:8329",
"autoTeams": null
}
transfer:
{
"name": "testdomain123",
"domaintype": 1,
"handleDns": true,
"domaincontactLicensee": null,
"action": "transfer",
"autoTeams": "1,14,23"
}
HTTP status code 204
Response when update of a doamin succeeded
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a domain
HTTP status code 404
Response when a domain is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
patch /domains/{domainId}
Update a domain
URI Parameters
- domainId: required(string)
The unique identifier of a domain
Body
Media type: application/json
Type: object
Properties- nameserver1: (string)
Nameserver (at least one of name servers have to be filled in when dns is not handled by us)
- nameserver2: (string)
Nameserver (at least one of name servers have to be filled in when dns is not handled by us)
- nameserver3: (string)
Nameserver (at least one of name servers have to be filled in when dns is not handled by us)
- nameserverIp1: (string)
nameserverIp
- nameserverIp2: (string)
nameserverIp
- nameserverIp3: (string)
nameserverIp
- nameserverIpv61: (string)
nameserverIpv6
- nameserverIpv62: (string)
nameserverIpv6
- nameserverIpv63: (string)
nameserverIpv6
- ttl: (integer)
Ttl (default: 28800)
- eppCode: (string)
EppCode (required when action = transfer)
- handleDns: (boolean)
Should dns be handled by us? (default: true)
- extraFields: (string)
Extra fields (json, non-editable)
- domaincontactLicensee: required(integer)
The unique identifier of a domaincontact with type licensee
- domaincontactOnsite: (integer)
The unique identifier of a domaincontact with type onsite
- organisation: required(integer)
The unique identifier of an organisation
- autorecordTemplate: (string)
AutorecordTemplate
- autorecordTemplateReplace: (boolean)
(default: null)
Examples:
1:
{
"ttl": 400
}
2:
{
"nameserver1": "nameserver1.test.be"
}
HTTP status code 204
Response when update of a doamin succeeded
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a domain
HTTP status code 404
Response when a domain is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
delete /domains/{domainId}
Delete a domain
URI Parameters
- domainId: required(string)
The unique identifier of a domain
get /domains/{domainId}
Get a domain
URI Parameters
- domainId: required(string)
The unique identifier of a domain
HTTP status code 200
Response when domain is found
Body
Media type: application/json
Type: object
Example:
{
"domain": {
"id": 16,
"name": "testdomain123",
"fullname": "testdomain123.nl",
"ttl": 28800,
"eppCode": null,
"status": "to_create",
"dnssecStatus": "does_not_need_signing",
"registrationIsHandled": true,
"provider": "Key Systems",
"dnsIsHandled": true,
"dtRegister": null,
"nameserver1": null,
"nameserver2": null,
"nameserver3": null,
"nameserver4": null,
"nameserverIp1": null,
"nameserverIp2": null,
"nameserverIp3": null,
"nameserverIp4": null,
"nameserverIpv61": null,
"nameserverIpv62": null,
"nameserverIpv63": null,
"nameserverIpv64": null,
"organisation": {
"id": 123,
"name": "Test Company",
"reseller": null
},
"domaintype": {
"id": 1,
"name": "nl",
"extension": "nl",
"renewPeriod": null,
"transferAutoLicensee": true,
"requestIncomingTransferCodePossible": false,
"requestOutgoingTransferCodePossible": true,
"licenseeChangePossible": false,
"dnssecSupported": false
},
"domaincontactLicensee": {
"id": 1,
"firstName": "Test",
"lastName": "Test",
"organisationName": "Test Org",
"street": "Test",
"houseNumber": "12",
"zip": "12345",
"city": "Test",
"state": "Test",
"phone": "+48.1345612",
"fax": null,
"email": "test@test.pl",
"taxNumber": "123456",
"status": 10,
"passportNumber": "EB1234565",
"socialNumber": "123456822",
"birthStreet": "Test",
"birthZip": "12345",
"birthCity": "Test",
"birthDate": null,
"gender": "M",
"type": "licensee",
"country": {
"id": "BE",
"name": "Belgium"
},
"fullname": "Test Test"
},
"domaincontactOnsite": null,
"mailgroup": {
"id": 911,
"name": "TestMailgroup"
},
"dtExpires": 1518030935,
"billingStatus": "to_create",
"handleMailDns": true
}
}
HTTP status code 403
Response when a user does not have access to a domain
HTTP status code 404
Response when domain is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Get users for domain
get /domains/{domainId}/users
Get users for domain
URI Parameters
- domainId: required(string)
The unique identifier of a domain
Query Parameters
- limit: (integer - default: 5)
- offset: (integer - default: 0)
HTTP status code 200
Response when users are found
Body
Media type: application/json
Type: object
Example:
{
"users": [
{
"id": 1,
"fullname": "Test User",
"username": "admin@test.be",
"email": "admin@test.be",
"firstName": "Test",
"lastName": "User",
"roles": [
"ROLE_CUSTADMIN",
"ROLE_USER"
],
"organisation": {
"id": 123,
"name": "Test Company"
}
},
{
"id": 2,
"fullname": "Test2 Test2",
"username": "test",
"email": "user@test.be",
"firstName": "Test2",
"lastName": "Test2",
"roles": [
"ROLE_FINANCE"
],
"organisation": {
"id": 321,
"name": "Test Company 2"
}
}
]
}
HTTP status code 403
Response when a user does not have access to a domain
HTTP status code 404
Response when a domain is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Get organisations with acl access to a domain
get /domains/{domainId}/organisations
Get organisations with acl access to a domain
URI Parameters
- domainId: required(string)
The unique identifier of a domain
HTTP status code 200
Response when organisations are found
Body
Media type: application/json
Type: object
Example:
{
"organisations": [
{
"id": 2,
"name": "test",
"users": [
{
"id": 3,
"username": "user.test@test1.be",
"email": "user.test@test1.be",
"firstName": "Jane",
"lastName": "User",
"roles": [
"ROLE_SYSTEM",
"ROLE_APP",
"ROLE_DOMAIN",
"ROLE_MAIL",
"ROLE_CUSTADMIN",
"ROLE_FINANCE"
],
"status": "ok",
"teams": []
},
{
"id": 4,
"username": "user2.test@test1.be",
"email": "user2.test@test1.be",
"firstName": "John",
"lastName": "User",
"roles": [
"ROLE_APP",
"ROLE_DOMAIN",
"ROLE_MAIL",
"ROLE_SYSTEM"
],
"status": "ok",
"teams": [
{
"id": 2,
"name": "myTeam2"
}
]
}
],
"type": "owner"
},
{
"id": 5,
"name": "tests",
"users": [
{
"id": 17,
"username": "user.test@test2.be",
"email": "user.test@test2.be",
"firstName": "Paul",
"lastName": "User2",
"roles": [
"ROLE_SYSTEM",
"ROLE_APP",
"ROLE_DOMAIN",
"ROLE_MAIL",
"ROLE_CUSTADMIN",
"ROLE_FINANCE"
],
"status": "ok",
"teams": []
}
],
"type": "reseller"
},
{
"id": 6,
"name": "tests6",
"users": [
{
"id": 3,
"username": "user.test@test3.be",
"email": "user.test@test3.be",
"firstName": "Sam",
"lastName": "User3",
"roles": [
"ROLE_SYSTEM",
"ROLE_APP",
"ROLE_DOMAIN",
"ROLE_MAIL",
"ROLE_CUSTADMIN",
"ROLE_FINANCE"
],
"status": "ok",
"teams": []
}
],
"type": "manual"
}
]
}
HTTP status code 403
Response when a user does not have access to a domain
HTTP status code 404
Response when a domain is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Execute an action on a domain (admin only)
post /domains/{domainId}/actions
Execute an action on a domain (admin only)
URI Parameters
- domainId: required(string)
The unique identifier of a domain
Body
Media type: application/json
Type: object
Properties- type: required(one of deactivate, activate, dnsUpdate)
Action type
Examples:
1:
{
"type": "activate"
}
2:
{
"type": "deactivate"
}
3:
{
"type": "dnsUpdate"
}
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"domain": {
"id": 16,
"name": "testdomain123",
"fullname": "testdomain123.nl",
"ttl": 28800,
"eppCode": null,
"status": "to_create",
"dnssecStatus": "does_not_need_signing",
"registrationIsHandled": true,
"provider": "Key Systems",
"dnsIsHandled": true,
"dtRegister": null,
"nameserver1": null,
"nameserver2": null,
"nameserver3": null,
"nameserver4": null,
"nameserverIp1": null,
"nameserverIp2": null,
"nameserverIp3": null,
"nameserverIp4": null,
"nameserverIpv61": null,
"nameserverIpv62": null,
"nameserverIpv63": null,
"nameserverIpv64": null,
"organisation": {
"id": 123,
"name": "Test Company",
"reseller": null
},
"domaintype": {
"id": 1,
"name": "nl",
"extension": "nl",
"renewPeriod": null,
"transferAutoLicensee": true,
"requestIncomingTransferCodePossible": false,
"requestOutgoingTransferCodePossible": true,
"licenseeChangePossible": false,
"dnssecSupported": false
},
"domaincontactLicensee": {
"id": 1,
"firstName": "Test",
"lastName": "Test",
"organisationName": "Test Org",
"street": "Test",
"houseNumber": "12",
"zip": "12345",
"city": "Test",
"state": "Test",
"phone": "+48.1345612",
"fax": null,
"email": "test@test.pl",
"taxNumber": "123456",
"status": 10,
"passportNumber": "EB1234565",
"socialNumber": "123456822",
"birthStreet": "Test",
"birthZip": "12345",
"birthCity": "Test",
"birthDate": null,
"gender": "M",
"type": "licensee",
"country": {
"id": "BE",
"name": "Belgium"
},
"fullname": "Test Test"
},
"domaincontactOnsite": null,
"mailgroup": {
"id": 911,
"name": "TestMailgroup"
},
"dtExpires": 1518030935,
"billingStatus": "to_create",
"handleMailDns": true
}
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a domain
HTTP status code 404
Response when a domain is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Transfer a domain
put /domains/{domainId}/transfer
Transfer a domain
URI Parameters
- domainId: required(string)
The unique identifier of a domain
Body
Media type: application/json
Type: object
Properties- name: required(string)
Name
- nameserver1: (string)
Nameserver (at least one of name servers have to be filled in when dns is not handled by us)
- nameserver2: (string)
Nameserver (at least one of name servers have to be filled in when dns is not handled by us)
- nameserver3: (string)
Nameserver (at least one of name servers have to be filled in when dns is not handled by us)
- nameserver4: (string)
Nameserver (at least one of name servers have to be filled in when dns is not handled by us)
- nameserverIp1: (string)
nameserverIp
- nameserverIp2: (string)
nameserverIp
- nameserverIp3: (string)
nameserverIp
- nameserverIp4: (string)
nameserverIp
- nameserverIpv61: (string)
nameserverIpv6
- nameserverIpv62: (string)
nameserverIpv6
- nameserverIpv63: (string)
nameserverIpv6
- nameserverIpv64: (string)
nameserverIpv6
- ttl: (integer)
Ttl (default: 28800)
- action: required(one of none, create, transfer, transferFromQuarantine)
Action type
- eppCode: (string)
EppCode (required when action = transfer)
- handleDns: (boolean)
Should dns be handled by us? (default: true)
- extraFields: (string)
Extra fields (json, non-editable)
- domaintype: required(integer)
The unique identifier of a domaintype (non-editable)
- domaincontactLicensee: required(integer)
The unique identifier of a domaincontact with type licensee
- domaincontactOnsite: (integer)
The unique identifier of a domaincontact with type onsite
- organisation: required(integer)
The unique identifier of an organisation
- autorecordTemplate: (string)
AutorecordTemplate
- autorecordTemplateReplace: (boolean)
(default: null)
- domainprovider: (integer)
The unique identifier of a domain provider (admin only)
- dtExternalCreated: (string)
Creation timestamp (admin only)
- dtExternalExpires: (string)
Expire date timestamp (admin only)
- convertDomainrecords: (string)
Domainrecords json (admin only)
- autoTeams: (string)
A csv list of team ids
- externalInfo: (string)
ExternalInfo (required when billableitemInfo entities for an Organisation exist in db)
Examples:
none:
{
"name": "testdomain123",
"domaintype": 1,
"handleDns": true,
"domaincontactLicensee": 1,
"action": "none",
"autoTeams": null,
"externalInfo": null
}
create:
{
"name": "testdomain123",
"domaintype": 1,
"handleDns": false,
"domaincontactLicensee": 1,
"action": "create",
"nameserver1": "test.test.com",
"nameserverIp1": "142.425.1.2",
"nameserverIpv61": "2001:0db8:0000:0000:0000:ff00:0042:8329",
"autoTeams": null,
"externalInfo": "123TB"
}
transfer:
{
"name": "testdomain123",
"domaintype": 1,
"handleDns": true,
"domaincontactLicensee": null,
"action": "transfer",
"autoTeams": "1,14,23",
"externalInfo": null
}
HTTP status code 204
Request successfully processed
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a domain
HTTP status code 404
Response when a domain is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Internal transfer (available only for dnsbe domains)
put /domains/{domainId}/internaltransfer
Internal transfer (available only for dnsbe domains)
URI Parameters
- domainId: required(string)
The unique identifier of a domain
Body
Media type: application/json
Type: object
Properties- name: required(string)
Name
- nameserver1: (string)
Nameserver (at least one of name servers have to be filled in when dns is not handled by us)
- nameserver2: (string)
Nameserver (at least one of name servers have to be filled in when dns is not handled by us)
- nameserver3: (string)
Nameserver (at least one of name servers have to be filled in when dns is not handled by us)
- nameserverIp1: (string)
nameserverIp
- nameserverIp2: (string)
nameserverIp
- nameserverIp3: (string)
nameserverIp
- nameserverIpv61: (string)
nameserverIpv6
- nameserverIpv62: (string)
nameserverIpv6
- nameserverIpv63: (string)
nameserverIpv6
- ttl: (integer)
Ttl (default: 28800)
- eppCode: (string)
EppCode (required when action = transfer)
- handleDns: (boolean)
Should dns be handled by us? (default: true)
- extraFields: (string)
Extra fields (json, non-editable)
- domaintype: required(integer)
The unique identifier of a domaintype (non-editable)
- domaincontactLicensee: required(integer)
The unique identifier of a domaincontact with type licensee
- domaincontactOnsite: (integer)
The unique identifier of a domaincontact with type onsite
- organisation: required(integer)
The unique identifier of an organisation
- autorecordTemplate: (string)
AutorecordTemplate
- autorecordTemplateReplace: (boolean)
(default: null)
- autoTeams: (string)
A csv list of team ids
- externalInfo: (string)
ExternalInfo (required when billableitemInfo entities for an Organisation exist in db)
Example:
{
"name": "testdomain123",
"domaintype": 364,
"handleDns": true,
"domaincontactLicensee": 1,
"autoTeams": null,
"externalInfo": null,
"eppCode": "Xjdhsiu28lkm"
}
HTTP status code 204
Request successfully processed
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a domain
HTTP status code 404
Response when a domain is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Create a domain at domain provider for existing in db domain
put /domains/{domainId}/create
Create a domain at domain provider for existing in db domain
URI Parameters
- domainId: required(string)
The unique identifier of a domain
Body
Media type: application/json
Type: object
Properties- name: required(string)
Name
- nameserver1: (string)
Nameserver (at least one of name servers have to be filled in when dns is not handled by us)
- nameserver2: (string)
Nameserver (at least one of name servers have to be filled in when dns is not handled by us)
- nameserver3: (string)
Nameserver (at least one of name servers have to be filled in when dns is not handled by us)
- nameserver4: (string)
Nameserver (at least one of name servers have to be filled in when dns is not handled by us)
- nameserverIp1: (string)
nameserverIp
- nameserverIp2: (string)
nameserverIp
- nameserverIp3: (string)
nameserverIp
- nameserverIp4: (string)
nameserverIp
- nameserverIpv61: (string)
nameserverIpv6
- nameserverIpv62: (string)
nameserverIpv6
- nameserverIpv63: (string)
nameserverIpv6
- nameserverIpv64: (string)
nameserverIpv6
- ttl: (integer)
Ttl (default: 28800)
- action: required(one of none, create, transfer, transferFromQuarantine)
Action type
- eppCode: (string)
EppCode (required when action = transfer)
- handleDns: (boolean)
Should dns be handled by us? (default: true)
- extraFields: (string)
Extra fields (json, non-editable)
- domaintype: required(integer)
The unique identifier of a domaintype (non-editable)
- domaincontactLicensee: required(integer)
The unique identifier of a domaincontact with type licensee
- domaincontactOnsite: (integer)
The unique identifier of a domaincontact with type onsite
- organisation: required(integer)
The unique identifier of an organisation
- autorecordTemplate: (string)
AutorecordTemplate
- autorecordTemplateReplace: (boolean)
(default: null)
- domainprovider: (integer)
The unique identifier of a domain provider (admin only)
- dtExternalCreated: (string)
Creation timestamp (admin only)
- dtExternalExpires: (string)
Expire date timestamp (admin only)
- convertDomainrecords: (string)
Domainrecords json (admin only)
- autoTeams: (string)
A csv list of team ids
- externalInfo: (string)
ExternalInfo (required when billableitemInfo entities for an Organisation exist in db)
Examples:
none:
{
"name": "testdomain123",
"domaintype": 1,
"handleDns": true,
"domaincontactLicensee": 1,
"action": "none",
"autoTeams": null,
"externalInfo": null
}
create:
{
"name": "testdomain123",
"domaintype": 1,
"handleDns": false,
"domaincontactLicensee": 1,
"action": "create",
"nameserver1": "test.test.com",
"nameserverIp1": "142.425.1.2",
"nameserverIpv61": "2001:0db8:0000:0000:0000:ff00:0042:8329",
"autoTeams": null,
"externalInfo": "123TB"
}
transfer:
{
"name": "testdomain123",
"domaintype": 1,
"handleDns": true,
"domaincontactLicensee": null,
"action": "transfer",
"autoTeams": "1,14,23",
"externalInfo": null
}
HTTP status code 204
Request successfully processed
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a domain
HTTP status code 404
Response when a domain is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Get outgoing transfer code
get /domains/{domainId}/transfercode
Get outgoing transfer code
URI Parameters
- domainId: required(string)
The unique identifier of a domain
HTTP status code 204
Request successfully processed
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a domain
HTTP status code 404
Response when a domain is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Create a new record
List of all available records
post /domains/{domainId}/records
Create a new record
URI Parameters
- domainId: required(string)
The unique identifier of a domain
Query Parameters
- withoutDnsJob: (boolean)
Body
Media type: application/json
Type: object
Properties- type: required(one of A, AAAA, CNAME, NS, MX, SRV, TXT, URLFW1, URLFW2)
Record type
- name: (string)
Record name
- It can't contain spaces
- Underscore is allowed for types: CNAME, NS, SRV, TXT
- Underscore is NOT allowed for types: A, AAAA, MX, URLFW1, URLFW2
- content: required(string)
Record content
- For type A: it should be valid ipv4 address
- For type AAAA: it should be valid ipv6 address
- For type CNAME and NS: it can't be ip address
- For type URLFW1 and URLFW2: it should be valid URL eg. http://www.google.be
- priority: (string)
Priority
- It should be > 0 for record type MX
- systemHasNetworkIp: (integer)
The unique identifier of a SystemHasNetworkIp
- url: (integer)
The unique identifier of a Url
Examples:
A:
{
"type": "A",
"content": "193.104.8.1",
"name": null
}
AAAA:
{
"type": "A",
"content": "2a02:5b40:4:210:1:1:dddd:10",
"name": "test123"
}
TXT:
{
"type": "TXT",
"content": "google-site-verification=712PQRrVmI201SC23jeZtpRKtdPR-Ms9e3JoC1gbTKU",
"name": null
}
MX:
{
"type": "MX",
"content": "ASPMX.L.GOOGLE.COM.",
"name": null,
"priority": 10
}
CNAME:
{
"type": "CNAME",
"content": "whatever_cname_test.test.be.",
"name": "test123cname"
}
NS:
{
"type": "NS",
"content": "whatever_ns_test.test.be.",
"name": "test123ns"
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"record": {
"id": 1,
"name": "ddd957f7cd",
"content": "184.3.217.230",
"priority": null,
"type": "A",
"systemHasNetworkIp": {
"id": 1
},
"url": null,
"sslCertificate": null,
"mailgroup": null
}
}
HTTP status code 400
Validation of new record failed
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /domains/{domainId}/records
List of all available records
URI Parameters
- domainId: required(string)
The unique identifier of a domain
Query Parameters
- type: (string)
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- orderBy: (string)
- orderType: (string)
ASC or DESC
- filter: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"records": [
{
"id": 1,
"name": "ddd957f7cd",
"content": "184.3.217.230",
"priority": null,
"type": "A",
"systemHasNetworkIp": {
"id": 1
},
"url": null,
"sslCertificate": null,
"mailgroup": null
},
{
"id": 4,
"name": "*.ddd957f7cd",
"content": "2a03:6b40:4:224::8b",
"priority": null,
"type": "AAAA",
"systemHasNetworkIp": {
"id": 2
},
"url": null,
"sslCertificate": null,
"mailgroup": null
},
{
"id": 7,
"name": "test",
"content": "http://test123.test.be",
"priority": null,
"type": "URLFW1",
"systemHasNetworkIp": null,
"url": null,
"sslCertificate": {
"id": 123,
"name": "test.ddd957f7cd.be",
"dtExpires": 1518104201,
"status": "ok"
},
"mailgroup": null
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Update a record
Delete a record
Get a record
put /domains/{domainId}/records/{recordId}
Update a record
URI Parameters
- domainId: required(string)
The unique identifier of a domain
- recordId: required(string)
The unique identifier of a record
Body
Media type: application/json
Type: object
Properties- type: required(one of A, AAAA, CNAME, NS, MX, SRV, TXT, URLFW1, URLFW2)
Record type
- name: (string)
Record name
- It can't contain spaces
- Underscore is allowed for types: CNAME, NS, SRV, TXT
- Underscore is NOT allowed for types: A, AAAA, MX, URLFW1, URLFW2
- content: required(string)
Record content
- For type A: it should be valid ipv4 address
- For type AAAA: it should be valid ipv6 address
- For type CNAME and NS: it can't be ip address
- For type URLFW1 and URLFW2: it should be valid URL eg. http://www.google.be
- priority: (string)
Priority
- It should be > 0 for record type MX
- systemHasNetworkIp: (integer)
The unique identifier of a SystemHasNetworkIp
- url: (integer)
The unique identifier of a Url
Examples:
A:
{
"type": "A",
"content": "193.104.8.1",
"name": null
}
AAAA:
{
"type": "A",
"content": "2a02:5b40:4:210:1:1:dddd:10",
"name": "test123"
}
TXT:
{
"type": "TXT",
"content": "google-site-verification=712PQRrVmI201SC23jeZtpRKtdPR-Ms9e3JoC1gbTKU",
"name": null
}
MX:
{
"type": "MX",
"content": "ASPMX.L.GOOGLE.COM.",
"name": null,
"priority": 10
}
CNAME:
{
"type": "CNAME",
"content": "whatever_cname_test.test.be.",
"name": "test123cname"
}
NS:
{
"type": "NS",
"content": "whatever_ns_test.test.be.",
"name": "test123ns"
}
HTTP status code 204
Response when update of a record succeeded
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a record
HTTP status code 404
Response when record is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
delete /domains/{domainId}/records/{recordId}
Delete a record
URI Parameters
- domainId: required(string)
The unique identifier of a domain
- recordId: required(string)
The unique identifier of a record
get /domains/{domainId}/records/{recordId}
Get a record
URI Parameters
- domainId: required(string)
The unique identifier of a domain
- recordId: required(string)
The unique identifier of a record
HTTP status code 200
Response when record is found
Body
Media type: application/json
Type: object
Example:
{
"record": {
"id": 1,
"name": "ddd957f7cd",
"content": "184.3.217.230",
"priority": null,
"type": "A",
"systemHasNetworkIp": {
"id": 1
},
"url": null,
"sslCertificate": null,
"mailgroup": null
}
}
HTTP status code 403
Response when a user does not have access to a record
HTTP status code 404
Response when record is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Delete an old record and create a new one
post /domains/{domainId}/records/{recordId}/replace
Delete an old record and create a new one
URI Parameters
- domainId: required(string)
The unique identifier of a domain
- recordId: required(string)
The unique identifier of a record
Body
Media type: application/json
Type: object
Properties- type: required(one of A, AAAA, CNAME, NS, MX, SRV, TXT, URLFW1, URLFW2)
Record type
- name: (string)
Record name
- It can't contain spaces
- Underscore is allowed for types: CNAME, NS, SRV, TXT
- Underscore is NOT allowed for types: A, AAAA, MX, URLFW1, URLFW2
- content: required(string)
Record content
- For type A: it should be valid ipv4 address
- For type AAAA: it should be valid ipv6 address
- For type CNAME and NS: it can't be ip address
- For type URLFW1 and URLFW2: it should be valid URL eg. http://www.google.be
- priority: (string)
Priority
- It should be > 0 for record type MX
- systemHasNetworkIp: (integer)
The unique identifier of a SystemHasNetworkIp
- url: (integer)
The unique identifier of a Url
Examples:
A:
{
"type": "A",
"content": "193.104.8.1",
"name": null
}
AAAA:
{
"type": "A",
"content": "2a02:5b40:4:210:1:1:dddd:10",
"name": "test123"
}
TXT:
{
"type": "TXT",
"content": "google-site-verification=712PQRrVmI201SC23jeZtpRKtdPR-Ms9e3JoC1gbTKU",
"name": null
}
MX:
{
"type": "MX",
"content": "ASPMX.L.GOOGLE.COM.",
"name": null,
"priority": 10
}
CNAME:
{
"type": "CNAME",
"content": "whatever_cname_test.test.be.",
"name": "test123cname"
}
NS:
{
"type": "NS",
"content": "whatever_ns_test.test.be.",
"name": "test123ns"
}
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"record": {
"id": 1,
"name": "ddd957f7cd",
"content": "184.3.217.230",
"priority": null,
"type": "A",
"systemHasNetworkIp": {
"id": 1
},
"url": null,
"sslCertificate": null,
"mailgroup": null
}
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a domain
HTTP status code 404
Response when a record is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Add access to a domain
post /domains/{domainId}/acls
Add access to a domain
URI Parameters
- domainId: required(string)
The unique identifier of a domain
Body
Media type: application/json
Type: object
Properties- organisation: required(integer)
The unique identifier of an organisation
Example:
{
"organisation": 123
}
HTTP status code 201
Response when access to a domain was successfully added
Body
Media type: application/json
Type: object
Example:
{
"acl": {
"id": 746,
"object": "Level27\\DomainBundle\\Entity\\Domain",
"objectId": 1,
"permissions": null,
"extra": null,
"type": "manual",
"organisation": {
"id": 123,
"name": "Test Company"
}
}
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a domain
HTTP status code 404
Response when a domain is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Remove access to a domain
delete /domains/{domainId}/acls/{organisationId}
Remove access to a domain
URI Parameters
- domainId: required(string)
The unique identifier of a domain
- organisationId: required(string)
HTTP status code 204
Response when access to a domain was successfully removed
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a domain
HTTP status code 404
Response when a domain is not found
HTTP status code 500
Response when a user does not have a proper role to access a control
Get notifications for a domain
Send a notification for a domain
get /domains/{domainId}/notifications
Get notifications for a domain
URI Parameters
- domainId: required(string)
The unique identifier of a domain
Query Parameters
- orderBy: (string)
- orderType: (string)
ASC or DESC
- type: (string)
- limit: (integer - default: 5)
- offset: (integer - default: 0)
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"notifications": [
{
"id": 1153,
"entityIndex": "Level27\\DomainBundle\\Entity\\Domain_12",
"entityName": "domain",
"dtStamp": "1515064561",
"notificationGroup": "Domain",
"type": "jobdelete50",
"entityClass": "Level27\\DomainBundle\\Entity\\Domain",
"entityId": 12,
"rootEntityClass": null,
"rootEntityId": null,
"status": 50,
"statusDisplay": "success",
"statusCategory": "green",
"sendMode": 0,
"priority": 250,
"subject": "Domain invoicedomain1515064537.be has been deleted succesfully",
"params": {
"exceptionCode": null,
"exceptionMsg": null
},
"userId": 1,
"contacts": [
{
"id": 447,
"dtStamp": "1515064562",
"fullName": "Test User",
"language": "en",
"message": null,
"status": 50,
"type": "email",
"value": "testuser@test.be",
"contactId": 1
}
],
"extraRecipients": [],
"entity": {
"id": 12,
"name": "invoicedomain1515064537",
"fullname": "invoicedomain1515064537.be",
"ttl": 28800,
"eppCode": "150246-857511-649306-0584",
"status": "deleted",
"dnssecStatus": "",
"registrationIsHandled": true,
"provider": "DNS Belgium",
"dnsIsHandled": true,
"dtRegister": null,
"nameserver1": null,
"nameserver2": null,
"nameserver3": null,
"nameserverIp1": null,
"nameserverIp2": null,
"nameserverIp3": null,
"nameserverIpv61": null,
"nameserverIpv62": null,
"nameserverIpv63": null,
"organisation": {
"id": 123,
"name": "Test Company",
"reseller": null
},
"domaintype": {
"id": 364,
"name": "be",
"extension": "be",
"renewPeriod": null,
"transferAutoLicensee": true,
"requestIncomingTransferCodePossible": true,
"requestOutgoingTransferCodePossible": false,
"licenseeChangePossible": false,
"dnssecSupported": true
},
"domaincontactLicensee": {
"id": 12,
"firstName": "Test",
"lastName": "Behat",
"organisationName": "BehatTest licensee",
"street": "Teststreet",
"houseNumber": "15",
"zip": "1000",
"city": "Testcity",
"state": "Teststate",
"phone": "+32.22341234",
"fax": "+32.22341235",
"email": "test@behat.com",
"taxNumber": "BE.123.345.570",
"status": 90,
"statusCategory": "green",
"passportNumber": "44221226",
"socialNumber": null,
"birthStreet": "Teststreet",
"birthZip": "1000",
"birthCity": "Testcity",
"birthDate": "507769200",
"gender": "M",
"type": "licensee",
"country": {
"id": "BE",
"name": "Belgium"
},
"fullname": "Test Behat"
},
"domaincontactOnsite": null,
"dtExpires": 1546600537,
"billingStatus": "deleted",
"extraFields": []
},
"user": {
"id": 1,
"username": "test@test.be",
"email": "test@test.be",
"firstName": "Test",
"lastName": "User",
"roles": [
"ROLE_CUSTADMIN",
"ROLE_DOMAIN"
],
"status": "ok",
"statusCategory": "green",
"language": "nl",
"organisation": {
"id": 1,
"name": "level27",
"street": "Test-Street",
"houseNumber": "23",
"zip": "123",
"city": "Test City"
},
"country": {
"id": "BE",
"name": "Belgium"
},
"fullname": "Test User"
}
},
{
"id": 1139,
"entityIndex": "Level27\\DomainBundle\\Entity\\Domain_12",
"entityName": "domain",
"dtStamp": "1515064547",
"notificationGroup": "Domain",
"type": "jobinsert50",
"entityClass": "Level27\\DomainBundle\\Entity\\Domain",
"entityId": 12,
"rootEntityClass": null,
"rootEntityId": null,
"status": 50,
"statusDisplay": "success",
"statusCategory": "green",
"sendMode": 0,
"priority": 250,
"subject": "Domain invoicedomain1515064537.be has been created successfully",
"params": {
"exceptionCode": null,
"exceptionMsg": null
},
"userId": 1,
"contacts": [
{
"id": 441,
"dtStamp": "1515064548",
"fullName": "Test User",
"language": "en",
"message": null,
"status": 50,
"type": "email",
"value": "test@test.be",
"contactId": 1
}
],
"extraRecipients": [],
"entity": {
"id": 12,
"name": "invoicedomain1515064537",
"fullname": "invoicedomain1515064537.be",
"ttl": 28800,
"eppCode": "150246-857511-649306-0584",
"status": "deleted",
"statusCategory": "green",
"dnssecStatus": "",
"registrationIsHandled": true,
"provider": "DNS Belgium",
"dnsIsHandled": true,
"dtRegister": null,
"nameserver1": null,
"nameserver2": null,
"nameserver3": null,
"nameserverIp1": null,
"nameserverIp2": null,
"nameserverIp3": null,
"nameserverIpv61": null,
"nameserverIpv62": null,
"nameserverIpv63": null,
"organisation": {
"id": 123,
"name": "Test Company",
"reseller": null
},
"domaintype": {
"id": 364,
"name": "be",
"extension": "be",
"renewPeriod": null,
"transferAutoLicensee": true,
"requestIncomingTransferCodePossible": true,
"requestOutgoingTransferCodePossible": false,
"licenseeChangePossible": false,
"dnssecSupported": true
},
"domaincontactLicensee": {
"id": 12,
"firstName": "Test",
"lastName": "Behat",
"organisationName": "BehatTest licensee",
"street": "Teststreet",
"houseNumber": "15",
"zip": "1000",
"city": "Testcity",
"state": "Teststate",
"phone": "+32.22341234",
"fax": "+32.22341235",
"email": "test@behat.com",
"taxNumber": "BE.123.345.570",
"status": 90,
"passportNumber": "44221226",
"socialNumber": null,
"birthStreet": "Teststreet",
"birthZip": "1000",
"birthCity": "Testcity",
"birthDate": "507769200",
"gender": "M",
"type": "licensee",
"country": {
"id": "BE",
"name": "Belgium"
},
"fullname": "Test Behat"
},
"domaincontactOnsite": null,
"dtExpires": 1546600537,
"billingStatus": "deleted",
"extraFields": []
},
"user": null
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
post /domains/{domainId}/notifications
Send a notification for a domain
URI Parameters
- domainId: required(string)
The unique identifier of a domain
Body
Media type: application/json
Type: object
Properties- type: required(string)
Notification type
- group: required(one of App, Crm, Domain, Finance, Mail, System)
Notification group
- params: (object)
Additional parameters (json)
Example:
{
"type": "jobdelete50",
"group": "Domain"
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"id": 1749,
"entityIndex": "Level27\\DomainBundle\\Entity\\Domain_12",
"entityName": "domain",
"dtStamp": "1518086609",
"notificationGroup": "Domain",
"type": "jobdelete50",
"entityClass": "Level27\\DomainBundle\\Entity\\Domain",
"entityId": 12,
"rootEntityClass": null,
"rootEntityId": null,
"status": 21,
"statusDisplay": "queued",
"statusCategory": "yellow",
"sendMode": 0,
"priority": 250,
"subject": null,
"params": [],
"userId": 1,
"contacts": [],
"extraRecipients": [],
"entity": null,
"user": null
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a domain
HTTP status code 500
Response when a user does not have a proper role to access a controller
Create a billableitem (action only for admin)
post /domains/{domainId}/bill
Create a billableitem (action only for admin)
URI Parameters
- domainId: required(string)
The unique identifier of a domain
Body
Media type: application/json
Type: object
Properties- externalInfo: (string)
ExternalInfo (required when billableitemInfo entities for an Organisation exist in db)
Example:
{
"externalInfo": "123B5"
}
HTTP status code 201
Response when a billableitem was successfully created
Body
Media type: application/json
Type: object
Example:
{
"billableitem": {
"id": 21,
"organisation": {
"id": 123,
"name": "Test Company"
},
"status": 10,
"statusDisplay": "ok",
"description": "Billableitem description",
"autoRenew": true,
"dtExpires": 1518024820,
"dtNextRenewal": 1518024820,
"documentsExist": false,
"details": "null \"extra1\"",
"ull": null,
"extra2": null,
"externalInfo": "123Yw"
}
}
HTTP status code 403
Response when a user does not have access to a domain
HTTP status code 404
Response when a domain is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Get price for an existing domain
Update an existing billableitem
Delete a billableitem (action only for admin)
get /domains/{domainId}/billableitem
Get price for an existing domain
URI Parameters
- domainId: required(string)
The unique identifier of a domain
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"billableitem": {
"id": 30,
"organisation": {
"id": 123,
"name": "Test Company"
},
"status": 10,
"statusDisplay": "ok",
"description": "Domain afasflkdsajfldjs.com",
"autoRenew": true,
"dtExpires": 1543573784,
"dtNextRenewal": 1540895384,
"documentsExist": true,
"details": [
{
"id": 68,
"price": null,
"dtExpires": "1543573784",
"quantity": 1,
"description": ".com domain registration",
"product": {
"id": "domain_com_registration",
"description": ".com domain registration",
"allowQuantityChange": false
},
"productPrice": {
"id": 335,
"period": 12,
"currency": "EUR",
"price": "1431",
"timing": "pre",
"status": 10
},
"type": 75
}
],
"extra1": null,
"extra2": null,
"externalInfo": "123",
"agreement": {
"id": 3,
"name": "My agreement"
}
}
}
patch /domains/{domainId}/billableitem
Update an existing billableitem
URI Parameters
- domainId: required(string)
The unique identifier of a domain
Body
Media type: application/json
Type: object
Properties- autoRenew: (boolean)
Renew automatically (default: true)
- extra1: (string)
Extra1
- extra2: (string)
Extra2
- externalInfo: (string)
ExternalInfo (required when billableitemInfo entities for an Organisation exist in db)
- preventDeactivation: (boolean)
Prevent deactivation (default: true) - admin only
Example:
{
"autoRenew": false,
"extra1": null,
"extra2": null,
"externalInfo": "123B5"
}
HTTP status code 204
Response when update of a billableitem succeeded
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a domain
HTTP status code 404
Response when a billableitem is not found
HTTP status code 500
Response when a user does not have a proper role to access a control
delete /domains/{domainId}/billableitem
Delete a billableitem (action only for admin)
URI Parameters
- domainId: required(string)
The unique identifier of a domain
HTTP status code 204
Response when deletion of a billableitem succeeded
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a domain
HTTP status code 404
Response when a billableitem is not found
HTTP status code 500
Response when a user does not have a proper role to access a control
Add an agreement to billableitem (action only for admin)
Delete an agreement from billableitem (action only for admin)
post /domains/{domainId}/billableitem/agreements
Add an agreement to billableitem (action only for admin)
URI Parameters
- domainId: required(string)
The unique identifier of a domain
Body
Media type: application/json
Type: object
Properties- agreement: required(integer)
The unique identifier of an agreement
Example:
{
"agreement": 3
}
HTTP status code 204
Response when agreement was added to billableitem
Body
Media type: application/json
Type: object
Example:
{
"billableitem": {
"id": 30,
"organisation": {
"id": 123,
"name": "Test Company"
},
"status": 10,
"statusDisplay": "ok",
"description": "Domain afasflkdsajfldjs.com",
"autoRenew": true,
"dtExpires": 1543573784,
"dtNextRenewal": 1540895384,
"documentsExist": true,
"details": [
{
"id": 68,
"price": null,
"dtExpires": "1543573784",
"quantity": 1,
"description": ".com domain registration",
"product": {
"id": "domain_com_registration",
"description": ".com domain registration",
"allowQuantityChange": false
},
"productPrice": {
"id": 335,
"period": 12,
"currency": "EUR",
"price": "1431",
"timing": "pre",
"status": 10
},
"type": 75
}
],
"extra1": null,
"extra2": null,
"externalInfo": "123",
"agreement": {
"id": 3,
"name": "My agreement"
}
}
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to an app
HTTP status code 404
Response when a billableitem is not found
delete /domains/{domainId}/billableitem/agreements
Delete an agreement from billableitem (action only for admin)
URI Parameters
- domainId: required(string)
The unique identifier of a domain
Update an existing billableitem detail
patch /domains/{domainId}/billableitem/details/{detailId}
Update an existing billableitem detail
URI Parameters
- domainId: required(string)
The unique identifier of a domain
- detailId: required(string)
Body
Media type: application/json
Type: object
Properties- price: (integer)
Price in cents (admin only)
- description: (string)
Description
- productPrice: (integer)
The unique identifier of a ProductPrice
- quantity: (integer)
Quantity (admin only)
Examples:
1:
{
"description": "May description",
"productPrice": "product_price_id"
}
2 (admin only):
{
"price": 100,
"quantity": 2
}
HTTP status code 204
Response when update of a billableitem detail succeeded
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a domain
HTTP status code 404
Response when a billableitem detail is not found
HTTP status code 500
Response when a user does not have a proper role to access a control
Update externalInfo for an existing billableitem
patch /domains/{domainId}/billableitem/externalinfo
Update externalInfo for an existing billableitem
URI Parameters
- domainId: required(string)
The unique identifier of a domain
Body
Media type: application/json
Type: object
Properties- externalInfo: (string)
ExternalInfo (required when billableitemInfo entities for an Organisation exist in db)
Example:
{
"externalInfo": "x-0001"
}
List of all sslCertificates for the domain
get /domains/{domainId}/sslcertificates
List of all sslCertificates for the domain
URI Parameters
- domainId: required(string)
The unique identifier of a domain
Query Parameters
- status: (string)
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- orderBy: (string)
- orderType: (string)
ASC or DESC
- filter: (string)
- sslType: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"sslCertificates": [
{
"id": 123,
"name": "test1.testdomain.be",
"sslType": "letsencrypt",
"sslCrt": "***",
"sslCabundle\"": "***",
"sslStatus\"": "ok",
"status": "ok",
"dtExpires": "1545226069",
"validationParams": null,
"sslCertificateUrls": [
{
"id": 28,
"content": "test1.testdomain.be",
"sslStatus": "validation_succeeded",
"errorMsg": null,
"validationType": "http"
}
]
},
{
"id": 123,
"name": "test2.testdomain.be",
"sslType": "letsencrypt",
"sslCrt": null,
"sslCabundle": null,
"sslStatus": "validating",
"status": "creating",
"dtExpires": null,
"validationParams": null,
"urls": [],
"sslCertificateUrls": [
{
"id": 28,
"content": "test2.testdomain.be",
"sslStatus": "validating",
"errorMsg": null,
"validationType": "dns"
}
]
}
]
}
Delete an sslCertificate
delete /domains/{domainId}/sslcertificates/{sslcertificateId}
Delete an sslCertificate
URI Parameters
- domainId: required(string)
The unique identifier of a domain
- sslcertificateId: required(string)
Create a job for sslCertificate
post /domains/{domainId}/sslcertificates/{sslcertificateId}/actions
Create a job for sslCertificate
URI Parameters
- domainId: required(string)
The unique identifier of a domain
- sslcertificateId: required(string)
Body
Media type: application/json
Type: object
Properties- type: required(one of validateChallenge, retry)
Action type
Examples:
1:
{
"type": "validateChallenge"
}
2:
{
"type": "retry"
}
HTTP status code 204
Request successfully processed
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a domain
HTTP status code 404
Response when an sslcertificate is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Create integrity check for domain
Get domain integrity checks
post /domains/{domainId}/integritychecks
Create integrity check for domain
URI Parameters
- domainId: required(string)
The unique identifier of a domain
Body
Media type: application/json
Type: object
Properties- dojobs: (boolean)
Create jobs (default: true)
- forcejobs: (boolean)
Create jobs even if integrity check failed (default: false)
Example:
{
"dojobs": false,
"forcejobs": false
}
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"integritycheck": {
"id": 266,
"dtRequested": "1584959718",
"object": "Level27\\DomainBundle\\Entity\\Domain",
"objectId": 3951,
"results": {
"domain": {
"id": 3951,
"data": {
"fullName": "test.be",
"status": "transfer_failed",
"statusColor": "red",
"provider": "DNS Belgium",
"handleDns": true,
"nameserver1": null,
"nameserver2": null,
"nameserver3": null,
"nameserver4": null,
"nameserverIp1": null,
"nameserverIp2": null,
"nameserverIp3": null,
"nameserverIp4": null,
"nameserverIpv61": null,
"nameserverIpv62": null,
"nameserverIpv63": null,
"nameserverIpv64": null,
"isRegistered": "YES",
"isRegisteredColor": "green",
"dcLicensee": {
"fullName": "Test User",
"address": "Test 41 Bilzen",
"country": "Belgium",
"phone": "+32.123456789",
"email": "test@level27.be"
},
"dcOnsite": null,
"dnssecStatus": "",
"dnssecStatusColor": "orange",
"retry": 3600,
"refresh": 14400,
"expire": 1209600,
"minimum": 3600,
"ttl": 28800,
"mailgroup": "TestMailgroup"
},
"results": {
"name": "ok",
"fullName": "ok",
"subdomain": "ok",
"namesevers_general": "ok",
"nameserver1": "ok",
"nameserver2": "ok",
"nameserver3": "ok",
"nameserver4": "ok",
"nameserverIp1": "ok",
"nameserverIp2": "ok",
"nameserverIp3": "ok",
"nameserverIp4": "ok",
"nameserverIpv61": "ok",
"nameserverIpv62": "ok",
"nameserverIpv63": "ok",
"nameserverIpv64": "ok",
"action": "ok",
"eppCode": "ok",
"extraFields": "ok",
"domaintype": "ok",
"domaincontactLicensee": "ok",
"status": "ok",
"dnssecStatus": "NOT OK - unknown dnssecStatus: 20",
"retry": "ok",
"refresh": "ok",
"expire": "ok",
"minimum": "ok",
"ttl": "ok",
"organisation": "ok",
"provider": "ok",
"nsDig": "ok"
},
"records": {
"message": "Dns is handled by us.",
"dig": [
{
"id": 29845,
"data": {
"type": "A",
"name": null,
"content": "127.0.0.0",
"priority": null,
"digContent": ""
},
"results": {
"status": "NOT OK - dig failed or record not found",
"isExpired": "ok"
},
"sslCertificate": null
},
{
"id": 29847,
"data": {
"type": "AAAA",
"name": null,
"content": "2a02:5b30:0004:0313:0001:0020:0000:0001",
"priority": null,
"digContent": ""
},
"results": {
"status": "NOT OK - dig failed or record not found",
"isExpired": "ok"
},
"sslCertificate": null
},
{
"id": 29922,
"data": {
"type": "MX",
"name": null,
"content": "mail-smtpin1.cp4dev.be.",
"priority": 10,
"digContent": ""
},
"results": {
"status": "NOT OK - dig failed or record not found",
"isExpired": "ok"
},
"sslCertificate": null
},
{
"id": 29923,
"data": {
"type": "TXT",
"name": null,
"content": "v=spf1 include:_mail.cp4dev.be ?all",
"priority": null,
"digContent": ""
},
"results": {
"status": "NOT OK - dig failed or record not found",
"isExpired": "ok"
},
"sslCertificate": null
},
{
"id": 29924,
"data": {
"type": "SRV",
"name": "_autodiscover._tcp",
"content": "0 5 443 autodiscover.cp4dev.be.",
"priority": null,
"digContent": ""
},
"results": {
"status": "NOT OK - dig failed or record not found",
"isExpired": "ok"
},
"sslCertificate": null
},
{
"id": 29925,
"data": {
"type": "CNAME",
"name": "autoconfig",
"content": "autodiscover.cp4dev.be.",
"priority": null,
"digContent": ""
},
"results": {
"status": "NOT OK - dig failed or record not found",
"isExpired": "ok"
},
"sslCertificate": null
},
{
"id": 30518,
"data": {
"type": "URLFW1",
"name": "test6",
"content": "http://test.test.be",
"priority": null,
"digContent": ""
},
"results": {
"status": "NOT OK - dig failed or record not found",
"isExpired": null
},
"sslCertificate": {
"id": 935,
"data": {
"name": "test6.test.be",
"type": "letsencrypt",
"displayType": "Let's Encrypt",
"productType": "single domain",
"status": "update_failed",
"statusColor": "red",
"sslStatus": "validation_failed",
"urls": [
"test6.test.be"
],
"linkedUrls": [],
"dtExpires": "2019-03-20"
},
"results": {
"name": "ok",
"sslType": "ok",
"sslStatus": "ok",
"sslStatusOk": "NOT OK - unknown sslStatus: 40",
"status": "ok",
"okStatus": "NOT OK - unexpected status: update_failed",
"challenge": "ok",
"wildcard": "ok",
"sslCertificateUrls": "ok",
"dtExpires": "N\\A",
"sslKey": null,
"sslCrt": null,
"sslCabundle": null
}
}
}
]
}
},
"organisations": {
"manual": [
"Test1"
],
"owner": "Test2"
},
"teams": [
{
"id": 195,
"name": "Test1",
"adminOnly": null,
"organisationId": 8575
}
],
"financeData": {
"billing": "ON",
"billingStatus": "green",
"autoRenew": "ON",
"autoRenewStatus": "green",
"dtExpires": "2021-04-15",
"billingItems": [
{
"id": 10937,
"description": ".be domain registration",
"type": ".be domain registration",
"period": "1 year(s)",
"dtExpires": "2021-04-15",
"price": 20
}
],
"totalPrice": 20
},
"jobs": [
{
"id": 527347,
"action": "renewCertificateJob",
"status": 21,
"message": "NOT OK - failed job or busy job found",
"dtEnd": null,
"dtStamp": "2020-03-23",
"exceptionMsq": null
},
{
"id": 527348,
"action": "validateCertificate",
"status": 20,
"message": "NOT OK - failed job or busy job found",
"dtEnd": null,
"dtStamp": "2020-03-23",
"exceptionMsq": null
},
{
"id": 527350,
"action": "urlfwUpdate",
"status": 20,
"message": "NOT OK - failed job or busy job found",
"dtEnd": null,
"dtStamp": "2020-03-23",
"exceptionMsq": null
}
],
"isHealthy": false,
"extraMessage": "No jobs because entity is not healthy or forcejobs is not called."
},
"status": "ok",
"dojobs": true,
"forcejobs": false,
"localIntegritychecks": []
}
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to an domain
HTTP status code 404
Response when an domain is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /domains/{domainId}/integritychecks
Get domain integrity checks
URI Parameters
- domainId: required(string)
The unique identifier of a domain
Query Parameters
- status: (string)
- orderBy: (string)
- orderType: (string)
ASC or DESC
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- filter: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"integritychecks": [
{
"id": 268,
"dtRequested": "1584960307",
"status": "ok"
},
{
"id": 259,
"dtRequested": "1584734256",
"status": "ok"
},
{
"id": 254,
"dtRequested": "1584732272",
"status": "ok"
},
{
"id": 251,
"dtRequested": "1584709340",
"status": "ok"
},
{
"id": 249,
"dtRequested": "1584708665",
"status": "ok"
}
]
}
HTTP status code 400
Bad request
HTTP status code 401
Unauthorized - when user doesn't have role admin, custadmin or domain
HTTP status code 403
Access Denied - when user doesn't have access to domain
HTTP status code 404
Not found - when integritycheck doesn't exist
HTTP status code 500
Response when a user does not have a proper role to access a controller
Get domain integrity check
get /domains/{domainId}/integritychecks/{integritycheckId}
Get domain integrity check
URI Parameters
- domainId: required(string)
The unique identifier of a domain
- integritycheckId: required(string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"integritycheck": {
"id": 266,
"dtRequested": "1584959718",
"object": "Level27\\DomainBundle\\Entity\\Domain",
"objectId": 3951,
"results": {
"domain": {
"id": 3951,
"data": {
"fullName": "test.be",
"status": "transfer_failed",
"statusColor": "red",
"provider": "DNS Belgium",
"handleDns": true,
"nameserver1": null,
"nameserver2": null,
"nameserver3": null,
"nameserver4": null,
"nameserverIp1": null,
"nameserverIp2": null,
"nameserverIp3": null,
"nameserverIp4": null,
"nameserverIpv61": null,
"nameserverIpv62": null,
"nameserverIpv63": null,
"nameserverIpv64": null,
"isRegistered": "YES",
"isRegisteredColor": "green",
"dcLicensee": {
"fullName": "Test User",
"address": "Test 41 Bilzen",
"country": "Belgium",
"phone": "+32.123456789",
"email": "test@level27.be"
},
"dcOnsite": null,
"dnssecStatus": "",
"dnssecStatusColor": "orange",
"retry": 3600,
"refresh": 14400,
"expire": 1209600,
"minimum": 3600,
"ttl": 28800,
"mailgroup": "TestMailgroup"
},
"results": {
"name": "ok",
"fullName": "ok",
"subdomain": "ok",
"namesevers_general": "ok",
"nameserver1": "ok",
"nameserver2": "ok",
"nameserver3": "ok",
"nameserver4": "ok",
"nameserverIp1": "ok",
"nameserverIp2": "ok",
"nameserverIp3": "ok",
"nameserverIp4": "ok",
"nameserverIpv61": "ok",
"nameserverIpv62": "ok",
"nameserverIpv63": "ok",
"nameserverIpv64": "ok",
"action": "ok",
"eppCode": "ok",
"extraFields": "ok",
"domaintype": "ok",
"domaincontactLicensee": "ok",
"status": "ok",
"dnssecStatus": "NOT OK - unknown dnssecStatus: 20",
"retry": "ok",
"refresh": "ok",
"expire": "ok",
"minimum": "ok",
"ttl": "ok",
"organisation": "ok",
"provider": "ok",
"nsDig": "ok"
},
"records": {
"message": "Dns is handled by us.",
"dig": [
{
"id": 29845,
"data": {
"type": "A",
"name": null,
"content": "127.0.0.0",
"priority": null,
"digContent": ""
},
"results": {
"status": "NOT OK - dig failed or record not found",
"isExpired": "ok"
},
"sslCertificate": null
},
{
"id": 29847,
"data": {
"type": "AAAA",
"name": null,
"content": "2a02:5b30:0004:0313:0001:0020:0000:0001",
"priority": null,
"digContent": ""
},
"results": {
"status": "NOT OK - dig failed or record not found",
"isExpired": "ok"
},
"sslCertificate": null
},
{
"id": 29922,
"data": {
"type": "MX",
"name": null,
"content": "mail-smtpin1.cp4dev.be.",
"priority": 10,
"digContent": ""
},
"results": {
"status": "NOT OK - dig failed or record not found",
"isExpired": "ok"
},
"sslCertificate": null
},
{
"id": 29923,
"data": {
"type": "TXT",
"name": null,
"content": "v=spf1 include:_mail.cp4dev.be ?all",
"priority": null,
"digContent": ""
},
"results": {
"status": "NOT OK - dig failed or record not found",
"isExpired": "ok"
},
"sslCertificate": null
},
{
"id": 29924,
"data": {
"type": "SRV",
"name": "_autodiscover._tcp",
"content": "0 5 443 autodiscover.cp4dev.be.",
"priority": null,
"digContent": ""
},
"results": {
"status": "NOT OK - dig failed or record not found",
"isExpired": "ok"
},
"sslCertificate": null
},
{
"id": 29925,
"data": {
"type": "CNAME",
"name": "autoconfig",
"content": "autodiscover.cp4dev.be.",
"priority": null,
"digContent": ""
},
"results": {
"status": "NOT OK - dig failed or record not found",
"isExpired": "ok"
},
"sslCertificate": null
},
{
"id": 30518,
"data": {
"type": "URLFW1",
"name": "test6",
"content": "http://test.test.be",
"priority": null,
"digContent": ""
},
"results": {
"status": "NOT OK - dig failed or record not found",
"isExpired": null
},
"sslCertificate": {
"id": 935,
"data": {
"name": "test6.test.be",
"type": "letsencrypt",
"displayType": "Let's Encrypt",
"productType": "single domain",
"status": "update_failed",
"statusColor": "red",
"sslStatus": "validation_failed",
"urls": [
"test6.test.be"
],
"linkedUrls": [],
"dtExpires": "2019-03-20"
},
"results": {
"name": "ok",
"sslType": "ok",
"sslStatus": "ok",
"sslStatusOk": "NOT OK - unknown sslStatus: 40",
"status": "ok",
"okStatus": "NOT OK - unexpected status: update_failed",
"challenge": "ok",
"wildcard": "ok",
"sslCertificateUrls": "ok",
"dtExpires": "N\\A",
"sslKey": null,
"sslCrt": null,
"sslCabundle": null
}
}
}
]
}
},
"organisations": {
"manual": [
"Test1"
],
"owner": "Test2"
},
"teams": [
{
"id": 195,
"name": "Test1",
"adminOnly": null,
"organisationId": 8575
}
],
"financeData": {
"billing": "ON",
"billingStatus": "green",
"autoRenew": "ON",
"autoRenewStatus": "green",
"dtExpires": "2021-04-15",
"billingItems": [
{
"id": 10937,
"description": ".be domain registration",
"type": ".be domain registration",
"period": "1 year(s)",
"dtExpires": "2021-04-15",
"price": 20
}
],
"totalPrice": 20
},
"jobs": [
{
"id": 527347,
"action": "renewCertificateJob",
"status": 21,
"message": "NOT OK - failed job or busy job found",
"dtEnd": null,
"dtStamp": "2020-03-23",
"exceptionMsq": null
},
{
"id": 527348,
"action": "validateCertificate",
"status": 20,
"message": "NOT OK - failed job or busy job found",
"dtEnd": null,
"dtStamp": "2020-03-23",
"exceptionMsq": null
},
{
"id": 527350,
"action": "urlfwUpdate",
"status": 20,
"message": "NOT OK - failed job or busy job found",
"dtEnd": null,
"dtStamp": "2020-03-23",
"exceptionMsq": null
}
],
"isHealthy": false,
"extraMessage": "No jobs because entity is not healthy or forcejobs is not called."
},
"status": "ok",
"dojobs": true,
"forcejobs": false,
"localIntegritychecks": []
}
}
HTTP status code 400
Bad request
HTTP status code 401
Unauthorized - when user doesn't have role admin, custadmin or domain
HTTP status code 403
Access Denied - when user doesn't have access to domain
HTTP status code 404
Not found - when integritycheck doesn't exist
HTTP status code 500
Response when a user does not have a proper role to access a controller
Get domain integrity check
get /domains/{domainId}/integritychecks/{integritycheckId}/report
Get domain integrity check
URI Parameters
- domainId: required(string)
The unique identifier of a domain
- integritycheckId: required(string)
HTTP status code 200
Returns report in pdf
HTTP status code 400
Bad request
HTTP status code 401
Unauthorized - when user doesn't have role admin, custadmin or domain
HTTP status code 403
Access Denied - when user doesn't have access to domain
HTTP status code 404
Not found - when integritycheck doesn't exist
HTTP status code 500
Response when a user does not have a proper role to access a controller
Calculate price for a new domain
get /domains/priceproposal/domaintype/{domaintypeId}
Calculate price for a new domain
URI Parameters
- domaintypeId: required(string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"products": [
{
"id": "domain_be_registration",
"description": ".be domain registration",
"prices": [
{
"id": 1491,
"period": 12,
"currency": "EUR",
"price": "500",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1492,
"period": 24,
"currency": "EUR",
"price": "950",
"timing": "pre",
"default": true,
"status": 10
}
],
"allowQuantityChange": null
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Calculate price for a new domain for a reseller organisation
get /domains/priceproposal/domaintype/{domaintypeId}/organisation/{organisationId}
Calculate price for a new domain for a reseller organisation
URI Parameters
- domaintypeId: required(string)
- organisationId: required(string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"products": [
{
"id": "domain_be_registration",
"description": ".be domain registration",
"prices": [
{
"id": 1491,
"period": 12,
"currency": "EUR",
"price": "500",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1492,
"period": 24,
"currency": "EUR",
"price": "950",
"timing": "pre",
"default": true,
"status": 10
}
],
"allowQuantityChange": null
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Returns prices for all domain extensions
get /domains/priceproposal/organisation/{organisationId}
Returns prices for all domain extensions
URI Parameters
- organisationId: required(string)
Query Parameters
- orderBy: (string)
- orderType: (string)
ASC or DESC
- filter: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"products": [
{
"id": "domain_ac_registration",
"description": ".ac domain registration",
"prices": [
{
"id": 1837,
"period": 12,
"currency": "EUR",
"price": "5000",
"timing": "pre",
"default": true
},
{
"id": 1838,
"period": 24,
"currency": "EUR",
"price": "9500",
"timing": "pre",
"default": false
}
]
},
{
"id": "domain_academy_registration",
"description": ".academy domain registration",
"prices": [
{
"id": 1,
"period": 12,
"currency": "EUR",
"price": "4001",
"timing": "pre",
"default": true
},
{
"id": 2,
"period": 24,
"currency": "EUR",
"price": "7600",
"timing": "pre",
"default": false
}
]
},
{
"id": "domain_accountants_registration",
"description": ".accountants domain registration",
"prices": [
{
"id": 5,
"period": 12,
"currency": "EUR",
"price": "10000",
"timing": "pre",
"default": true
},
{
"id": 6,
"period": 24,
"currency": "EUR",
"price": "19000",
"timing": "pre",
"default": false
}
]
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Get domain providers
get /domains/providers
Get domain providers
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"providers": [
{
"id": 1,
"name": "DNS Belgium",
"api": "dnsbe",
"dnsSecSupported": true,
"domaintypes": [
{
"id": 364,
"extension": "be"
}
]
},
{
"id": 2,
"name": "Dcube",
"api": "dcube",
"dnsSecSupported": false,
"domaintypes": []
},
{
"id": 3,
"name": "Manual",
"api": "manual",
"dnsSecSupported": false,
"domaintypes": []
},
{
"id": 4,
"name": "Key Systems",
"api": "keysys",
"dnsSecSupported": false,
"domaintypes": [
{
"id": 1,
"extension": "academy"
},
{
"id": 2,
"extension": "accountants"
},
{
"id": 3,
"extension": "actor"
},
{
"id": 4,
"extension": "ad"
},
{
"id": 5,
"extension": "ae"
},
{
"id": 6,
"extension": "aero"
},
{
"id": 7,
"extension": "af"
},
{
"id": 8,
"extension": "ag"
},
{
"id": 9,
"extension": "agency"
},
{
"id": 10,
"extension": "airforce"
},
{
"id": 11,
"extension": "am"
},
{
"id": 12,
"extension": "apartments"
},
{
"id": 13,
"extension": "army"
},
{
"id": 14,
"extension": "as"
},
{
"id": 15,
"extension": "asia"
},
{
"id": 16,
"extension": "associates"
},
{
"id": 17,
"extension": "at"
},
{
"id": 18,
"extension": "attorney"
},
{
"id": 19,
"extension": "auction"
},
{
"id": 20,
"extension": "audio"
},
{
"id": 21,
"extension": "auto"
},
{
"id": 22,
"extension": "az"
},
{
"id": 23,
"extension": "band"
},
{
"id": 24,
"extension": "barcelona"
},
{
"id": 25,
"extension": "bargains"
},
{
"id": 26,
"extension": "berlin"
},
{
"id": 27,
"extension": "bg"
},
{
"id": 28,
"extension": "bi"
},
{
"id": 29,
"extension": "bingo"
},
{
"id": 30,
"extension": "biz"
},
{
"id": 31,
"extension": "black"
},
{
"id": 32,
"extension": "blackfriday"
},
{
"id": 33,
"extension": "blue"
},
{
"id": 34,
"extension": "bmw"
},
{
"id": 35,
"extension": "boutique"
},
{
"id": 36,
"extension": "brand"
},
{
"id": 37,
"extension": "build"
},
{
"id": 38,
"extension": "builders"
},
{
"id": 39,
"extension": "business"
},
{
"id": 40,
"extension": "buzz"
},
{
"id": 41,
"extension": "bz"
},
{
"id": 42,
"extension": "ca"
},
{
"id": 43,
"extension": "cafe"
},
{
"id": 44,
"extension": "camp"
},
{
"id": 45,
"extension": "capital"
},
{
"id": 46,
"extension": "car"
},
{
"id": 47,
"extension": "cards"
},
{
"id": 48,
"extension": "care"
},
{
"id": 49,
"extension": "cars"
},
{
"id": 50,
"extension": "cash"
},
{
"id": 51,
"extension": "casino"
},
{
"id": 52,
"extension": "catering"
},
{
"id": 53,
"extension": "cc"
},
{
"id": 54,
"extension": "ceo"
},
{
"id": 55,
"extension": "cf"
},
{
"id": 56,
"extension": "chat"
},
{
"id": 57,
"extension": "cheap"
},
{
"id": 58,
"extension": "christmas"
},
{
"id": 59,
"extension": "church"
},
{
"id": 60,
"extension": "city"
},
{
"id": 61,
"extension": "cl"
},
{
"id": 62,
"extension": "claims"
},
{
"id": 63,
"extension": "cleaning"
},
{
"id": 64,
"extension": "click"
},
{
"id": 65,
"extension": "clinic"
},
{
"id": 66,
"extension": "club"
},
{
"id": 67,
"extension": "cm"
},
{
"id": 68,
"extension": "cn"
},
{
"id": 69,
"extension": "cnidn"
},
{
"id": 70,
"extension": "cnregional"
},
{
"id": 71,
"extension": "co"
},
{
"id": 72,
"extension": "coach"
},
{
"id": 73,
"extension": "codes"
},
{
"id": 74,
"extension": "coffee"
},
{
"id": 75,
"extension": "com"
},
{
"id": 76,
"extension": "community"
},
{
"id": 77,
"extension": "condos"
},
{
"id": 78,
"extension": "consulting"
},
{
"id": 79,
"extension": "cool"
},
{
"id": 80,
"extension": "coupons"
},
{
"id": 81,
"extension": "credit"
},
{
"id": 82,
"extension": "creditcard"
},
{
"id": 83,
"extension": "cruises"
},
{
"id": 84,
"extension": "dance"
},
{
"id": 85,
"extension": "dating"
},
{
"id": 86,
"extension": "de"
},
{
"id": 87,
"extension": "deals"
},
{
"id": 88,
"extension": "degree"
},
{
"id": 89,
"extension": "delivery"
},
{
"id": 90,
"extension": "democrat"
},
{
"id": 91,
"extension": "dental"
},
{
"id": 92,
"extension": "dentist"
},
{
"id": 93,
"extension": "diet"
},
{
"id": 94,
"extension": "digital"
},
{
"id": 95,
"extension": "direct"
},
{
"id": 96,
"extension": "discount"
},
{
"id": 97,
"extension": "dm"
},
{
"id": 98,
"extension": "do"
},
{
"id": 99,
"extension": "doctor"
},
{
"id": 100,
"extension": "dog"
},
{
"id": 101,
"extension": "dulce"
},
{
"id": 102,
"extension": "dvag"
},
{
"id": 103,
"extension": "ec"
},
{
"id": 104,
"extension": "education"
},
{
"id": 105,
"extension": "email"
},
{
"id": 106,
"extension": "energy"
},
{
"id": 107,
"extension": "engineer"
},
{
"id": 108,
"extension": "engineering"
},
{
"id": 109,
"extension": "es"
},
{
"id": 110,
"extension": "eu"
},
{
"id": 111,
"extension": "eus"
},
{
"id": 112,
"extension": "events"
},
{
"id": 113,
"extension": "exchange"
},
{
"id": 114,
"extension": "expert"
},
{
"id": 115,
"extension": "exposed"
},
{
"id": 116,
"extension": "express"
},
{
"id": 117,
"extension": "fail"
},
{
"id": 118,
"extension": "family"
},
{
"id": 119,
"extension": "farm"
},
{
"id": 120,
"extension": "finance"
},
{
"id": 121,
"extension": "financial"
},
{
"id": 122,
"extension": "fish"
},
{
"id": 123,
"extension": "fitness"
},
{
"id": 124,
"extension": "flights"
},
{
"id": 125,
"extension": "florist"
},
{
"id": 126,
"extension": "flowers"
},
{
"id": 127,
"extension": "fm"
},
{
"id": 128,
"extension": "football"
},
{
"id": 129,
"extension": "forsale"
},
{
"id": 130,
"extension": "foundation"
},
{
"id": 131,
"extension": "fr"
},
{
"id": 132,
"extension": "fund"
},
{
"id": 133,
"extension": "furniture"
},
{
"id": 134,
"extension": "futbol"
},
{
"id": 135,
"extension": "fyi"
},
{
"id": 136,
"extension": "ga"
},
{
"id": 137,
"extension": "gal"
},
{
"id": 138,
"extension": "game"
},
{
"id": 139,
"extension": "games"
},
{
"id": 140,
"extension": "gift"
},
{
"id": 141,
"extension": "gifts"
},
{
"id": 142,
"extension": "gives"
},
{
"id": 143,
"extension": "glass"
},
{
"id": 144,
"extension": "gold"
},
{
"id": 145,
"extension": "golf"
},
{
"id": 146,
"extension": "gq"
},
{
"id": 147,
"extension": "gr"
},
{
"id": 148,
"extension": "gratis"
},
{
"id": 149,
"extension": "green"
},
{
"id": 150,
"extension": "gripe"
},
{
"id": 151,
"extension": "group"
},
{
"id": 152,
"extension": "gs"
},
{
"id": 153,
"extension": "guide"
},
{
"id": 154,
"extension": "guitars"
},
{
"id": 155,
"extension": "gy"
},
{
"id": 156,
"extension": "haus"
},
{
"id": 157,
"extension": "healthcare"
},
{
"id": 158,
"extension": "help"
},
{
"id": 159,
"extension": "hiphop"
},
{
"id": 160,
"extension": "hn"
},
{
"id": 161,
"extension": "hockey"
},
{
"id": 162,
"extension": "holiday"
},
{
"id": 163,
"extension": "hosting"
},
{
"id": 164,
"extension": "house"
},
{
"id": 165,
"extension": "ht"
},
{
"id": 166,
"extension": "hu"
},
{
"id": 167,
"extension": "ie"
},
{
"id": 168,
"extension": "immo"
},
{
"id": 169,
"extension": "immobilien"
},
{
"id": 170,
"extension": "in"
},
{
"id": 171,
"extension": "industries"
},
{
"id": 172,
"extension": "info"
},
{
"id": 173,
"extension": "institute"
},
{
"id": 174,
"extension": "insure"
},
{
"id": 175,
"extension": "international"
},
{
"id": 176,
"extension": "investments"
},
{
"id": 177,
"extension": "it"
},
{
"id": 178,
"extension": "jetzt"
},
{
"id": 179,
"extension": "jewelry"
},
{
"id": 180,
"extension": "jobs"
},
{
"id": 181,
"extension": "jp"
},
{
"id": 182,
"extension": "juegos"
},
{
"id": 183,
"extension": "katrin"
},
{
"id": 184,
"extension": "kaufen"
},
{
"id": 185,
"extension": "kim"
},
{
"id": 186,
"extension": "kiwi"
},
{
"id": 187,
"extension": "kr"
},
{
"id": 188,
"extension": "la"
},
{
"id": 189,
"extension": "lawyer"
},
{
"id": 190,
"extension": "lc"
},
{
"id": 191,
"extension": "lease"
},
{
"id": 192,
"extension": "legal"
},
{
"id": 193,
"extension": "lgbt"
},
{
"id": 194,
"extension": "life"
},
{
"id": 195,
"extension": "lighting"
},
{
"id": 196,
"extension": "limited"
},
{
"id": 197,
"extension": "link"
},
{
"id": 198,
"extension": "live"
},
{
"id": 199,
"extension": "loans"
},
{
"id": 200,
"extension": "lol"
},
{
"id": 201,
"extension": "lt"
},
{
"id": 202,
"extension": "ltd"
},
{
"id": 203,
"extension": "lu"
},
{
"id": 204,
"extension": "luxury"
},
{
"id": 205,
"extension": "lv"
},
{
"id": 206,
"extension": "maison"
},
{
"id": 207,
"extension": "market"
},
{
"id": 208,
"extension": "marketing"
},
{
"id": 209,
"extension": "mba"
},
{
"id": 210,
"extension": "md"
},
{
"id": 211,
"extension": "me"
},
{
"id": 212,
"extension": "media"
},
{
"id": 213,
"extension": "memorial"
},
{
"id": 214,
"extension": "menu"
},
{
"id": 215,
"extension": "mg"
},
{
"id": 216,
"extension": "ml"
},
{
"id": 217,
"extension": "mn"
},
{
"id": 218,
"extension": "mobi"
},
{
"id": 219,
"extension": "moda"
},
{
"id": 220,
"extension": "mom"
},
{
"id": 221,
"extension": "money"
},
{
"id": 222,
"extension": "mortgage"
},
{
"id": 223,
"extension": "movie"
},
{
"id": 224,
"extension": "ms"
},
{
"id": 225,
"extension": "mu"
},
{
"id": 226,
"extension": "mx"
},
{
"id": 227,
"extension": "nagoya"
},
{
"id": 228,
"extension": "name"
},
{
"id": 229,
"extension": "nameemail"
},
{
"id": 230,
"extension": "navy"
},
{
"id": 231,
"extension": "net"
},
{
"id": 232,
"extension": "network"
},
{
"id": 233,
"extension": "news"
},
{
"id": 234,
"extension": "nf"
},
{
"id": 235,
"extension": "ninja"
},
{
"id": 236,
"extension": "nl"
},
{
"id": 237,
"extension": "nu"
},
{
"id": 238,
"extension": "nuidn"
},
{
"id": 239,
"extension": "nz"
},
{
"id": 240,
"extension": "okinawa"
},
{
"id": 241,
"extension": "onl"
},
{
"id": 242,
"extension": "org"
},
{
"id": 243,
"extension": "partners"
},
{
"id": 244,
"extension": "parts"
},
{
"id": 245,
"extension": "pe"
},
{
"id": 246,
"extension": "ph"
},
{
"id": 247,
"extension": "photo"
},
{
"id": 248,
"extension": "pics"
},
{
"id": 249,
"extension": "pictures"
},
{
"id": 250,
"extension": "pink"
},
{
"id": 251,
"extension": "pizza"
},
{
"id": 252,
"extension": "pk"
},
{
"id": 253,
"extension": "place"
},
{
"id": 254,
"extension": "plus"
},
{
"id": 255,
"extension": "pm"
},
{
"id": 256,
"extension": "poker"
},
{
"id": 257,
"extension": "porn"
},
{
"id": 258,
"extension": "pro"
},
{
"id": 259,
"extension": "productions"
},
{
"id": 260,
"extension": "properties"
},
{
"id": 261,
"extension": "property"
},
{
"id": 262,
"extension": "ps"
},
{
"id": 263,
"extension": "pt"
},
{
"id": 264,
"extension": "pub"
},
{
"id": 265,
"extension": "pw"
},
{
"id": 266,
"extension": "re"
},
{
"id": 267,
"extension": "red"
},
{
"id": 268,
"extension": "rehab"
},
{
"id": 269,
"extension": "reise"
},
{
"id": 270,
"extension": "reisen"
},
{
"id": 271,
"extension": "rentals"
},
{
"id": 272,
"extension": "repair"
},
{
"id": 273,
"extension": "report"
},
{
"id": 274,
"extension": "republican"
},
{
"id": 275,
"extension": "restaurant"
},
{
"id": 276,
"extension": "reviews"
},
{
"id": 277,
"extension": "rich"
},
{
"id": 278,
"extension": "rip"
},
{
"id": 279,
"extension": "ro"
},
{
"id": 280,
"extension": "rocks"
},
{
"id": 281,
"extension": "ru"
},
{
"id": 282,
"extension": "run"
},
{
"id": 283,
"extension": "ryukyu"
},
{
"id": 284,
"extension": "sale"
},
{
"id": 285,
"extension": "salon"
},
{
"id": 286,
"extension": "sarl"
},
{
"id": 287,
"extension": "sb"
},
{
"id": 288,
"extension": "sc"
},
{
"id": 289,
"extension": "school"
},
{
"id": 290,
"extension": "schule"
},
{
"id": 291,
"extension": "scot"
},
{
"id": 292,
"extension": "services"
},
{
"id": 293,
"extension": "sexy"
},
{
"id": 294,
"extension": "sg"
},
{
"id": 295,
"extension": "shiksha"
},
{
"id": 296,
"extension": "shoes"
},
{
"id": 297,
"extension": "shopping"
},
{
"id": 298,
"extension": "show"
},
{
"id": 299,
"extension": "si"
},
{
"id": 300,
"extension": "sk"
},
{
"id": 301,
"extension": "so"
},
{
"id": 302,
"extension": "soccer"
},
{
"id": 303,
"extension": "social"
},
{
"id": 304,
"extension": "software"
},
{
"id": 305,
"extension": "solar"
},
{
"id": 306,
"extension": "solutions"
},
{
"id": 307,
"extension": "studio"
},
{
"id": 308,
"extension": "style"
},
{
"id": 309,
"extension": "su"
},
{
"id": 310,
"extension": "supplies"
},
{
"id": 311,
"extension": "supply"
},
{
"id": 312,
"extension": "support"
},
{
"id": 313,
"extension": "surgery"
},
{
"id": 314,
"extension": "swiss"
},
{
"id": 315,
"extension": "sx"
},
{
"id": 316,
"extension": "tattoo"
},
{
"id": 317,
"extension": "tax"
},
{
"id": 318,
"extension": "taxi"
},
{
"id": 319,
"extension": "team"
},
{
"id": 320,
"extension": "tel"
},
{
"id": 321,
"extension": "tennis"
},
{
"id": 322,
"extension": "tf"
},
{
"id": 323,
"extension": "theater"
},
{
"id": 324,
"extension": "tienda"
},
{
"id": 325,
"extension": "tires"
},
{
"id": 326,
"extension": "tk"
},
{
"id": 327,
"extension": "tm"
},
{
"id": 328,
"extension": "tokyo"
},
{
"id": 329,
"extension": "tools"
},
{
"id": 330,
"extension": "tours"
},
{
"id": 331,
"extension": "town"
},
{
"id": 332,
"extension": "toys"
},
{
"id": 333,
"extension": "training"
},
{
"id": 334,
"extension": "travel"
},
{
"id": 335,
"extension": "tv"
},
{
"id": 336,
"extension": "tw"
},
{
"id": 337,
"extension": "twidn"
},
{
"id": 338,
"extension": "uk"
},
{
"id": 339,
"extension": "university"
},
{
"id": 340,
"extension": "uno"
},
{
"id": 341,
"extension": "us"
},
{
"id": 342,
"extension": "uz"
},
{
"id": 343,
"extension": "vacations"
},
{
"id": 344,
"extension": "vc"
},
{
"id": 345,
"extension": "vegas"
},
{
"id": 346,
"extension": "vet"
},
{
"id": 347,
"extension": "viajes"
},
{
"id": 348,
"extension": "video"
},
{
"id": 349,
"extension": "villas"
},
{
"id": 350,
"extension": "vin"
},
{
"id": 351,
"extension": "vision"
},
{
"id": 352,
"extension": "vn"
},
{
"id": 353,
"extension": "watch"
},
{
"id": 354,
"extension": "wf"
},
{
"id": 355,
"extension": "wine"
},
{
"id": 356,
"extension": "works"
},
{
"id": 357,
"extension": "world"
},
{
"id": 358,
"extension": "ws"
},
{
"id": 359,
"extension": "wtf"
},
{
"id": 360,
"extension": "xxx"
},
{
"id": 361,
"extension": "yokohama"
},
{
"id": 362,
"extension": "yt"
},
{
"id": 363,
"extension": "zone"
}
]
},
{
"id": 5,
"name": "Openprovider",
"api": "openprovider",
"dnsSecSupported": false,
"domaintypes": []
}
]
}
Request domain transfer code
get /domains/transfercode
Check availability of a domain
get /domains/check
Check availability of a domain
Query Parameters
- name: required(string)
- extension: required(string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Examples:
free:
{
"success": true,
"status": "free",
"action": "none",
"domaintypeId": 364,
"domainNameWithExtension": "test123test321.be",
"requestIncomingTransferCodePossible": true,
"transferAutoLicensee": true,
"transferEppCodeRequired": true,
"products": [
{
"id": "domain_be_registration",
"description": ".be domain registration",
"prices": [
{
"id": 1491,
"period": 12,
"currency": "EUR",
"price": "500",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1492,
"period": 24,
"currency": "EUR",
"price": "950",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
}
registered:
{
"success": true,
"status": "registered",
"action": "none",
"domaintypeId": 364,
"domainNameWithExtension": "google.be",
"requestIncomingTransferCodePossible": true,
"transferAutoLicensee": true,
"transferEppCodeRequired": true,
"products": null
}
/domaincontacts
Create a new domaincontact
List of all available domaincontacts
post /domaincontacts
Create a new domaincontact
Body
Media type: application/json
Type: object
Properties- type: required(one of licensee, onsite)
Domain contact type
- firstName: required(string)
First name
- lastName: required(string)
Last name
- organisationName: required(string)
Organisation name (non-editable)
- street: (string)
Street
- houseNumber: (string)
House number
- zip: (string)
Zip
- city: (string)
City
- state: (string)
State
- phone: required(string)
Phone (format: +32.12345678)
- fax: (string)
Fax (format: +32.12345678, required for type onsite)
- email: required(string)
Email (unique)
- taxNumber: required(string)
Tax number
- passportNumber: (string)
Password number
- socialNumber: (string)
Social number
- birthStreet: (string)
Street
- birthZip: (string)
Zip
- birthCity: (string)
City
- birthDate: (string)
Birth date
- gender: (one of M (male), F (female))
Gender
- country: (string)
Country id
- organisation: required(integer)
The unique identifier of an organisation
Example:
{
"type": "licensee",
"firstName": "Test",
"lastName": "Test",
"organisationName": "Test Company",
"street": "Test-Street",
"houseNumber": 23,
"zip": 123,
"city": "Test City",
"State": "Test",
"Phone": 32.22341234,
"Fax": 32.22341234,
"email": "test@test.com",
"taxNumber": "ER5434543565",
"passportNumber": 45363534,
"socialNumber": null,
"birthStreet": null,
"birthDate": null,
"birthZip": 123,
"gender": "M",
"country": "BE"
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"domaincontact": {
"id": 2,
"firstName": "Test",
"lastName": "Test",
"organisationName": "Test Company",
"street": "Test",
"houseNumber": "1",
"zip": "5645",
"city": "Test City",
"state": "Test",
"phone": "+32.22341234",
"fax": "+32.22341234",
"email": "test@test.be",
"taxNumber": "ER423767632",
"passportNumber": "564145365",
"socialNumber": null,
"birthStreet": "Test-Street",
"birthZip": "Test",
"birthCity": null,
"birthDate": null,
"gender": "M",
"type": "licensee",
"country": {
"id": "BE",
"name": "Belgium"
},
"organisation": {
"id": 123,
"name": "Test Company"
},
"fullname": "Test Test"
}
}
HTTP status code 400
Validation of new domaincontact failed
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /domaincontacts
List of all available domaincontacts
Query Parameters
- type: (string)
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- orderBy: (string)
- orderType: (string)
ASC or DESC
- filter: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"domaincontacts": [
{
"id": 1,
"firstName": "Test",
"lastName": "Test",
"organisationName": "Test Company",
"street": "Test",
"houseNumber": "12",
"zip": "12345",
"city": "Test",
"state": "Test",
"phone": "+48.1345612",
"fax": null,
"email": "test@test.pl",
"taxNumber": "123456",
"passportNumber": "EB1234565",
"socialNumber": "123456822",
"birthStreet": "Test",
"birthZip": "12345",
"birthCity": "Test",
"birthDate": null,
"gender": "M",
"type": "licensee",
"country": {
"id": "BE",
"name": "Belgium"
},
"organisation": {
"id": 123,
"name": "Test Company"
},
"fullname": "Test Test"
},
{
"id": 2,
"firstName": "Test",
"lastName": "Test",
"organisationName": "Test Company",
"street": "Test",
"houseNumber": "1",
"zip": "5645",
"city": "Test",
"state": "Test",
"phone": "+32.22341234",
"fax": "+32.22341234",
"email": "test@test2.be",
"taxNumber": "ER423767632",
"passportNumber": "564145365",
"socialNumber": null,
"birthStreet": "Test",
"birthZip": "Test",
"birthCity": null,
"birthDate": null,
"gender": "F",
"type": "licensee",
"country": {
"id": "BE",
"name": "Belgium"
},
"organisation": {
"id": 123,
"name": "Test Company"
},
"fullname": "Test Test"
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Update a domaincontact
Delete a domaincontact
Get a domaincontact
put /domaincontacts/{domaincontactId}
Update a domaincontact
URI Parameters
- domaincontactId: required(string)
The unique identifier of a domaincontact
Body
Media type: application/json
Type: object
Properties- type: required(one of licensee, onsite)
Domain contact type
- firstName: required(string)
First name
- lastName: required(string)
Last name
- organisationName: required(string)
Organisation name (non-editable)
- street: (string)
Street
- houseNumber: (string)
House number
- zip: (string)
Zip
- city: (string)
City
- state: (string)
State
- phone: required(string)
Phone (format: +32.12345678)
- fax: (string)
Fax (format: +32.12345678, required for type onsite)
- email: required(string)
Email (unique)
- taxNumber: required(string)
Tax number
- passportNumber: (string)
Password number
- socialNumber: (string)
Social number
- birthStreet: (string)
Street
- birthZip: (string)
Zip
- birthCity: (string)
City
- birthDate: (string)
Birth date
- gender: (one of M (male), F (female))
Gender
- country: (string)
Country id
- organisation: required(integer)
The unique identifier of an organisation
Example:
{
"type": "licensee",
"firstName": "Test",
"lastName": "Test",
"organisationName": "Test Company",
"street": "Test-Street",
"houseNumber": 23,
"zip": 123,
"city": "Test City",
"State": "Test",
"Phone": 32.22341234,
"Fax": 32.22341234,
"email": "test@test.com",
"taxNumber": "ER5434543565",
"passportNumber": 45363534,
"socialNumber": null,
"birthStreet": null,
"birthDate": null,
"birthZip": 123,
"gender": "M",
"country": "BE"
}
HTTP status code 204
Response when update of a domaincontact succeeded
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a domaincontact
HTTP status code 404
Response when domaincontact is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
delete /domaincontacts/{domaincontactId}
Delete a domaincontact
URI Parameters
- domaincontactId: required(string)
The unique identifier of a domaincontact
HTTP status code 204
Request successfully processed
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a domaincontact
HTTP status code 404
Response when domaincontact is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /domaincontacts/{domaincontactId}
Get a domaincontact
URI Parameters
- domaincontactId: required(string)
The unique identifier of a domaincontact
HTTP status code 200
Response when domaincontact is found
Body
Media type: application/json
Type: object
Example:
{
"domaincontact": {
"id": 2,
"firstName": "Test",
"lastName": "Test",
"organisationName": "Test Company",
"street": "Test",
"houseNumber": "1",
"zip": "5645",
"city": "Test City",
"state": "Test",
"phone": "+32.22341234",
"fax": "+32.22341234",
"email": "test@test.be",
"taxNumber": "ER423767632",
"passportNumber": "564145365",
"socialNumber": null,
"birthStreet": "Test-Street",
"birthZip": "Test",
"birthCity": null,
"birthDate": null,
"gender": "M",
"type": "licensee",
"country": {
"id": "BE",
"name": "Belgium"
},
"organisation": {
"id": 123,
"name": "Test Company"
},
"fullname": "Test Test"
}
}
HTTP status code 403
Response when a user does not have access to a domaincontact
HTTP status code 404
Response when domaincontact is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Add access to a domaincontact
post /domaincontacts/{domaincontactId}/acls
Add access to a domaincontact
URI Parameters
- domaincontactId: required(string)
The unique identifier of a domaincontact
Body
Media type: application/json
Type: object
Properties- organisation: required(integer)
The unique identifier of an organisation
Example:
{
"organisation": 123
}
HTTP status code 201
Response when access to a domaincontact was successfully added
Body
Media type: application/json
Type: object
Example:
{
"acl": {
"id": 59,
"object": "Level27\\DomainBundle\\Entity\\Domaincontact",
"objectId": 1,
"permissions": null,
"extra": null,
"type": "manual",
"organisation": {
"id": 123,
"name": "TestCompany"
}
}
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a domaincontact
HTTP status code 404
Response when a domaincontact is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Remove access to a domaincontact
delete /domaincontacts/{domaincontactId}/acls/{organisationId}
Remove access to a domaincontact
URI Parameters
- domaincontactId: required(string)
The unique identifier of a domaincontact
- organisationId: required(string)
HTTP status code 204
Response when access to a domaincontact was successfully removed
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a domaincontact
HTTP status code 404
Response when a domaincontact is not found
HTTP status code 500
Response when a user does not have a proper role to access a control
/documents
Create a new document (action only for admin)
List of all available documents
post /documents
Create a new document (action only for admin)
Body
Media type: application/json
Type: object
Properties- type: (one of invoice, creditnote)
Document type (default: invoice)
- organisation: required(integer)
The unique identifier of an organisation
- number: (string)
Document number (default: auto generated)
- date: (string)
DateTime - timestamp
- status: (integer)
Status (default: to_create)
- 1 (to_create)
- 10 (ok)
- 20 (credited)
- 21 (processed)
- 90 (deleted)
- remarksToPrint: (string)
Remarks to print
- remarksInternal: (string)
Remarks internal
- taxrate: (string)
Tax rate (default: value is copied for Organisation taxrate field)
- onlinePaymentAttempts: (integer)
Online payment attempts
- source: (string)
Source
- paymentStatus: (integer)
Payment status (default: 1 (unpaid))
- 1 (unpaid)
- 2 (partially_paid)
- 10 (paid)
- 11 (paid_manually)
- reminderStatus: (integer)
Reminder status (default: 1 (ok))
- 1 (ok)
- 10 (first_reminder_sent)
- 20 (second_reminder_sent)
- 30 (third_reminder_sent)
- 40 (deactivated)
- 50 (deleted)
Example:
{
"organisation": 8,
"type": "invoice"
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"document": {
"id": 8,
"type": "invoice",
"organisation": {
"id": 123,
"status": "ok",
"statusCategory": "green"
},
"number": 1800009,
"date": "2018-02-08",
"status": "ok",
"statusCategory": "green",
"paymentStatus": "unpaid",
"paymentStatusCategory": "red",
"reminderStatus": "second_reminder_sent",
"reminderStatusCategory": "orange",
"paymentperiod": 30,
"organisationTaxNumber": "EB123456",
"taxrate": 21,
"onlinePaymentAttempts": null,
"from": {
"name": "Level27 BVBA",
"street": "Genutstraat 35",
"zipCity": "3740 Bilzen"
},
"to": {
"name": "Test Company",
"street": "Test-Street 23",
"zipCity": "123 Test City"
},
"remarksToPrint": null,
"price": 500,
"tax": 105,
"priceWithTax": 605,
"items": [
{
"id": 88,
"description": "Domain testdomain.be",
"price": "500",
"amount": "100",
"dtStart": "1517662806",
"dtEnd": "1549112406",
"totalPrice": 500,
"extra1": null,
"extra2": null,
"billableitemDetailId": 123
}
],
"agreement": {
"id": 3,
"name": "My agreement"
},
"source": null,
"parentOrganisation": "level27",
"contactId": 121,
"hash": "HASH_HERE",
"entityHash": "HASH_HERE",
"notes": null
}
}
HTTP status code 400
Validation of new document failed
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /documents
List of all available documents
Query Parameters
- paymentStatus: (string)
- source: (string)
- type: (string)
- status: (string)
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- orderBy: (string)
- orderType: (string)
ASC or DESC
- filter: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"documents": [
{
"id": 8,
"type": "invoice",
"organisation": {
"id": 8,
"status": "ok",
"statusCategory": "green"
},
"number": "1800009",
"date": "2018-02-08",
"status": "ok",
"statusCategory": "green",
"paymentStatus": "unpaid",
"paymentStatusCategory": "red",
"reminderStatus": "ok",
"reminderStatusCategory": "green",
"paymentperiod": 30,
"organisationName": "Test Company",
"taxrate": 21,
"remarksToPrint": null,
"price": 500,
"tax": 105,
"priceWithTax": 605,
"parentOrganisation": "level27",
"notes": null
},
{
"id": 7,
"type": "invoice",
"organisation": {
"id": 8,
"status": "ok",
"statusCategory": "green"
},
"number": "1800008",
"date": "2018-02-08",
"status": "ok",
"statusCategory": "green",
"paymentStatus": "unpaid",
"paymentStatusCategory": "red",
"reminderStatus": "ok",
"reminderStatusCategory": "green",
"paymentperiod": 30,
"organisationName": "Test Company",
"taxrate": 21,
"remarksToPrint": null,
"price": 300,
"tax": 63,
"priceWithTax": 363,
"parentOrganisation": "level27",
"notes": null
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Update document (action only for admin)
Get a document
put /documents/{documentId}
Update document (action only for admin)
URI Parameters
- documentId: required(string)
The unique identifier of a document
Body
Media type: application/json
Type: object
Properties- type: (one of invoice, creditnote)
Document type (default: invoice)
- organisation: required(integer)
The unique identifier of an organisation
- number: (string)
Document number (default: auto generated)
- date: (string)
DateTime - timestamp
- status: (integer)
Status (default: to_create)
- 1 (to_create)
- 10 (ok)
- 20 (credited)
- 21 (processed)
- 90 (deleted)
- remarksToPrint: (string)
Remarks to print
- remarksInternal: (string)
Remarks internal
- taxrate: (string)
Tax rate (default: value is copied for Organisation taxrate field)
- onlinePaymentAttempts: (integer)
Online payment attempts
- source: (string)
Source
- paymentStatus: (integer)
Payment status (default: 1 (unpaid))
- 1 (unpaid)
- 2 (partially_paid)
- 10 (paid)
- 11 (paid_manually)
- reminderStatus: (integer)
Reminder status (default: 1 (ok))
- 1 (ok)
- 10 (first_reminder_sent)
- 20 (second_reminder_sent)
- 30 (third_reminder_sent)
- 40 (deactivated)
- 50 (deleted)
Example:
{
"organisation": 8,
"type": "invoice"
}
HTTP status code 204
Response when update of a document succeeded
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a document
HTTP status code 404
Response when document is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /documents/{documentId}
Get a document
URI Parameters
- documentId: required(string)
The unique identifier of a document
HTTP status code 200
Response when document is found
Body
Media type: application/json
Type: object
Example:
{
"document": {
"id": 8,
"type": "invoice",
"organisation": {
"id": 123,
"status": "ok",
"statusCategory": "green"
},
"number": 1800009,
"date": "2018-02-08",
"status": "ok",
"statusCategory": "green",
"paymentStatus": "unpaid",
"paymentStatusCategory": "red",
"reminderStatus": "second_reminder_sent",
"reminderStatusCategory": "orange",
"paymentperiod": 30,
"organisationTaxNumber": "EB123456",
"taxrate": 21,
"onlinePaymentAttempts": null,
"from": {
"name": "Level27 BVBA",
"street": "Genutstraat 35",
"zipCity": "3740 Bilzen"
},
"to": {
"name": "Test Company",
"street": "Test-Street 23",
"zipCity": "123 Test City"
},
"remarksToPrint": null,
"price": 500,
"tax": 105,
"priceWithTax": 605,
"items": [
{
"id": 88,
"description": "Domain testdomain.be",
"price": "500",
"amount": "100",
"dtStart": "1517662806",
"dtEnd": "1549112406",
"totalPrice": 500,
"extra1": null,
"extra2": null,
"billableitemDetailId": 123
}
],
"agreement": {
"id": 3,
"name": "My agreement"
},
"source": null,
"parentOrganisation": "level27",
"contactId": 121,
"hash": "HASH_HERE",
"entityHash": "HASH_HERE",
"notes": null
}
}
HTTP status code 403
Response when a user does not have access to a document
HTTP status code 404
Response when document is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Mark a document as paid (action only for admin)
post /documents/{documentId}/markpaid
Mark a document as paid (action only for admin)
URI Parameters
- documentId: required(string)
The unique identifier of a document
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"success": true
}
HTTP status code 403
Response when a user does not have access to a document
HTTP status code 404
Response when a document is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Process a credit note (action only for admin)
post /documents/{documentId}/process
Process a credit note (action only for admin)
URI Parameters
- documentId: required(string)
The unique identifier of a document
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"success": true
}
HTTP status code 403
Response when a user does not have access to a document
HTTP status code 404
Response when a document is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Credit a Document = create a creditnote with identical but negative documentitems (action only for admin)
post /documents/{documentId}/credits
Credit a Document = create a creditnote with identical but negative documentitems (action only for admin)
URI Parameters
- documentId: required(string)
The unique identifier of a document
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"document": {
"id": 3,
"type": "creditnote",
"organisation": 123,
"number": "1800002",
"date": "2018-02-21",
"status": "ok",
"paymentStatus": "unpaid",
"reminderStatus": "ok",
"paymentperiod": null,
"organisationTaxNumber": "BE0890439412",
"taxrate": 21,
"onlinePaymentAttempts": null,
"from": {
"name": "Level27 BVBA",
"street": "Genutstraat 35",
"zipCity": "3740 Bilzen"
},
"to": {
"name": "Test Company",
"street": "Test_street 23",
"zipCity": "123 Test City"
},
"remarksToPrint": null,
"price": -41002,
"tax": -8610,
"priceWithTax": -49612,
"items": [
{
"id": 5,
"description": "blabla",
"price": "-1000",
"amount": "100",
"dtStart": "1518562800",
"dtEnd": "1519167600",
"totalPrice": -1000,
"extra1": "test",
"extra2": null
},
{
"id": 6,
"description": "jihsdlkjds sds",
"price": "-20001",
"amount": "200",
"dtStart": "1518044400",
"dtEnd": "1518994800",
"totalPrice": -40002,
"extra1": null,
"extra2": "jhkk"
}
],
"contactId": null,
"hash": null
}
}
HTTP status code 403
Response when a user does not have access to a document
HTTP status code 404
Response when a document is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Credit a Document's items = create a creditnote with identical but negative documentitems (action only for admin)
post /documents/{documentId}/creditpartially
Credit a Document's items = create a creditnote with identical but negative documentitems (action only for admin)
URI Parameters
- documentId: required(string)
The unique identifier of a document
Body
Media type: application/json
Type: object
Properties- items: (array of any)
Array of items (default: null)
Example:
{
"items": [
128882,
128883
]
}
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"document": {
"id": 3,
"type": "creditnote",
"organisation": 123,
"number": "1800002",
"date": "2018-02-21",
"status": "ok",
"paymentStatus": "unpaid",
"reminderStatus": "ok",
"paymentperiod": null,
"organisationTaxNumber": "BE0890439412",
"taxrate": 21,
"onlinePaymentAttempts": null,
"from": {
"name": "Level27 BVBA",
"street": "Genutstraat 35",
"zipCity": "3740 Bilzen"
},
"to": {
"name": "Test Company",
"street": "Test_street 23",
"zipCity": "123 Test City"
},
"remarksToPrint": null,
"price": -41002,
"tax": -8610,
"priceWithTax": -49612,
"items": [
{
"id": 5,
"description": "blabla",
"price": "-1000",
"amount": "100",
"dtStart": "1518562800",
"dtEnd": "1519167600",
"totalPrice": -1000,
"extra1": "test",
"extra2": null
},
{
"id": 6,
"description": "jihsdlkjds sds",
"price": "-20001",
"amount": "200",
"dtStart": "1518044400",
"dtEnd": "1518994800",
"totalPrice": -40002,
"extra1": null,
"extra2": "jhkk"
}
],
"contactId": null,
"hash": null
}
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a document
HTTP status code 404
Response when a document is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Get users for document
get /documents/{documentId}/users
Get users for document
URI Parameters
- documentId: required(string)
The unique identifier of a document
Query Parameters
- limit: (integer - default: 5)
- offset: (integer - default: 0)
HTTP status code 200
Response when users are found
Body
Media type: application/json
Type: object
Example:
{
"users": [
{
"id": 1,
"fullname": "Test User",
"username": "admin@test.be",
"email": "admin@test.be",
"firstName": "Test",
"lastName": "User",
"roles": [
"ROLE_CUSTADMIN",
"ROLE_USER"
],
"organisation": {
"id": 123,
"name": "Test Company"
}
},
{
"id": 2,
"fullname": "Test2 Test2",
"username": "test",
"email": "user@test.be",
"firstName": "Test2",
"lastName": "Test2",
"roles": [
"ROLE_FINANCE"
],
"organisation": {
"id": 321,
"name": "Test Company 2"
}
}
]
}
HTTP status code 403
Response when a user does not have access to a document
HTTP status code 404
Response when a document is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Create a new item (action only for admin)
List of all available items
post /documents/{documentId}/items
Create a new item (action only for admin)
URI Parameters
- documentId: required(string)
The unique identifier of a document
Body
Media type: application/json
Type: object
Properties- description: (string)
Description
- price: (integer)
Price in cents (admin only)
- amount: (integer)
Amount (default: 100 - eg. if quantity = 1 then amount = 100, if quantity = 0,01 then amount = 1)
- account: (integer)
Account (default:701000):
- 701001 (domain)
- 701002 (system)
- 701003 (app)
- 701004 (genericItem)
- 701005 (mail)
- dtStart: (string)
DateTime - timestamp
- dtEnd: (string)
DateTime - timestamp
- billableitemDetail: (integer)
The unique identifier of a BillableitemDetail
Example:
{
"description": "Test item",
"price": 5000,
"amount": 100,
"document": 7,
"dtStart": 1514847600,
"dtEnd": 1517353200
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"documentitem": {
"id": 88,
"description": "Domain testdomain.be",
"price": "500",
"amount": "100",
"totalPrice": 500,
"dtStart": "2018-02-03",
"dtEnd": "2019-02-02",
"status": "ok",
"account": "701001",
"extra1": null,
"extra2": null
}
}
HTTP status code 400
Validation of new item failed
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /documents/{documentId}/items
List of all available items
URI Parameters
- documentId: required(string)
The unique identifier of a document
Query Parameters
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- orderBy: (string)
- orderType: (string)
ASC or DESC
- filter: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"documentitems": [
{
"id": 88,
"description": "Domain testdomain.be",
"price": "500",
"amount": "100",
"dtStart": "2018-02-03",
"dtEnd": "2019-02-02",
"status": "ok",
"account": "701001",
"extra1": null,
"extra2": null
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Update an item (action only for admin)
Delete an item (action only for admin)
Get a item
put /documents/{documentId}/items/{itemId}
Update an item (action only for admin)
URI Parameters
- documentId: required(string)
The unique identifier of a document
- itemId: required(string)
The unique identifier of a item
Body
Media type: application/json
Type: object
Properties- description: (string)
Description
- price: (integer)
Price in cents (admin only)
- amount: (integer)
Amount (default: 100 - eg. if quantity = 1 then amount = 100, if quantity = 0,01 then amount = 1)
- account: (integer)
Account (default:701000):
- 701001 (domain)
- 701002 (system)
- 701003 (app)
- 701004 (genericItem)
- 701005 (mail)
- dtStart: (string)
DateTime - timestamp
- dtEnd: (string)
DateTime - timestamp
- billableitemDetail: (integer)
The unique identifier of a BillableitemDetail
Example:
{
"description": "Test item",
"price": 5000,
"amount": 100,
"document": 7,
"dtStart": 1514847600,
"dtEnd": 1517353200
}
HTTP status code 204
Response when update of a item succeeded
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a item
HTTP status code 404
Response when item is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
delete /documents/{documentId}/items/{itemId}
Delete an item (action only for admin)
URI Parameters
- documentId: required(string)
The unique identifier of a document
- itemId: required(string)
The unique identifier of a item
get /documents/{documentId}/items/{itemId}
Get a item
URI Parameters
- documentId: required(string)
The unique identifier of a document
- itemId: required(string)
The unique identifier of a item
HTTP status code 200
Response when item is found
Body
Media type: application/json
Type: object
Example:
{
"documentitem": {
"id": 88,
"description": "Domain testdomain.be",
"price": "500",
"amount": "100",
"totalPrice": 500,
"dtStart": "2018-02-03",
"dtEnd": "2019-02-02",
"status": "ok",
"account": "701001",
"extra1": null,
"extra2": null
}
}
HTTP status code 403
Response when a user does not have access to a item
HTTP status code 404
Response when item is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Add access to a document
post /documents/{documentId}/acls
Add access to a document
URI Parameters
- documentId: required(string)
The unique identifier of a document
Body
Media type: application/json
Type: object
Properties- organisation: required(integer)
The unique identifier of an organisation
Example:
{
"organisation": 123
}
HTTP status code 201
Response when access to a document was successfully added
Body
Media type: application/json
Type: object
Example:
{
"acl": {
"id": 64,
"object": "Level27\\FinanceBundle\\Entity\\Document",
"objectId": 7,
"permissions": null,
"extra": null,
"type": "manual",
"organisation": {
"id": 123,
"name": "Test Company"
}
}
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a document
HTTP status code 404
Response when a document is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Remove access to a document
delete /documents/{documentId}/acls/{organisationId}
Remove access to a document
URI Parameters
- documentId: required(string)
The unique identifier of a document
- organisationId: required(string)
HTTP status code 204
Response when access to a document was successfully removed
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a document
HTTP status code 404
Response when a document is not found
HTTP status code 500
Response when a user does not have a proper role to access a control
Get notifications for a document
Send a notification for a document
get /documents/{documentId}/notifications
Get notifications for a document
URI Parameters
- documentId: required(string)
The unique identifier of a document
Query Parameters
- orderBy: (string)
- orderType: (string)
ASC or DESC
- type: (string)
- limit: (integer - default: 5)
- offset: (integer - default: 0)
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"notifications": [
{
"id": 1715,
"entityIndex": "Level27\\FinanceBundle\\Entity\\Document_70",
"entityName": "document",
"dtStamp": "1517590803",
"notificationGroup": "Finance",
"type": "invoice_new",
"entityClass": "Level27\\FinanceBundle\\Entity\\Document",
"entityId": 70,
"rootEntityClass": null,
"rootEntityId": null,
"status": 50,
"statusDisplay": "success",
"statusCategory": "green",
"sendMode": 1,
"priority": 200,
"subject": "Factuur 1700035\n",
"params": {
"urlPdfDownload": "/downloadpdf/70"
},
"userId": null,
"contacts": [
{
"id": 1330,
"dtStamp": "1517590804",
"fullName": "Test User",
"language": "nl",
"message": null,
"status": 50,
"type": "email",
"value": "test@test.be",
"contactId": 1
}
],
"extraRecipients": [],
"entity": {
"id": 70,
"type": "invoice",
"organisation": 123,
"number": "1700035",
"date": "2018-02-02",
"status": "ok",
"statusCategory": "green",
"paymentStatus": "unpaid",
"reminderStatus": "ok",
"paymentperiod": null,
"organisationTaxNumber": "BE0890439411",
"taxrate": 21,
"onlinePaymentAttempts": null,
"from": {
"name": "Level27 BVBA",
"street": "Genutstraat 35",
"zipCity": "3740 Bilzen"
},
"to": {
"name": "Test Company",
"street": "Test-Street 23",
"zipCity": "123 Test City"
},
"remarksToPrint": null,
"price": 500,
"tax": 105,
"priceWithTax": 605,
"items": [
{
"id": 88,
"description": "Domain testdomain.be",
"price": "500",
"amount": "100",
"dtStart": "1517662806",
"dtEnd": "1549112406",
"totalPrice": 500,
"extra1": null,
"extra2": null
}
],
"contactId": 1,
"hash": "e9a8d7248c637c2caaf437f9496c7faa"
},
"user": null
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
post /documents/{documentId}/notifications
Send a notification for a document
URI Parameters
- documentId: required(string)
The unique identifier of a document
Body
Media type: application/json
Type: object
Properties- type: required(string)
Notification type
- group: required(one of App, Crm, Domain, Finance, Mail, System)
Notification group
- params: (object)
Additional parameters (json)
Example:
{
"group": "Finance",
"type": "invoice_new"
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"id": 1751,
"entityIndex": "Level27\\FinanceBundle\\Entity\\Document_70",
"entityName": "document",
"dtStamp": "1518098050",
"notificationGroup": "Finance",
"type": "invoice_new",
"entityClass": "Level27\\FinanceBundle\\Entity\\Document",
"entityId": 70,
"rootEntityClass": null,
"rootEntityId": null,
"status": 21,
"statusDisplay": "queued",
"statusCategory": "yellow",
"sendMode": 1,
"priority": 200,
"subject": null,
"params": {
"urlPdfDownload": "/downloadpdf/70"
},
"userId": 1,
"contacts": [],
"extraRecipients": [],
"entity": null,
"user": null
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a document
HTTP status code 500
Response when a user does not have a proper role to access a controller
Get a single document (a user is not logged in)
get /documents/{documentId}/{contactId}/{hash}
Get a single document (a user is not logged in)
URI Parameters
- documentId: required(string)
The unique identifier of a document
- contactId: required(string)
- hash: required(string)
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"document": {
"id": 8,
"type": "invoice",
"organisation": {
"id": 123,
"status": "ok",
"statusCategory": "green"
},
"number": 1800009,
"date": "2018-02-08",
"status": "ok",
"statusCategory": "green",
"paymentStatus": "unpaid",
"paymentStatusCategory": "red",
"reminderStatus": "second_reminder_sent",
"reminderStatusCategory": "orange",
"paymentperiod": 30,
"organisationTaxNumber": "EB123456",
"taxrate": 21,
"onlinePaymentAttempts": null,
"from": {
"name": "Level27 BVBA",
"street": "Genutstraat 35",
"zipCity": "3740 Bilzen"
},
"to": {
"name": "Test Company",
"street": "Test-Street 23",
"zipCity": "123 Test City"
},
"remarksToPrint": null,
"price": 500,
"tax": 105,
"priceWithTax": 605,
"items": [
{
"id": 88,
"description": "Domain testdomain.be",
"price": "500",
"amount": "100",
"dtStart": "1517662806",
"dtEnd": "1549112406",
"totalPrice": 500,
"extra1": null,
"extra2": null,
"billableitemDetailId": 123
}
],
"agreement": {
"id": 3,
"name": "My agreement"
},
"source": null,
"parentOrganisation": "level27",
"contactId": 121,
"hash": "HASH_HERE",
"entityHash": "HASH_HERE",
"notes": null
}
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a document
HTTP status code 404
Response when a document is not found
Pay online
post /documents/{documentId}/onlinepayment
Pay online
URI Parameters
- documentId: required(string)
The unique identifier of a document
Body
Media type: application/json
Type: object
Properties- successUrl: required(string)
successUrl
- cancelUrl: required(string)
cancelUrl
- imageUrl: (string)
imageUrl
Example:
{
"successUrl": "http://gui.cp4dev.be?success=true",
"cancelUrl": "http://gui.cp4dev.be?cancel=true",
"imageUrl": "http://level27.img"
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"stripeToken": "cs_test_gOdE4uI4BMi5bQljntndn6fuoJIn2PR7tnLzb3BSCSGhweefGlF8jpFYiQ"
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a document
HTTP status code 404
Response when a document is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Pay online (a user is not logged in)
post /documents/{documentId}/onlinepayment/{contactId}/{hash}
Pay online (a user is not logged in)
URI Parameters
- documentId: required(string)
The unique identifier of a document
- contactId: required(string)
- hash: required(string)
Body
Media type: application/json
Type: object
Properties- successUrl: required(string)
successUrl
- cancelUrl: required(string)
cancelUrl
- imageUrl: (string)
imageUrl
Example:
{
"successUrl": "http://gui.cp4dev.be?success=true",
"cancelUrl": "http://gui.cp4dev.be?cancel=true",
"imageUrl": "http://level27.img"
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"stripeToken": "cs_test_gOdE4uI4BMi5bQljntndn6fuoJIn2PR7tnLzb3BSCSGhweefGlF8jpFYiQ"
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a document
HTTP status code 404
Response when a document is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Complete online payment
post /documents/{documentId}/onlinepayment/complete
Complete online payment
URI Parameters
- documentId: required(string)
The unique identifier of a document
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"payment": {
"id": 7,
"type": null,
"remark": "test behat",
"structuredRemark": "test behat",
"amount": "75",
"status": "payment_processed",
"iban": null,
"bic": null,
"name": null,
"address": null,
"city": null,
"date": "2018-01-03",
"onlineCurrency": "eur",
"onlineAmount": 100,
"onlineMethod": "card",
"onlineAcceptance": null,
"onlineStatus": "succeeded",
"onlineNCError": null,
"onlineCardNumber": null,
"onlineId": "ch_19b5mSG55ktFy66GSD2Nky55h",
"onlineSHASign": null,
"notes": "test notes",
"documents": [
{
"id": 15,
"organisationId": 83,
"organisationName": "Test Company",
"number": "1700014",
"date": "2018-01-03",
"status": "ok",
"paymentStatus": "paid",
"reminderStatus": "ok",
"taxrate": 0,
"price": 100,
"tax": 0,
"priceWithTax": 100,
"paidId": 7,
"paidStatus": "payment_processed",
"paidAmount": "75"
}
]
}
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a document
HTTP status code 404
Response when a document is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Complete online payment
post /documents/{documentId}/onlinepayment/complete/{contactId}/{hash}
Complete online payment
URI Parameters
- documentId: required(string)
The unique identifier of a document
- contactId: required(string)
- hash: required(string)
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"payment": {
"id": 7,
"type": null,
"remark": "test behat",
"structuredRemark": "test behat",
"amount": "75",
"status": "payment_processed",
"iban": null,
"bic": null,
"name": null,
"address": null,
"city": null,
"date": "2018-01-03",
"onlineCurrency": "eur",
"onlineAmount": 100,
"onlineMethod": "card",
"onlineAcceptance": null,
"onlineStatus": "succeeded",
"onlineNCError": null,
"onlineCardNumber": null,
"onlineId": "ch_19b5mSG55ktFy66GSD2Nky55h",
"onlineSHASign": null,
"notes": "test notes",
"documents": [
{
"id": 15,
"organisationId": 83,
"organisationName": "Test Company",
"number": "1700014",
"date": "2018-01-03",
"status": "ok",
"paymentStatus": "paid",
"reminderStatus": "ok",
"taxrate": 0,
"price": 100,
"tax": 0,
"priceWithTax": 100,
"paidId": 7,
"paidStatus": "payment_processed",
"paidAmount": "75"
}
]
}
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a document
HTTP status code 404
Response when a document is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Starting online payment by bancontact
post /documents/{documentId}/onlinepayment-started
Starting online payment by bancontact
URI Parameters
- documentId: required(string)
The unique identifier of a document
Body
Media type: application/json
Type: object
Properties- token: required(string)
This is the unique identifier
Example:
{
"token": "src_1CYBGGGPktFy66GSm41N69kH"
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"success": true
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a document
HTTP status code 404
Response when a document is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Starting online payment by bancontact
post /documents/{documentId}/onlinepayment-started/{contactId}/{hash}
Starting online payment by bancontact
URI Parameters
- documentId: required(string)
The unique identifier of a document
- contactId: required(string)
- hash: required(string)
Body
Media type: application/json
Type: object
Properties- token: required(string)
This is the unique identifier
Example:
{
"token": "src_1CYBGGGPktFy66GSm41N69kH"
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"success": true
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a document
HTTP status code 404
Response when a document is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Pay online (bancontact)
post /documents/{documentId}/onlinepayment-bancontact
Pay online (bancontact)
URI Parameters
- documentId: required(string)
The unique identifier of a document
Body
Media type: application/json
Type: object
Properties- sourceId: required(string)
This is the unique identifier
Example:
{
"sourceId": "src_1CYBGGGPktFy66GSm41N69kH"
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"payment": {
"id": 7,
"type": null,
"remark": "test behat",
"structuredRemark": "test behat",
"amount": "75",
"status": "payment_processed",
"iban": null,
"bic": null,
"name": null,
"address": null,
"city": null,
"date": "2018-01-03",
"onlineCurrency": "eur",
"onlineAmount": 100,
"onlineMethod": "card",
"onlineAcceptance": null,
"onlineStatus": "succeeded",
"onlineNCError": null,
"onlineCardNumber": null,
"onlineId": "ch_19b5mSG55ktFy66GSD2Nky55h",
"onlineSHASign": null,
"notes": "test notes",
"documents": [
{
"id": 15,
"organisationId": 83,
"organisationName": "Test Company",
"number": "1700014",
"date": "2018-01-03",
"status": "ok",
"paymentStatus": "paid",
"reminderStatus": "ok",
"taxrate": 0,
"price": 100,
"tax": 0,
"priceWithTax": 100,
"paidId": 7,
"paidStatus": "payment_processed",
"paidAmount": "75"
}
]
}
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a document
HTTP status code 404
Response when a document is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Pay online (bancontact)
post /documents/{documentId}/onlinepayment-bancontact/{contactId}/{hash}
Pay online (bancontact)
URI Parameters
- documentId: required(string)
The unique identifier of a document
- contactId: required(string)
- hash: required(string)
Body
Media type: application/json
Type: object
Properties- sourceId: required(string)
This is the unique identifier
Example:
{
"sourceId": "src_1CYBGGGPktFy66GSm41N69kH"
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"payment": {
"id": 7,
"type": null,
"remark": "test behat",
"structuredRemark": "test behat",
"amount": "75",
"status": "payment_processed",
"iban": null,
"bic": null,
"name": null,
"address": null,
"city": null,
"date": "2018-01-03",
"onlineCurrency": "eur",
"onlineAmount": 100,
"onlineMethod": "card",
"onlineAcceptance": null,
"onlineStatus": "succeeded",
"onlineNCError": null,
"onlineCardNumber": null,
"onlineId": "ch_19b5mSG55ktFy66GSD2Nky55h",
"onlineSHASign": null,
"notes": "test notes",
"documents": [
{
"id": 15,
"organisationId": 83,
"organisationName": "Test Company",
"number": "1700014",
"date": "2018-01-03",
"status": "ok",
"paymentStatus": "paid",
"reminderStatus": "ok",
"taxrate": 0,
"price": 100,
"tax": 0,
"priceWithTax": 100,
"paidId": 7,
"paidStatus": "payment_processed",
"paidAmount": "75"
}
]
}
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a document
HTTP status code 404
Response when a document is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Match a document with a payment (action only for admin)
post /documents/{documentId}/payments/{paymentId}/match
Match a document with a payment (action only for admin)
URI Parameters
- documentId: required(string)
The unique identifier of a document
- paymentId: required(string)
Body
Media type: application/json
Type: object
Properties- applyCashPaymentDiscount: (boolean)
Apply cash payment discount (default: false)
Example:
{
"applyCashPaymentDiscount": false
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"documentHasPayment": {
"id": 7,
"amount": "100",
"status": "partial_payment",
"payment": {
"id": 3,
"amount": "100",
"status": "payment_processed"
},
"document": {
"id": 7,
"paymentStatus": "partially_paid",
"amount": 6050
}
}
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a document
HTTP status code 404
Response when a document or a payment is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Get total price to pay
/documentitems
Get all accessible documentitems
get /documentitems
Get all accessible documentitems
Query Parameters
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- filter: (string)
- orderBy: (string)
- orderType: (string)
ASC or DESC
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"total": 1814,
"documentitems": [
{
"id": 88,
"description": "Domain testdomain.be",
"price": "500",
"amount": "100",
"dtStart": "2018-02-03",
"dtEnd": "2019-02-02",
"status": "ok",
"account": "701001",
"extra1": null,
"extra2": null,
"document": {
"id": 2,
"number": "160001",
"organisationName": "Test organisation"
}
}
]
}
HTTP status code 403
Response when a user does not have access
/billableitems
Get documents for a billableitem
get /billableitems/{billableitemId}/documents
Get documents for a billableitem
URI Parameters
- billableitemId: required(string)
Query Parameters
- limit: (integer - default: 5)
- offset: (integer - default: 0)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"documents": [
{
"id": 23129,
"type": "invoice",
"organisation": 12345678,
"number": "183122",
"date": "2018-11-19",
"status": "ok",
"paymentStatus": "paid",
"reminderStatus": "ok",
"taxrate": 21,
"price": 10700,
"tax": 2247,
"priceWithTax": 12947
},
{
"id": 17301,
"type": "invoice",
"organisation": 12345678,
"number": "170425",
"date": "2017-12-19",
"status": "ok",
"paymentStatus": "paid",
"reminderStatus": "second_reminder_sent",
"taxrate": 21,
"price": 10700,
"tax": 2247,
"priceWithTax": 12947
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
/billableitemdetails
Get a list of all accessible billableitemDetails which were not billed yet
get /billableitemdetails/notbilled
Get a list of all accessible billableitemDetails which were not billed yet
Query Parameters
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- filter: (string)
- orderBy: (string)
- orderType: (string)
ASC or DESC
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"total": 1814,
"details": [
{
"id": 2079,
"price": null,
"status": "ok",
"dtExpires": "2022-03-02",
"quantity": 1,
"description": "Mailbox Level27",
"externalId": null,
"allowToSkipInvoicing": null,
"billableitem": {
"id": 1827,
"externalInfo": null
},
"productPrice": {
"id": 1835,
"period": 1,
"currency": "EUR",
"price": "115",
"timing": "pre",
"default": false,
"status": "ok",
"statusCategory": "green"
},
"statusCategory": "grey"
},
{
"id": 2082,
"price": null,
"status": "ok",
"dtExpires": "2018-03-02",
"quantity": 1,
"description": "Domain test123.be",
"externalId": null,
"allowToSkipInvoicing": null,
"billableitem": {
"id": 1829,
"externalInfo": null
},
"productPrice": {
"id": 1835,
"period": 1,
"currency": "EUR",
"price": "500",
"timing": "pre",
"default": false,
"status": "ok",
"statusCategory": "green"
},
"statusCategory": "grey"
}
]
}
HTTP status code 403
Response when a user does not have access
/downloadpdf
Download a document in pdf (a user is logged in)
get /downloadpdf/{documentId}
Download a document in pdf (a user is logged in)
Download a document in pdf (a user is not logged in)
get /downloadpdf/{documentId}/{contactId}/{hash}
Download a document in pdf (a user is not logged in)
URI Parameters
- documentId: required(string)
- contactId: required(string)
- hash: required(string)
/payments
Create a new payment (action only for admin)
List of all available payments
post /payments
Create a new payment (action only for admin)
Body
Media type: application/json
Type: object
Properties- type: (one of wiretransfer, stripe, ogone)
Type
- remark: (string)
Remarks (admin only)
- structuredRemark: (string)
Structured remark
- amount: (integer)
Amount (default: 100 - eg. if quantity = 1 then amount = 100, if quantity = 0,01 then amount = 1)
- iban: (string)
Iban
- bic: (string)
Bic
- address: (string)
Address
- city: (string)
City
- onlineCurrency: (string)
Online currency
- onlineAmount: (string)
Online amount
- onlineMethod: (string)
Online method
- onlineAcceptance: (string)
Online acceptance
- onlineStatus: (string)
Online status
- onlineNCError: (string)
OnlineNCError
- onlineCardNumber: (string)
Online Card Number
- onlineId: (string)
Online id
- onlineSHASign: (string)
Online SHA sign
- date: (string)
DateTime - timestamp
- country: (string)
Country id
Example:
{
"amount": 300,
"type": "wiretransfer",
"remark": 1234546,
"name": "Test Company",
"address": "Test_Street 23",
"city": "123 Test City",
"country": "BE"
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"payment": {
"id": 7,
"type": null,
"remark": "test behat",
"structuredRemark": "test behat",
"amount": "75",
"status": "payment_processed",
"iban": null,
"bic": null,
"name": null,
"address": null,
"city": null,
"date": "2018-01-03",
"onlineCurrency": "eur",
"onlineAmount": 100,
"onlineMethod": "card",
"onlineAcceptance": null,
"onlineStatus": "succeeded",
"onlineNCError": null,
"onlineCardNumber": null,
"onlineId": "ch_19b5mSG55ktFy66GSD2Nky55h",
"onlineSHASign": null,
"notes": "test notes",
"documents": [
{
"id": 15,
"organisationId": 83,
"organisationName": "Test Company",
"number": "1700014",
"date": "2018-01-03",
"status": "ok",
"paymentStatus": "paid",
"reminderStatus": "ok",
"taxrate": 0,
"price": 100,
"tax": 0,
"priceWithTax": 100,
"paidId": 7,
"paidStatus": "payment_processed",
"paidAmount": "75"
}
]
}
}
HTTP status code 400
Validation of new payment failed
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /payments
List of all available payments
Query Parameters
- status: (string)
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- orderBy: (string)
- orderType: (string)
ASC or DESC
- filter: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"payments": [
{
"id": 7,
"type": "wiretransfer",
"remark": "test",
"structuredRemark": null,
"amount": "750",
"status": "payment_processed",
"iban": null,
"bic": null,
"name": "Test Compny",
"address": "Test-Street 23",
"city": "123 Test City",
"country": {
"id": "BE",
"name": "Belgium"
},
"date\"": "2018-01-03",
"onlineCurrency": null,
"onlineAmount": null,
"onlineMethod": null,
"onlineAcceptance": null,
"onlineStatus": null,
"onlineNCError": null,
"onlineCardNumber": null,
"onlineId": null,
"onlineSHASign": null,
"notes": "test notes"
},
{
"id": 6,
"type": "wiretransfer, ",
"emark\"": "test2",
"structuredRemark": null,
"amount": "250",
"status": "ok",
"iban": null,
"bic": null,
"name": "Test Compny",
"address": "Test-Street 23",
"city": "123 Test City",
"country": {
"id": "BE",
"name": "Belgium"
},
"date\"": "2018-01-03",
"onlineCurrency": null,
"onlineAmount": null,
"onlineMethod": null,
"onlineAcceptance": null,
"onlineStatus": null,
"onlineNCError": null,
"onlineCardNumber": null,
"onlineId": null,
"onlineSHASign": null,
"notes": "test notes"
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Update a new payment (action only for admin)
Update a new payment (action only for admin)
Delete a new payment (action only for admin)
Get a payment
put /payments/{paymentId}
Update a new payment (action only for admin)
URI Parameters
- paymentId: required(string)
The unique identifier of a payment
Body
Media type: application/json
Type: object
Properties- type: (one of wiretransfer, stripe, ogone)
Type
- remark: (string)
Remarks (admin only)
- structuredRemark: (string)
Structured remark
- amount: (integer)
Amount (default: 100 - eg. if quantity = 1 then amount = 100, if quantity = 0,01 then amount = 1)
- iban: (string)
Iban
- bic: (string)
Bic
- address: (string)
Address
- city: (string)
City
- onlineCurrency: (string)
Online currency
- onlineAmount: (string)
Online amount
- onlineMethod: (string)
Online method
- onlineAcceptance: (string)
Online acceptance
- onlineStatus: (string)
Online status
- onlineNCError: (string)
OnlineNCError
- onlineCardNumber: (string)
Online Card Number
- onlineId: (string)
Online id
- onlineSHASign: (string)
Online SHA sign
- date: (string)
DateTime - timestamp
- country: (string)
Country id
Example:
{
"amount": 300,
"type": "wiretransfer",
"remark": 1234546,
"name": "Test Company",
"address": "Test_Street 23",
"city": "123 Test City",
"country": "BE"
}
HTTP status code 204
Response when update of a payment succeeded
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a payment
HTTP status code 404
Response when payment is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
patch /payments/{paymentId}
Update a new payment (action only for admin)
URI Parameters
- paymentId: required(string)
The unique identifier of a payment
Body
Media type: application/json
Type: object
Properties- type: (one of wiretransfer, stripe, ogone)
Type
- remark: (string)
Remarks (admin only)
- structuredRemark: (string)
Structured remark
- amount: (integer)
Amount (default: 100 - eg. if quantity = 1 then amount = 100, if quantity = 0,01 then amount = 1)
- iban: (string)
Iban
- bic: (string)
Bic
- address: (string)
Address
- city: (string)
City
- onlineCurrency: (string)
Online currency
- onlineAmount: (string)
Online amount
- onlineMethod: (string)
Online method
- onlineAcceptance: (string)
Online acceptance
- onlineStatus: (string)
Online status
- onlineNCError: (string)
OnlineNCError
- onlineCardNumber: (string)
Online Card Number
- onlineId: (string)
Online id
- onlineSHASign: (string)
Online SHA sign
- date: (string)
DateTime - timestamp
- country: (string)
Country id
Example:
{
"amount": 300,
"type": "wiretransfer",
"remark": 1234546,
"name": "Test Company",
"address": "Test_Street 23",
"city": "123 Test City",
"country": "BE"
}
HTTP status code 204
Response when update of a payment succeeded
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a payment
HTTP status code 404
Response when a payment is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
delete /payments/{paymentId}
Delete a new payment (action only for admin)
URI Parameters
- paymentId: required(string)
The unique identifier of a payment
HTTP status code 204
Request successfully processed
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a payment
HTTP status code 404
Response when payment is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /payments/{paymentId}
Get a payment
URI Parameters
- paymentId: required(string)
The unique identifier of a payment
HTTP status code 200
Response when payment is found
Body
Media type: application/json
Type: object
Example:
{
"payment": {
"id": 7,
"type": null,
"remark": "test behat",
"structuredRemark": "test behat",
"amount": "75",
"status": "payment_processed",
"iban": null,
"bic": null,
"name": null,
"address": null,
"city": null,
"date": "2018-01-03",
"onlineCurrency": "eur",
"onlineAmount": 100,
"onlineMethod": "card",
"onlineAcceptance": null,
"onlineStatus": "succeeded",
"onlineNCError": null,
"onlineCardNumber": null,
"onlineId": "ch_19b5mSG55ktFy66GSD2Nky55h",
"onlineSHASign": null,
"notes": "test notes",
"documents": [
{
"id": 15,
"organisationId": 83,
"organisationName": "Test Company",
"number": "1700014",
"date": "2018-01-03",
"status": "ok",
"paymentStatus": "paid",
"reminderStatus": "ok",
"taxrate": 0,
"price": 100,
"tax": 0,
"priceWithTax": 100,
"paidId": 7,
"paidStatus": "payment_processed",
"paidAmount": "75"
}
]
}
}
HTTP status code 403
Response when a user does not have access to a payment
HTTP status code 404
Response when payment is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
/genericitems
Create a new genericitem
List of all available genericitems
post /genericitems
Create a new genericitem
Body
Media type: application/json
Type: object
Properties- description: (string)
Description
- organisation: required(integer)
The unique identifier of an organisation
- product: required(string)
The unique identifier of a Product
- externalInfo: (string)
ExternalInfo (required when billableitemInfo entities for an Organisation exist in db)
Example:
{
"organisation": 123,
"description": "test",
"product": "genericitem_newrelic_professional"
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"genericItem": {
"id": 3,
"description": "test",
"status": "ok",
"organisation": {
"id": 123,
"name": "Test Company"
},
"product": {
"id": "genericitem_newrelic_professional",
"description": "Newrelic professional"
},
"dtExpires": 1518104201,
"billingStatus": "ok"
}
}
HTTP status code 400
Validation of new genericitem failed
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /genericitems
List of all available genericitems
Query Parameters
- status: (string)
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- orderBy: (string)
- orderType: (string)
ASC or DESC
- filter: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"genericItems": [
{
"id": 1,
"description": null,
"status": "ok",
"organisation": {
"id": 123,
"name": "Test Company"
},
"product": "genericitem_sslcertificate_comodo_ev",
"dtExpires": 1518104201,
"billingStatus": "ok"
},
{
"id": 3,
"description": "test",
"status": "ok",
"organisation": {
"id": 123,
"name": "Test Company"
},
"product": {
"id": "genericitem_newrelic_professional",
"description": "Newrelic professional"
},
"dtExpires": 1518104201,
"billingStatus": "ok"
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Update a genericitem
Delete a genericitem
Get a genericitem
put /genericitems/{genericitemId}
Update a genericitem
URI Parameters
- genericitemId: required(string)
The unique identifier of a genericitem
Body
Media type: application/json
Type: object
Properties- description: (string)
Description
- organisation: required(integer)
The unique identifier of an organisation
- product: required(string)
The unique identifier of a Product
- externalInfo: (string)
ExternalInfo (required when billableitemInfo entities for an Organisation exist in db)
Example:
{
"organisation": 123,
"description": "test",
"product": "genericitem_newrelic_professional"
}
HTTP status code 204
Response when update of a genericitem succeeded
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a genericitem
HTTP status code 404
Response when genericitem is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
delete /genericitems/{genericitemId}
Delete a genericitem
URI Parameters
- genericitemId: required(string)
The unique identifier of a genericitem
HTTP status code 204
Request successfully processed
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a genericitem
HTTP status code 404
Response when genericitem is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /genericitems/{genericitemId}
Get a genericitem
URI Parameters
- genericitemId: required(string)
The unique identifier of a genericitem
HTTP status code 200
Response when genericitem is found
Body
Media type: application/json
Type: object
Example:
{
"genericItem": {
"id": 3,
"description": "test",
"status": "ok",
"organisation": {
"id": 123,
"name": "Test Company"
},
"product": {
"id": "genericitem_newrelic_professional",
"description": "Newrelic professional"
},
"dtExpires": 1518104201,
"billingStatus": "ok"
}
}
HTTP status code 403
Response when a user does not have access to a genericitem
HTTP status code 404
Response when genericitem is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Get users for genericitem
get /genericitems/{genericitemId}/users
Get users for genericitem
URI Parameters
- genericitemId: required(string)
The unique identifier of a genericitem
Query Parameters
- limit: (integer - default: 5)
- offset: (integer - default: 0)
HTTP status code 200
Response when users are found
Body
Media type: application/json
Type: object
Example:
{
"users": [
{
"id": 1,
"fullname": "Test User",
"username": "admin@test.be",
"email": "admin@test.be",
"firstName": "Test",
"lastName": "User",
"roles": [
"ROLE_CUSTADMIN",
"ROLE_USER"
],
"organisation": {
"id": 123,
"name": "Test Company"
}
},
{
"id": 2,
"fullname": "Test2 Test2",
"username": "test",
"email": "user@test.be",
"firstName": "Test2",
"lastName": "Test2",
"roles": [
"ROLE_FINANCE"
],
"organisation": {
"id": 321,
"name": "Test Company 2"
}
}
]
}
HTTP status code 403
Response when a user does not have access to a genericitem
HTTP status code 404
Response when a genericitem is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Deactivate or activate a genericitem
post /genericitems/{genericitemId}/actions
Deactivate or activate a genericitem
URI Parameters
- genericitemId: required(string)
The unique identifier of a genericitem
Body
Media type: application/json
Type: object
Properties- type: required(one of deactivate, activate)
Action type
Examples:
1:
{
"type": "deactivate"
}
2:
{
"type": "activate"
}
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"genericItem": {
"id": 3,
"description": "test",
"status": "ok",
"organisation": {
"id": 123,
"name": "Test Company"
},
"product": {
"id": "genericitem_newrelic_professional",
"description": "Newrelic professional"
},
"dtExpires": 1518104201,
"billingStatus": "ok"
}
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a genericitem
HTTP status code 404
Response when a genericitem is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Add access to a genericitem
post /genericitems/{genericitemId}/acls
Add access to a genericitem
URI Parameters
- genericitemId: required(string)
The unique identifier of a genericitem
Body
Media type: application/json
Type: object
Properties- organisation: required(integer)
The unique identifier of an organisation
Example:
{
"organisation": 123
}
HTTP status code 201
Response when access to a genericitem was successfully added
Body
Media type: application/json
Type: object
Example:
{
"acl": {
"id": 67,
"object": "Level27\\FinanceBundle\\Entity\\GenericItem",
"objectId": 3,
"permissions": null,
"extra": null,
"type": "manual",
"organisation": {
"id": 123,
"name": "Test Company"
}
}
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a genericitem
HTTP status code 404
Response when a genericitem is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Remove access to a genericitem
delete /genericitems/{genericitemId}/acls/{organisationId}
Remove access to a genericitem
URI Parameters
- genericitemId: required(string)
The unique identifier of a genericitem
- organisationId: required(string)
HTTP status code 204
Response when access to a genericitem was successfully removed
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a genericitem
HTTP status code 404
Response when a genericitem is not found
HTTP status code 500
Response when a user does not have a proper role to access a control
Get notifications for a genericitem
Send a notification for a genericitem (currently no available genericItem notifications exist)
get /genericitems/{genericitemId}/notifications
Get notifications for a genericitem
URI Parameters
- genericitemId: required(string)
The unique identifier of a genericitem
Query Parameters
- orderBy: (string)
- orderType: (string)
ASC or DESC
- type: (string)
- limit: (integer - default: 5)
- offset: (integer - default: 0)
post /genericitems/{genericitemId}/notifications
Send a notification for a genericitem (currently no available genericItem notifications exist)
URI Parameters
- genericitemId: required(string)
The unique identifier of a genericitem
Create a billableitem (action only for admin)
post /genericitems/{genericitemId}/bill
Create a billableitem (action only for admin)
URI Parameters
- genericitemId: required(string)
The unique identifier of a genericitem
HTTP status code 201
Response when a billableitem was successfully created
Body
Media type: application/json
Type: object
Example:
{
"billableitem": {
"id": 21,
"organisation": {
"id": 123,
"name": "Test Company"
},
"status": 10,
"statusDisplay": "ok",
"description": "Billableitem description",
"autoRenew": true,
"dtExpires": 1518024820,
"dtNextRenewal": 1518024820,
"documentsExist": false,
"details": "null \"extra1\"",
"ull": null,
"extra2": null,
"externalInfo": "123Yw"
}
}
HTTP status code 403
Response when a user does not have access to a genericItem
HTTP status code 404
Response when a genericItem is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Get price for an existing genericItem
Update an existing billableitem
Delete a billableitem (action only for admin)
get /genericitems/{genericitemId}/billableitem
Get price for an existing genericItem
URI Parameters
- genericitemId: required(string)
The unique identifier of a genericitem
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"billableitem": {
"id": 20,
"organisation": {
"id": 123,
"name": "Test Company"
},
"status": 10,
"statusDisplay": "ok",
"description": "test",
"autoRenew": true,
"dtExpires": 1518104201,
"dtNextRenewal": 1518104201,
"documentsExist": false,
"preventDeactivation": false,
"details": [
{
"id": 49,
"price": null,
"dtExpires": "1518104201",
"quantity": 1,
"description": "Newrelic professional",
"product": {
"id": "genericitem_newrelic_professional",
"description": "Newrelic professional",
"allowQuantityChange": true
},
"productPrice": {
"id": 29,
"period": 1,
"currency": "EUR",
"price": "300",
"timing": "pre",
"status": 10
},
"type": "genericitem_newrelic_professional"
}
],
"extra1": null,
"extra2": null,
"agreement": {
"id": 3,
"name": "My agreement"
}
}
}
HTTP status code 403
Response when a user does not have access to a genericItem
HTTP status code 404
Response when a genericItem is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
patch /genericitems/{genericitemId}/billableitem
Update an existing billableitem
URI Parameters
- genericitemId: required(string)
The unique identifier of a genericitem
Body
Media type: application/json
Type: object
Properties- autoRenew: (boolean)
Renew automatically (default: true)
- extra1: (string)
Extra1
- extra2: (string)
Extra2
- externalInfo: (string)
ExternalInfo (required when billableitemInfo entities for an Organisation exist in db)
- preventDeactivation: (boolean)
Prevent deactivation (default: true) - admin only
Example:
{
"autoRenew": false,
"extra1": null,
"extra2": null,
"externalInfo": "123B5"
}
HTTP status code 204
Response when update of a billableitem succeeded
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a genericItem
HTTP status code 404
Response when a billableitem is not found
HTTP status code 500
Response when a user does not have a proper role to access a control
delete /genericitems/{genericitemId}/billableitem
Delete a billableitem (action only for admin)
URI Parameters
- genericitemId: required(string)
The unique identifier of a genericitem
HTTP status code 204
Response when deletion of a billableitem succeeded
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a genericItem
HTTP status code 404
Response when a billableitem is not found
HTTP status code 500
Response when a user does not have a proper role to access a control
Add an agreement to billableitem (action only for admin)
Delete an agreement from billableitem (action only for admin)
post /genericitems/{genericitemId}/billableitem/agreements
Add an agreement to billableitem (action only for admin)
URI Parameters
- genericitemId: required(string)
The unique identifier of a genericitem
Body
Media type: application/json
Type: object
Properties- agreement: required(integer)
The unique identifier of an agreement
Example:
{
"agreement": 3
}
HTTP status code 204
Response when agreement was added to billableitem
Body
Media type: application/json
Type: object
Example:
{
"billableitem": {
"id": 20,
"organisation": {
"id": 123,
"name": "Test Company"
},
"status": 10,
"statusDisplay": "ok",
"description": "test",
"autoRenew": true,
"dtExpires": 1518104201,
"dtNextRenewal": 1518104201,
"documentsExist": false,
"preventDeactivation": false,
"details": [
{
"id": 49,
"price": null,
"dtExpires": "1518104201",
"quantity": 1,
"description": "Newrelic professional",
"product": {
"id": "genericitem_newrelic_professional",
"description": "Newrelic professional",
"allowQuantityChange": true
},
"productPrice": {
"id": 29,
"period": 1,
"currency": "EUR",
"price": "300",
"timing": "pre",
"status": 10
},
"type": "genericitem_newrelic_professional"
}
],
"extra1": null,
"extra2": null,
"agreement": {
"id": 3,
"name": "My agreement"
}
}
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to an app
HTTP status code 404
Response when a billableitem is not found
delete /genericitems/{genericitemId}/billableitem/agreements
Delete an agreement from billableitem (action only for admin)
URI Parameters
- genericitemId: required(string)
The unique identifier of a genericitem
Update an existing billableitem detail
patch /genericitems/{genericitemId}/billableitem/details/{detailId}
Update an existing billableitem detail
URI Parameters
- genericitemId: required(string)
The unique identifier of a genericitem
- detailId: required(string)
Body
Media type: application/json
Type: object
Properties- price: (integer)
Price in cents (admin only)
- description: (string)
Description
- productPrice: (integer)
The unique identifier of a ProductPrice
- quantity: (integer)
Quantity (admin only)
Examples:
1:
{
"description": "May description",
"productPrice": "product_price_id"
}
2 (admin only):
{
"price": 100,
"quantity": 2
}
HTTP status code 204
Response when update of a billableitem detail succeeded
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a genericItem
HTTP status code 404
Response when a billableitem detail is not found
HTTP status code 500
Response when a user does not have a proper role to access a control
Update externalInfo for an existing billableitem
patch /genericitems/{genericitemId}/billableitem/externalinfo
Update externalInfo for an existing billableitem
URI Parameters
- genericitemId: required(string)
The unique identifier of a genericitem
Body
Media type: application/json
Type: object
Properties- externalInfo: (string)
ExternalInfo (required when billableitemInfo entities for an Organisation exist in db)
Example:
{
"externalInfo": "x-0001"
}
Calculate price for a new genericItem
get /genericitems/priceproposal/{productId}
Calculate price for a new genericItem
URI Parameters
- productId: required(string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"products": [
{
"id": "genericitem_newrelic_professional",
"description": "Newrelic professional",
"prices": [
{
"id": 25,
"period": 1,
"currency": "EUR",
"price": "300",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 26,
"period": 3,
"currency": "EUR",
"price": "855",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 27,
"period": 6,
"currency": "EUR",
"price": "1620",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 28,
"period": 12,
"currency": "EUR",
"price": "3060",
"timing": "pre",
"default": true,
"status": 10
}
],
"allowQuantityChange": true
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Calculate price for a new genericItem for a reseller organisation
get /genericitems/priceproposal/{productId}/organisation/{organisationId}
Calculate price for a new genericItem for a reseller organisation
URI Parameters
- productId: required(string)
- organisationId: required(string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"products": [
{
"id": "genericitem_newrelic_professional",
"description": "Newrelic professional",
"prices": [
{
"id": 25,
"period": 1,
"currency": "EUR",
"price": "300",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 26,
"period": 3,
"currency": "EUR",
"price": "855",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 27,
"period": 6,
"currency": "EUR",
"price": "1620",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 28,
"period": 12,
"currency": "EUR",
"price": "3060",
"timing": "pre",
"default": true,
"status": 10
}
],
"allowQuantityChange": true
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Returns prices for all genericItem products
get /genericitems/priceproposal/organisation/{organisationId}
Returns prices for all genericItem products
URI Parameters
- organisationId: required(string)
Query Parameters
- orderBy: (string)
- orderType: (string)
ASC or DESC
- filter: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"products": [
{
"id": "genericitem_exchange_online_plan_1",
"description": "Office 365 Exchange Online plan 1",
"prices": [
{
"id": 2562,
"period": 1,
"currency": "EUR",
"price": "340",
"timing": "pre",
"default": true
},
{
"id": 2564,
"period": 12,
"currency": "EUR",
"price": "4080",
"timing": "pre",
"default": false
}
]
},
{
"id": "genericitem_newrelic_professional",
"description": "New Relic Professional",
"prices": [
{
"id": 1824,
"period": 1,
"currency": "EUR",
"price": "12500",
"timing": "pre",
"default": true
}
]
},
{
"id": "genericitem_O365_be",
"description": "Office 365 Business Essentials",
"prices": [
{
"id": 2553,
"period": 12,
"currency": "EUR",
"price": "6240",
"timing": "pre",
"default": false
},
{
"id": 2543,
"period": 1,
"currency": "EUR",
"price": "520",
"timing": "pre",
"default": true
}
]
},
{
"id": "genericitem_O365_bp",
"description": "Office 365 Business Premium",
"prices": [
{
"id": 2544,
"period": 1,
"currency": "EUR",
"price": "1150",
"timing": "pre",
"default": true
},
{
"id": 2554,
"period": 12,
"currency": "EUR",
"price": "13800",
"timing": "pre",
"default": false
}
]
},
{
"id": "genericitem_O365_e1",
"description": "Office 365 E1",
"prices": [
{
"id": 2545,
"period": 1,
"currency": "EUR",
"price": "770",
"timing": "pre",
"default": true
},
{
"id": 2555,
"period": 12,
"currency": "EUR",
"price": "9240",
"timing": "pre",
"default": false
}
]
},
{
"id": "genericitem_O365_e3",
"description": "Office 365 E3",
"prices": [
{
"id": 2546,
"period": 1,
"currency": "EUR",
"price": "2270",
"timing": "pre",
"default": true
},
{
"id": 2556,
"period": 12,
"currency": "EUR",
"price": "27240",
"timing": "pre",
"default": false
}
]
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
/genericitem
Get available GenericItem products
get /genericitem/products
Get available GenericItem products
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"products": [
{
"id": "genericitem_newrelic_professional",
"description": "Newrelic professional"
},
{
"id": "genericitem_sslcertificate_comodo_domain",
"description": "Ssl certificate comodo domain"
},
{
"id": "genericitem_sslcertificate_comodo_ev",
"description": "Ssl certificate comodo ev"
}
]
}
/mailgroups
Create a new mailgroup
List of all available mailgroups
post /mailgroups
Create a new mailgroup
Query Parameters
- source: (string)
Body
Media type: application/json
Type: object
Properties- name: required(string)
Name
- type: (level27)
Type (non-editable)
- organisation: required(integer)
The unique identifier of an organisation
- systemgroup: required(integer)
The unique identifier of a systemgroup
- At least one of system group system has to have cookbook type 'mail_lb' installed
- non-editable
- Level27 systemgroup is used for your Mailgroup creation
- autoTeams: (string)
A csv list of team ids
- externalInfo: (string)
ExternalInfo (required when billableitemInfo entities for an Organisation exist in db)
Example:
{
"name": "My mailgroup",
"organisation": 123,
"type": "level27",
"autoTeams": null,
"externalInfo": null
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"mailgroup": {
"id": 5,
"name": "myMailgroup",
"type": "level27",
"status": "ok",
"systemgroup": {
"id": 1,
"name": "sharedSystemgroup"
},
"organisation": {
"id": 123,
"name": "Test Company",
"reseller": null
},
"domains": [
{
"id": 123,
"name": "test",
"handleMailDns": true,
"mailPrimary": true,
"domaintype": {
"id": 1,
"extension": "nl"
},
"addressCount": 3
}
],
"dtExpires\"": null,
"billingStatus": "to_create",
"statusCategory": "green",
"teams": [],
"countTeams": 0
}
}
HTTP status code 400
Validation of new mailgroup failed
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /mailgroups
List of all available mailgroups
Query Parameters
- status: (string)
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- orderBy: (string)
- orderType: (string)
ASC or DESC
- filter: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"mailgroups": [
{
"id": 3,
"name": "test",
"type": "level27",
"status": "ok",
"systemgroup": {
"id": 1,
"name": "sharedSystemgroup"
},
"organisation": {
"id": 123,
"name": "Test Company"
},
"billingStatus": "to_create",
"dtExpires": 1518030935,
"domains": [
{
"id": 2,
"name": "test",
"mailPrimary": true,
"domaintype": {
"id": 1,
"extension": "nl"
}
}
],
"externalInfo": null,
"statusCategory": "green",
"mailboxCount": 1,
"mailforwarderCount": 1
},
{
"id": 5,
"name": "myMailgroup",
"type": "level27",
"status": "ok",
"systemgroup": {
"id": 1,
"name": "sharedSystemgroup"
},
"organisation": {
"id": 123,
"name": "Test Company"
},
"billingStatus": "to_create",
"dtExpires": 1518030935,
"domains": [],
"externalInfo": null,
"statusCategory": "green",
"mailboxCount": 3,
"mailforwarderCount": 0
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Update a mailgroup
Delete a mailgroup
Get a mailgroup
put /mailgroups/{mailgroupId}
Update a mailgroup
URI Parameters
- mailgroupId: required(string)
The unique identifier of a mailgroup
Body
Media type: application/json
Type: object
Properties- name: required(string)
Name
- type: (level27)
Type (non-editable)
- organisation: required(integer)
The unique identifier of an organisation
- systemgroup: required(integer)
The unique identifier of a systemgroup
- At least one of system group system has to have cookbook type 'mail_lb' installed
- non-editable
- Level27 systemgroup is used for your Mailgroup creation
- autoTeams: (string)
A csv list of team ids
Example:
{
"name": "My mailgroup",
"organisation": 123,
"type": "level27",
"autoTeams": null
}
HTTP status code 204
Response when update of a mailgroup succeeded
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a mailgroup
HTTP status code 404
Response when a mailgroup is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
delete /mailgroups/{mailgroupId}
Delete a mailgroup
URI Parameters
- mailgroupId: required(string)
The unique identifier of a mailgroup
HTTP status code 204
Request successfully processed
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a mailgroup
HTTP status code 404
Response when mailgroup is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /mailgroups/{mailgroupId}
Get a mailgroup
URI Parameters
- mailgroupId: required(string)
The unique identifier of a mailgroup
HTTP status code 200
Response when mailgroup is found
Body
Media type: application/json
Type: object
Example:
{
"mailgroup": {
"id": 5,
"name": "myMailgroup",
"type": "level27",
"status": "ok",
"systemgroup": {
"id": 1,
"name": "sharedSystemgroup"
},
"organisation": {
"id": 123,
"name": "Test Company",
"reseller": null
},
"domains": [
{
"id": 123,
"name": "test",
"handleMailDns": true,
"mailPrimary": true,
"domaintype": {
"id": 1,
"extension": "nl"
},
"addressCount": 3
}
],
"dtExpires\"": null,
"billingStatus": "to_create",
"statusCategory": "green",
"teams": [],
"countTeams": 0
}
}
HTTP status code 403
Response when a user does not have access to a mailgroup
HTTP status code 404
Response when mailgroup is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Get users for mailgroup
get /mailgroups/{mailgroupId}/users
Get users for mailgroup
URI Parameters
- mailgroupId: required(string)
The unique identifier of a mailgroup
Query Parameters
- limit: (integer - default: 5)
- offset: (integer - default: 0)
HTTP status code 200
Response when users are found
Body
Media type: application/json
Type: object
Example:
{
"users": [
{
"id": 1,
"fullname": "Test User",
"username": "admin@test.be",
"email": "admin@test.be",
"firstName": "Test",
"lastName": "User",
"roles": [
"ROLE_CUSTADMIN",
"ROLE_USER"
],
"organisation": {
"id": 123,
"name": "Test Company"
}
},
{
"id": 2,
"fullname": "Test2 Test2",
"username": "test",
"email": "user@test.be",
"firstName": "Test2",
"lastName": "Test2",
"roles": [
"ROLE_FINANCE"
],
"organisation": {
"id": 321,
"name": "Test Company 2"
}
}
]
}
HTTP status code 403
Response when a user does not have access to a mailgroup
HTTP status code 404
Response when a mailgroup is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Get organisations with acl access to a mailgroup
get /mailgroups/{mailgroupId}/organisations
Get organisations with acl access to a mailgroup
URI Parameters
- mailgroupId: required(string)
The unique identifier of a mailgroup
HTTP status code 200
Response when organisations are found
Body
Media type: application/json
Type: object
Example:
{
"organisations": [
{
"id": 2,
"name": "test",
"users": [
{
"id": 3,
"username": "user.test@test1.be",
"email": "user.test@test1.be",
"firstName": "Jane",
"lastName": "User",
"roles": [
"ROLE_SYSTEM",
"ROLE_APP",
"ROLE_DOMAIN",
"ROLE_MAIL",
"ROLE_CUSTADMIN",
"ROLE_FINANCE"
],
"status": "ok",
"teams": []
},
{
"id": 4,
"username": "user2.test@test1.be",
"email": "user2.test@test1.be",
"firstName": "John",
"lastName": "User",
"roles": [
"ROLE_APP",
"ROLE_DOMAIN",
"ROLE_MAIL",
"ROLE_SYSTEM"
],
"status": "ok",
"teams": [
{
"id": 2,
"name": "myTeam2"
}
]
}
],
"type": "owner"
},
{
"id": 5,
"name": "tests",
"users": [
{
"id": 17,
"username": "user.test@test2.be",
"email": "user.test@test2.be",
"firstName": "Paul",
"lastName": "User2",
"roles": [
"ROLE_SYSTEM",
"ROLE_APP",
"ROLE_DOMAIN",
"ROLE_MAIL",
"ROLE_CUSTADMIN",
"ROLE_FINANCE"
],
"status": "ok",
"teams": []
}
],
"type": "reseller"
},
{
"id": 6,
"name": "tests6",
"users": [
{
"id": 3,
"username": "user.test@test3.be",
"email": "user.test@test3.be",
"firstName": "Sam",
"lastName": "User3",
"roles": [
"ROLE_SYSTEM",
"ROLE_APP",
"ROLE_DOMAIN",
"ROLE_MAIL",
"ROLE_CUSTADMIN",
"ROLE_FINANCE"
],
"status": "ok",
"teams": []
}
],
"type": "manual"
}
]
}
HTTP status code 403
Response when a user does not have access to a mailgroup
HTTP status code 404
Response when a mailgroup is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Deactivate or activate a mailgroup
post /mailgroups/{mailgroupId}/actions
Deactivate or activate a mailgroup
URI Parameters
- mailgroupId: required(string)
The unique identifier of a mailgroup
Body
Media type: application/json
Type: object
Properties- type: required(one of deactivate, activate)
Action type
Examples:
1:
{
"type": "deactivate"
}
2:
{
"type": "activate"
}
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"mailgroup": {
"id": 5,
"name": "myMailgroup",
"type": "level27",
"status": "ok",
"systemgroup": {
"id": 1,
"name": "sharedSystemgroup"
},
"organisation": {
"id": 123,
"name": "Test Company",
"reseller": null
},
"domains": [
{
"id": 123,
"name": "test",
"handleMailDns": true,
"mailPrimary": true,
"domaintype": {
"id": 1,
"extension": "nl"
},
"addressCount": 3
}
],
"dtExpires\"": null,
"billingStatus": "to_create",
"statusCategory": "green",
"teams": [],
"countTeams": 0
}
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a mailgroup
HTTP status code 404
Response when a mailgroup is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Link a domain to a mailgroup. Attention! This sets the domain’s MX servers to point to the right direction. Existing MX records will be overwritten
post /mailgroups/{mailgroupId}/domains
Link a domain to a mailgroup. Attention! This sets the domain’s MX servers to point to the right direction. Existing MX records will be overwritten
URI Parameters
- mailgroupId: required(string)
The unique identifier of a mailgroup
Query Parameters
- source: (string)
Body
Media type: application/json
Type: object
Properties- domain: required(integer)
The unique identifier of a domain
- handleMailDns: (boolean)
Should domain records be created? (default: true) - admin only
Example:
{
"domain": 123,
"handleMailDns": true
}
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"mailgroup": {
"id": 5,
"name": "myMailgroup",
"type": "level27",
"status": "ok",
"systemgroup": {
"id": 1,
"name": "sharedSystemgroup"
},
"organisation": {
"id": 123,
"name": "Test Company",
"reseller": null
},
"domains": [
{
"id": 123,
"name": "test",
"handleMailDns": true,
"mailPrimary": true,
"domaintype": {
"id": 1,
"extension": "nl"
},
"addressCount": 3
}
],
"dtExpires\"": null,
"billingStatus": "to_create",
"statusCategory": "green",
"teams": [],
"countTeams": 0
}
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a mailgroup
HTTP status code 404
Response when a mailgroup is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Unlink a domain from the mailgroup
Update handleMailDns on domain (admin only)
delete /mailgroups/{mailgroupId}/domains/{domainId}
Unlink a domain from the mailgroup
URI Parameters
- mailgroupId: required(string)
The unique identifier of a mailgroup
- domainId: required(string)
HTTP status code 204
Request successfully processed
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a mailgroup
HTTP status code 404
Response when a mailgroup is not found
HTTP status code 500
Response when a user does not have a proper role to access a control
patch /mailgroups/{mailgroupId}/domains/{domainId}
Update handleMailDns on domain (admin only)
URI Parameters
- mailgroupId: required(string)
The unique identifier of a mailgroup
- domainId: required(string)
Body
Media type: application/json
Type: object
Properties- handleMailDns: (boolean)
Should domain records be created? (default: true) - admin only
Example:
{
"handleMailDns": true
}
Set primary domain
patch /mailgroups/{mailgroupId}/domains/{domainId}/setprimary
Set primary domain
URI Parameters
- mailgroupId: required(string)
The unique identifier of a mailgroup
- domainId: required(string)
Create a new mailbox
List of all available mailboxes
post /mailgroups/{mailgroupId}/mailboxes
Create a new mailbox
URI Parameters
- mailgroupId: required(string)
The unique identifier of a mailgroup
Query Parameters
- source: (string)
Body
Media type: application/json
Type: object
Properties- name: required(string)
Name
- password: (string)
Password will be auto generated if its value is not entered. Valid password:
- should be longer than 8 characters
- should be shorter than 30 characters
- should contain at least 1 capital letter and 1 number
- cannot contain spaces, : , " or '
- oooEnabled: (boolean)
oooEnabled (default: false)
- oooSubject: (string)
oooSubject (Required when oooEnabled = true)
- oooText: (string)
oooText (Required when oooEnabled = true)
Example:
{
"name": "My Mailbox",
"password": "123Test123",
"oooEnabled": true,
"oooSubject": "Test",
"oooText": "Test"
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"mailbox": {
"id": 10,
"name": "My Mailbox",
"username": "mb00010",
"status": "to_create",
"oooEnabled": true,
"oooSubject": "Test",
"oooText": "Test",
"mailgroup": {
"id": 5,
"name": "myMailgroup",
"type": "level27"
},
"system": {
"id": 8,
"fqdn": "12Gsjxuzan52nsj.be",
"hostname": "testsystem.be"
},
"billableitemDetail": {
"id": 44390
},
"statusCategory": "green",
"primaryAddress": "test@testbla.be",
"aliases": 1
}
}
HTTP status code 400
Validation of new mailbox failed
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /mailgroups/{mailgroupId}/mailboxes
List of all available mailboxes
URI Parameters
- mailgroupId: required(string)
The unique identifier of a mailgroup
Query Parameters
- status: (string)
- oooEnabled: (boolean)
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- orderBy: (string)
- orderType: (string)
ASC or DESC
- filter: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"mailboxes": [
{
"id": 11,
"name": "My Mailbox",
"username": "mb00011",
"status": "to_create",
"oooEnabled": true,
"oooSubject": "Test",
"oooText": "Test",
"mailgroup": {
"id": 5,
"name": "myMailgroup"
},
"statusCategory": "green",
"primaryAddress": "test@testbla.be",
"aliases": 1
},
{
"id": 10,
"name": "My Mailbox 2",
"username": "mb00010",
"status": "to_create",
"oooEnabled": true,
"oooSubject": "Test",
"oooText": "Test",
"mailgroup": {
"id": 5,
"name": "myMailgroup"
},
"statusCategory": "green",
"primaryAddress": "test@testbla2.be",
"aliases": 0
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Update a mailbox
Delete a mailbox
Get a mailbox
put /mailgroups/{mailgroupId}/mailboxes/{mailboxId}
Update a mailbox
URI Parameters
- mailgroupId: required(string)
The unique identifier of a mailgroup
- mailboxId: required(string)
The unique identifier of a mailbox
Body
Media type: application/json
Type: object
Properties- name: required(string)
Name
- password: (string)
Password will be auto generated if its value is not entered. Valid password:
- should be longer than 8 characters
- should be shorter than 30 characters
- should contain at least 1 capital letter and 1 number
- cannot contain spaces, : , " or '
- oooEnabled: (boolean)
oooEnabled (default: false)
- oooSubject: (string)
oooSubject (Required when oooEnabled = true)
- oooText: (string)
oooText (Required when oooEnabled = true)
Example:
{
"name": "My Mailbox",
"password": "123Test123",
"oooEnabled": true,
"oooSubject": "Test",
"oooText": "Test"
}
HTTP status code 204
Response when update of a mailbox succeeded
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a mailbox
HTTP status code 404
Response when mailbox is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
delete /mailgroups/{mailgroupId}/mailboxes/{mailboxId}
Delete a mailbox
URI Parameters
- mailgroupId: required(string)
The unique identifier of a mailgroup
- mailboxId: required(string)
The unique identifier of a mailbox
HTTP status code 204
Request successfully processed
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a mailbox
HTTP status code 404
Response when mailbox is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /mailgroups/{mailgroupId}/mailboxes/{mailboxId}
Get a mailbox
URI Parameters
- mailgroupId: required(string)
The unique identifier of a mailgroup
- mailboxId: required(string)
The unique identifier of a mailbox
HTTP status code 200
Response when mailbox is found
Body
Media type: application/json
Type: object
Example:
{
"mailbox": {
"id": 10,
"name": "My Mailbox",
"username": "mb00010",
"status": "to_create",
"oooEnabled": true,
"oooSubject": "Test",
"oooText": "Test",
"mailgroup": {
"id": 5,
"name": "myMailgroup",
"type": "level27"
},
"system": {
"id": 8,
"fqdn": "12Gsjxuzan52nsj.be",
"hostname": "testsystem.be"
},
"billableitemDetail": {
"id": 44390
},
"statusCategory": "green",
"primaryAddress": "test@testbla.be",
"aliases": 1
}
}
HTTP status code 403
Response when a user does not have access to a mailbox
HTTP status code 404
Response when mailbox is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Create a new address
List of all available addresses
post /mailgroups/{mailgroupId}/mailboxes/{mailboxId}/addresses
Create a new address
URI Parameters
- mailgroupId: required(string)
The unique identifier of a mailgroup
- mailboxId: required(string)
The unique identifier of a mailbox
Query Parameters
- source: (string)
Body
Media type: application/json
Type: object
Properties- address: required(string)
Address (unique)
- it should be valid email address
- the address must be link with a domain linked to the mailgroup
- non-editable
Example:
{
"address": "test@testdomain123.nl"
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"mailboxAddress": {
"id": 3,
"address": "test@testdomain123.nl",
"status": "ok"
}
}
HTTP status code 400
Validation of new address failed
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /mailgroups/{mailgroupId}/mailboxes/{mailboxId}/addresses
List of all available addresses
URI Parameters
- mailgroupId: required(string)
The unique identifier of a mailgroup
- mailboxId: required(string)
The unique identifier of a mailbox
Query Parameters
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- orderBy: (string)
- orderType: (string)
ASC or DESC
- filter: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"mailboxAddresses": [
{
"id": 2,
"address": "test@testdomain123.nl",
"status": "ok"
},
{
"id": 3,
"address": "test2@testdomain123.nl",
"status": "ok"
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Delete a address
Update an address
Get a address
delete /mailgroups/{mailgroupId}/mailboxes/{mailboxId}/addresses/{addressId}
Delete a address
URI Parameters
- mailgroupId: required(string)
The unique identifier of a mailgroup
- mailboxId: required(string)
The unique identifier of a mailbox
- addressId: required(string)
The unique identifier of a address
HTTP status code 204
Request successfully processed
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a address
HTTP status code 404
Response when address is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
put /mailgroups/{mailgroupId}/mailboxes/{mailboxId}/addresses/{addressId}
Update an address
URI Parameters
- mailgroupId: required(string)
The unique identifier of a mailgroup
- mailboxId: required(string)
The unique identifier of a mailbox
- addressId: required(string)
The unique identifier of a address
Body
Media type: application/json
Type: object
Properties- address: required(string)
Address (unique)
- it should be valid email address
- the address must be link with a domain linked to the mailgroup
- non-editable
Example:
{
"address": "test@testdomain123.nl"
}
HTTP status code 204
Response when update of a address succeeded
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a address
HTTP status code 404
Response when address is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /mailgroups/{mailgroupId}/mailboxes/{mailboxId}/addresses/{addressId}
Get a address
URI Parameters
- mailgroupId: required(string)
The unique identifier of a mailgroup
- mailboxId: required(string)
The unique identifier of a mailbox
- addressId: required(string)
The unique identifier of a address
HTTP status code 200
Response when address is found
Body
Media type: application/json
Type: object
Example:
{
"mailboxAddress": {
"id": 3,
"address": "test@testdomain123.nl",
"status": "ok"
}
}
HTTP status code 403
Response when a user does not have access to a address
HTTP status code 404
Response when address is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Create a new mailforwarder
List of all available mailforwarders
post /mailgroups/{mailgroupId}/mailforwarders
Create a new mailforwarder
URI Parameters
- mailgroupId: required(string)
The unique identifier of a mailgroup
Body
Media type: application/json
Type: object
Properties- address: required(string)
Address (unique)
- it should be valid email address
- the address must be link with a domain linked to the mailgroup
- non-editable
- destination: required(string)
Destination: email address or csv/new line separated list of email addresses
Example:
{
"address": "test123@testdomain123.nl",
"destination": "test321@testdomain123.nl,test@testdomain123.nl"
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"mailforwarder": {
"id": 28,
"address": "test123@testdomain123.nl",
"destination": [
"test321@testdomain123.nl",
"test@testdomain123.nl"
],
"status": "to_create",
"mailgroup": {
"id": 5,
"name": "myMailgroup",
"type": "level27"
},
"domain": {
"id": 16,
"name": "testdomain123",
"domaintype": {
"id": 1,
"name": "nl"
}
}
}
}
HTTP status code 400
Validation of new mailforwarder failed
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /mailgroups/{mailgroupId}/mailforwarders
List of all available mailforwarders
URI Parameters
- mailgroupId: required(string)
The unique identifier of a mailgroup
Query Parameters
- status: (string)
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- orderBy: (string)
- orderType: (string)
ASC or DESC
- filter: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"mailforwarders": [
{
"id": 28,
"address": "test123@testdomain123.nl",
"destination": [
"test321@testdomain123.nl",
"test@testdomain123.nl"
],
"status": "to_create",
"mailgroup": {
"id": 5,
"name": "myMailgroup",
"type": "level27"
},
"domain": {
"id": 16,
"name": "testdomain123",
"domaintype": {
"id": 1,
"name": "nl"
}
}
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Update a mailforwarder
Delete a mailforwarder
Get a mailforwarder
put /mailgroups/{mailgroupId}/mailforwarders/{mailforwarderId}
Update a mailforwarder
URI Parameters
- mailgroupId: required(string)
The unique identifier of a mailgroup
- mailforwarderId: required(string)
The unique identifier of a mailforwarder
Body
Media type: application/json
Type: object
Properties- address: required(string)
Address (unique)
- it should be valid email address
- the address must be link with a domain linked to the mailgroup
- non-editable
- destination: required(string)
Destination: email address or csv/new line separated list of email addresses
Example:
{
"address": "test123@testdomain123.nl",
"destination": "test321@testdomain123.nl,test@testdomain123.nl"
}
HTTP status code 204
Response when update of a mailforwarder succeeded
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a mailforwarder
HTTP status code 404
Response when mailforwarder is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
delete /mailgroups/{mailgroupId}/mailforwarders/{mailforwarderId}
Delete a mailforwarder
URI Parameters
- mailgroupId: required(string)
The unique identifier of a mailgroup
- mailforwarderId: required(string)
The unique identifier of a mailforwarder
HTTP status code 204
Request successfully processed
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a mailforwarder
HTTP status code 404
Response when mailforwarder is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /mailgroups/{mailgroupId}/mailforwarders/{mailforwarderId}
Get a mailforwarder
URI Parameters
- mailgroupId: required(string)
The unique identifier of a mailgroup
- mailforwarderId: required(string)
The unique identifier of a mailforwarder
HTTP status code 200
Response when mailforwarder is found
Body
Media type: application/json
Type: object
Example:
{
"mailforwarder": {
"id": 28,
"address": "test123@testdomain123.nl",
"destination": [
"test321@testdomain123.nl",
"test@testdomain123.nl"
],
"status": "to_create",
"mailgroup": {
"id": 5,
"name": "myMailgroup",
"type": "level27"
},
"domain": {
"id": 16,
"name": "testdomain123",
"domaintype": {
"id": 1,
"name": "nl"
}
}
}
}
HTTP status code 403
Response when a user does not have access to a mailforwarder
HTTP status code 404
Response when mailforwarder is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Add access to a mailgroup
post /mailgroups/{mailgroupId}/acls
Add access to a mailgroup
URI Parameters
- mailgroupId: required(string)
The unique identifier of a mailgroup
Body
Media type: application/json
Type: object
Properties- organisation: required(integer)
The unique identifier of an organisation
Example:
{
"organisation": 123
}
HTTP status code 201
Response when access to a mailgroup was successfully added
Body
Media type: application/json
Type: object
Example:
{
"acl": {
"id": 69,
"object": "Level27\\MailBundle\\Entity\\Mailgroup",
"objectId": 5,
"permissions": null,
"extra": null,
"type": "manual",
"organisation": {
"id": 123,
"name": "Test Company"
}
}
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a mailgroup
HTTP status code 404
Response when a mailgroup is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Remove access to a mailgroup
delete /mailgroups/{mailgroupId}/acls/{organisationId}
Remove access to a mailgroup
URI Parameters
- mailgroupId: required(string)
The unique identifier of a mailgroup
- organisationId: required(string)
HTTP status code 204
Response when access to a mailgroup was successfully removed
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a mailgroup
HTTP status code 404
Response when a mailgroup is not found
HTTP status code 500
Response when a user does not have a proper role to access a control
Get notifications for a mailgroup
Send a notification for a mailgroup (currently no available mailgroup notifications exist)
get /mailgroups/{mailgroupId}/notifications
Get notifications for a mailgroup
URI Parameters
- mailgroupId: required(string)
The unique identifier of a mailgroup
Query Parameters
- orderBy: (string)
- orderType: (string)
ASC or DESC
- type: (string)
- limit: (integer - default: 5)
- offset: (integer - default: 0)
post /mailgroups/{mailgroupId}/notifications
Send a notification for a mailgroup (currently no available mailgroup notifications exist)
URI Parameters
- mailgroupId: required(string)
The unique identifier of a mailgroup
Create a billableitem (action only for admin)
post /mailgroups/{mailgroupId}/bill
Create a billableitem (action only for admin)
URI Parameters
- mailgroupId: required(string)
The unique identifier of a mailgroup
Body
Media type: application/json
Type: object
Properties- externalInfo: (string)
ExternalInfo (required when billableitemInfo entities for an Organisation exist in db)
Example:
{
"externalInfo": "123B5"
}
HTTP status code 201
Response when a billableitem was successfully created
Body
Media type: application/json
Type: object
Example:
{
"billableitem": {
"id": 21,
"organisation": {
"id": 123,
"name": "Test Company"
},
"status": 10,
"statusDisplay": "ok",
"description": "Billableitem description",
"autoRenew": true,
"dtExpires": 1518024820,
"dtNextRenewal": 1518024820,
"documentsExist": false,
"details": "null \"extra1\"",
"ull": null,
"extra2": null,
"externalInfo": "123Yw"
}
}
HTTP status code 403
Response when a user does not have access to a mailgroup
HTTP status code 404
Response when a mailgroup is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Get price for an existing mailgroup
Update an existing billableitem
Delete a billableitem (action only for admin)
get /mailgroups/{mailgroupId}/billableitem
Get price for an existing mailgroup
URI Parameters
- mailgroupId: required(string)
The unique identifier of a mailgroup
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"billableitem": {
"id": 21,
"organisation": {
"id": 123,
"name": "Test Company"
},
"status": 1,
"statusDisplay": "to_create",
"description": "Mailgroup myMailgroup",
"autoRenew": true,
"dtExpires": 1518171878,
"dtNextRenewal": 1518171804,
"documentsExist": false,
"details": [
{
"id": 50,
"price": "0",
"dtExpires": "1518171804",
"quantity": 1,
"description": "Mailbox Level27",
"product": {
"id": "mailbox_level27",
"description": "Mailbox Level27",
"allowQuantityChange": false
},
"productPrice": {
"id": 156,
"period": 1,
"currency": "EUR",
"price": "100",
"timing": "pre",
"status": 10
},
"type": "level27"
}
],
"extra1": null,
"extra2": null,
"externalInfo": "123",
"agreement": {
"id": 3,
"name": "My agreement"
}
}
}
HTTP status code 403
Response when a user does not have access to a mailgroup
HTTP status code 404
Response when a mailgroup is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
patch /mailgroups/{mailgroupId}/billableitem
Update an existing billableitem
URI Parameters
- mailgroupId: required(string)
The unique identifier of a mailgroup
Body
Media type: application/json
Type: object
Properties- autoRenew: (boolean)
Renew automatically (default: true)
- extra1: (string)
Extra1
- extra2: (string)
Extra2
- externalInfo: (string)
ExternalInfo (required when billableitemInfo entities for an Organisation exist in db)
- preventDeactivation: (boolean)
Prevent deactivation (default: true) - admin only
Example:
{
"autoRenew": false,
"extra1": null,
"extra2": null,
"externalInfo": "123B5"
}
HTTP status code 204
Response when update of a billableitem succeeded
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a mailgroup
HTTP status code 404
Response when a billableitem is not found
HTTP status code 500
Response when a user does not have a proper role to access a control
delete /mailgroups/{mailgroupId}/billableitem
Delete a billableitem (action only for admin)
URI Parameters
- mailgroupId: required(string)
The unique identifier of a mailgroup
HTTP status code 204
Response when deletion of a billableitem succeeded
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a mailgroup
HTTP status code 404
Response when a billableitem is not found
HTTP status code 500
Response when a user does not have a proper role to access a control
Add an agreement to billableitem (action only for admin)
Delete an agreement from billableitem (action only for admin)
post /mailgroups/{mailgroupId}/billableitem/agreements
Add an agreement to billableitem (action only for admin)
URI Parameters
- mailgroupId: required(string)
The unique identifier of a mailgroup
Body
Media type: application/json
Type: object
Properties- agreement: required(integer)
The unique identifier of an agreement
Example:
{
"agreement": 3
}
HTTP status code 204
Response when agreement was added to billableitem
Body
Media type: application/json
Type: object
Example:
{
"billableitem": {
"id": 21,
"organisation": {
"id": 123,
"name": "Test Company"
},
"status": 1,
"statusDisplay": "to_create",
"description": "Mailgroup myMailgroup",
"autoRenew": true,
"dtExpires": 1518171878,
"dtNextRenewal": 1518171804,
"documentsExist": false,
"details": [
{
"id": 50,
"price": "0",
"dtExpires": "1518171804",
"quantity": 1,
"description": "Mailbox Level27",
"product": {
"id": "mailbox_level27",
"description": "Mailbox Level27",
"allowQuantityChange": false
},
"productPrice": {
"id": 156,
"period": 1,
"currency": "EUR",
"price": "100",
"timing": "pre",
"status": 10
},
"type": "level27"
}
],
"extra1": null,
"extra2": null,
"externalInfo": "123",
"agreement": {
"id": 3,
"name": "My agreement"
}
}
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to an app
HTTP status code 404
Response when a billableitem is not found
delete /mailgroups/{mailgroupId}/billableitem/agreements
Delete an agreement from billableitem (action only for admin)
URI Parameters
- mailgroupId: required(string)
The unique identifier of a mailgroup
Update an existing billableitem detail
patch /mailgroups/{mailgroupId}/billableitem/details/{detailId}
Update an existing billableitem detail
URI Parameters
- mailgroupId: required(string)
The unique identifier of a mailgroup
- detailId: required(string)
Body
Media type: application/json
Type: object
Properties- price: (integer)
Price in cents (admin only)
- description: (string)
Description
- productPrice: (integer)
The unique identifier of a ProductPrice
- quantity: (integer)
Quantity (admin only)
Examples:
1:
{
"description": "May description",
"productPrice": "product_price_id"
}
2 (admin only):
{
"price": 100,
"quantity": 2
}
HTTP status code 204
Response when update of a billableitem detail succeeded
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a mailgroup
HTTP status code 404
Response when a billableitem detail is not found
HTTP status code 500
Response when a user does not have a proper role to access a control
Update externalInfo for an existing billableitem
patch /mailgroups/{mailgroupId}/billableitem/externalinfo
Update externalInfo for an existing billableitem
URI Parameters
- mailgroupId: required(string)
The unique identifier of a mailgroup
Body
Media type: application/json
Type: object
Properties- externalInfo: (string)
ExternalInfo (required when billableitemInfo entities for an Organisation exist in db)
Example:
{
"externalInfo": "x-0001"
}
Create integrity check for mailgroup
Get mailgroup integrity checks
post /mailgroups/{mailgroupId}/integritychecks
Create integrity check for mailgroup
URI Parameters
- mailgroupId: required(string)
The unique identifier of a mailgroup
Body
Media type: application/json
Type: object
Properties- dojobs: (boolean)
Create jobs (default: true)
- forcejobs: (boolean)
Create jobs even if integrity check failed (default: false)
Example:
{
"dojobs": false,
"forcejobs": false
}
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"integritycheck": {
"id": 268,
"dtRequested": "1584960307",
"object": "Level27\\MailBundle\\Entity\\Mailgroup",
"objectId": 85,
"results": {
"mailgroup": {
"id": 85,
"data": {
"name": "test1",
"status": "ok",
"statusColor": "green",
"type": "level27",
"systemgroup": {
"id": 2,
"name": "mailgroup"
},
"mailboxSystem": {
"id": 24,
"name": "mail-box1.test.be"
}
},
"results": {
"name": "ok",
"status": "ok",
"okStatus": "ok",
"organisation": "ok",
"type": "ok",
"systemgroup": "ok",
"mailboxSystem": "ok"
},
"mailboxes": [
{
"id": 1056,
"data": {
"name": "My Mailbox",
"status": "ok",
"statusColor": "green",
"username": "mb01055",
"system": {
"id": 24,
"name": "mail-box1.test.be"
},
"oooEnabled": "OFF",
"oooEnabledColor": "orange",
"oooSubject": null,
"oooText": null
},
"results": {
"name": "ok",
"status": "ok",
"okStatus": "ok",
"username": "ok",
"system": "ok"
},
"addresses": [],
"jobs": [
{
"id": 333903,
"action": "insertMailbox",
"status": 50,
"message": "ok",
"dtEnd": null,
"dtStamp": "2019-07-10",
"exceptionMsq": null
},
{
"id": 333905,
"action": "insertMailboxSmtpin",
"status": 50,
"message": "ok",
"dtEnd": null,
"dtStamp": "2019-07-10",
"exceptionMsq": null
},
{
"id": 333907,
"action": "insertMailboxLb",
"status": 50,
"message": "ok",
"dtEnd": null,
"dtStamp": "2019-07-10",
"exceptionMsq": null
}
]
}
],
"mailforwarders": [
{
"id": 352,
"data": {
"address": "test1@test.be",
"status": "ok",
"statusColor": "green",
"domain": {
"id": 39,
"fullName": "test.be"
},
"destination": [
"test@level27.be"
]
},
"results": {
"address": "ok",
"status": "ok",
"okStatus": "ok",
"domain": "ok",
"destination": "ok"
},
"jobs": [
{
"id": 335364,
"action": "insertMailforwarder",
"status": 50,
"message": "ok",
"dtEnd": null,
"dtStamp": "2019-07-16",
"exceptionMsq": null
},
{
"id": 335366,
"action": "insertMailforwarderSmtpin",
"status": 50,
"message": "ok",
"dtEnd": null,
"dtStamp": "2019-07-16",
"exceptionMsq": null
}
]
}
],
"domains": [
{
"id": 39,
"data": {
"fullName": "test.be",
"expectedNameServers": "mail-smtpin1.test.be.",
"actualNameServers": ""
},
"results": {
"mx records": "NOT OK - dig failed or record not found"
}
}
],
"jobs": []
},
"organisations": {
"manual": [],
"owner": "level27"
},
"teams": [],
"financeData": {
"billing": "ON",
"billingStatus": "green",
"autoRenew": "ON",
"autoRenewStatus": "green",
"dtExpires": "2019-10-31",
"billingItems": [
{
"id": 939,
"description": "Mailbox Level27",
"type": "Mailbox Level27",
"period": "1 month(s)",
"dtExpires": "2019-10-31",
"price": 0
}
],
"totalPrice": 0
},
"isHealthy": false,
"extraMessage": "No jobs because entity is not healthy or forcejobs is not called."
},
"status": "ok",
"dojobs": true,
"forcejobs": false,
"localIntegritychecks": []
}
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to an mailgroup
HTTP status code 404
Response when an mailgroup is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /mailgroups/{mailgroupId}/integritychecks
Get mailgroup integrity checks
URI Parameters
- mailgroupId: required(string)
The unique identifier of a mailgroup
Query Parameters
- status: (string)
- orderBy: (string)
- orderType: (string)
ASC or DESC
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- filter: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"integritychecks": [
{
"id": 268,
"dtRequested": "1584960307",
"status": "ok"
},
{
"id": 259,
"dtRequested": "1584734256",
"status": "ok"
},
{
"id": 254,
"dtRequested": "1584732272",
"status": "ok"
},
{
"id": 251,
"dtRequested": "1584709340",
"status": "ok"
},
{
"id": 249,
"dtRequested": "1584708665",
"status": "ok"
}
]
}
HTTP status code 400
Bad request
HTTP status code 401
Unauthorized - when user doesn't have role admin, custadmin or mailgroup
HTTP status code 403
Access Denied - when user doesn't have access to mailgroup
HTTP status code 404
Not found - when integritycheck doesn't exist
HTTP status code 500
Response when a user does not have a proper role to access a controller
Get mailgroup integrity check
get /mailgroups/{mailgroupId}/integritychecks/{integritycheckId}
Get mailgroup integrity check
URI Parameters
- mailgroupId: required(string)
The unique identifier of a mailgroup
- integritycheckId: required(string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"integritycheck": {
"id": 268,
"dtRequested": "1584960307",
"object": "Level27\\MailBundle\\Entity\\Mailgroup",
"objectId": 85,
"results": {
"mailgroup": {
"id": 85,
"data": {
"name": "test1",
"status": "ok",
"statusColor": "green",
"type": "level27",
"systemgroup": {
"id": 2,
"name": "mailgroup"
},
"mailboxSystem": {
"id": 24,
"name": "mail-box1.test.be"
}
},
"results": {
"name": "ok",
"status": "ok",
"okStatus": "ok",
"organisation": "ok",
"type": "ok",
"systemgroup": "ok",
"mailboxSystem": "ok"
},
"mailboxes": [
{
"id": 1056,
"data": {
"name": "My Mailbox",
"status": "ok",
"statusColor": "green",
"username": "mb01055",
"system": {
"id": 24,
"name": "mail-box1.test.be"
},
"oooEnabled": "OFF",
"oooEnabledColor": "orange",
"oooSubject": null,
"oooText": null
},
"results": {
"name": "ok",
"status": "ok",
"okStatus": "ok",
"username": "ok",
"system": "ok"
},
"addresses": [],
"jobs": [
{
"id": 333903,
"action": "insertMailbox",
"status": 50,
"message": "ok",
"dtEnd": null,
"dtStamp": "2019-07-10",
"exceptionMsq": null
},
{
"id": 333905,
"action": "insertMailboxSmtpin",
"status": 50,
"message": "ok",
"dtEnd": null,
"dtStamp": "2019-07-10",
"exceptionMsq": null
},
{
"id": 333907,
"action": "insertMailboxLb",
"status": 50,
"message": "ok",
"dtEnd": null,
"dtStamp": "2019-07-10",
"exceptionMsq": null
}
]
}
],
"mailforwarders": [
{
"id": 352,
"data": {
"address": "test1@test.be",
"status": "ok",
"statusColor": "green",
"domain": {
"id": 39,
"fullName": "test.be"
},
"destination": [
"test@level27.be"
]
},
"results": {
"address": "ok",
"status": "ok",
"okStatus": "ok",
"domain": "ok",
"destination": "ok"
},
"jobs": [
{
"id": 335364,
"action": "insertMailforwarder",
"status": 50,
"message": "ok",
"dtEnd": null,
"dtStamp": "2019-07-16",
"exceptionMsq": null
},
{
"id": 335366,
"action": "insertMailforwarderSmtpin",
"status": 50,
"message": "ok",
"dtEnd": null,
"dtStamp": "2019-07-16",
"exceptionMsq": null
}
]
}
],
"domains": [
{
"id": 39,
"data": {
"fullName": "test.be",
"expectedNameServers": "mail-smtpin1.test.be.",
"actualNameServers": ""
},
"results": {
"mx records": "NOT OK - dig failed or record not found"
}
}
],
"jobs": []
},
"organisations": {
"manual": [],
"owner": "level27"
},
"teams": [],
"financeData": {
"billing": "ON",
"billingStatus": "green",
"autoRenew": "ON",
"autoRenewStatus": "green",
"dtExpires": "2019-10-31",
"billingItems": [
{
"id": 939,
"description": "Mailbox Level27",
"type": "Mailbox Level27",
"period": "1 month(s)",
"dtExpires": "2019-10-31",
"price": 0
}
],
"totalPrice": 0
},
"isHealthy": false,
"extraMessage": "No jobs because entity is not healthy or forcejobs is not called."
},
"status": "ok",
"dojobs": true,
"forcejobs": false,
"localIntegritychecks": []
}
}
HTTP status code 400
Bad request
HTTP status code 401
Unauthorized - when user doesn't have role admin, custadmin or mailgroup
HTTP status code 403
Access Denied - when user doesn't have access to mailgroup
HTTP status code 404
Not found - when integritycheck doesn't exist
HTTP status code 500
Response when a user does not have a proper role to access a controller
Get mailgroup integrity check
get /mailgroups/{mailgroupId}/integritychecks/{integritycheckId}/report
Get mailgroup integrity check
URI Parameters
- mailgroupId: required(string)
The unique identifier of a mailgroup
- integritycheckId: required(string)
HTTP status code 200
Returns report in pdf
HTTP status code 400
Bad request
HTTP status code 401
Unauthorized - when user doesn't have role admin, custadmin or mailgroup
HTTP status code 403
Access Denied - when user doesn't have access to mailgroup
HTTP status code 404
Not found - when integritycheck doesn't exist
HTTP status code 500
Response when a user does not have a proper role to access a controller
Calculate price for a new mailgroup
get /mailgroups/priceproposal/{type}
Calculate price for a new mailgroup
URI Parameters
- type: required(string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"products": [
{
"id": "mailbox_level27",
"description": "Mailbox Level27",
"prices": [
{
"id": 156,
"period": 1,
"currency": "EUR",
"price": "100",
"timing": "pre",
"default": true,
"status": 10
}
],
"allowQuantityChange": null
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Calculate price for a new mailgroup for a reseller organisation
get /mailgroups/priceproposal/{type}/organisation/{organisationId}
Calculate price for a new mailgroup for a reseller organisation
URI Parameters
- type: required(string)
- organisationId: required(string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"products": [
{
"id": "mailbox_level27",
"description": "Mailbox Level27",
"prices": [
{
"id": 156,
"period": 1,
"currency": "EUR",
"price": "100",
"timing": "pre",
"default": true,
"status": 10
}
],
"allowQuantityChange": null
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Get all prices for mailboxes
get /mailgroups/priceproposal/organisation/{organisationId}
Get all prices for mailboxes
URI Parameters
- organisationId: required(string)
Query Parameters
- orderBy: (string)
- orderType: (string)
ASC or DESC
- filter: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"products": [
{
"id": "mailbox_level27",
"description": "Mailbox Level27",
"prices": [
{
"id": 1835,
"period": 1,
"currency": "EUR",
"price": "115",
"timing": "pre",
"default": false
},
{
"id": 1836,
"period": 12,
"currency": "EUR",
"price": "1200",
"timing": "pre",
"default": false
},
{
"id": 2418,
"period": 3,
"currency": "EUR",
"price": "330",
"timing": "pre",
"default": false
},
{
"id": 2419,
"period": 6,
"currency": "EUR",
"price": "630",
"timing": "pre",
"default": true
}
]
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
/mailboxes
Send a notification for an mailbox
post /mailboxes/{mailboxId}/notifications
Send a notification for an mailbox
URI Parameters
- mailboxId: required(string)
The unique identifier of an mailbox
Body
Media type: application/json
Type: object
Properties- type: required(string)
Notification type
- group: required(one of App, Crm, Domain, Finance, Mail, System)
Notification group
- params: (object)
Additional parameters (json)
Example:
{
"type": "jobupdateMailbox50",
"params": {
"entityUrl": "gui.cp4dev.be"
},
"group": "Mail"
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"id": 4211,
"entityIndex": "Level27\\MailBundle\\Entity\\Mailbox_10",
"entityName": "mailbox",
"dtStamp": "1522139545",
"notificationGroup": "Mail",
"type": "jobupdateMailbox50",
"entityClass": "Level27\\MailBundle\\Entity\\Mailbox",
"entityId": 10,
"rootEntityClass": null,
"rootEntityId": null,
"status": 21,
"statusDisplay": "queued",
"statusCategory": "yellow",
"sendMode": 0,
"priority": 250,
"subject": null,
"params": {
"entityUrl": "gui.cp4dev.be"
},
"userId": 1,
"contacts": [],
"extraRecipients": [],
"entity": null,
"user": null
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to an mailbox
HTTP status code 500
Response when a user does not have a proper role to access a controller
/mailboxandaddresses
Create Mailbox and addresses (and Mailgroup if needed)
post /mailboxandaddresses
Create Mailbox and addresses (and Mailgroup if needed)
Body
Media type: application/json
Type: object
Properties- order: required(string)
json (parameters for all entities)
Examples:
1:
{
"mailgroup": {
"organisation": 12,
"externalInfo": "some-info"
},
"domains": [
111,
222
],
"mailbox": {
"name": "test",
"password": "PASS_HERE",
"oooEnabled": false,
"oooSubject": null,
"oooText": null
},
"mailboxAddresses": [
{
"address": "test@test123.com"
},
{
"address": "test2@test1234.com"
}
]
}
2:
{
"mailgroup": {
"id": 12
},
"mailbox": {
"name": "test",
"password": "PASS_HERE",
"oooEnabled": false,
"oooSubject": null,
"oooText": null
},
"mailboxAddresses": [
{
"address": "test@test123.com"
},
{
"address": "test2@test1234.com"
}
]
}
/mailboxaddresses
Send a notification for an mailbox address
post /mailboxaddresses/{mailboxAddressId}/notifications
Send a notification for an mailbox address
URI Parameters
- mailboxAddressId: required(string)
The unique identifier of an mailbox address
Body
Media type: application/json
Type: object
Properties- type: required(string)
Notification type
- group: required(one of App, Crm, Domain, Finance, Mail, System)
Notification group
- params: (object)
Additional parameters (json)
Example:
{
"type": "jobinsertMailboxAddress50",
"params": {
"entityUrl": "gui.cp4dev.be"
},
"group": "Mail"
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"id": 4209,
"entityIndex": "Level27\\MailBundle\\Entity\\MailboxAddress_10",
"entityName": "mailboxaddress",
"dtStamp": "1522139458",
"notificationGroup": "Mail",
"type": "jobinsertMailboxAddress50",
"entityClass": "Level27\\MailBundle\\Entity\\MailboxAddress",
"entityId": 10,
"rootEntityClass": null,
"rootEntityId": null,
"status": 21,
"statusDisplay": "queued",
"statusCategory": "yellow",
"sendMode": 0,
"priority": 250,
"subject": null,
"params": {
"entityUrl": "gui.cp4dev.be"
},
"userId": 1,
"contacts": [],
"extraRecipients": [],
"entity": null,
"user": null
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to an mailbox address
HTTP status code 500
Response when a user does not have a proper role to access a controller
/mailbox/password
Updates mailbox password (without cp4 authorization)
post /mailbox/password
Updates mailbox password (without cp4 authorization)
Body
Media type: application/json
Type: object
Properties- username: required(string)
Mailbox username or email address
- oldPassword: required(string)
Current password
- password: required(string)
Valid password:
- should be longer than 8 characters
- should be shorter than 30 characters
- should contain at least 1 capital letter and 1 number
- cannot contain spaces, : , " or '
Examples:
1:
{
"username": "mx0000022",
"oldPassword": "oldPassword123",
"password": "newPassword123"
}
2:
{
"username": "test@test.be",
"oldPassword": "oldPassword123",
"password": "newPassword123"
}
/mailforwarders
Create a mailforwarder (and Mailgroup if needed)
post /mailforwarders
Create a mailforwarder (and Mailgroup if needed)
Body
Media type: application/json
Type: object
Properties- order: required(string)
json (parameters for all entities)
Examples:
1:
{
"mailgroup": {
"organisation": 12,
"externalInfo": "some-info"
},
"domains": [
111,
222
],
"mailforwarder": {
"address": "source@mydomain.be",
"destination": "destination@mydomain.be"
}
}
2:
{
"mailgroup": {
"id": 12
},
"mailforwarder": {
"address": "source@mydomain.be",
"destination": "destination@mydomain.be"
}
}
/systems
Create a new system
List of all available systems
post /systems
Create a new system
Query Parameters
- source: (string)
Body
Media type: application/json
Type: object
Properties- name: required(string)
Name
- customerFqdn: (string)
Valid hostname
- remarks: (string)
Remarks (admin only)
- disk: (integer)
Disk (non-editable)
- cpu: (integer)
Cpu (required for Level27 systems)
- memory: (integer)
Memory (required for Level27 systems)
- managementType: (one of basic, professional, enterprise, professional_level27)
Management type (default: basic)
- publicNetworking: (boolean)
Public networking
- For DigitalOcean servers it always is set true
- (non-editable)
- systemimage: required(integer)
The unique identifier of a systemimage
- It must match selected configuration and zone
- (non-editable)
- organisation: required(integer)
The unique identifier of an organisation
- systemproviderConfiguration: required(integer)
The unique identifier of a SystemproviderConfiguration
- It must match selected systemimage and zone
- (non-editable)
- zone: required(integer)
The unique identifier of a zone
- It must match selected systemimage and configuration
- (non-editable)
- installSecurityUpdates: (one of 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
InstallSecurityUpdates (default:random POST:1-8, PUT:0-12)
- autoTeams: (string)
A csv list of team ids
- externalInfo: (string)
ExternalInfo (required when billableitemInfo entities for an Organisation exist in db)
- operatingsystemVersion: (integer)
The unique identifier of an OperatingsystemVersion (non-editable)
Example:
{
"customerFqdn": null,
"name": "Test System",
"remarks": null,
"disk": 8,
"systemimage": 1,
"organisation": 123,
"systemproviderConfiguration": 2,
"zone": 1,
"installSecurityUpdates": null,
"autoTeams": null,
"externalInfo": null
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"system": {
"id": 11,
"uid": "735851ed-e2d0-82c4-4901-15a1637f40be",
"hostname": null,
"fqdn": "e26c797b0.level27.be",
"name": "Test System",
"remarks": "test",
"status": "to_create",
"runningStatus": "",
"cpu": null,
"memory": null,
"disk": "8.0",
"monitoringEnabled": false,
"managementType": "basic",
"organisation": {
"id": 123,
"name": "Test Company",
"reseller": null
},
"systemimage": {
"id": 1,
"name": "CentOS 7.2",
"externalId": "ami-147fc16d",
"osId": 2,
"osName": "CentOS",
"osType": "linux",
"osVersion": "7.2"
},
"operatingsystemVersion": {
"id": 18,
"osId": 2,
"osName": "Ubuntu",
"osType": "linux",
"osVersion": "7.2"
},
"provider": {
"id": 3,
"name": "Amazon EC2",
"api": "ec2"
},
"systemproviderConfiguration": {
"id": 2,
"externalId": "t2.small",
"name": "Amazon t2.small",
"description": "General purpose T2 family"
},
"region": "eu-west-1",
"zone": {
"id": 1,
"name": "eu-west-1a"
},
"networks": [],
"publicNetworking": true,
"statsSummary": {
"diskspace": {
"unit": "GB",
"value": null,
"max": null
},
"memory": {
"unit": "GB",
"value": null,
"max": null
},
"cpu": {
"unit": "%",
"value": null,
"max": 100
}
},
"group": null,
"billingStatus": "to_create",
"dtExpires": 1518030935,
"cookbooks": [],
"volumes": [],
"installSecurityUpdates": 1
}
}
HTTP status code 400
Validation of new system failed
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /systems
List of all available systems
Query Parameters
- status: (string)
- runningStatus: (string)
- osvId: (integer)
operatingsystemVersion id
- osId: (integer)
operatingsystem id
- osType: (string)
operatingsystem type
- provider: (integer)
provider id
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- orderBy: (string)
- orderType: (string)
ASC or DESC
- filter: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"total": 111,
"systems": [
{
"id": 1,
"uid": "735851ed-e2d0-82c4-4901-15a1637f40be",
"hostname": null,
"fqdn": "e26c797b0.level27.be",
"name": "Test System",
"remarks": null,
"status": "ok",
"statusCategory": "green",
"runningStatus": "running",
"runningStatusCategory": "green",
"cpu": 1,
"memory": 1,
"disk": "8.0",
"monitoringEnabled": false,
"managementType": "basic",
"organisation": {
"id": 123,
"name": "Test Company"
},
"systemimage": {
"id": 176,
"name": "ubuntu_1604lts_server",
"externalId": "",
"osId": 1,
"osName": "Ubuntu",
"osType": "linux",
"osVersion": "16.04 LTS",
"osVersionId": 3
},
"operatingsystemVersion": {
"id": 3,
"osId": 1,
"osName": "Ubuntu",
"osType": "linux",
"osVersion": "16.04 LTS"
},
"providerId": 3,
"provider": "Amazon EC2",
"providerApi": "ec2",
"systemproviderConfiguration": {
"id": 1,
"externalId": "t2.micro",
"name": "Amazon t2.micro",
"description": "General purpose T2 family"
},
"region": "eu-west-1",
"zone": {
"id": 1,
"name": "eu-west-1a"
},
"networks": [],
"publicNetworking": false,
"statsSummary": {
"diskspace": {
"unit": "GB",
"value": 5.2461280822754,
"max": 28.10274887085
},
"memory": {
"unit": "GB",
"value": 0.13926315307617,
"max": 1.9534072875977
},
"cpu": {
"unit": "%",
"value": 6.193505189153,
"max": 100
}
},
"group": null,
"billingStatus": "ok",
"dtExpires": 1518030935,
"volumes": [],
"installSecurityUpdates": 1
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Update a system
Delete a system
Get a system
put /systems/{systemId}
Update a system
URI Parameters
- systemId: required(string)
The unique identifier of a system
Body
Media type: application/json
Type: object
Properties- name: required(string)
Name
- customerFqdn: (string)
Valid hostname
- remarks: (string)
Remarks (admin only)
- disk: (integer)
Disk (non-editable)
- managementType: (one of basic, professional, enterprise, professional_level27)
Management type (default: basic)
- publicNetworking: (boolean)
Public networking
- For DigitalOcean servers it always is set true
- (non-editable)
- systemimage: required(integer)
The unique identifier of a systemimage
- It must match selected configuration and zone
- (non-editable)
- organisation: required(integer)
The unique identifier of an organisation
- systemproviderConfiguration: required(integer)
The unique identifier of a SystemproviderConfiguration
- It must match selected systemimage and zone
- (non-editable)
- zone: required(integer)
The unique identifier of a zone
- It must match selected systemimage and configuration
- (non-editable)
- systemgroup: (integer)
The unique identifier of a systemgroup
- installSecurityUpdates: (one of 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
InstallSecurityUpdates (default:random POST:1-8, PUT:0-12)
- autoTeams: (string)
A csv list of team ids
Example:
{
"customerFqdn": null,
"name": "Test System",
"remarks": null,
"disk": 8,
"systemimage": 1,
"organisation": 123,
"systemproviderConfiguration": 2,
"zone": 1,
"installSecurityUpdates": null,
"autoTeams": null
}
HTTP status code 204
Response when update of a system succeeded
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a system
HTTP status code 404
Response when a system is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
delete /systems/{systemId}
Delete a system
URI Parameters
- systemId: required(string)
The unique identifier of a system
get /systems/{systemId}
Get a system
URI Parameters
- systemId: required(string)
The unique identifier of a system
HTTP status code 200
Response when system is found
Body
Media type: application/json
Type: object
Example:
{
"system": {
"id": 11,
"uid": "735851ed-e2d0-82c4-4901-15a1637f40be",
"hostname": null,
"fqdn": "e26c797b0.level27.be",
"name": "Test System",
"remarks": "test",
"status": "to_create",
"runningStatus": "",
"cpu": null,
"memory": null,
"disk": "8.0",
"monitoringEnabled": false,
"managementType": "basic",
"organisation": {
"id": 123,
"name": "Test Company",
"reseller": null
},
"systemimage": {
"id": 1,
"name": "CentOS 7.2",
"externalId": "ami-147fc16d",
"osId": 2,
"osName": "CentOS",
"osType": "linux",
"osVersion": "7.2"
},
"operatingsystemVersion": {
"id": 18,
"osId": 2,
"osName": "Ubuntu",
"osType": "linux",
"osVersion": "7.2"
},
"provider": {
"id": 3,
"name": "Amazon EC2",
"api": "ec2"
},
"systemproviderConfiguration": {
"id": 2,
"externalId": "t2.small",
"name": "Amazon t2.small",
"description": "General purpose T2 family"
},
"region": "eu-west-1",
"zone": {
"id": 1,
"name": "eu-west-1a"
},
"networks": [],
"publicNetworking": true,
"statsSummary": {
"diskspace": {
"unit": "GB",
"value": null,
"max": null
},
"memory": {
"unit": "GB",
"value": null,
"max": null
},
"cpu": {
"unit": "%",
"value": null,
"max": 100
}
},
"group": null,
"billingStatus": "to_create",
"dtExpires": 1518030935,
"cookbooks": [],
"volumes": [],
"installSecurityUpdates": 1
}
}
HTTP status code 403
Response when a user does not have access to a system
HTTP status code 404
Response when system is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Force a system deletion (admin only)
delete /systems/{systemId}/force
Force a system deletion (admin only)
Create a new cookbook
List of all available cookbooks
post /systems/{systemId}/cookbooks
Create a new cookbook
URI Parameters
- systemId: required(string)
The unique identifier of a system
Body
Media type: application/json
Type: object
Properties- cookbooktype: required(one of asp, cp4_nagios, dns_bind, docker, haproxy, mail_box, mail_lb, mail_smtpin, memcached, mongodb, mssql, mysql, php, postfix, storage_nfs, testbook, url, urlfw, web_varnish)
Cookbook type (non-editable). Cookbook types can't repeat for one system
- optional parameters: (string)
Additional params can be required for specific cookbook type. See list of avaliable types and parameters: /cookbooktypes. Extra parameters:
- cookbook type asp parameters:
- "iis:port": string (default: 8080) - not required
- "iis:bind": string (default: 127.0.0.1) - not required
- "iis:ssl": boolean (default: false) - not required
- "memory_limit": integer (default: 256) - not required
- "max_execution_time": integer (default: 300) - not required
- "upload_max_filesize": integer (default: 20) - not required
- "expected_traffic": string (default: low) - not required
- "max_session_lifetime": integer (default: 1440) - not required
- "versions": array (default: depends on OS version) - required, for some systems multi versions are available (versions: "1.1", "2.0", "4.5")
- cookbook type dns_bind parameters:
- "role": string (default: slave) - not required
- "masterip": string (default: "") - not required
- cookbook type haproxy parameters:
- "haip:ipv4": string (default: nil) - not required
- "haip:ipv6": string (default: nil) - not required
- "haip:routerid": string (default: nil) - not required
- "backend:port": string (default: 8080) - not required
- "backend:ip: string (default: 127.0.0.1) - not required
- "port": string (default: 80) - not required
- "primay": boolean (default: true) - not required
- "varnish": boolean (default: false) - not required
- "expected_traffic": string (default: false) - not required
- cookbook type memcached parameters:
- "port": string (default: 11211) - not required
- "listen_address": string (default: 127.0.0.1) - not required
- "memory": integer (default: 64) - not required
- cookbook type mongodb parameters:
- "port": string (default: 27017) - not required
- "listen": string (default: 127.0.0.1) - not required
- cookbook type mssql parameters:
- "port": string (default: 3306) - not required
- "bind_address": string (default: localhost) - not required
- "version": string (default: 2017) - not required
- cookbook type mysql parameters:
- "query_cache_size": integer (default: 32) - not required
- "query_cache_limit": integer (default: 1) - not required
- "table_cache": integer (default: 400) - not required
- "port": string (default: 3306) - not required
- "bind_address": string (default: localhost) - not required
- "version": string (default: default) - not required
- cookbook type php parameters:
- "apache:port": string (default: 8080) - not required
- "apache:bind": string (default: 127.0.0.1) - not required
- "apache:ssl": boolean (default: false) - not required
- "memory_limit": integer (default: 256) - not required
- "max_execution_time": integer (default: 300) - not required
- "upload_max_filesize": integer (default: 20) - not required
- "versions": array (default: depends on OS version) - required, for some systems multi versions are available (versions: "5.3", "5.6", "7.0", "7.1", "7.2", "7.3")
- "disable_functions": string (default: passthru,escapeshellarg,escapeshellcmd,popen,pcntl_exec, dl,proc_open,proc_close,proc_get_status,proc_nice,proc_terminate) - not required
- "expected_traffic": string (default: low) - not required
- "max_session_lifetime": integer (default: 1440) - not required
- "phpmyadmin:enable": boolean (default: true) - not required
- "process_manager": string (default: ondemand) - not required
- "display_errors": string (default: no) - not required
- cookbook type postfix parameters:
- "listening_address": string (default: 127.0.0.1) - not required
- "contentfilter": boolean (default: true) - not required
- cookbook type storage_nfs parameters:
- "activepool": string (default: "") - not required
- cookbook type url parameters:
- "proxy_service": string (default: nginx) - not required
- "expected_traffic": string (default: low) - not required
- "backend:port": string (default: 8080) - not required
- "backend:ip: string (default: 127.0.0.1) - not required
- "default_vhost": boolean (default: true) - not required
- "max_upload_filesize": integer (default: 20) - not required
- cookbook type urlfw parameters:
- "apache_port": string (default: 80) - not required
- cookbook type web_varnish parameters:
- "backend:ip: string (default: localhost) - not required
- "backend:port": string (default: 8080) - not required
- "frontend_ip": string (default: 0.0.0.0) - not required
- "frontend_port": string (default: 80) - not required
- "storage_size": string (default: 256) - not required
- "admin_ip": string (default: 127.0.0.1) - not required
- "admin_port": string (default: 6082) - not required
Examples:
1:
{
"cookbooktype": "php",
"versions": [
"5.6",
"7.1"
]
}
2:
{
"cookbooktype": "mysql"
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"cookbook": {
"id": 9,
"cookbooktype": "php",
"cookbookparameters": {
"apache:port": {
"value": 8080,
"default": true
},
"apache:ssl": {
"value": false,
"default": true
},
"memory_limit": {
"value": 256,
"default": true
},
"max_execution_time": {
"value": 300,
"default": true
},
"upload_max_filesize": {
"value": 20,
"default": true
},
"versions": {
"value": [
"5.6",
"7.1"
],
"default": true
},
"disable_functions": {
"value": "passthru,escapeshellarg,escapeshellcmd,popen,pcntl_exec,dl,proc_open,proc_close,proc_get_status,proc_nice,proc_terminate",
"default": true
},
"expected_traffic": {
"value": "low",
"default": true
}
},
"cookbookparameterDescriptions": {
"apache:port": "apache listening port",
"apache:ssl": "ssl",
"memory_limit": "Memory limit",
"max_execution_time": "Max execution time",
"upload_max_filesize": "Max upload filesize",
"version": "PHP version",
"disable_functions": "Disabled PHP functions",
"expected_traffic": "Traffic"
},
"previousCookbookparameters": null,
"status": "to_create",
"system": {
"id": 1,
"fqdn": "dns1.test.be",
"name": "dns1Test"
}
}
}
HTTP status code 400
Validation of new cookbook failed
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /systems/{systemId}/cookbooks
List of all available cookbooks
URI Parameters
- systemId: required(string)
The unique identifier of a system
Query Parameters
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- orderBy: (string)
- orderType: (string)
ASC or DESC
- filter: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"cookbooks": [
{
"id": 9,
"cookbooktype": "php",
"cookbookparameters": {
"apache:port": {
"value": 8080,
"default": true
},
"apache:ssl": {
"value": false,
"default": true
},
"memory_limit": {
"value": 256,
"default": true
},
"max_execution_time": {
"value": 300,
"default": true
},
"upload_max_filesize": {
"value": 20,
"default": true
},
"versions": {
"value": [
"5.6",
"7.1"
],
"default": true
},
"disable_functions": {
"value": "passthru,escapeshellarg,escapeshellcmd,popen,pcntl_exec,dl,proc_open,proc_close,proc_get_status,proc_nice,proc_terminate",
"default": true
},
"expected_traffic": {
"value": "low",
"default": true
}
},
"cookbookparameterDescriptions": {
"apache:port": "apache listening port",
"apache:ssl": "ssl",
"memory_limit": "Memory limit",
"max_execution_time": "Max execution time",
"upload_max_filesize": "Max upload filesize",
"version": "PHP version",
"disable_functions": "Disabled PHP functions",
"expected_traffic": "Traffic"
},
"previousCookbookparameters": null,
"status": "ok",
"system": {
"id": 1,
"name": "dns1Test"
}
},
{
"id": 10,
"cookbooktype": "mysql",
"cookbookparameters": {
"query_cache_size": {
"value": 32,
"default": true
},
"query_cache_limit": {
"value": 1,
"default": true
},
"table_cache": {
"value": 400,
"default": true
},
"port": {
"value": "3306",
"default": true
},
"bind_address": {
"value": "localhost",
"default": true
}
},
"cookbookparameterDescriptions": {
"query_cache_size": "Query cache size",
"query_cache_limit": "the maximum size of a single resultset in the cache",
"table_cache": "Table cache",
"port": "Port",
"bind_address": "Bind address"
},
"previousCookbookparameters": null,
"status": "ok",
"system": {
"id": 1,
"name": "dns1Test"
}
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Update a cookbook
Delete a cookbook
Get a cookbook
put /systems/{systemId}/cookbooks/{cookbookId}
Update a cookbook
URI Parameters
- systemId: required(string)
The unique identifier of a system
- cookbookId: required(string)
The unique identifier of a cookbook
Body
Media type: application/json
Type: object
Properties- cookbooktype: required(one of asp, cp4_nagios, dns_bind, docker, haproxy, mail_box, mail_lb, mail_smtpin, memcached, mongodb, mssql, mysql, php, postfix, storage_nfs, testbook, url, urlfw, web_varnish)
Cookbook type (non-editable). Cookbook types can't repeat for one system
- optional parameters: (string)
Additional params can be required for specific cookbook type. See list of avaliable types and parameters: /cookbooktypes. Extra parameters:
- cookbook type asp parameters:
- "iis:port": string (default: 8080) - not required
- "iis:bind": string (default: 127.0.0.1) - not required
- "iis:ssl": boolean (default: false) - not required
- "memory_limit": integer (default: 256) - not required
- "max_execution_time": integer (default: 300) - not required
- "upload_max_filesize": integer (default: 20) - not required
- "expected_traffic": string (default: low) - not required
- "max_session_lifetime": integer (default: 1440) - not required
- "versions": array (default: depends on OS version) - required, for some systems multi versions are available (versions: "1.1", "2.0", "4.5")
- cookbook type dns_bind parameters:
- "role": string (default: slave) - not required
- "masterip": string (default: "") - not required
- cookbook type haproxy parameters:
- "haip:ipv4": string (default: nil) - not required
- "haip:ipv6": string (default: nil) - not required
- "haip:routerid": string (default: nil) - not required
- "backend:port": string (default: 8080) - not required
- "backend:ip: string (default: 127.0.0.1) - not required
- "port": string (default: 80) - not required
- "primay": boolean (default: true) - not required
- "varnish": boolean (default: false) - not required
- "expected_traffic": string (default: false) - not required
- cookbook type memcached parameters:
- "port": string (default: 11211) - not required
- "listen_address": string (default: 127.0.0.1) - not required
- "memory": integer (default: 64) - not required
- cookbook type mongodb parameters:
- "port": string (default: 27017) - not required
- "listen": string (default: 127.0.0.1) - not required
- cookbook type mssql parameters:
- "port": string (default: 3306) - not required
- "bind_address": string (default: localhost) - not required
- "version": string (default: 2017) - not required
- cookbook type mysql parameters:
- "query_cache_size": integer (default: 32) - not required
- "query_cache_limit": integer (default: 1) - not required
- "table_cache": integer (default: 400) - not required
- "port": string (default: 3306) - not required
- "bind_address": string (default: localhost) - not required
- "version": string (default: default) - not required
- cookbook type php parameters:
- "apache:port": string (default: 8080) - not required
- "apache:bind": string (default: 127.0.0.1) - not required
- "apache:ssl": boolean (default: false) - not required
- "memory_limit": integer (default: 256) - not required
- "max_execution_time": integer (default: 300) - not required
- "upload_max_filesize": integer (default: 20) - not required
- "versions": array (default: depends on OS version) - required, for some systems multi versions are available (versions: "5.3", "5.6", "7.0", "7.1", "7.2", "7.3")
- "disable_functions": string (default: passthru,escapeshellarg,escapeshellcmd,popen,pcntl_exec, dl,proc_open,proc_close,proc_get_status,proc_nice,proc_terminate) - not required
- "expected_traffic": string (default: low) - not required
- "max_session_lifetime": integer (default: 1440) - not required
- "phpmyadmin:enable": boolean (default: true) - not required
- "process_manager": string (default: ondemand) - not required
- "display_errors": string (default: no) - not required
- cookbook type postfix parameters:
- "listening_address": string (default: 127.0.0.1) - not required
- "contentfilter": boolean (default: true) - not required
- cookbook type storage_nfs parameters:
- "activepool": string (default: "") - not required
- cookbook type url parameters:
- "proxy_service": string (default: nginx) - not required
- "expected_traffic": string (default: low) - not required
- "backend:port": string (default: 8080) - not required
- "backend:ip: string (default: 127.0.0.1) - not required
- "default_vhost": boolean (default: true) - not required
- "max_upload_filesize": integer (default: 20) - not required
- cookbook type urlfw parameters:
- "apache_port": string (default: 80) - not required
- cookbook type web_varnish parameters:
- "backend:ip: string (default: localhost) - not required
- "backend:port": string (default: 8080) - not required
- "frontend_ip": string (default: 0.0.0.0) - not required
- "frontend_port": string (default: 80) - not required
- "storage_size": string (default: 256) - not required
- "admin_ip": string (default: 127.0.0.1) - not required
- "admin_port": string (default: 6082) - not required
Examples:
1:
{
"cookbooktype": "php",
"versions": [
"5.6",
"7.1"
]
}
2:
{
"cookbooktype": "mysql"
}
HTTP status code 204
Response when update of a cookbook succeeded
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a cookbook
HTTP status code 404
Response when cookbook is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
delete /systems/{systemId}/cookbooks/{cookbookId}
Delete a cookbook
URI Parameters
- systemId: required(string)
The unique identifier of a system
- cookbookId: required(string)
The unique identifier of a cookbook
HTTP status code 204
Request successfully processed
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a cookbook
HTTP status code 404
Response when cookbook is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /systems/{systemId}/cookbooks/{cookbookId}
Get a cookbook
URI Parameters
- systemId: required(string)
The unique identifier of a system
- cookbookId: required(string)
The unique identifier of a cookbook
HTTP status code 200
Response when cookbook is found
Body
Media type: application/json
Type: object
Example:
{
"cookbook": {
"id": 9,
"cookbooktype": "php",
"cookbookparameters": {
"apache:port": {
"value": 8080,
"default": true
},
"apache:ssl": {
"value": false,
"default": true
},
"memory_limit": {
"value": 256,
"default": true
},
"max_execution_time": {
"value": 300,
"default": true
},
"upload_max_filesize": {
"value": 20,
"default": true
},
"versions": {
"value": [
"5.6",
"7.1"
],
"default": true
},
"disable_functions": {
"value": "passthru,escapeshellarg,escapeshellcmd,popen,pcntl_exec,dl,proc_open,proc_close,proc_get_status,proc_nice,proc_terminate",
"default": true
},
"expected_traffic": {
"value": "low",
"default": true
}
},
"cookbookparameterDescriptions": {
"apache:port": "apache listening port",
"apache:ssl": "ssl",
"memory_limit": "Memory limit",
"max_execution_time": "Max execution time",
"upload_max_filesize": "Max upload filesize",
"version": "PHP version",
"disable_functions": "Disabled PHP functions",
"expected_traffic": "Traffic"
},
"previousCookbookparameters": null,
"status": "to_create",
"system": {
"id": 1,
"fqdn": "dns1.test.be",
"name": "dns1Test"
}
}
}
HTTP status code 403
Response when a user does not have access to a cookbook
HTTP status code 404
Response when cookbook is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Create a new check
List of all available checks
post /systems/{systemId}/checks
Create a new check
URI Parameters
- systemId: required(string)
The unique identifier of a system
Body
Media type: application/json
Type: object
Properties- cookbooktype: required(one of disk, docker, elasticsearch, gearman, gluster, haproxy, host, http, load, mailq, mongodb, mysql, ntp, ping, solr, ssh, supervisor, swap)
Check type (non-editable)
- optional parameters: (string)
Additional params can be required for specific check type. See list of avaliable types and parameters: /checktypes. Extra paramaters:
- check type disk:
- "w": string (default: 10%) - required
- "c": string (default: 5%) - required
- check type elasticsearch:
- "H": string (default: localhost) - required
- "P": integer (default: 9200) - required
- "t": string (default: status) - required
- check type gearman:
- "H": string (default: localhost) - not required
- "P": integer (default: 4730) - not required
- check type gluster:
- "v": string (default: shared) - not required
- "n": integer (default: 2) - not required
- check type haproxy:
- "u": string (default:) - not required
- "U": string (default:) - not required
- "P": string (default:) - not required
- check type http:
- "port": integer (default: 80) - required
- "hostname": string (default:) - not required
- "url": string (default:) - not required
- "content": string (default:) - not required
- check type load:
- "w": string (default: 3.0,2.25,2.0) - required
- "c": string (default: 6.0,4.5,3.75) - required
- check type mailq:
- "w": integer (default: 50) - not required
- "c": integer (default: 100) - not required
- "M": string (default: postfix) - not required
- check type mongodb:
- "H": string (default: 127.0.0.1) - not required
- "A": string (default: connect) - not required
- "P": integer (default: 27017) - not required
- "W": string (default: 2) - not required
- "C": string (default: 4) - not required
- check type mysql:
- "u": string (default: root) - not required
- "P": string (default: password) - not required
- "H": string (default: localhost) - not required
- "P": string (default: 3306) - not required
- check type ntp:
- "w": integer (default: 2) - not required
- "c": integer (default: 5) - not required
- "H": string (default: ntp.level27.be) - not required
- check type ping:
- "w": string (default: 100.0,20%) - not required
- "c": string (default: 500.0,60%) - not required
- check type solr:
- "H": string (default: localhost) - required
- "p": integer (default: 8983) - required
- check type ssh:
- "port": integer (default: 22) - required
- check type swap:
- "w": integer (default: 80) - not required
- "c": integer (default: 60) - not required
Example:
{
"checktype": "disk",
"w": "15%",
"c": "2%"
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"check": {
"id": 1,
"checktype": "disk",
"status": "ok",
"statusInformation": null,
"dtLastMonitoringEnabled": null,
"dtLastStatusChange": null,
"dtLastCheck": null,
"dtNextCheck": null,
"checkparameters": {
"w": {
"value": "15%",
"default": false
},
"c": {
"value": "2%",
"default": false
}
},
"checkparameterDescriptions": {
"w": "Warning threshold (%)",
"c": "Critical threshold (%)"
},
"checktypeLocation": "local",
"system": {
"id": 1,
"name": "dns1Test"
},
"alerts": []
}
}
HTTP status code 400
Validation of new check failed
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /systems/{systemId}/checks
List of all available checks
URI Parameters
- systemId: required(string)
The unique identifier of a system
Query Parameters
- status: (string)
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- orderBy: (string)
- orderType: (string)
ASC or DESC
- filter: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"checks": [
{
"id": 1,
"checktype": "disk",
"status": "ok",
"statusInformation": null,
"dtLastMonitoringEnabled": null,
"dtLastStatusChange": null,
"dtLastCheck": null,
"dtNextCheck": null,
"checkparameters": {
"w": {
"value": "15%",
"default": false
},
"c": {
"value": "2%",
"default": false
}
},
"checkparameterDescriptions": {
"w": "Warning threshold (%)",
"c": "Critical threshold (%)"
},
"checktypeLocation": "local"
},
{
"id": 2,
"checktype": "load",
"status": "ok",
"statusInformation": null,
"dtLastMonitoringEnabled": null,
"dtLastStatusChange": null,
"dtLastCheck": null,
"dtNextCheck": null,
"checkparameters": {
"w": {
"value": "3.0,2.25,2.0",
"default": true
},
"c": {
"value": "6.0,4.5,3.75",
"default": true
}
},
"checkparameterDescriptions": {
"w": "Warning threshold (%)",
"c": "Critical threshold (%)"
},
"checktypeLocation": "local"
}
],
"summary": {
"pending": 0,
"ok": "2",
"warning": 0,
"critical": 0
}
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Update a check
Delete a check
Get a check
put /systems/{systemId}/checks/{checkId}
Update a check
URI Parameters
- systemId: required(string)
The unique identifier of a system
- checkId: required(string)
The unique identifier of a check
Body
Media type: application/json
Type: object
Properties- cookbooktype: required(one of disk, docker, elasticsearch, gearman, gluster, haproxy, host, http, load, mailq, mongodb, mysql, ntp, ping, solr, ssh, supervisor, swap)
Check type (non-editable)
- optional parameters: (string)
Additional params can be required for specific check type. See list of avaliable types and parameters: /checktypes. Extra paramaters:
- check type disk:
- "w": string (default: 10%) - required
- "c": string (default: 5%) - required
- check type elasticsearch:
- "H": string (default: localhost) - required
- "P": integer (default: 9200) - required
- "t": string (default: status) - required
- check type gearman:
- "H": string (default: localhost) - not required
- "P": integer (default: 4730) - not required
- check type gluster:
- "v": string (default: shared) - not required
- "n": integer (default: 2) - not required
- check type haproxy:
- "u": string (default:) - not required
- "U": string (default:) - not required
- "P": string (default:) - not required
- check type http:
- "port": integer (default: 80) - required
- "hostname": string (default:) - not required
- "url": string (default:) - not required
- "content": string (default:) - not required
- check type load:
- "w": string (default: 3.0,2.25,2.0) - required
- "c": string (default: 6.0,4.5,3.75) - required
- check type mailq:
- "w": integer (default: 50) - not required
- "c": integer (default: 100) - not required
- "M": string (default: postfix) - not required
- check type mongodb:
- "H": string (default: 127.0.0.1) - not required
- "A": string (default: connect) - not required
- "P": integer (default: 27017) - not required
- "W": string (default: 2) - not required
- "C": string (default: 4) - not required
- check type mysql:
- "u": string (default: root) - not required
- "P": string (default: password) - not required
- "H": string (default: localhost) - not required
- "P": string (default: 3306) - not required
- check type ntp:
- "w": integer (default: 2) - not required
- "c": integer (default: 5) - not required
- "H": string (default: ntp.level27.be) - not required
- check type ping:
- "w": string (default: 100.0,20%) - not required
- "c": string (default: 500.0,60%) - not required
- check type solr:
- "H": string (default: localhost) - required
- "p": integer (default: 8983) - required
- check type ssh:
- "port": integer (default: 22) - required
- check type swap:
- "w": integer (default: 80) - not required
- "c": integer (default: 60) - not required
Example:
{
"checktype": "disk",
"w": "15%",
"c": "2%"
}
HTTP status code 204
Response when update of a check succeeded
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a check
HTTP status code 404
Response when check is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
delete /systems/{systemId}/checks/{checkId}
Delete a check
URI Parameters
- systemId: required(string)
The unique identifier of a system
- checkId: required(string)
The unique identifier of a check
get /systems/{systemId}/checks/{checkId}
Get a check
URI Parameters
- systemId: required(string)
The unique identifier of a system
- checkId: required(string)
The unique identifier of a check
HTTP status code 200
Response when check is found
Body
Media type: application/json
Type: object
Example:
{
"check": {
"id": 1,
"checktype": "disk",
"status": "ok",
"statusInformation": null,
"dtLastMonitoringEnabled": null,
"dtLastStatusChange": null,
"dtLastCheck": null,
"dtNextCheck": null,
"checkparameters": {
"w": {
"value": "15%",
"default": false
},
"c": {
"value": "2%",
"default": false
}
},
"checkparameterDescriptions": {
"w": "Warning threshold (%)",
"c": "Critical threshold (%)"
},
"checktypeLocation": "local",
"system": {
"id": 1,
"name": "dns1Test"
},
"alerts": []
}
}
HTTP status code 403
Response when a user does not have access to a check
HTTP status code 404
Response when check is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Get all checkalerts for the check
get /systems/{systemId}/checks/{checkId}/alerts
Get all checkalerts for the check
URI Parameters
- systemId: required(string)
The unique identifier of a system
- checkId: required(string)
The unique identifier of a check
Query Parameters
- status: (string)
- filter: (string)
- orderBy: (string)
- orderType: (string)
ASC or DESC
- limit: (integer - default: 5)
- offset: (integer - default: 0)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"checkalerts": [
{
"id": 101,
"dtStarted": "1499263676",
"dtClosed": "1584377072",
"status": "closed",
"statusInformation": "CHECK_NRPE: Error - Could not complete SSL handshake.",
"check": {
"id": 41,
"checktype": "supervisor",
"system": {
"id": 15,
"name": "test123.test.eu"
}
},
"checkalertEvents": [
{
"id": 4393,
"status": 59,
"statusInformation": "CHECK_NRPE: Error - Could not complete SSL handshake.",
"dtReceived": "1499263676",
"isArchived": false,
"system": {
"id": 16,
"name": "mon1.test.eu"
}
},
{
"id": 4394,
"status": 59,
"statusInformation": "CHECK_NRPE: Error - Could not complete SSL handshake.",
"dtReceived": "1499263679",
"isArchived": false,
"system": {
"id": 18,
"name": "mon3.test.eu"
}
},
{
"id": 4402,
"status": 10,
"statusInformation": "OK - Service and all processes running",
"dtReceived": "1499264516",
"isArchived": false,
"system": {
"id": 16,
"name": "mon1.test.eu"
}
},
{
"id": 4403,
"status": 10,
"statusInformation": "OK - Service and all processes running",
"dtReceived": "1499264516",
"isArchived": false,
"system": {
"id": 17,
"name": "mon2.test.eu"
}
},
{
"id": 4406,
"status": 59,
"statusInformation": "CHECK_NRPE: Error - Could not complete SSL handshake.",
"dtReceived": "1499264579",
"isArchived": false,
"system": {
"id": 18,
"name": "mon3.test.eu"
}
},
{
"id": 4409,
"status": 59,
"statusInformation": "CHECK_NRPE: Error - Could not complete SSL handshake.",
"dtReceived": "1499264816",
"isArchived": false,
"system": {
"id": 16,
"name": "mon1.test.eu"
}
},
{
"id": 4410,
"status": 59,
"statusInformation": "CHECK_NRPE: Error - Could not complete SSL handshake.",
"dtReceived": "1499264816",
"isArchived": false,
"system": {
"id": 17,
"name": "mon2.test.eu"
}
},
{
"id": 4416,
"status": 10,
"statusInformation": "OK - Service and all processes running",
"dtReceived": "1499265356",
"isArchived": false,
"system": {
"id": 16,
"name": "mon1.test.eu"
}
},
{
"id": 4418,
"status": 59,
"statusInformation": "CHECK_NRPE: Error - Could not complete SSL handshake.",
"dtReceived": "1499265479",
"isArchived": false,
"system": {
"id": 18,
"name": "mon3.test.eu"
}
},
{
"id": 4422,
"status": 10,
"statusInformation": "OK - Service and all processes running",
"dtReceived": "1499265596",
"isArchived": false,
"system": {
"id": 17,
"name": "mon2.test.eu"
}
},
{
"id": 4425,
"status": 10,
"statusInformation": "OK - Service and all processes running",
"dtReceived": "1499265719",
"isArchived": false,
"system": {
"id": 18,
"name": "mon3.test.eu"
}
}
]
}
]
}
HTTP status code 401
Response when a user does not have a proper role to access a controller
Get all checkalerts for the system
get /systems/{systemId}/checkalerts
Get all checkalerts for the system
URI Parameters
- systemId: required(string)
The unique identifier of a system
Query Parameters
- status: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"checkalerts": [
{
"id": 101,
"dtStarted": "1499263676",
"dtClosed": "1584377072",
"status": "closed",
"statusInformation": "CHECK_NRPE: Error - Could not complete SSL handshake.",
"check": {
"id": 41,
"checktype": "supervisor",
"system": {
"id": 15,
"name": "test123.test.eu"
}
},
"checkalertEvents": [
{
"id": 4393,
"status": 59,
"statusInformation": "CHECK_NRPE: Error - Could not complete SSL handshake.",
"dtReceived": "1499263676",
"isArchived": false,
"system": {
"id": 16,
"name": "mon1.test.eu"
}
},
{
"id": 4394,
"status": 59,
"statusInformation": "CHECK_NRPE: Error - Could not complete SSL handshake.",
"dtReceived": "1499263679",
"isArchived": false,
"system": {
"id": 18,
"name": "mon3.test.eu"
}
},
{
"id": 4402,
"status": 10,
"statusInformation": "OK - Service and all processes running",
"dtReceived": "1499264516",
"isArchived": false,
"system": {
"id": 16,
"name": "mon1.test.eu"
}
},
{
"id": 4403,
"status": 10,
"statusInformation": "OK - Service and all processes running",
"dtReceived": "1499264516",
"isArchived": false,
"system": {
"id": 17,
"name": "mon2.test.eu"
}
},
{
"id": 4406,
"status": 59,
"statusInformation": "CHECK_NRPE: Error - Could not complete SSL handshake.",
"dtReceived": "1499264579",
"isArchived": false,
"system": {
"id": 18,
"name": "mon3.test.eu"
}
},
{
"id": 4409,
"status": 59,
"statusInformation": "CHECK_NRPE: Error - Could not complete SSL handshake.",
"dtReceived": "1499264816",
"isArchived": false,
"system": {
"id": 16,
"name": "mon1.test.eu"
}
},
{
"id": 4410,
"status": 59,
"statusInformation": "CHECK_NRPE: Error - Could not complete SSL handshake.",
"dtReceived": "1499264816",
"isArchived": false,
"system": {
"id": 17,
"name": "mon2.test.eu"
}
},
{
"id": 4416,
"status": 10,
"statusInformation": "OK - Service and all processes running",
"dtReceived": "1499265356",
"isArchived": false,
"system": {
"id": 16,
"name": "mon1.test.eu"
}
},
{
"id": 4418,
"status": 59,
"statusInformation": "CHECK_NRPE: Error - Could not complete SSL handshake.",
"dtReceived": "1499265479",
"isArchived": false,
"system": {
"id": 18,
"name": "mon3.test.eu"
}
},
{
"id": 4422,
"status": 10,
"statusInformation": "OK - Service and all processes running",
"dtReceived": "1499265596",
"isArchived": false,
"system": {
"id": 17,
"name": "mon2.test.eu"
}
},
{
"id": 4425,
"status": 10,
"statusInformation": "OK - Service and all processes running",
"dtReceived": "1499265719",
"isArchived": false,
"system": {
"id": 18,
"name": "mon3.test.eu"
}
}
]
}
]
}
HTTP status code 401
Response when a user does not have a proper role to access a controller
Get users for system
get /systems/{systemId}/users
Get users for system
URI Parameters
- systemId: required(string)
The unique identifier of a system
Query Parameters
- limit: (integer - default: 5)
- offset: (integer - default: 0)
HTTP status code 200
Response when users are found
Body
Media type: application/json
Type: object
Example:
{
"users": [
{
"id": 1,
"fullname": "Test User",
"username": "admin@test.be",
"email": "admin@test.be",
"firstName": "Test",
"lastName": "User",
"roles": [
"ROLE_CUSTADMIN",
"ROLE_USER"
],
"organisation": {
"id": 123,
"name": "Test Company"
}
},
{
"id": 2,
"fullname": "Test2 Test2",
"username": "test",
"email": "user@test.be",
"firstName": "Test2",
"lastName": "Test2",
"roles": [
"ROLE_FINANCE"
],
"organisation": {
"id": 321,
"name": "Test Company 2"
}
}
]
}
HTTP status code 403
Response when a user does not have access to a system
HTTP status code 404
Response when a system is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Get organisations with acl access to a system
get /systems/{systemId}/organisations
Get organisations with acl access to a system
URI Parameters
- systemId: required(string)
The unique identifier of a system
HTTP status code 200
Response when organisations are found
Body
Media type: application/json
Type: object
Example:
{
"organisations": [
{
"id": 2,
"name": "test",
"users": [
{
"id": 3,
"username": "user.test@test1.be",
"email": "user.test@test1.be",
"firstName": "Jane",
"lastName": "User",
"roles": [
"ROLE_SYSTEM",
"ROLE_APP",
"ROLE_DOMAIN",
"ROLE_MAIL",
"ROLE_CUSTADMIN",
"ROLE_FINANCE"
],
"status": "ok",
"teams": []
},
{
"id": 4,
"username": "user2.test@test1.be",
"email": "user2.test@test1.be",
"firstName": "John",
"lastName": "User",
"roles": [
"ROLE_APP",
"ROLE_DOMAIN",
"ROLE_MAIL",
"ROLE_SYSTEM"
],
"status": "ok",
"teams": [
{
"id": 2,
"name": "myTeam2"
}
]
}
],
"type": "owner"
},
{
"id": 5,
"name": "tests",
"users": [
{
"id": 17,
"username": "user.test@test2.be",
"email": "user.test@test2.be",
"firstName": "Paul",
"lastName": "User2",
"roles": [
"ROLE_SYSTEM",
"ROLE_APP",
"ROLE_DOMAIN",
"ROLE_MAIL",
"ROLE_CUSTADMIN",
"ROLE_FINANCE"
],
"status": "ok",
"teams": []
}
],
"type": "reseller"
},
{
"id": 6,
"name": "tests6",
"users": [
{
"id": 3,
"username": "user.test@test3.be",
"email": "user.test@test3.be",
"firstName": "Sam",
"lastName": "User3",
"roles": [
"ROLE_SYSTEM",
"ROLE_APP",
"ROLE_DOMAIN",
"ROLE_MAIL",
"ROLE_CUSTADMIN",
"ROLE_FINANCE"
],
"status": "ok",
"teams": []
}
],
"type": "manual"
}
]
}
HTTP status code 403
Response when a user does not have access to a system
HTTP status code 404
Response when a system is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Get all sshkeys which can be added to a system for a logged in user
get /systems/{systemId}/organisations/{organisationId}/users/{userId}/nonadded-sshkeys
Get all sshkeys which can be added to a system for a logged in user
URI Parameters
- systemId: required(string)
The unique identifier of a system
- organisationId: required(string)
- userId: required(string)
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"sshkeys": [
{
"id": 1,
"description": " My sshkey 1",
"content": "ssh-rsa AAAAB3NzaD3331yc2EAAAADAQABAAABAQC+BlfTestsehGmZLGvzBnEN2fAtlCdvGQ1G8TeststeststststaZa1iiSY8QbJhSY8nx64bgsmVAylkwcRVl2AT6aktupYMR+dEkNZci6pateststststsTbsyshDsenaaFmIaYZjbYxnpUVESySLVodMN3+ZHl+k3BLkjV6RsGmqrm52axuLwbwUM8KcbECy8dfISrhnolfKQRKWQVz15CKVoouk5aUO3lhdjAkgc6afCmKzTestTestETsststststzeJnOfuWav7qByFvzq//Lwx0AxonJK1Test5k+K3uixntDqlCrKe9KMqizZqPHYJ1sDrTzZfcg/iqnaNcuxqQ/9K8IhhEzVwVZ test@test-MacBook-Pro.local",
"status": "ok",
"fingerprint": "85:b7:c8:37:71:7b:e6:57:53:59:04:a6:7c:ce:ce:7a",
"organisation": {
"id": 1,
"name": "level27"
}
},
{
"id": 2,
"description": " My sshkey 2",
"content": "ssh-rsa AAAAB3NzaD3331yc2EAAAADAQABAAABAQC+BlfTestsehGmZLGvzBnEN2fAtlCdvGQ1G8TeststeststststaZa1iiSY8QbJhSY8nx64bgsmVAylkwcRVl2AT6aktupYMR+dEkNZci6pateststststsTbsyshDsenaaFmIaYZjbYxnpUVESySLVodMN3+ZHl+k3BLkjV6RsGmqrm52axuLwbwUM8KcbECy8dfISrhnolfKQRKWQVz15CKVoouk5aUO3lhdjAkgc6afCmKzTestTestETsststststzeJnOfuWav7qByFvzq//Lwx0AxonJK1Test5k+K3uixntDqlCrKe9KMqizZqPHYJ1sDrTzZfcg/iqnaNcuxqQ/9K8I22222222 test2@test-MacBook-Pro.local",
"status": "ok",
"fingerprint": "85:b7:c8:37:71:7b:e6:57:53:59:04:a6:7c:ce:ce:2a",
"organisation": {
"id": 1,
"name": "level27"
}
}
]
}
HTTP status code 403
Response when a user does not have access to a system
Start/shutdown/stop/reboot/enable_monitoring/disable_monitoring/deactivate/activate a system
post /systems/{systemId}/actions
Start/shutdown/stop/reboot/enable_monitoring/disable_monitoring/deactivate/activate a system
URI Parameters
- systemId: required(string)
The unique identifier of a system
Body
Media type: application/json
Type: object
Properties- type: required(one of start, stop, shutdown, reboot, enable_monitoring, disable_monitoring, deactivate, activate, update_cookbooks, inventory, updateInterfaces)
Action type
Examples:
1:
{
"type": "update_cookbooks"
}
2:
{
"type": "start"
}
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"system": {
"id": 11,
"uid": "735851ed-e2d0-82c4-4901-15a1637f40be",
"hostname": null,
"fqdn": "e26c797b0.level27.be",
"name": "Test System",
"remarks": "test",
"status": "to_create",
"runningStatus": "",
"cpu": null,
"memory": null,
"disk": "8.0",
"monitoringEnabled": false,
"managementType": "basic",
"organisation": {
"id": 123,
"name": "Test Company",
"reseller": null
},
"systemimage": {
"id": 1,
"name": "CentOS 7.2",
"externalId": "ami-147fc16d",
"osId": 2,
"osName": "CentOS",
"osType": "linux",
"osVersion": "7.2"
},
"operatingsystemVersion": {
"id": 18,
"osId": 2,
"osName": "Ubuntu",
"osType": "linux",
"osVersion": "7.2"
},
"provider": {
"id": 3,
"name": "Amazon EC2",
"api": "ec2"
},
"systemproviderConfiguration": {
"id": 2,
"externalId": "t2.small",
"name": "Amazon t2.small",
"description": "General purpose T2 family"
},
"region": "eu-west-1",
"zone": {
"id": 1,
"name": "eu-west-1a"
},
"networks": [],
"publicNetworking": true,
"statsSummary": {
"diskspace": {
"unit": "GB",
"value": null,
"max": null
},
"memory": {
"unit": "GB",
"value": null,
"max": null
},
"cpu": {
"unit": "%",
"value": null,
"max": 100
}
},
"group": null,
"billingStatus": "to_create",
"dtExpires": 1518030935,
"cookbooks": [],
"volumes": [],
"installSecurityUpdates": 1
}
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a system
HTTP status code 404
Response when a system is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Get system cpu data
get /systems/{systemId}/cpu
Get system cpu data
URI Parameters
- systemId: required(string)
The unique identifier of a system
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"data": [
{
"timestamp": "1518428400",
"cpus": [
{
"name": "cpu1",
"total": 0.61263749637159,
"system": 0.16784203039389,
"softirq": 0.008406186953598,
"idle": 99.387362503629,
"irq": 0,
"iowait": 0.041974593032375,
"user": 0.29373763862321,
"nice": 0.092299031282734
}
]
},
{
"timestamp": "1518429600",
"cpus": [
{
"name": "cpu1",
"total": 0.80119998383993,
"system": 0.24476007244194,
"softirq": 0.020024033619077,
"idle": 99.19880001616,
"irq": 0,
"iowait": 0.051015887497395,
"user": 0.38514152584228,
"nice": 0.083553848362413
}
]
}
]
}
HTTP status code 403
Response when a user does not have access to a system
HTTP status code 404
Response when a system is not found
Get system memory data
get /systems/{systemId}/memory
Get system memory data
URI Parameters
- systemId: required(string)
The unique identifier of a system
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"data": [
{
"timestamp": "1518429600",
"memory": {
"total": 2048336,
"cached": 882046.4,
"buffer": 207544,
"used": 156299.2
}
},
{
"timestamp": "1518430800",
"memory": {
"total": 2048336,
"cached": 882136,
"buffer": 207544,
"used": 156439.6
}
},
{
"timestamp": "1518432000",
"memory": {
"total": 2048336,
"cached": 882279.4,
"buffer": 207544,
"used": 156747.2
}
}
]
}
HTTP status code 403
Response when a user does not have access to a system
HTTP status code 404
Response when a system is not found
Get system disk data
get /systems/{systemId}/disk
Get system disk data
URI Parameters
- systemId: required(string)
The unique identifier of a system
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"data": [
{
"timestamp": "1518429600",
"disk": [
{
"name": "vda1",
"bps_wx": 1252.9676489083,
"iops_rx": 0,
"size": 26010848,
"bps_rx": 0,
"used": 2868624.6315789,
"iops_wx": 1.6309613294141
},
{
"name": "vda2",
"bps_wx": 0,
"iops_rx": 0,
"size": 3457020,
"bps_rx": 0,
"used": 0,
"iops_wx": 0
}
]
},
{
"timestamp": "1518430800",
"disk": [
{
"name": "vda1",
"bps_wx": 1200.4878984903,
"iops_rx": 0,
"size": 26010848,
"bps_rx": 0,
"used": 2868648.6,
"iops_wx": 1.5619350282486
},
{
"name": "vda2",
"bps_wx": 0,
"iops_rx": 0,
"size": 3457020,
"bps_rx": 0,
"used": 0,
"iops_wx": 0
}
]
}
]
}
HTTP status code 403
Response when a user does not have access to a system
HTTP status code 404
Response when a system is not found
Get system memory data
get /systems/{systemId}/network
Get system memory data
URI Parameters
- systemId: required(string)
The unique identifier of a system
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"data": [
{
"timestamp": "1518429600",
"network": [
{
"name": "eth0:",
"bps_tx": 2893.2521899358,
"bps_rx": 18324.706878616,
"pps_rx": 32.659706643658,
"pps_tx": 1.9229052417094
},
{
"name": "lo:",
"bps_tx": 1641.2533832497,
"bps_rx": 1641.2533832497,
"pps_rx": 0.17720273175297,
"pps_tx": 0.17720273175297
}
]
},
{
"timestamp": "1518430800",
"network": [
{
"name": "eth0:",
"bps_tx": 2801.3902139483,
"bps_rx": 18603.518807076,
"pps_rx": 33.275554320645,
"pps_tx": 1.9062440955821
},
{
"name": "lo:",
"bps_tx": 1643.5839399833,
"bps_rx": 1643.5839399833,
"pps_rx": 0.17995924793924,
"pps_tx": 0.17995924793924
}
]
}
]
}
HTTP status code 403
Response when a user does not have access to a system
HTTP status code 404
Response when a system is not found
Link a system with an sshkey
Get a system's sshkeys
post /systems/{systemId}/sshkeys
Link a system with an sshkey
URI Parameters
- systemId: required(string)
The unique identifier of a system
Body
Media type: application/json
Type: object
Properties- sshkey: required(integer)
The unique identifier of an sshkey
Example:
{
"sskey": 1
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"sshkey": {
"id": 1,
"description": "My sshkey 1",
"content": "ssh-rsa AAAAB3NzaD3331yc2EAAAADAQABAAABAQC+BlfTestsehGmZLGvzBnEN2fAtlCdvGQ1G8TeststeststststaZa1iiSY8QbJhSY8nx64bgsmVAylkwcRVl2AT6aktupYMR+dEkNZci6pateststststsTbsyshDsenaaFmIaYZjbYxnpUVESySLVodMN3+ZHl+k3BLkjV6RsGmqrm52axuLwbwUM8KcbECy8dfISrhnolfKQRKWQVz15CKVoouk5aUO3lhdjAkgc6afCmKzTestTestETsststststzeJnOfuWav7qByFvzq//Lwx0AxonJK1Test5k+K3uixntDqlCrKe9KMqizZqPHYJ1sDrTzZfcg/iqnaNcuxqQ/9K8IhhEzVwVZ test@test-MacBook-Pro.local",
"status": "ok",
"fingerprint": "85:b7:c8:37:71:7b:e6:57:53:59:04:a6:7c:ce:ce:7a",
"organisation": {
"id": 1,
"name": "level27"
}
}
}
HTTP status code 400
Validation of new sshkey failed
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /systems/{systemId}/sshkeys
Get a system's sshkeys
URI Parameters
- systemId: required(string)
The unique identifier of a system
Query Parameters
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- orderBy: (string)
- orderType: (string)
ASC or DESC
- filter: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"sshkeys": [
{
"id": 1,
"description": " My sshkey 1",
"content": "ssh-rsa AAAAB3NzaD3331yc2EAAAADAQABAAABAQC+BlfTestsehGmZLGvzBnEN2fAtlCdvGQ1G8TeststeststststaZa1iiSY8QbJhSY8nx64bgsmVAylkwcRVl2AT6aktupYMR+dEkNZci6pateststststsTbsyshDsenaaFmIaYZjbYxnpUVESySLVodMN3+ZHl+k3BLkjV6RsGmqrm52axuLwbwUM8KcbECy8dfISrhnolfKQRKWQVz15CKVoouk5aUO3lhdjAkgc6afCmKzTestTestETsststststzeJnOfuWav7qByFvzq//Lwx0AxonJK1Test5k+K3uixntDqlCrKe9KMqizZqPHYJ1sDrTzZfcg/iqnaNcuxqQ/9K8IhhEzVwVZ test@test-MacBook-Pro.local",
"status": "ok",
"fingerprint": "85:b7:c8:37:71:7b:e6:57:53:59:04:a6:7c:ce:ce:7a",
"organisation": {
"id": 1,
"name": "level27"
}
},
{
"id": 2,
"description": " My sshkey 2",
"content": "ssh-rsa AAAAB3NzaD3331yc2EAAAADAQABAAABAQC+BlfTestsehGmZLGvzBnEN2fAtlCdvGQ1G8TeststeststststaZa1iiSY8QbJhSY8nx64bgsmVAylkwcRVl2AT6aktupYMR+dEkNZci6pateststststsTbsyshDsenaaFmIaYZjbYxnpUVESySLVodMN3+ZHl+k3BLkjV6RsGmqrm52axuLwbwUM8KcbECy8dfISrhnolfKQRKWQVz15CKVoouk5aUO3lhdjAkgc6afCmKzTestTestETsststststzeJnOfuWav7qByFvzq//Lwx0AxonJK1Test5k+K3uixntDqlCrKe9KMqizZqPHYJ1sDrTzZfcg/iqnaNcuxqQ/9K8I22222222 test2@test-MacBook-Pro.local",
"status": "ok",
"fingerprint": "85:b7:c8:37:71:7b:e6:57:53:59:04:a6:7c:ce:ce:2a",
"organisation": {
"id": 1,
"name": "level27"
}
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Unlink an sshkey from a system
Get a system's sshkey
delete /systems/{systemId}/sshkeys/{sshkeyId}
Unlink an sshkey from a system
URI Parameters
- systemId: required(string)
The unique identifier of a system
- sshkeyId: required(string)
The unique identifier of a sshkey
get /systems/{systemId}/sshkeys/{sshkeyId}
Get a system's sshkey
URI Parameters
- systemId: required(string)
The unique identifier of a system
- sshkeyId: required(string)
The unique identifier of a sshkey
HTTP status code 200
Response when sshkey is found
Body
Media type: application/json
Type: object
Example:
{
"sshkey": {
"id": 1,
"description": "My sshkey 1",
"content": "ssh-rsa AAAAB3NzaD3331yc2EAAAADAQABAAABAQC+BlfTestsehGmZLGvzBnEN2fAtlCdvGQ1G8TeststeststststaZa1iiSY8QbJhSY8nx64bgsmVAylkwcRVl2AT6aktupYMR+dEkNZci6pateststststsTbsyshDsenaaFmIaYZjbYxnpUVESySLVodMN3+ZHl+k3BLkjV6RsGmqrm52axuLwbwUM8KcbECy8dfISrhnolfKQRKWQVz15CKVoouk5aUO3lhdjAkgc6afCmKzTestTestETsststststzeJnOfuWav7qByFvzq//Lwx0AxonJK1Test5k+K3uixntDqlCrKe9KMqizZqPHYJ1sDrTzZfcg/iqnaNcuxqQ/9K8IhhEzVwVZ test@test-MacBook-Pro.local",
"status": "ok",
"fingerprint": "85:b7:c8:37:71:7b:e6:57:53:59:04:a6:7c:ce:ce:7a",
"organisation": {
"id": 1,
"name": "level27"
}
}
}
HTTP status code 403
Response when a user does not have access to a sshkey
HTTP status code 404
Response when sshkey is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Get s system to import
get /systems/{systemId}/import
Get s system to import
URI Parameters
- systemId: required(string)
The unique identifier of a system
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"system": {
"id": 11,
"uid": "271774c8-30f5-4754-e9d9-39f4ac526752",
"status": "importing",
"token": null,
"chefClientKey": null,
"chefQueue": "web.cp4test.be",
"chefApi": "http://api.cp4test.be"
}
}
HTTP status code 403
Response when a user does not have access to a system
HTTP status code 404
Response when a system is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
A system is ready to execute cp4jobs and has started its queue worker
post /systems/{systemId}/importdone
A system is ready to execute cp4jobs and has started its queue worker
URI Parameters
- systemId: required(string)
The unique identifier of a system
Body
Media type: application/json
Type: object
Properties- status: required(string)
Import status
Examples:
1:
{
"status": "done"
}
2:
{
"status": "failed"
}
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"system": {
"id": 11,
"uid": "271774c8-30f5-4754-e9d9-39f4ac526752",
"status": "importing"
}
}
HTTP status code 403
Response when a user does not have access to a system
HTTP status code 404
Response when a system is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Add access to a system
post /systems/{systemId}/acls
Add access to a system
URI Parameters
- systemId: required(string)
The unique identifier of a system
Body
Media type: application/json
Type: object
Properties- organisation: required(integer)
The unique identifier of an organisation
Example:
{
"organisation": 123
}
HTTP status code 201
Response when access to a system was successfully added
Body
Media type: application/json
Type: object
Example:
{
"acl": {
"id": 38,
"object": "Level27\\SystemBundle\\Entity\\System",
"objectId": 11,
"permissions": null,
"extra": null,
"type": "manual",
"organisation": {
"id": 123,
"name": "Test Company"
}
}
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a system
HTTP status code 404
Response when a system is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Remove access to a system
delete /systems/{systemId}/acls/{organisationId}
Remove access to a system
URI Parameters
- systemId: required(string)
The unique identifier of a system
- organisationId: required(string)
HTTP status code 204
Response when access to a system was successfully removed
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a system
HTTP status code 404
Response when a system is not found
HTTP status code 500
Response when a user does not have a proper role to access a control
Get notifications for a system
Send a notification for a system
get /systems/{systemId}/notifications
Get notifications for a system
URI Parameters
- systemId: required(string)
The unique identifier of a system
Query Parameters
- orderBy: (string)
- orderType: (string)
ASC or DESC
- type: (string)
- limit: (integer - default: 5)
- offset: (integer - default: 0)
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"notifications": [
{
"id": 61,
"entityIndex": "Level27\\SystemBundle\\Entity\\Cookbook_21",
"entityName": "cookbook",
"dtStamp": "1509469899",
"notificationGroup": "System",
"type": "jobupdateCookbook50",
"entityClass": "Level27\\SystemBundle\\Entity\\Cookbook",
"entityId": 21,
"rootEntityClass": "Level27\\SystemBundle\\Entity\\System",
"rootEntityId": 19,
"status": 21,
"statusDisplay": "queued",
"statusCategory": "yellow",
"sendMode": 0,
"priority": 250,
"subject": null,
"params": {
"exceptionCode": null,
"exceptionMsg": null,
"guiUrl": "http://gui.cp4test.be/app_dev.php",
"entityUrl": "http://gui.cp4test.be/app_dev.php",
"systemId": 19
},
"userId": 1,
"contacts": [],
"extraRecipients": [],
"entity": {
"id": 21,
"cookbooktype": "cp4_nagios",
"cookbookparameters": {
"some_mailbox_param": {
"value": "someValue",
"default": true
}
},
"cookbookparameterDescriptions": {
"some_mailbox_param": "Nagios param description"
},
"previousCookbookparameters": "{\"some_mailbox_param\":null}",
"status": "ok",
"statusCategory": "green",
"system": {
"id": 19,
"fqdn": "c0da1f539.test.be",
"name": "test.cp4test.be"
}
},
"user": {
"id": 1,
"username": "test@test.be",
"email": "test@test.be",
"firstName": "Test",
"lastName": "User",
"roles": [
"ROLE_CUSTADMIN",
"ROLE_SYSTEM"
],
"status": "ok",
"statusCategory": "green",
"language": "nl",
"organisation": {
"id": 123,
"name": "Test Company",
"street": "Test-Street",
"houseNumber": "23",
"zip": "123",
"city": "Test City"
},
"country": {
"id": "BE",
"name": "Belgium"
},
"fullname": "Test User"
}
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
post /systems/{systemId}/notifications
Send a notification for a system
URI Parameters
- systemId: required(string)
The unique identifier of a system
Body
Media type: application/json
Type: object
Properties- type: required(string)
Notification type
- group: required(one of App, Crm, Domain, Finance, Mail, System)
Notification group
- params: (object)
Additional parameters (json)
Example:
{
"type": "monitoringenabled",
"group": "System",
"params": {
"entityUrl": "gui.cp4dev.be/systems"
}
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"id": 2226,
"entityIndex": "Level27\\SystemBundle\\Entity\\System_19",
"entityName": "system",
"dtStamp": "1519038646",
"notificationGroup": "System",
"type": "monitoringenabled",
"entityClass": "Level27\\SystemBundle\\Entity\\System",
"entityId": 19,
"rootEntityClass": null,
"rootEntityId": null,
"status": 21,
"statusDisplay": "queued",
"statusCategory": "yellow",
"sendMode": 0,
"priority": 250,
"subject": null,
"params": [],
"userId": 1,
"contacts": [],
"extraRecipients": [],
"entity": null,
"user": null
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a system
HTTP status code 500
Response when a user does not have a proper role to access a controller
Create a billableitem (action only for admin)
post /systems/{systemId}/bill
Create a billableitem (action only for admin)
URI Parameters
- systemId: required(string)
The unique identifier of a system
Body
Media type: application/json
Type: object
Properties- externalInfo: (string)
ExternalInfo (required when billableitemInfo entities for an Organisation exist in db)
Example:
{
"externalInfo": "123B5"
}
HTTP status code 201
Response when a billableitem was successfully created
Body
Media type: application/json
Type: object
Example:
{
"billableitem": {
"id": 21,
"organisation": {
"id": 123,
"name": "Test Company"
},
"status": 10,
"statusDisplay": "ok",
"description": "Billableitem description",
"autoRenew": true,
"dtExpires": 1518024820,
"dtNextRenewal": 1518024820,
"documentsExist": false,
"details": "null \"extra1\"",
"ull": null,
"extra2": null,
"externalInfo": "123Yw"
}
}
HTTP status code 403
Response when a user does not have access to a system
HTTP status code 404
Response when a system is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Get price for an existing system
Update an existing billableitem
Delete a billableitem (action only for admin)
get /systems/{systemId}/billableitem
Get price for an existing system
URI Parameters
- systemId: required(string)
The unique identifier of a system
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"billableitem": {
"id": 79,
"organisation": {
"id": 123,
"name": "Test Company"
},
"status": 10,
"statusDisplay": "ok",
"description": "System a299aa66a.firecontrol.be",
"autoRenew": true,
"dtExpires": 1521208035,
"dtNextRenewal": 1521208035,
"documentsExist": true,
"details": [
{
"id": 180,
"price": null,
"dtExpires": "1521208035",
"quantity": 1,
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"appcomponent": null,
"product": {
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"allowQuantityChange": false
},
"productPrice": {
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"status": 10
},
"type": 1
},
{
"id": 181,
"price": null,
"dtExpires": "1521208035",
"quantity": 1,
"description": "General purpose T2 family",
"appcomponent": null,
"product": {
"id": "system_ec2_instance_t2.micro_linux",
"description": "General purpose T2 family",
"allowQuantityChange": false
},
"productPrice": {
"id": 1502,
"period": 1,
"currency": "EUR",
"price": "878",
"timing": "pre",
"status": 10
},
"type": 1
},
{
"id": 182,
"price": null,
"dtExpires": "1521208035",
"quantity": 1,
"description": "AWS data transfer estimated price",
"appcomponent": null,
"product": {
"id": "system_ec2_instance_datatransfer",
"description": "AWS data transfer estimated price",
"allowQuantityChange": false
},
"productPrice": {
"id": 1514,
"period": 1,
"currency": "EUR",
"price": "0",
"timing": "pre",
"status": 10
},
"type": 1
},
{
"id": 183,
"price": null,
"dtExpires": "1521208035",
"quantity": 10,
"description": "AWS EBS volume per GB",
"appcomponent": null,
"product": {
"id": "system_ec2_instance_disk",
"description": "AWS EBS volume per GB",
"allowQuantityChange": false
},
"productPrice": {
"id": 1517,
"period": 1,
"currency": "EUR",
"price": "11",
"timing": "pre",
"status": 10
},
"type": 1
}
],
"extra1": null,
"extra2": null,
"externalInfo": "123",
"agreement": {
"id": 3,
"name": "My agreement"
}
}
}
HTTP status code 403
Response when a user does not have access to a system
HTTP status code 404
Response when a system is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
patch /systems/{systemId}/billableitem
Update an existing billableitem
URI Parameters
- systemId: required(string)
The unique identifier of a system
Body
Media type: application/json
Type: object
Properties- autoRenew: (boolean)
Renew automatically (default: true)
- extra1: (string)
Extra1
- extra2: (string)
Extra2
- externalInfo: (string)
ExternalInfo (required when billableitemInfo entities for an Organisation exist in db)
- preventDeactivation: (boolean)
Prevent deactivation (default: true) - admin only
Example:
{
"autoRenew": false,
"extra1": null,
"extra2": null,
"externalInfo": "123B5"
}
HTTP status code 204
Response when update of a billableitem succeeded
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a system
HTTP status code 404
Response when a billableitem is not found
HTTP status code 500
Response when a user does not have a proper role to access a control
delete /systems/{systemId}/billableitem
Delete a billableitem (action only for admin)
URI Parameters
- systemId: required(string)
The unique identifier of a system
HTTP status code 204
Response when deletion of a billableitem succeeded
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a system
HTTP status code 404
Response when a billableitem is not found
HTTP status code 500
Response when a user does not have a proper role to access a control
Add an agreement to billableitem (action only for admin)
Delete an agreement from billableitem (action only for admin)
post /systems/{systemId}/billableitem/agreements
Add an agreement to billableitem (action only for admin)
URI Parameters
- systemId: required(string)
The unique identifier of a system
Body
Media type: application/json
Type: object
Properties- agreement: required(integer)
The unique identifier of an agreement
Example:
{
"agreement": 3
}
HTTP status code 204
Response when agreement was added to billableitem
Body
Media type: application/json
Type: object
Example:
{
"billableitem": {
"id": 79,
"organisation": {
"id": 123,
"name": "Test Company"
},
"status": 10,
"statusDisplay": "ok",
"description": "System a299aa66a.firecontrol.be",
"autoRenew": true,
"dtExpires": 1521208035,
"dtNextRenewal": 1521208035,
"documentsExist": true,
"details": [
{
"id": 180,
"price": null,
"dtExpires": "1521208035",
"quantity": 1,
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"appcomponent": null,
"product": {
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"allowQuantityChange": false
},
"productPrice": {
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"status": 10
},
"type": 1
},
{
"id": 181,
"price": null,
"dtExpires": "1521208035",
"quantity": 1,
"description": "General purpose T2 family",
"appcomponent": null,
"product": {
"id": "system_ec2_instance_t2.micro_linux",
"description": "General purpose T2 family",
"allowQuantityChange": false
},
"productPrice": {
"id": 1502,
"period": 1,
"currency": "EUR",
"price": "878",
"timing": "pre",
"status": 10
},
"type": 1
},
{
"id": 182,
"price": null,
"dtExpires": "1521208035",
"quantity": 1,
"description": "AWS data transfer estimated price",
"appcomponent": null,
"product": {
"id": "system_ec2_instance_datatransfer",
"description": "AWS data transfer estimated price",
"allowQuantityChange": false
},
"productPrice": {
"id": 1514,
"period": 1,
"currency": "EUR",
"price": "0",
"timing": "pre",
"status": 10
},
"type": 1
},
{
"id": 183,
"price": null,
"dtExpires": "1521208035",
"quantity": 10,
"description": "AWS EBS volume per GB",
"appcomponent": null,
"product": {
"id": "system_ec2_instance_disk",
"description": "AWS EBS volume per GB",
"allowQuantityChange": false
},
"productPrice": {
"id": 1517,
"period": 1,
"currency": "EUR",
"price": "11",
"timing": "pre",
"status": 10
},
"type": 1
}
],
"extra1": null,
"extra2": null,
"externalInfo": "123",
"agreement": {
"id": 3,
"name": "My agreement"
}
}
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to an app
HTTP status code 404
Response when a billableitem is not found
delete /systems/{systemId}/billableitem/agreements
Delete an agreement from billableitem (action only for admin)
URI Parameters
- systemId: required(string)
The unique identifier of a system
Update an existing billableitem detail
patch /systems/{systemId}/billableitem/details/{detailId}
Update an existing billableitem detail
URI Parameters
- systemId: required(string)
The unique identifier of a system
- detailId: required(string)
Body
Media type: application/json
Type: object
Properties- price: (integer)
Price in cents (admin only)
- description: (string)
Description
- productPrice: (integer)
The unique identifier of a ProductPrice
- quantity: (integer)
Quantity (admin only)
Examples:
1:
{
"description": "May description",
"productPrice": "product_price_id"
}
2 (admin only):
{
"price": 100,
"quantity": 2
}
HTTP status code 204
Response when update of a billableitem detail succeeded
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a system
HTTP status code 404
Response when a billableitem detail is not found
HTTP status code 500
Response when a user does not have a proper role to access a control
Update externalInfo for an existing billableitem
patch /systems/{systemId}/billableitem/externalinfo
Update externalInfo for an existing billableitem
URI Parameters
- systemId: required(string)
The unique identifier of a system
Body
Media type: application/json
Type: object
Properties- externalInfo: (string)
ExternalInfo (required when billableitemInfo entities for an Organisation exist in db)
Example:
{
"externalInfo": "x-0001"
}
Update cp3 imported system (admin only)
patch /systems/{systemId}/cp3link
Update cp3 imported system (admin only)
URI Parameters
- systemId: required(string)
The unique identifier of a system
Body
Media type: application/json
Type: object
Properties- disk: (integer)
Disk (non-editable)
- cpu: (integer)
Cpu (required for Level27 systems)
- memory: (integer)
Memory (required for Level27 systems)
- managementType: (one of basic, professional, enterprise, professional_level27)
Management type (default: basic)
- systemimage: required(integer)
The unique identifier of a systemimage
- It must match selected configuration and zone
- (non-editable)
- systemproviderConfiguration: required(integer)
The unique identifier of a SystemproviderConfiguration
- It must match selected systemimage and zone
- (non-editable)
- zone: required(integer)
The unique identifier of a zone
- It must match selected systemimage and configuration
- (non-editable)
- runningStatus: (integer)
Running status - one of:
- 0 - stopped
- 1 - stopping
- 2 - shutting down
- 3 - busy
- 4 - rebooting
- 5 - starting
- 6 - running
- 80 - deleting
- externalId: (string)
External id
Example:
{
"disk": 30,
"cpu": 2,
"memory": 2,
"managementType": "professional_level27",
"systemimage": 70,
"systemproviderConfiguration": 123,
"zone": 50,
"runningStatus": 6,
"externalId": 1789
}
Update runningStatus of cp3 imported system (admin only)
patch /systems/{systemId}/running/status
Update runningStatus of cp3 imported system (admin only)
URI Parameters
- systemId: required(string)
The unique identifier of a system
Body
Media type: application/json
Type: object
Properties- runningStatus: (integer)
Running status - one of:
- 0 - stopped
- 1 - stopping
- 2 - shutting down
- 3 - busy
- 4 - rebooting
- 5 - starting
- 6 - running
- 80 - deleting
Example:
{
"runningStatus": 6
}
Link a system with a systemgroup
Get a system's groups
post /systems/{systemId}/groups
Link a system with a systemgroup
URI Parameters
- systemId: required(string)
The unique identifier of a system
Body
Media type: application/json
Type: object
Properties- systemgroup: (integer)
The unique identifier of a systemgroup
Example:
{
"systemgroup": 1
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"systemgroup": {
"id": 2,
"name": "mySystemgroup",
"status": "ok",
"shared": false,
"systems": [
{
"id": 8,
"name": "Test System 1"
},
{
"id": 9,
"name": "Test System 2"
}
],
"organisation": {
"id": 123,
"name": "Test Company"
}
}
}
HTTP status code 400
Validation of new group failed
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /systems/{systemId}/groups
Get a system's groups
URI Parameters
- systemId: required(string)
The unique identifier of a system
Query Parameters
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- orderBy: (string)
- orderType: (string)
ASC or DESC
- filter: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"systemgroups": [
{
"id": 1,
"name": "testSystemgroup",
"status": "ok",
"shared": false,
"systems": [
{
"id": 8,
"name": "Test System 1"
},
{
"id": 9,
"name": "Test System 2"
}
],
"organisation": {
"id": 123,
"name": "Test Comapany"
}
},
{
"id": 2,
"name": "mySystemgroup",
"status": "ok",
"shared": false,
"systems": [
{
"id": 8,
"name": "Test System 1"
}
],
"organisation": {
"id": 123,
"name": "Test Comapany"
}
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Unlink an system from a systemgroup
Get a system's systemgroup
delete /systems/{systemId}/groups/{systemgroupId}
Unlink an system from a systemgroup
URI Parameters
- systemId: required(string)
The unique identifier of a system
- systemgroupId: required(string)
The unique identifier of a group
get /systems/{systemId}/groups/{systemgroupId}
Get a system's systemgroup
URI Parameters
- systemId: required(string)
The unique identifier of a system
- systemgroupId: required(string)
The unique identifier of a group
HTTP status code 200
Response when group is found
Body
Media type: application/json
Type: object
Example:
{
"systemgroup": {
"id": 2,
"name": "mySystemgroup",
"status": "ok",
"shared": false,
"systems": [
{
"id": 8,
"name": "Test System 1"
},
{
"id": 9,
"name": "Test System 2"
}
],
"organisation": {
"id": 123,
"name": "Test Company"
}
}
}
HTTP status code 403
Response when a user does not have access to a group
HTTP status code 404
Response when group is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Force a system deletion from a systemgroup (admin only)
delete /systems/{systemId}/groups/{systemgroupId}/force
Force a system deletion from a systemgroup (admin only)
URI Parameters
- systemId: required(string)
The unique identifier of a system
- systemgroupId: required(string)
The unique identifier of a group
Create a new systemHasNetwork with SystemHasNetworkIps (admin only)
Get systemHasNetworks (admin only)
post /systems/{systemId}/networks
Create a new systemHasNetwork with SystemHasNetworkIps (admin only)
URI Parameters
- systemId: required(string)
The unique identifier of a system
Body
Media type: application/json
Type: object
Properties- network: required(integer)
The unique identifier of a network
Example:
{
"network": 123
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"systemHasNetwork": {
"id": 123,
"network": {
"id": 123,
"description": "Test Network"
}
}
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a system
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /systems/{systemId}/networks
Get systemHasNetworks (admin only)
URI Parameters
- systemId: required(string)
The unique identifier of a system
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"systemHasNetworks": [
{
"id": 3634,
"mac": "06:12:48:d8:d0:da",
"status": "ok",
"externalId": null,
"network": {
"id": 889,
"name": "ec2_eu-west-1a_public_1",
"description": null,
"public": true,
"customer": false,
"internal": true
}
}
]
}
HTTP status code 403
Response when a user does not have access to a system
HTTP status code 500
Response when a user does not have a proper role to access a controller
Converts a new systemHasNetwork to cp4 from cp3 (admin only)
post /systems/{systemId}/networks/sync
Converts a new systemHasNetwork to cp4 from cp3 (admin only)
URI Parameters
- systemId: required(string)
The unique identifier of a system
Body
Media type: application/json
Type: object
Properties- mac: (string)
mac
- network: required(integer)
The unique identifier of a network
- externalId: (string)
External id
Example:
Can not resolve ../../examples/system/request/systemHasNetworkSync.raml
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"systemHasNetwork": {
"id": 123,
"network": {
"id": 123,
"description": "Test Network"
}
}
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a system
HTTP status code 500
Response when a user does not have a proper role to access a controller
Get a systemHasNetwork (admin only)
Delete a systemHasNetwork (admin only)
get /systems/{systemId}/networks/{systemHasNetworkId}
Get a systemHasNetwork (admin only)
URI Parameters
- systemId: required(string)
The unique identifier of a system
- systemHasNetworkId: required(string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"systemHasNetwork": {
"id": 123,
"network": {
"id": 123,
"description": "Test Network"
}
}
}
HTTP status code 403
Response when a user does not have access to a system
HTTP status code 500
Response when a user does not have a proper role to access a controller
delete /systems/{systemId}/networks/{systemHasNetworkId}
Delete a systemHasNetwork (admin only)
URI Parameters
- systemId: required(string)
The unique identifier of a system
- systemHasNetworkId: required(string)
Converts a new systemHasNetwork to cp4 from cp3 (admin only)
Delete a cp3 systemHasNetwork (admin only)
put /systems/{systemId}/networks/{systemHasNetworkId}/sync
Converts a new systemHasNetwork to cp4 from cp3 (admin only)
URI Parameters
- systemId: required(string)
The unique identifier of a system
- systemHasNetworkId: required(string)
Body
Media type: application/json
Type: object
Properties- mac: (string)
mac
- network: required(integer)
The unique identifier of a network
- externalId: (string)
External id
Example:
Can not resolve ../../examples/system/request/systemHasNetworkSync.raml
delete /systems/{systemId}/networks/{systemHasNetworkId}/sync
Delete a cp3 systemHasNetwork (admin only)
URI Parameters
- systemId: required(string)
The unique identifier of a system
- systemHasNetworkId: required(string)
Creates a systemHasNetworkIp with a new ip/ips (admin only)
Get systemHasNetworkIps (admin only)
post /systems/{systemId}/networks/{systemHasNetworkId}/ips
Creates a systemHasNetworkIp with a new ip/ips (admin only)
URI Parameters
- systemId: required(string)
The unique identifier of a system
- systemHasNetworkId: required(string)
Body
Media type: application/json
Type: object
Properties- hostname: (string)
Valid hostname
Example:
{
"hostname": 123
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"systemHasNetworkIp": {
"id": 299,
"ipv4": null,
"publicIpv4": "2130706433",
"ipv6": null,
"publicIpv6": null,
"hostname": null,
"status": "ok",
"systemHasNetwork": {
"id": 200,
"system": {
"id": 20
}
}
}
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a system
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /systems/{systemId}/networks/{systemHasNetworkId}/ips
Get systemHasNetworkIps (admin only)
URI Parameters
- systemId: required(string)
The unique identifier of a system
- systemHasNetworkId: required(string)
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"systemHasNetworkIps": [
{
"id": 299,
"ipv4": null,
"publicIpv4": "2130706433",
"ipv6": null,
"publicIpv6": null,
"hostname": null,
"status": "ok",
"systemHasNetwork": {
"id": 200,
"system": {
"id": 20
}
}
}
]
}
HTTP status code 403
Response when a user does not have access to a system
HTTP status code 500
Response when a user does not have a proper role to access a controller
Converts a new systemHasNetworkIp to cp4 from cp3 (admin only)
post /systems/{systemId}/networks/{systemHasNetworkId}/ips/sync
Converts a new systemHasNetworkIp to cp4 from cp3 (admin only)
URI Parameters
- systemId: required(string)
The unique identifier of a system
- systemHasNetworkId: required(string)
Body
Media type: application/json
Type: object
Properties- publicIpv4: (integer)
ipv4
- publicIpv6: (string)
ipv6
- hostname: (string)
Valid hostname
- externalId: (string)
External id
Example:
{
"publicIpv4": "123.1.1.123",
"publicIpv6": null,
"hostname": "test.be"
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"systemHasNetworkIp": {
"id": 299,
"ipv4": null,
"publicIpv4": "2130706433",
"ipv6": null,
"publicIpv6": null,
"hostname": null,
"status": "ok",
"systemHasNetwork": {
"id": 200,
"system": {
"id": 20
}
}
}
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a system
HTTP status code 500
Response when a user does not have a proper role to access a controller
Get a systemHasNetworkIp (admin only)
Delete a systemHasNetworkIp (admin only)
get /systems/{systemId}/networks/{systemHasNetworkId}/ips/{systemHasNetworkIpId}
Get a systemHasNetworkIp (admin only)
URI Parameters
- systemId: required(string)
The unique identifier of a system
- systemHasNetworkId: required(string)
- systemHasNetworkIpId: required(string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"systemHasNetworkIp": {
"id": 299,
"ipv4": null,
"publicIpv4": "2130706433",
"ipv6": null,
"publicIpv6": null,
"hostname": null,
"status": "ok",
"systemHasNetwork": {
"id": 200,
"system": {
"id": 20
}
}
}
}
HTTP status code 403
Response when a user does not have access to a system
HTTP status code 500
Response when a user does not have a proper role to access a controller
delete /systems/{systemId}/networks/{systemHasNetworkId}/ips/{systemHasNetworkIpId}
Delete a systemHasNetworkIp (admin only)
URI Parameters
- systemId: required(string)
The unique identifier of a system
- systemHasNetworkId: required(string)
- systemHasNetworkIpId: required(string)
Converts a new systemHasNetworkIp to cp4 from cp3 (admin only)
Delete a cp3 systemHasNetworkIp (admin only)
put /systems/{systemId}/networks/{systemHasNetworkId}/ips/{systemHasNetworkIpId}/sync
Converts a new systemHasNetworkIp to cp4 from cp3 (admin only)
URI Parameters
- systemId: required(string)
The unique identifier of a system
- systemHasNetworkId: required(string)
- systemHasNetworkIpId: required(string)
Body
Media type: application/json
Type: object
Properties- publicIpv4: (integer)
ipv4
- publicIpv6: (string)
ipv6
- hostname: (string)
Valid hostname
- externalId: (string)
External id
Example:
{
"publicIpv4": "123.1.1.123",
"publicIpv6": null,
"hostname": "test.be"
}
delete /systems/{systemId}/networks/{systemHasNetworkId}/ips/{systemHasNetworkIpId}/sync
Delete a cp3 systemHasNetworkIp (admin only)
URI Parameters
- systemId: required(string)
The unique identifier of a system
- systemHasNetworkId: required(string)
- systemHasNetworkIpId: required(string)
Create integrity check for system
Get system integrity checks
post /systems/{systemId}/integritychecks
Create integrity check for system
URI Parameters
- systemId: required(string)
The unique identifier of a system
Body
Media type: application/json
Type: object
Properties- dojobs: (boolean)
Create jobs (default: true)
- forcejobs: (boolean)
Create jobs even if integrity check failed (default: false)
Example:
{
"dojobs": false,
"forcejobs": false
}
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"integritycheck": {
"id": 264,
"dtRequested": "1584958181",
"object": "Level27\\SystemBundle\\Entity\\System",
"objectId": 5368,
"results": {
"system": {
"id": 5368,
"data": {
"name": "test.be",
"uid": "sxhabjbx-9154-a4e4-edee-gysgyags",
"fqdn": "bffeceb6b.test.be",
"customerFqdn": "test2.be",
"status": "ok",
"statusColor": "green",
"runningStatus": "running",
"runningStatusColor": "green",
"systemimage": "ubuntu_1804lts_server",
"zone": "gent",
"configuration": "Level27 Flexible configuration",
"os": "Ubuntu 18.04 LTS 64",
"cpu": 2,
"memory": 2,
"disk": "30.0",
"monitoring": "OFF",
"monitoringColor": "orange",
"managementType": "professional_level27"
},
"results": {
"uid": "ok",
"fqdn": "ok",
"customerFqdn": "ok",
"name": "ok",
"status": "ok",
"runningStatus": "ok",
"managementType": "ok",
"disk": "ok",
"configurations": "ok",
"organisation": "ok",
"systemimage": "ok"
},
"networks": [
{
"id": 5199,
"data": {
"mac": "34:54:11:12:51:07",
"network": "yope-gent-723-cp4-pub - location: be1",
"type": "public"
},
"results": {
"ips": "ok"
},
"ips": [
{
"id": 5558,
"data": {
"ipv4": null,
"publicIpv4": "185.1.1.2",
"ipv6": null,
"publicIpv6": null,
"hostname": "test.be"
},
"results": {
"main": "ok",
"ipv4": "ok",
"publicIpv4": "ok",
"ipv6": "ok",
"publicIpv6": "ok",
"hostname": "ok"
}
}
]
}
]
},
"organisations": {
"manual": [],
"owner": "level27"
},
"teams": [],
"financeData": {
"billing": "ON",
"billingStatus": "green",
"autoRenew": "ON",
"autoRenewStatus": "green",
"dtExpires": "2020-03-16",
"billingItems": [
{
"id": 23082,
"description": "Level27 Flexible configuration - configuration",
"type": "Level27 Flexible configuration",
"period": "1 month(s)",
"dtExpires": "2020-03-16",
"price": 65
},
{
"id": 23083,
"description": "Level27 volume per GB - disk",
"type": "Level27 volume per GB",
"period": "1 month(s)",
"dtExpires": "2020-03-16",
"price": 15
},
{
"id": 23084,
"description": "Level27 instance CPU - cpu",
"type": "Level27 instance CPU",
"period": "1 month(s)",
"dtExpires": "2020-03-16",
"price": 20
},
{
"id": 23085,
"description": "Level27 instance Memory - memory",
"type": "Level27 instance Memory",
"period": "1 month(s)",
"dtExpires": "2020-03-16",
"price": 20
}
],
"totalPrice": 1440
},
"extraSystemFinanceData": {
"freeApps": [
{
"id": 3808,
"name": "test.be",
"organisationId": 1,
"organisationName": "level27",
"components": [
{
"id": 4257,
"name": "Php",
"type": "php",
"price": 120,
"weight": "100%"
}
],
"weight": "100%",
"price": 120
}
],
"billableApps": [],
"freeAppsCount": 1,
"freeComponentsCount": 1,
"billableAppsCount": 0,
"billableComponentsCount": 0
},
"systemgroupFinanceData": [],
"jobs": [
{
"id": 526128,
"action": "updateSshkeys",
"status": 50,
"message": "ok",
"dtEnd": null,
"dtStamp": "2020-03-16",
"exceptionMsq": null
},
{
"id": 526070,
"action": "updateCookbook",
"status": 50,
"message": "ok",
"dtEnd": null,
"dtStamp": "2020-03-16",
"exceptionMsq": null
},
{
"id": 526073,
"action": "processCookbookUpdates",
"status": 50,
"message": "ok",
"dtEnd": "2020-03-16",
"dtStamp": "2020-03-16",
"exceptionMsq": null
},
{
"id": 526061,
"action": "insertNetworks",
"status": 50,
"message": "ok",
"dtEnd": "2020-03-16",
"dtStamp": "2020-03-16",
"exceptionMsq": null
},
{
"id": 526062,
"action": "insert",
"status": 50,
"message": "ok",
"dtEnd": "2020-03-16",
"dtStamp": "2020-03-16",
"exceptionMsq": null
},
{
"id": 526067,
"action": "updateInterfaces",
"status": 50,
"message": "ok",
"dtEnd": null,
"dtStamp": "2020-03-16",
"exceptionMsq": null
}
],
"isHealthy": false,
"extraMessage": "No jobs because entity is not healthy or forcejobs is not called."
},
"status": "ok",
"dojobs": true,
"forcejobs": false,
"localIntegritychecks": []
}
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to an system
HTTP status code 404
Response when an system is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /systems/{systemId}/integritychecks
Get system integrity checks
URI Parameters
- systemId: required(string)
The unique identifier of a system
Query Parameters
- status: (string)
- orderBy: (string)
- orderType: (string)
ASC or DESC
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- filter: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"integritychecks": [
{
"id": 268,
"dtRequested": "1584960307",
"status": "ok"
},
{
"id": 259,
"dtRequested": "1584734256",
"status": "ok"
},
{
"id": 254,
"dtRequested": "1584732272",
"status": "ok"
},
{
"id": 251,
"dtRequested": "1584709340",
"status": "ok"
},
{
"id": 249,
"dtRequested": "1584708665",
"status": "ok"
}
]
}
HTTP status code 400
Bad request
HTTP status code 401
Unauthorized - when user doesn't have role admin, custadmin or system
HTTP status code 403
Access Denied - when user doesn't have access to system
HTTP status code 404
Not found - when integritycheck doesn't exist
HTTP status code 500
Response when a user does not have a proper role to access a controller
Get system integrity check
get /systems/{systemId}/integritychecks/{integritycheckId}
Get system integrity check
URI Parameters
- systemId: required(string)
The unique identifier of a system
- integritycheckId: required(string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"integritycheck": {
"id": 264,
"dtRequested": "1584958181",
"object": "Level27\\SystemBundle\\Entity\\System",
"objectId": 5368,
"results": {
"system": {
"id": 5368,
"data": {
"name": "test.be",
"uid": "sxhabjbx-9154-a4e4-edee-gysgyags",
"fqdn": "bffeceb6b.test.be",
"customerFqdn": "test2.be",
"status": "ok",
"statusColor": "green",
"runningStatus": "running",
"runningStatusColor": "green",
"systemimage": "ubuntu_1804lts_server",
"zone": "gent",
"configuration": "Level27 Flexible configuration",
"os": "Ubuntu 18.04 LTS 64",
"cpu": 2,
"memory": 2,
"disk": "30.0",
"monitoring": "OFF",
"monitoringColor": "orange",
"managementType": "professional_level27"
},
"results": {
"uid": "ok",
"fqdn": "ok",
"customerFqdn": "ok",
"name": "ok",
"status": "ok",
"runningStatus": "ok",
"managementType": "ok",
"disk": "ok",
"configurations": "ok",
"organisation": "ok",
"systemimage": "ok"
},
"networks": [
{
"id": 5199,
"data": {
"mac": "34:54:11:12:51:07",
"network": "yope-gent-723-cp4-pub - location: be1",
"type": "public"
},
"results": {
"ips": "ok"
},
"ips": [
{
"id": 5558,
"data": {
"ipv4": null,
"publicIpv4": "185.1.1.2",
"ipv6": null,
"publicIpv6": null,
"hostname": "test.be"
},
"results": {
"main": "ok",
"ipv4": "ok",
"publicIpv4": "ok",
"ipv6": "ok",
"publicIpv6": "ok",
"hostname": "ok"
}
}
]
}
]
},
"organisations": {
"manual": [],
"owner": "level27"
},
"teams": [],
"financeData": {
"billing": "ON",
"billingStatus": "green",
"autoRenew": "ON",
"autoRenewStatus": "green",
"dtExpires": "2020-03-16",
"billingItems": [
{
"id": 23082,
"description": "Level27 Flexible configuration - configuration",
"type": "Level27 Flexible configuration",
"period": "1 month(s)",
"dtExpires": "2020-03-16",
"price": 65
},
{
"id": 23083,
"description": "Level27 volume per GB - disk",
"type": "Level27 volume per GB",
"period": "1 month(s)",
"dtExpires": "2020-03-16",
"price": 15
},
{
"id": 23084,
"description": "Level27 instance CPU - cpu",
"type": "Level27 instance CPU",
"period": "1 month(s)",
"dtExpires": "2020-03-16",
"price": 20
},
{
"id": 23085,
"description": "Level27 instance Memory - memory",
"type": "Level27 instance Memory",
"period": "1 month(s)",
"dtExpires": "2020-03-16",
"price": 20
}
],
"totalPrice": 1440
},
"extraSystemFinanceData": {
"freeApps": [
{
"id": 3808,
"name": "test.be",
"organisationId": 1,
"organisationName": "level27",
"components": [
{
"id": 4257,
"name": "Php",
"type": "php",
"price": 120,
"weight": "100%"
}
],
"weight": "100%",
"price": 120
}
],
"billableApps": [],
"freeAppsCount": 1,
"freeComponentsCount": 1,
"billableAppsCount": 0,
"billableComponentsCount": 0
},
"systemgroupFinanceData": [],
"jobs": [
{
"id": 526128,
"action": "updateSshkeys",
"status": 50,
"message": "ok",
"dtEnd": null,
"dtStamp": "2020-03-16",
"exceptionMsq": null
},
{
"id": 526070,
"action": "updateCookbook",
"status": 50,
"message": "ok",
"dtEnd": null,
"dtStamp": "2020-03-16",
"exceptionMsq": null
},
{
"id": 526073,
"action": "processCookbookUpdates",
"status": 50,
"message": "ok",
"dtEnd": "2020-03-16",
"dtStamp": "2020-03-16",
"exceptionMsq": null
},
{
"id": 526061,
"action": "insertNetworks",
"status": 50,
"message": "ok",
"dtEnd": "2020-03-16",
"dtStamp": "2020-03-16",
"exceptionMsq": null
},
{
"id": 526062,
"action": "insert",
"status": 50,
"message": "ok",
"dtEnd": "2020-03-16",
"dtStamp": "2020-03-16",
"exceptionMsq": null
},
{
"id": 526067,
"action": "updateInterfaces",
"status": 50,
"message": "ok",
"dtEnd": null,
"dtStamp": "2020-03-16",
"exceptionMsq": null
}
],
"isHealthy": false,
"extraMessage": "No jobs because entity is not healthy or forcejobs is not called."
},
"status": "ok",
"dojobs": true,
"forcejobs": false,
"localIntegritychecks": []
}
}
HTTP status code 400
Bad request
HTTP status code 401
Unauthorized - when user doesn't have role admin, custadmin or system
HTTP status code 403
Access Denied - when user doesn't have access to system
HTTP status code 404
Not found - when integritycheck doesn't exist
HTTP status code 500
Response when a user does not have a proper role to access a controller
Get system integrity check
get /systems/{systemId}/integritychecks/{integritycheckId}/report
Get system integrity check
URI Parameters
- systemId: required(string)
The unique identifier of a system
- integritycheckId: required(string)
HTTP status code 200
Returns report in pdf
HTTP status code 400
Bad request
HTTP status code 401
Unauthorized - when user doesn't have role admin, custadmin or system
HTTP status code 403
Access Denied - when user doesn't have access to system
HTTP status code 404
Not found - when integritycheck doesn't exist
HTTP status code 500
Response when a user does not have a proper role to access a controller
Get calculations for a system
get /systems/{systemId}/calculations
Get calculations for a system
URI Parameters
- systemId: required(string)
The unique identifier of a system
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"system": {
"name": "prometheus-system",
"freeApps": []
},
"systemgroups": [
{
"name": "prometheus-systemgroup",
"freeApps": [
{
"name": "prometheus",
"components": [
{
"id": 11,
"name": "Php",
"type": "php",
"user": "ppxxxxx",
"cpu": 1,
"disk": 200,
"memory": 1,
"disk_user": 0
}
]
},
{
"name": "prometheus 2",
"components": [
{
"id": 12,
"name": "Php",
"type": "php",
"user": "ppxxxxxc",
"cpu": 1,
"disk": 30,
"memory": 10,
"disk_user": 0
},
{
"id": 27,
"name": "Mysql server",
"type": "mysql",
"user": "mlxxxxd",
"cpu": 0,
"disk": 0,
"memory": 0,
"disk_user": 0
}
]
}
]
}
]
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a system
HTTP status code 404
Response when a system is not found
Calculate price for a new system
post /systems/priceproposal/systemproviderconfiguration/{systemproviderconfigurationId}
Calculate price for a new system
URI Parameters
- systemproviderconfigurationId: required(string)
Body
Media type: application/json
Type: object
Properties- operatingsystem: required(integer)
The unique identifier of an Operatingsystem
Example:
{
"operatingsystem": 1
}
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
],
"allowQuantityChange": null
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
],
"allowQuantityChange": null
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
],
"allowQuantityChange": null
},
{
"id": "system_ec2_instance_t2.micro_linux",
"description": "General purpose T2 family",
"prices": [
{
"id": 1502,
"period": 1,
"currency": "EUR",
"price": "878",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1503,
"period": 12,
"currency": "EUR",
"price": "10530",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1504,
"period": 36,
"currency": "EUR",
"price": "31590",
"timing": "pre",
"default": true,
"status": 10
}
],
"allowQuantityChange": null
},
{
"id": "system_ec2_instance_datatransfer",
"description": "AWS data transfer estimated price",
"prices": [
{
"id": 1514,
"period": 1,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1515,
"period": 12,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1516,
"period": 36,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
}
],
"allowQuantityChange": null
},
{
"id": "system_ec2_instance_disk",
"description": "AWS EBS volume per GB",
"prices": [
{
"id": 1517,
"period": 1,
"currency": "EUR",
"price": "11",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1518,
"period": 12,
"currency": "EUR",
"price": "132",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1519,
"period": 36,
"currency": "EUR",
"price": "396",
"timing": "pre",
"default": true,
"status": 10
}
],
"allowQuantityChange": null
}
]
}
HTTP status code 400
Bad request
HTTP status code 500
Response when a user does not have a proper role to access a controller
/systems/priceproposal/systemproviderconfiguration/{systemproviderconfigurationId}/organisation/{organisationId} post
Calculate price for a new system for a reseller organisation
post /systems/priceproposal/systemproviderconfiguration/{systemproviderconfigurationId}/organisation/{organisationId}
Calculate price for a new system for a reseller organisation
URI Parameters
- systemproviderconfigurationId: required(string)
- organisationId: required(string)
Body
Media type: application/json
Type: object
Properties- operatingsystem: required(integer)
The unique identifier of an Operatingsystem
Example:
{
"operatingsystem": 1
}
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
],
"allowQuantityChange": null
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
],
"allowQuantityChange": null
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
],
"allowQuantityChange": null
},
{
"id": "system_ec2_instance_t2.micro_linux",
"description": "General purpose T2 family",
"prices": [
{
"id": 1502,
"period": 1,
"currency": "EUR",
"price": "878",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1503,
"period": 12,
"currency": "EUR",
"price": "10530",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1504,
"period": 36,
"currency": "EUR",
"price": "31590",
"timing": "pre",
"default": true,
"status": 10
}
],
"allowQuantityChange": null
},
{
"id": "system_ec2_instance_datatransfer",
"description": "AWS data transfer estimated price",
"prices": [
{
"id": 1514,
"period": 1,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1515,
"period": 12,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1516,
"period": 36,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
}
],
"allowQuantityChange": null
},
{
"id": "system_ec2_instance_disk",
"description": "AWS EBS volume per GB",
"prices": [
{
"id": 1517,
"period": 1,
"currency": "EUR",
"price": "11",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1518,
"period": 12,
"currency": "EUR",
"price": "132",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1519,
"period": 36,
"currency": "EUR",
"price": "396",
"timing": "pre",
"default": true,
"status": 10
}
],
"allowQuantityChange": null
}
]
}
Returns prices for all system providers
get /systems/priceproposal/organisation/{organisationId}
Returns prices for all system providers
URI Parameters
- organisationId: required(string)
Query Parameters
- orderBy: (string)
- orderType: (string)
ASC or DESC
- filter: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"products": {
"Level27": [
{
"id": "system_level27_instance_cpu",
"description": "Level27 instance CPU",
"prices": [
{
"id": 2474,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true
},
{
"id": 2475,
"period": 3,
"currency": "EUR",
"price": "3000",
"timing": "pre",
"default": false
},
{
"id": 2476,
"period": 6,
"currency": "EUR",
"price": "6000",
"timing": "pre",
"default": false
},
{
"id": 2477,
"period": 12,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": false
},
{
"id": 2478,
"period": 36,
"currency": "EUR",
"price": "36000",
"timing": "pre",
"default": false
}
]
},
{
"id": "system_level27_instance_memory",
"description": "Level27 instance Memory",
"prices": [
{
"id": 2479,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true
},
{
"id": 2480,
"period": 3,
"currency": "EUR",
"price": "3000",
"timing": "pre",
"default": false
},
{
"id": 2481,
"period": 6,
"currency": "EUR",
"price": "6000",
"timing": "pre",
"default": false
},
{
"id": 2482,
"period": 12,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": false
},
{
"id": 2483,
"period": 36,
"currency": "EUR",
"price": "36000",
"timing": "pre",
"default": false
}
]
},
{
"id": "system_level27_instance_disk",
"description": "Level27 volume per GB",
"prices": [
{
"id": 2469,
"period": 1,
"currency": "EUR",
"price": "50",
"timing": "pre",
"default": true
},
{
"id": 2470,
"period": 3,
"currency": "EUR",
"price": "150",
"timing": "pre",
"default": false
},
{
"id": 2471,
"period": 6,
"currency": "EUR",
"price": "300",
"timing": "pre",
"default": false
},
{
"id": 2472,
"period": 12,
"currency": "EUR",
"price": "600",
"timing": "pre",
"default": false
},
{
"id": 2473,
"period": 36,
"currency": "EUR",
"price": "1800",
"timing": "pre",
"default": false
}
]
},
{
"id": "system_level27_instance_flexible_linux",
"description": "Level27 Flexible configuration",
"prices": [
{
"id": 2459,
"period": 1,
"currency": "EUR",
"price": "6500",
"timing": "pre",
"default": true
},
{
"id": 2460,
"period": 3,
"currency": "EUR",
"price": "19500",
"timing": "pre",
"default": false
},
{
"id": 2461,
"period": 6,
"currency": "EUR",
"price": "39000",
"timing": "pre",
"default": false
},
{
"id": 2462,
"period": 12,
"currency": "EUR",
"price": "78000",
"timing": "pre",
"default": false
},
{
"id": 2463,
"period": 36,
"currency": "EUR",
"price": "234000",
"timing": "pre",
"default": false
}
]
},
{
"id": "system_level27_instance_flexible_windows",
"description": "Level27 Flexible configuration",
"prices": [
{
"id": 2464,
"period": 1,
"currency": "EUR",
"price": "9000",
"timing": "pre",
"default": true
},
{
"id": 2465,
"period": 3,
"currency": "EUR",
"price": "27000",
"timing": "pre",
"default": false
},
{
"id": 2466,
"period": 6,
"currency": "EUR",
"price": "54000",
"timing": "pre",
"default": false
},
{
"id": 2467,
"period": 12,
"currency": "EUR",
"price": "108000",
"timing": "pre",
"default": false
},
{
"id": 2468,
"period": 36,
"currency": "EUR",
"price": "324000",
"timing": "pre",
"default": false
}
]
},
{
"id": "system_level27_instance_small_linux",
"description": "Level27 Small server for basic workloads",
"prices": [
{
"id": 2429,
"period": 1,
"currency": "EUR",
"price": "11000",
"timing": "pre",
"default": true
},
{
"id": 2430,
"period": 3,
"currency": "EUR",
"price": "33000",
"timing": "pre",
"default": false
},
{
"id": 2431,
"period": 6,
"currency": "EUR",
"price": "66000",
"timing": "pre",
"default": false
},
{
"id": 2432,
"period": 12,
"currency": "EUR",
"price": "132000",
"timing": "pre",
"default": false
},
{
"id": 2433,
"period": 36,
"currency": "EUR",
"price": "288000",
"timing": "pre",
"default": false
}
]
},
{
"id": "system_level27_instance_small_windows",
"description": "Level27 Small server for basic workloads",
"prices": [
{
"id": 2434,
"period": 1,
"currency": "EUR",
"price": "13500",
"timing": "pre",
"default": true
},
{
"id": 2435,
"period": 3,
"currency": "EUR",
"price": "40500",
"timing": "pre",
"default": false
},
{
"id": 2436,
"period": 6,
"currency": "EUR",
"price": "81000",
"timing": "pre",
"default": false
},
{
"id": 2437,
"period": 12,
"currency": "EUR",
"price": "162000",
"timing": "pre",
"default": false
},
{
"id": 2438,
"period": 36,
"currency": "EUR",
"price": "378000",
"timing": "pre",
"default": false
}
]
},
{
"id": "system_level27_instance_medium_linux",
"description": "Level27 Medium server for general workloads",
"prices": [
{
"id": 2439,
"period": 1,
"currency": "EUR",
"price": "15500",
"timing": "pre",
"default": true
},
{
"id": 2440,
"period": 3,
"currency": "EUR",
"price": "46500",
"timing": "pre",
"default": false
},
{
"id": 2441,
"period": 6,
"currency": "EUR",
"price": "93000",
"timing": "pre",
"default": false
},
{
"id": 2442,
"period": 12,
"currency": "EUR",
"price": "186000",
"timing": "pre",
"default": false
},
{
"id": 2443,
"period": 36,
"currency": "EUR",
"price": "450000",
"timing": "pre",
"default": false
}
]
},
{
"id": "system_level27_instance_medium_windows",
"description": "Level27 Medium server for general workloads",
"prices": [
{
"id": 2444,
"period": 1,
"currency": "EUR",
"price": "18000",
"timing": "pre",
"default": true
},
{
"id": 2445,
"period": 3,
"currency": "EUR",
"price": "54000",
"timing": "pre",
"default": false
},
{
"id": 2446,
"period": 6,
"currency": "EUR",
"price": "108000",
"timing": "pre",
"default": false
},
{
"id": 2447,
"period": 12,
"currency": "EUR",
"price": "216000",
"timing": "pre",
"default": false
},
{
"id": 2448,
"period": 36,
"currency": "EUR",
"price": "540000",
"timing": "pre",
"default": false
}
]
},
{
"id": "system_level27_instance_level27_linux",
"description": "level27",
"prices": [
{
"id": 2327,
"period": 1,
"currency": "EUR",
"price": "64000",
"timing": "pre",
"default": true
},
{
"id": 2328,
"period": 3,
"currency": "EUR",
"price": "192000",
"timing": "pre",
"default": true
},
{
"id": 2329,
"period": 6,
"currency": "EUR",
"price": "384000",
"timing": "pre",
"default": true
},
{
"id": 2330,
"period": 12,
"currency": "EUR",
"price": "768000",
"timing": "pre",
"default": true
},
{
"id": 2331,
"period": 36,
"currency": "EUR",
"price": "2304000",
"timing": "pre",
"default": true
}
]
},
{
"id": "system_level27_instance_level27_windows",
"description": "level27",
"prices": [
{
"id": 2332,
"period": 1,
"currency": "EUR",
"price": "64000",
"timing": "pre",
"default": true
},
{
"id": 2333,
"period": 3,
"currency": "EUR",
"price": "192000",
"timing": "pre",
"default": true
},
{
"id": 2334,
"period": 6,
"currency": "EUR",
"price": "384000",
"timing": "pre",
"default": true
},
{
"id": 2335,
"period": 12,
"currency": "EUR",
"price": "768000",
"timing": "pre",
"default": true
},
{
"id": 2336,
"period": 36,
"currency": "EUR",
"price": "2304000",
"timing": "pre",
"default": true
}
]
},
{
"id": "system_level27_instance_large_linux",
"description": "Level27 Large server for specific & high performance applications",
"prices": [
{
"id": 2449,
"period": 1,
"currency": "EUR",
"price": "23000",
"timing": "pre",
"default": true
},
{
"id": 2450,
"period": 3,
"currency": "EUR",
"price": "69000",
"timing": "pre",
"default": false
},
{
"id": 2451,
"period": 6,
"currency": "EUR",
"price": "138000",
"timing": "pre",
"default": false
},
{
"id": 2452,
"period": 12,
"currency": "EUR",
"price": "276000",
"timing": "pre",
"default": false
},
{
"id": 2453,
"period": 36,
"currency": "EUR",
"price": "720000",
"timing": "pre",
"default": false
}
]
},
{
"id": "system_level27_instance_large_windows",
"description": "Level27 Large server for specific & high performance applications",
"prices": [
{
"id": 2454,
"period": 1,
"currency": "EUR",
"price": "25500",
"timing": "pre",
"default": true
},
{
"id": 2455,
"period": 3,
"currency": "EUR",
"price": "76500",
"timing": "pre",
"default": false
},
{
"id": 2456,
"period": 6,
"currency": "EUR",
"price": "153000",
"timing": "pre",
"default": false
},
{
"id": 2457,
"period": 12,
"currency": "EUR",
"price": "306000",
"timing": "pre",
"default": false
},
{
"id": 2458,
"period": 36,
"currency": "EUR",
"price": "810000",
"timing": "pre",
"default": false
}
]
}
],
"Cloudvps Openstack": [],
"Amazon EC2": [],
"Digital Ocean": [
{
"id": "system_digitalocean_instance_s-1vcpu-1gb_linux",
"description": "Digital Ocean 1 CPU 1 GB",
"prices": [
{
"id": 2353,
"period": 1,
"currency": "EUR",
"price": "500",
"timing": "pre",
"default": true
},
{
"id": 2354,
"period": 3,
"currency": "EUR",
"price": "1500",
"timing": "pre",
"default": false
},
{
"id": 2355,
"period": 6,
"currency": "EUR",
"price": "3000",
"timing": "pre",
"default": false
},
{
"id": 2356,
"period": 12,
"currency": "EUR",
"price": "6000",
"timing": "pre",
"default": false
},
{
"id": 2357,
"period": 36,
"currency": "EUR",
"price": "18000",
"timing": "pre",
"default": false
}
]
},
{
"id": "system_digitalocean_instance_s-1vcpu-2gb_linux",
"description": "Digital Ocean 1 CPU 2 GB",
"prices": [
{
"id": 2358,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true
},
{
"id": 2359,
"period": 3,
"currency": "EUR",
"price": "3000",
"timing": "pre",
"default": false
},
{
"id": 2360,
"period": 6,
"currency": "EUR",
"price": "6000",
"timing": "pre",
"default": false
},
{
"id": 2361,
"period": 12,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": false
},
{
"id": 2362,
"period": 36,
"currency": "EUR",
"price": "36000",
"timing": "pre",
"default": false
}
]
},
{
"id": "system_digitalocean_instance_s-1vcpu-3gb_linux",
"description": "Digital Ocean 1 CPU 3 GB",
"prices": [
{
"id": 2363,
"period": 1,
"currency": "EUR",
"price": "1500",
"timing": "pre",
"default": true
},
{
"id": 2364,
"period": 3,
"currency": "EUR",
"price": "4500",
"timing": "pre",
"default": false
},
{
"id": 2365,
"period": 6,
"currency": "EUR",
"price": "9000",
"timing": "pre",
"default": false
},
{
"id": 2366,
"period": 12,
"currency": "EUR",
"price": "18000",
"timing": "pre",
"default": false
},
{
"id": 2367,
"period": 36,
"currency": "EUR",
"price": "54000",
"timing": "pre",
"default": false
}
]
},
{
"id": "system_digitalocean_instance_s-2vcpu-2gb_linux",
"description": "Digital Ocean 2 CPU 2 GB",
"prices": [
{
"id": 2368,
"period": 1,
"currency": "EUR",
"price": "1500",
"timing": "pre",
"default": true
},
{
"id": 2369,
"period": 3,
"currency": "EUR",
"price": "4500",
"timing": "pre",
"default": false
},
{
"id": 2370,
"period": 6,
"currency": "EUR",
"price": "9000",
"timing": "pre",
"default": false
},
{
"id": 2371,
"period": 12,
"currency": "EUR",
"price": "18000",
"timing": "pre",
"default": false
},
{
"id": 2372,
"period": 36,
"currency": "EUR",
"price": "54000",
"timing": "pre",
"default": false
}
]
},
{
"id": "system_digitalocean_instance_s-2vcpu-4gb_linux",
"description": "Digital Ocean 2 CPU 4 GB",
"prices": [
{
"id": 2373,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true
},
{
"id": 2374,
"period": 3,
"currency": "EUR",
"price": "6000",
"timing": "pre",
"default": false
},
{
"id": 2375,
"period": 6,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": false
},
{
"id": 2376,
"period": 12,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": false
},
{
"id": 2377,
"period": 36,
"currency": "EUR",
"price": "72000",
"timing": "pre",
"default": false
}
]
},
{
"id": "system_digitalocean_instance_s-4vcpu-8gb_linux",
"description": "Digital Ocean 4 CPU 8 GB",
"prices": [
{
"id": 2378,
"period": 1,
"currency": "EUR",
"price": "4000",
"timing": "pre",
"default": true
},
{
"id": 2379,
"period": 3,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": false
},
{
"id": 2380,
"period": 6,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": false
},
{
"id": 2381,
"period": 12,
"currency": "EUR",
"price": "48000",
"timing": "pre",
"default": false
},
{
"id": 2382,
"period": 36,
"currency": "EUR",
"price": "144000",
"timing": "pre",
"default": false
}
]
},
{
"id": "system_digitalocean_instance_s-6vcpu-16gb_linux",
"description": "Digital Ocean 6 CPU 16 GB",
"prices": [
{
"id": 2383,
"period": 1,
"currency": "EUR",
"price": "8000",
"timing": "pre",
"default": true
},
{
"id": 2384,
"period": 3,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": false
},
{
"id": 2385,
"period": 6,
"currency": "EUR",
"price": "48000",
"timing": "pre",
"default": false
},
{
"id": 2386,
"period": 12,
"currency": "EUR",
"price": "96000",
"timing": "pre",
"default": false
},
{
"id": 2387,
"period": 36,
"currency": "EUR",
"price": "288000",
"timing": "pre",
"default": false
}
]
},
{
"id": "system_digitalocean_instance_s-8vcpu-32gb_linux",
"description": "Digital Ocean 8 CPU 32 GB",
"prices": [
{
"id": 2388,
"period": 1,
"currency": "EUR",
"price": "16000",
"timing": "pre",
"default": true
},
{
"id": 2389,
"period": 3,
"currency": "EUR",
"price": "48000",
"timing": "pre",
"default": false
},
{
"id": 2390,
"period": 6,
"currency": "EUR",
"price": "96000",
"timing": "pre",
"default": false
},
{
"id": 2391,
"period": 12,
"currency": "EUR",
"price": "192000",
"timing": "pre",
"default": false
},
{
"id": 2392,
"period": 36,
"currency": "EUR",
"price": "576000",
"timing": "pre",
"default": false
}
]
},
{
"id": "system_digitalocean_instance_s-12vcpu-48gb_linux",
"description": "Digital Ocean 12 CPU 48 GB",
"prices": [
{
"id": 2393,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true
},
{
"id": 2394,
"period": 3,
"currency": "EUR",
"price": "72000",
"timing": "pre",
"default": false
},
{
"id": 2395,
"period": 6,
"currency": "EUR",
"price": "144000",
"timing": "pre",
"default": false
},
{
"id": 2396,
"period": 12,
"currency": "EUR",
"price": "288000",
"timing": "pre",
"default": false
},
{
"id": 2397,
"period": 36,
"currency": "EUR",
"price": "864000",
"timing": "pre",
"default": false
}
]
}
],
"Management": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1725,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true
},
{
"id": 2292,
"period": 3,
"currency": "EUR",
"price": "6000",
"timing": "pre",
"default": false
},
{
"id": 2293,
"period": 6,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": false
},
{
"id": 1726,
"period": 12,
"currency": "EUR",
"price": "22800",
"timing": "pre",
"default": false
},
{
"id": 1727,
"period": 36,
"currency": "EUR",
"price": "68400",
"timing": "pre",
"default": false
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1731,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true
},
{
"id": 2296,
"period": 3,
"currency": "EUR",
"price": "72000",
"timing": "pre",
"default": false
},
{
"id": 2297,
"period": 6,
"currency": "EUR",
"price": "144000",
"timing": "pre",
"default": false
},
{
"id": 1732,
"period": 12,
"currency": "EUR",
"price": "273600",
"timing": "pre",
"default": false
},
{
"id": 1733,
"period": 36,
"currency": "EUR",
"price": "820800",
"timing": "pre",
"default": false
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1728,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true
},
{
"id": 2294,
"period": 3,
"currency": "EUR",
"price": "36000",
"timing": "pre",
"default": false
},
{
"id": 2295,
"period": 6,
"currency": "EUR",
"price": "72000",
"timing": "pre",
"default": false
},
{
"id": 1729,
"period": 12,
"currency": "EUR",
"price": "136800",
"timing": "pre",
"default": false
},
{
"id": 1730,
"period": 36,
"currency": "EUR",
"price": "410400",
"timing": "pre",
"default": false
}
]
}
]
}
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Get available system providers
get /systems/providers
Get available system providers
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"providers": [
{
"id": 3,
"name": "Amazon EC2",
"api": "ec2",
"advancedNetworking": true,
"icon": "",
"images": [
{
"id": 1,
"name": "CentOS 7.2",
"externalId": "ami-147fc16d",
"region": {
"id": 1,
"name": "eu-west-1"
},
"operatingSystem": "CentOS",
"operatingSystemVersion": {
"id": 4,
"name": "7.2",
"type": "64"
}
},
{
"id": 2,
"name": "Ubuntu 14.04",
"externalId": "ami-a6b7d3df",
"region": {
"id": 1,
"name": "eu-west-1"
},
"operatingSystem": "Ubuntu",
"operatingSystemVersion": {
"id": 2,
"name": "14.04 LTS",
"type": "64"
}
},
{
"id": 3,
"name": "Ubuntu 16.04",
"externalId": "ami-1b791862",
"region": {
"id": 1,
"name": "eu-west-1"
},
"operatingSystem": "Ubuntu",
"operatingSystemVersion": {
"id": 3,
"name": "16.04 LTS",
"type": "64"
}
},
{
"id": 4,
"name": "Ubuntu 17.04",
"externalId": "ami-94b236ed",
"region": {
"id": 1,
"name": "eu-west-1"
},
"operatingSystem": "Ubuntu",
"operatingSystemVersion": {
"id": 6,
"name": "17.04",
"type": "64"
}
},
{
"id": 5,
"name": "Debian 8.7",
"externalId": "ami-402f1a33",
"region": {
"id": 1,
"name": "eu-west-1"
},
"operatingSystem": "Debian",
"operatingSystemVersion": {
"id": 5,
"name": "8.7",
"type": "64"
}
},
{
"id": 6,
"name": "CentOS 7.2",
"externalId": "ami-8f62ece0",
"region": {
"id": 2,
"name": "eu-central-1"
},
"operatingSystem": "CentOS",
"operatingSystemVersion": {
"id": 4,
"name": "7.2",
"type": "64"
}
},
{
"id": 7,
"name": "Ubuntu 14.04",
"externalId": "ami-f7b32a98",
"region": {
"id": 2,
"name": "eu-central-1"
},
"operatingSystem": "Ubuntu",
"operatingSystemVersion": {
"id": 2,
"name": "14.04 LTS",
"type": "64"
}
},
{
"id": 8,
"name": "Ubuntu 16.04",
"externalId": "ami-5055cd3f",
"region": {
"id": 2,
"name": "eu-central-1"
},
"operatingSystem": "Ubuntu",
"operatingSystemVersion": {
"id": 3,
"name": "16.04 LTS",
"type": "64"
}
},
{
"id": 9,
"name": "Ubuntu 17.04",
"externalId": "ami-daba31b5",
"region": {
"id": 2,
"name": "eu-central-1"
},
"operatingSystem": "Ubuntu",
"operatingSystemVersion": {
"id": 6,
"name": "17.04",
"type": "64"
}
},
{
"id": 10,
"name": "Debian 8.7",
"externalId": "ami-5900cc36",
"region": {
"id": 2,
"name": "eu-central-1"
},
"operatingSystem": "Debian",
"operatingSystemVersion": {
"id": 5,
"name": "8.7",
"type": "64"
}
},
{
"id": 43,
"name": "Debian 8",
"externalId": "ami-402f1a33",
"region": {
"id": 1,
"name": "eu-west-1"
},
"operatingSystem": "Debian",
"operatingSystemVersion": {
"id": 7,
"name": "8",
"type": "64"
}
},
{
"id": 44,
"name": "Debian 9",
"externalId": "ami-867ceaff",
"region": {
"id": 1,
"name": "eu-west-1"
},
"operatingSystem": "Debian",
"operatingSystemVersion": {
"id": 8,
"name": "9",
"type": "64"
}
},
{
"id": 45,
"name": "Debian 8",
"externalId": "ami-5900cc36",
"region": {
"id": 2,
"name": "eu-central-1"
},
"operatingSystem": "Debian",
"operatingSystemVersion": {
"id": 7,
"name": "8",
"type": "64"
}
},
{
"id": 46,
"name": "Debian 9",
"externalId": "ami-b58f1cda",
"region": {
"id": 2,
"name": "eu-central-1"
},
"operatingSystem": "Debian",
"operatingSystemVersion": {
"id": 8,
"name": "9",
"type": "64"
}
}
]
},
{
"id": 4,
"name": "Digital Ocean",
"api": "digitalocean",
"advancedNetworking": false,
"icon": "",
"images": [
{
"id": 11,
"name": "Ubuntu 12.04",
"externalId": "ubuntu-12-04-x64",
"region": {
"id": 3,
"name": "nyc"
},
"operatingSystem": "Ubuntu",
"operatingSystemVersion": {
"id": 1,
"name": "12.04 LTS",
"type": "64"
}
},
{
"id": 12,
"name": "Ubuntu 14.04",
"externalId": "ubuntu-14-04-x64",
"region": {
"id": 3,
"name": "nyc"
},
"operatingSystem": "Ubuntu",
"operatingSystemVersion": {
"id": 2,
"name": "14.04 LTS",
"type": "64"
}
},
{
"id": 13,
"name": "Ubuntu 16.04",
"externalId": "ubuntu-16-04-x64",
"region": {
"id": 3,
"name": "nyc"
},
"operatingSystem": "Ubuntu",
"operatingSystemVersion": {
"id": 3,
"name": "16.04 LTS",
"type": "64"
}
},
{
"id": 14,
"name": "Ubuntu 17.04",
"externalId": "ubuntu-17-04-x64",
"region": {
"id": 3,
"name": "nyc"
},
"operatingSystem": "Ubuntu",
"operatingSystemVersion": {
"id": 6,
"name": "17.04",
"type": "64"
}
},
{
"id": 15,
"name": "Ubuntu 12.04",
"externalId": "ubuntu-12-04-x64",
"region": {
"id": 4,
"name": "sfo"
},
"operatingSystem": "Ubuntu",
"operatingSystemVersion": {
"id": 1,
"name": "12.04 LTS",
"type": "64"
}
},
{
"id": 16,
"name": "Ubuntu 14.04",
"externalId": "ubuntu-14-04-x64",
"region": {
"id": 4,
"name": "sfo"
},
"operatingSystem": "Ubuntu",
"operatingSystemVersion": {
"id": 2,
"name": "14.04 LTS",
"type": "64"
}
},
{
"id": 17,
"name": "Ubuntu 16.04",
"externalId": "ubuntu-16-04-x64",
"region": {
"id": 4,
"name": "sfo"
},
"operatingSystem": "Ubuntu",
"operatingSystemVersion": {
"id": 3,
"name": "16.04 LTS",
"type": "64"
}
},
{
"id": 18,
"name": "Ubuntu 17.04",
"externalId": "ubuntu-17-04-x64",
"region": {
"id": 4,
"name": "sfo"
},
"operatingSystem": "Ubuntu",
"operatingSystemVersion": {
"id": 6,
"name": "17.04",
"type": "64"
}
},
{
"id": 19,
"name": "Ubuntu 12.04",
"externalId": "ubuntu-12-04-x64",
"region": {
"id": 5,
"name": "ams"
},
"operatingSystem": "Ubuntu",
"operatingSystemVersion": {
"id": 1,
"name": "12.04 LTS",
"type": "64"
}
},
{
"id": 20,
"name": "Ubuntu 14.04",
"externalId": "ubuntu-14-04-x64",
"region": {
"id": 5,
"name": "ams"
},
"operatingSystem": "Ubuntu",
"operatingSystemVersion": {
"id": 2,
"name": "14.04 LTS",
"type": "64"
}
},
{
"id": 21,
"name": "Ubuntu 16.04",
"externalId": "ubuntu-16-04-x64",
"region": {
"id": 5,
"name": "ams"
},
"operatingSystem": "Ubuntu",
"operatingSystemVersion": {
"id": 3,
"name": "16.04 LTS",
"type": "64"
}
},
{
"id": 22,
"name": "Ubuntu 17.04",
"externalId": "ubuntu-17-04-x64",
"region": {
"id": 5,
"name": "ams"
},
"operatingSystem": "Ubuntu",
"operatingSystemVersion": {
"id": 6,
"name": "17.04",
"type": "64"
}
},
{
"id": 23,
"name": "Ubuntu 12.04",
"externalId": "ubuntu-12-04-x64",
"region": {
"id": 6,
"name": "fra"
},
"operatingSystem": "Ubuntu",
"operatingSystemVersion": {
"id": 1,
"name": "12.04 LTS",
"type": "64"
}
},
{
"id": 24,
"name": "Ubuntu 14.04",
"externalId": "ubuntu-14-04-x64",
"region": {
"id": 6,
"name": "fra"
},
"operatingSystem": "Ubuntu",
"operatingSystemVersion": {
"id": 2,
"name": "14.04 LTS",
"type": "64"
}
},
{
"id": 25,
"name": "Ubuntu 16.04",
"externalId": "ubuntu-16-04-x64",
"region": {
"id": 6,
"name": "fra"
},
"operatingSystem": "Ubuntu",
"operatingSystemVersion": {
"id": 3,
"name": "16.04 LTS",
"type": "64"
}
},
{
"id": 26,
"name": "Ubuntu 17.04",
"externalId": "ubuntu-17-04-x64",
"region": {
"id": 6,
"name": "fra"
},
"operatingSystem": "Ubuntu",
"operatingSystemVersion": {
"id": 6,
"name": "17.04",
"type": "64"
}
},
{
"id": 27,
"name": "Ubuntu 12.04",
"externalId": "ubuntu-12-04-x64",
"region": {
"id": 7,
"name": "sgp"
},
"operatingSystem": "Ubuntu",
"operatingSystemVersion": {
"id": 1,
"name": "12.04 LTS",
"type": "64"
}
},
{
"id": 28,
"name": "Ubuntu 14.04",
"externalId": "ubuntu-14-04-x64",
"region": {
"id": 7,
"name": "sgp"
},
"operatingSystem": "Ubuntu",
"operatingSystemVersion": {
"id": 2,
"name": "14.04 LTS",
"type": "64"
}
},
{
"id": 29,
"name": "Ubuntu 16.04",
"externalId": "ubuntu-16-04-x64",
"region": {
"id": 7,
"name": "sgp"
},
"operatingSystem": "Ubuntu",
"operatingSystemVersion": {
"id": 3,
"name": "16.04 LTS",
"type": "64"
}
},
{
"id": 30,
"name": "Ubuntu 17.04",
"externalId": "ubuntu-17-04-x64",
"region": {
"id": 7,
"name": "sgp"
},
"operatingSystem": "Ubuntu",
"operatingSystemVersion": {
"id": 6,
"name": "17.04",
"type": "64"
}
},
{
"id": 31,
"name": "Ubuntu 12.04",
"externalId": "ubuntu-12-04-x64",
"region": {
"id": 8,
"name": "blr"
},
"operatingSystem": "Ubuntu",
"operatingSystemVersion": {
"id": 1,
"name": "12.04 LTS",
"type": "64"
}
},
{
"id": 32,
"name": "Ubuntu 14.04",
"externalId": "ubuntu-14-04-x64",
"region": {
"id": 8,
"name": "blr"
},
"operatingSystem": "Ubuntu",
"operatingSystemVersion": {
"id": 2,
"name": "14.04 LTS",
"type": "64"
}
},
{
"id": 33,
"name": "Ubuntu 16.04",
"externalId": "ubuntu-16-04-x64",
"region": {
"id": 8,
"name": "blr"
},
"operatingSystem": "Ubuntu",
"operatingSystemVersion": {
"id": 3,
"name": "16.04 LTS",
"type": "64"
}
},
{
"id": 34,
"name": "Ubuntu 17.04",
"externalId": "ubuntu-17-04-x64",
"region": {
"id": 8,
"name": "blr"
},
"operatingSystem": "Ubuntu",
"operatingSystemVersion": {
"id": 6,
"name": "17.04",
"type": "64"
}
},
{
"id": 35,
"name": "Ubuntu 12.04",
"externalId": "ubuntu-12-04-x64",
"region": {
"id": 9,
"name": "tor"
},
"operatingSystem": "Ubuntu",
"operatingSystemVersion": {
"id": 1,
"name": "12.04 LTS",
"type": "64"
}
},
{
"id": 36,
"name": "Ubuntu 14.04",
"externalId": "ubuntu-14-04-x64",
"region": {
"id": 9,
"name": "tor"
},
"operatingSystem": "Ubuntu",
"operatingSystemVersion": {
"id": 2,
"name": "14.04 LTS",
"type": "64"
}
},
{
"id": 37,
"name": "Ubuntu 16.04",
"externalId": "ubuntu-16-04-x64",
"region": {
"id": 9,
"name": "tor"
},
"operatingSystem": "Ubuntu",
"operatingSystemVersion": {
"id": 3,
"name": "16.04 LTS",
"type": "64"
}
},
{
"id": 38,
"name": "Ubuntu 17.04",
"externalId": "ubuntu-17-04-x64",
"region": {
"id": 9,
"name": "tor"
},
"operatingSystem": "Ubuntu",
"operatingSystemVersion": {
"id": 6,
"name": "17.04",
"type": "64"
}
},
{
"id": 39,
"name": "Ubuntu 12.04",
"externalId": "ubuntu-12-04-x64",
"region": {
"id": 10,
"name": "lon"
},
"operatingSystem": "Ubuntu",
"operatingSystemVersion": {
"id": 1,
"name": "12.04 LTS",
"type": "64"
}
},
{
"id": 40,
"name": "Ubuntu 14.04",
"externalId": "ubuntu-14-04-x64",
"region": {
"id": 10,
"name": "lon"
},
"operatingSystem": "Ubuntu",
"operatingSystemVersion": {
"id": 2,
"name": "14.04 LTS",
"type": "64"
}
},
{
"id": 41,
"name": "Ubuntu 16.04",
"externalId": "ubuntu-16-04-x64",
"region": {
"id": 10,
"name": "lon"
},
"operatingSystem": "Ubuntu",
"operatingSystemVersion": {
"id": 3,
"name": "16.04 LTS",
"type": "64"
}
},
{
"id": 42,
"name": "Ubuntu 17.04",
"externalId": "ubuntu-17-04-x64",
"region": {
"id": 10,
"name": "lon"
},
"operatingSystem": "Ubuntu",
"operatingSystemVersion": {
"id": 6,
"name": "17.04",
"type": "64"
}
}
]
}
]
}
Get available system provider configurations
get /systems/provider/configurations
Get available system provider configurations
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"providerConfigurations": [
{
"id": 1,
"minCpu": 1,
"maxCpu": 1,
"minMemory": "1.0",
"maxMemory": "1.0",
"minDisk": 10,
"maxDisk": 1000,
"status": 10,
"externalId": "t2.micro",
"name": "Amazon t2.micro",
"description": "General purpose T2 family",
"systemprovider": {
"id": 3,
"name": "Amazon EC2"
}
},
{
"id": 2,
"minCpu": 1,
"maxCpu": 1,
"minMemory": "2.0",
"maxMemory": "2.0",
"minDisk": 20,
"maxDisk": 1000,
"status": 10,
"externalId": "t2.small",
"name": "Amazon t2.small",
"description": "General purpose T2 family",
"systemprovider": {
"id": 3,
"name": "Amazon EC2"
}
},
{
"id": 3,
"minCpu": 2,
"maxCpu": 2,
"minMemory": "4.0",
"maxMemory": "4.0",
"minDisk": 20,
"maxDisk": 1000,
"status": 10,
"externalId": "t2.medium",
"name": "Amazon t2.medium",
"description": "General purpose T2 family",
"systemprovider": {
"id": 3,
"name": "Amazon EC2"
}
},
{
"id": 4,
"minCpu": 2,
"maxCpu": 2,
"minMemory": "8.0",
"maxMemory": "8.0",
"minDisk": 20,
"maxDisk": 1000,
"status": 10,
"externalId": "t2.large",
"name": "Amazon t2.large",
"description": "General purpose T2 family",
"systemprovider": {
"id": 3,
"name": "Amazon EC2"
}
},
{
"id": 5,
"minCpu": 1,
"maxCpu": 1,
"minMemory": "1.0",
"maxMemory": "1.0",
"minDisk": 30,
"maxDisk": 30,
"status": 10,
"externalId": "1gb",
"name": "1gb",
"description": "Digital Ocean 1 GB",
"systemprovider": {
"id": 4,
"name": "Digital Ocean"
}
},
{
"id": 6,
"minCpu": 2,
"maxCpu": 2,
"minMemory": "2.0",
"maxMemory": "2.0",
"minDisk": 40,
"maxDisk": 40,
"status": 10,
"externalId": "2gb",
"name": "2gb",
"description": "Digital Ocean 2 GB",
"systemprovider": {
"id": 4,
"name": "Digital Ocean"
}
},
{
"id": 7,
"minCpu": 2,
"maxCpu": 2,
"minMemory": "4.0",
"maxMemory": "4.0",
"minDisk": 60,
"maxDisk": 60,
"status": 10,
"externalId": "4gb",
"name": "4gb",
"description": "Digital Ocean 4 GB",
"systemprovider": {
"id": 4,
"name": "Digital Ocean"
}
},
{
"id": 8,
"minCpu": 4,
"maxCpu": 4,
"minMemory": "8.0",
"maxMemory": "8.0",
"minDisk": 80,
"maxDisk": 80,
"status": 10,
"externalId": "8gb",
"name": "8gb",
"description": "Digital Ocean 8 GB",
"systemprovider": {
"id": 4,
"name": "Digital Ocean"
}
},
{
"id": 9,
"minCpu": 8,
"maxCpu": 8,
"minMemory": "16.0",
"maxMemory": "16.0",
"minDisk": 160,
"maxDisk": 160,
"status": 10,
"externalId": "16gb",
"name": "16gb",
"description": "Digital Ocean 16 GB",
"systemprovider": {
"id": 4,
"name": "Digital Ocean"
}
},
{
"id": 10,
"minCpu": 12,
"maxCpu": 12,
"minMemory": "32.0",
"maxMemory": "32.0",
"minDisk": 320,
"maxDisk": 320,
"status": 10,
"externalId": "32gb",
"name": "32gb",
"description": "Digital Ocean 32 GB",
"systemprovider": {
"id": 4,
"name": "Digital Ocean"
}
},
{
"id": 11,
"minCpu": 16,
"maxCpu": 16,
"minMemory": "48.0",
"maxMemory": "48.0",
"minDisk": 480,
"maxDisk": 480,
"status": 10,
"externalId": "48gb",
"name": "48gb",
"description": "Digital Ocean 48 GB",
"systemprovider": {
"id": 4,
"name": "Digital Ocean"
}
},
{
"id": 12,
"minCpu": 20,
"maxCpu": 20,
"minMemory": "64.0",
"maxMemory": "64.0",
"minDisk": 640,
"maxDisk": 640,
"status": 10,
"externalId": "64gb",
"name": "64gb",
"description": "Digital Ocean 64 GB",
"systemprovider": {
"id": 4,
"name": "Digital Ocean"
}
}
]
}
Get available regions
get /systems/regions
Get available regions
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"regions": [
{
"id": 5,
"name": "ams",
"country": {
"id": "NL",
"name": "Netherlands"
},
"zones": [
{
"id": 12,
"name": "ams2",
"shortName": "2"
},
{
"id": 13,
"name": "ams3",
"shortName": "3"
}
]
},
{
"id": 8,
"name": "blr",
"country": {
"id": "BY",
"name": "Belarus"
},
"zones": [
{
"id": 16,
"name": "blr1",
"shortName": "1"
}
]
},
{
"id": 2,
"name": "eu-central-1",
"country": {
"id": "DE",
"name": "Germany"
},
"zones": [
{
"id": 4,
"name": "eu-central-1a",
"shortName": "a"
},
{
"id": 5,
"name": "eu-central-1b",
"shortName": "b"
},
{
"id": 6,
"name": "eu-central-1c",
"shortName": "c"
}
]
},
{
"id": 1,
"name": "eu-west-1",
"country": {
"id": "IE",
"name": "Ireland"
},
"zones": [
{
"id": 1,
"name": "eu-west-1a",
"shortName": "a"
},
{
"id": 2,
"name": "eu-west-1b",
"shortName": "b"
},
{
"id": 3,
"name": "eu-west-1c",
"shortName": "c"
}
]
},
{
"id": 6,
"name": "fra",
"country": {
"id": "DE",
"name": "Germany"
},
"zones": [
{
"id": 14,
"name": "fra1",
"shortName": "1"
}
]
},
{
"id": 10,
"name": "lon",
"country": {
"id": "GB",
"name": "United Kingdom"
},
"zones": [
{
"id": 18,
"name": "lon1",
"shortName": "1"
}
]
},
{
"id": 3,
"name": "nyc",
"country": {
"id": "US",
"name": "United States"
},
"zones": [
{
"id": 7,
"name": "nyc1",
"shortName": "1"
},
{
"id": 8,
"name": "nyc2",
"shortName": "2"
},
{
"id": 9,
"name": "nyc3",
"shortName": "3"
}
]
},
{
"id": 4,
"name": "sfo",
"country": {
"id": "US",
"name": "United States"
},
"zones": [
{
"id": 10,
"name": "sfo1",
"shortName": "1"
},
{
"id": 11,
"name": "sfo2",
"shortName": "2"
}
]
},
{
"id": 7,
"name": "sgp",
"country": {
"id": "SG",
"name": "Singapore"
},
"zones": [
{
"id": 15,
"name": "sgp1",
"shortName": "1"
}
]
},
{
"id": 9,
"name": "tor",
"country": {
"id": "CA",
"name": "Canada"
},
"zones": [
{
"id": 17,
"name": "tor1",
"shortName": "1"
}
]
}
]
}
Get available operating systems
get /systems/operatingsystems
Get available operating systems
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"operatingSystems": [
{
"id": 2,
"name": "CentOS",
"type": "linux",
"versions": [
{
"id": 4,
"version": "7.2",
"type": "64"
}
]
},
{
"id": 3,
"name": "Debian",
"type": "linux",
"versions": [
{
"id": 5,
"version": "8.7",
"type": "64"
},
{
"id": 7,
"version": "8",
"type": "64"
},
{
"id": 8,
"version": "9",
"type": "64"
}
]
},
{
"id": 1,
"name": "Ubuntu",
"type": "linux",
"versions": [
{
"id": 1,
"version": "12.04 LTS",
"type": "64"
},
{
"id": 2,
"version": "14.04 LTS",
"type": "64"
},
{
"id": 3,
"version": "16.04 LTS",
"type": "64"
},
{
"id": 6,
"version": "17.04",
"type": "64"
}
]
}
]
}
Find system configurations
post /systems/configurations
Find system configurations
Body
Media type: application/json
Type: object
Properties- providers: required(object)
Array of providers ids
- disk: (object)
Minimum and maximum disk space (defaults - min: 0.1, max: 1000000000)
- cpu: (object)
Minimum and maximum cpu (defaults - min: 0.1, max: 1000000000)
- memory: (object)
Minimum and maximum memory (defaults - min: 0.1, max: 1000000000)
- offset: (integer)
Offset (default
- limit: (integer)
Limit (default
Example:
{
"providers": [
3,
4
],
"disk": {
"min": null,
"max": 50
},
"cpu": {
"min": null,
"max": 2
},
"memory": {
"min": null,
"max": 2
},
"offset": 0,
"limit": 100
}
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"data": [
{
"id": 1,
"cpu": 1,
"memory": "1.0",
"disk": 10,
"config": {
"id": 1,
"minCpu": 1,
"maxCpu": 1,
"minMemory": "1.0",
"maxMemory": "1.0",
"minDisk": 10,
"maxDisk": 1000,
"externalId": "t2.micro",
"name": "Amazon t2.micro",
"description": "General purpose T2 family"
},
"provider": {
"id": 3,
"api": "ec2",
"name": "Amazon EC2",
"icon": "",
"systemimages": [
{
"id": 1,
"name": "CentOS 7.2",
"externalId": "ami-147fc16d",
"region": {
"id": 1,
"name": "eu-west-1",
"country": {
"id": "IE",
"name": "IE"
},
"zones": [
{
"id": 1,
"name": "eu-west-1a",
"shortName": "a"
},
{
"id": 2,
"name": "eu-west-1b",
"shortName": "b"
},
{
"id": 3,
"name": "eu-west-1c",
"shortName": "c"
}
]
},
"operatingsystemVersion": {
"id": 4,
"version": "7.2",
"type": "64",
"operatingsystem": {
"id": 2,
"name": "CentOS",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_t2.micro_linux",
"description": "General purpose T2 family",
"prices": [
{
"id": 1502,
"period": 1,
"currency": "EUR",
"price": "878",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1503,
"period": 12,
"currency": "EUR",
"price": "10530",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1504,
"period": 36,
"currency": "EUR",
"price": "31590",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_datatransfer",
"description": "AWS data transfer estimated price",
"prices": [
{
"id": 1514,
"period": 1,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1515,
"period": 12,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1516,
"period": 36,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_disk",
"description": "AWS EBS volume per GB",
"prices": [
{
"id": 1517,
"period": 1,
"currency": "EUR",
"price": "11",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1518,
"period": 12,
"currency": "EUR",
"price": "132",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1519,
"period": 36,
"currency": "EUR",
"price": "396",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 2,
"name": "Ubuntu 14.04",
"externalId": "ami-a6b7d3df",
"region": {
"id": 1,
"name": "eu-west-1",
"country": {
"id": "IE",
"name": "IE"
},
"zones": [
{
"id": 1,
"name": "eu-west-1a",
"shortName": "a"
},
{
"id": 2,
"name": "eu-west-1b",
"shortName": "b"
},
{
"id": 3,
"name": "eu-west-1c",
"shortName": "c"
}
]
},
"operatingsystemVersion": {
"id": 2,
"version": "14.04 LTS",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_t2.micro_linux",
"description": "General purpose T2 family",
"prices": [
{
"id": 1502,
"period": 1,
"currency": "EUR",
"price": "878",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1503,
"period": 12,
"currency": "EUR",
"price": "10530",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1504,
"period": 36,
"currency": "EUR",
"price": "31590",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_datatransfer",
"description": "AWS data transfer estimated price",
"prices": [
{
"id": 1514,
"period": 1,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1515,
"period": 12,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1516,
"period": 36,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_disk",
"description": "AWS EBS volume per GB",
"prices": [
{
"id": 1517,
"period": 1,
"currency": "EUR",
"price": "11",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1518,
"period": 12,
"currency": "EUR",
"price": "132",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1519,
"period": 36,
"currency": "EUR",
"price": "396",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 3,
"name": "Ubuntu 16.04",
"externalId": "ami-1b791862",
"region": {
"id": 1,
"name": "eu-west-1",
"country": {
"id": "IE",
"name": "IE"
},
"zones": [
{
"id": 1,
"name": "eu-west-1a",
"shortName": "a"
},
{
"id": 2,
"name": "eu-west-1b",
"shortName": "b"
},
{
"id": 3,
"name": "eu-west-1c",
"shortName": "c"
}
]
},
"operatingsystemVersion": {
"id": 3,
"version": "16.04 LTS",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_t2.micro_linux",
"description": "General purpose T2 family",
"prices": [
{
"id": 1502,
"period": 1,
"currency": "EUR",
"price": "878",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1503,
"period": 12,
"currency": "EUR",
"price": "10530",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1504,
"period": 36,
"currency": "EUR",
"price": "31590",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_datatransfer",
"description": "AWS data transfer estimated price",
"prices": [
{
"id": 1514,
"period": 1,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1515,
"period": 12,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1516,
"period": 36,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_disk",
"description": "AWS EBS volume per GB",
"prices": [
{
"id": 1517,
"period": 1,
"currency": "EUR",
"price": "11",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1518,
"period": 12,
"currency": "EUR",
"price": "132",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1519,
"period": 36,
"currency": "EUR",
"price": "396",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 4,
"name": "Ubuntu 17.04",
"externalId": "ami-94b236ed",
"region": {
"id": 1,
"name": "eu-west-1",
"country": {
"id": "IE",
"name": "IE"
},
"zones": [
{
"id": 1,
"name": "eu-west-1a",
"shortName": "a"
},
{
"id": 2,
"name": "eu-west-1b",
"shortName": "b"
},
{
"id": 3,
"name": "eu-west-1c",
"shortName": "c"
}
]
},
"operatingsystemVersion": {
"id": 6,
"version": "17.04",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_t2.micro_linux",
"description": "General purpose T2 family",
"prices": [
{
"id": 1502,
"period": 1,
"currency": "EUR",
"price": "878",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1503,
"period": 12,
"currency": "EUR",
"price": "10530",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1504,
"period": 36,
"currency": "EUR",
"price": "31590",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_datatransfer",
"description": "AWS data transfer estimated price",
"prices": [
{
"id": 1514,
"period": 1,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1515,
"period": 12,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1516,
"period": 36,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_disk",
"description": "AWS EBS volume per GB",
"prices": [
{
"id": 1517,
"period": 1,
"currency": "EUR",
"price": "11",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1518,
"period": 12,
"currency": "EUR",
"price": "132",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1519,
"period": 36,
"currency": "EUR",
"price": "396",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 5,
"name": "Debian 8.7",
"externalId": "ami-402f1a33",
"region": {
"id": 1,
"name": "eu-west-1",
"country": {
"id": "IE",
"name": "IE"
},
"zones": [
{
"id": 1,
"name": "eu-west-1a",
"shortName": "a"
},
{
"id": 2,
"name": "eu-west-1b",
"shortName": "b"
},
{
"id": 3,
"name": "eu-west-1c",
"shortName": "c"
}
]
},
"operatingsystemVersion": {
"id": 5,
"version": "8.7",
"type": "64",
"operatingsystem": {
"id": 3,
"name": "Debian",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_t2.micro_linux",
"description": "General purpose T2 family",
"prices": [
{
"id": 1502,
"period": 1,
"currency": "EUR",
"price": "878",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1503,
"period": 12,
"currency": "EUR",
"price": "10530",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1504,
"period": 36,
"currency": "EUR",
"price": "31590",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_datatransfer",
"description": "AWS data transfer estimated price",
"prices": [
{
"id": 1514,
"period": 1,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1515,
"period": 12,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1516,
"period": 36,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_disk",
"description": "AWS EBS volume per GB",
"prices": [
{
"id": 1517,
"period": 1,
"currency": "EUR",
"price": "11",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1518,
"period": 12,
"currency": "EUR",
"price": "132",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1519,
"period": 36,
"currency": "EUR",
"price": "396",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 6,
"name": "CentOS 7.2",
"externalId": "ami-8f62ece0",
"region": {
"id": 2,
"name": "eu-central-1",
"country": {
"id": "DE",
"name": "DE"
},
"zones": [
{
"id": 4,
"name": "eu-central-1a",
"shortName": "a"
},
{
"id": 5,
"name": "eu-central-1b",
"shortName": "b"
},
{
"id": 6,
"name": "eu-central-1c",
"shortName": "c"
}
]
},
"operatingsystemVersion": {
"id": 4,
"version": "7.2",
"type": "64",
"operatingsystem": {
"id": 2,
"name": "CentOS",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_t2.micro_linux",
"description": "General purpose T2 family",
"prices": [
{
"id": 1502,
"period": 1,
"currency": "EUR",
"price": "878",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1503,
"period": 12,
"currency": "EUR",
"price": "10530",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1504,
"period": 36,
"currency": "EUR",
"price": "31590",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_datatransfer",
"description": "AWS data transfer estimated price",
"prices": [
{
"id": 1514,
"period": 1,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1515,
"period": 12,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1516,
"period": 36,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_disk",
"description": "AWS EBS volume per GB",
"prices": [
{
"id": 1517,
"period": 1,
"currency": "EUR",
"price": "11",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1518,
"period": 12,
"currency": "EUR",
"price": "132",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1519,
"period": 36,
"currency": "EUR",
"price": "396",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 7,
"name": "Ubuntu 14.04",
"externalId": "ami-f7b32a98",
"region": {
"id": 2,
"name": "eu-central-1",
"country": {
"id": "DE",
"name": "DE"
},
"zones": [
{
"id": 4,
"name": "eu-central-1a",
"shortName": "a"
},
{
"id": 5,
"name": "eu-central-1b",
"shortName": "b"
},
{
"id": 6,
"name": "eu-central-1c",
"shortName": "c"
}
]
},
"operatingsystemVersion": {
"id": 2,
"version": "14.04 LTS",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_t2.micro_linux",
"description": "General purpose T2 family",
"prices": [
{
"id": 1502,
"period": 1,
"currency": "EUR",
"price": "878",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1503,
"period": 12,
"currency": "EUR",
"price": "10530",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1504,
"period": 36,
"currency": "EUR",
"price": "31590",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_datatransfer",
"description": "AWS data transfer estimated price",
"prices": [
{
"id": 1514,
"period": 1,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1515,
"period": 12,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1516,
"period": 36,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_disk",
"description": "AWS EBS volume per GB",
"prices": [
{
"id": 1517,
"period": 1,
"currency": "EUR",
"price": "11",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1518,
"period": 12,
"currency": "EUR",
"price": "132",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1519,
"period": 36,
"currency": "EUR",
"price": "396",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 8,
"name": "Ubuntu 16.04",
"externalId": "ami-5055cd3f",
"region": {
"id": 2,
"name": "eu-central-1",
"country": {
"id": "DE",
"name": "DE"
},
"zones": [
{
"id": 4,
"name": "eu-central-1a",
"shortName": "a"
},
{
"id": 5,
"name": "eu-central-1b",
"shortName": "b"
},
{
"id": 6,
"name": "eu-central-1c",
"shortName": "c"
}
]
},
"operatingsystemVersion": {
"id": 3,
"version": "16.04 LTS",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_t2.micro_linux",
"description": "General purpose T2 family",
"prices": [
{
"id": 1502,
"period": 1,
"currency": "EUR",
"price": "878",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1503,
"period": 12,
"currency": "EUR",
"price": "10530",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1504,
"period": 36,
"currency": "EUR",
"price": "31590",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_datatransfer",
"description": "AWS data transfer estimated price",
"prices": [
{
"id": 1514,
"period": 1,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1515,
"period": 12,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1516,
"period": 36,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_disk",
"description": "AWS EBS volume per GB",
"prices": [
{
"id": 1517,
"period": 1,
"currency": "EUR",
"price": "11",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1518,
"period": 12,
"currency": "EUR",
"price": "132",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1519,
"period": 36,
"currency": "EUR",
"price": "396",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 9,
"name": "Ubuntu 17.04",
"externalId": "ami-daba31b5",
"region": {
"id": 2,
"name": "eu-central-1",
"country": {
"id": "DE",
"name": "DE"
},
"zones": [
{
"id": 4,
"name": "eu-central-1a",
"shortName": "a"
},
{
"id": 5,
"name": "eu-central-1b",
"shortName": "b"
},
{
"id": 6,
"name": "eu-central-1c",
"shortName": "c"
}
]
},
"operatingsystemVersion": {
"id": 6,
"version": "17.04",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_t2.micro_linux",
"description": "General purpose T2 family",
"prices": [
{
"id": 1502,
"period": 1,
"currency": "EUR",
"price": "878",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1503,
"period": 12,
"currency": "EUR",
"price": "10530",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1504,
"period": 36,
"currency": "EUR",
"price": "31590",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_datatransfer",
"description": "AWS data transfer estimated price",
"prices": [
{
"id": 1514,
"period": 1,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1515,
"period": 12,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1516,
"period": 36,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_disk",
"description": "AWS EBS volume per GB",
"prices": [
{
"id": 1517,
"period": 1,
"currency": "EUR",
"price": "11",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1518,
"period": 12,
"currency": "EUR",
"price": "132",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1519,
"period": 36,
"currency": "EUR",
"price": "396",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 10,
"name": "Debian 8.7",
"externalId": "ami-5900cc36",
"region": {
"id": 2,
"name": "eu-central-1",
"country": {
"id": "DE",
"name": "DE"
},
"zones": [
{
"id": 4,
"name": "eu-central-1a",
"shortName": "a"
},
{
"id": 5,
"name": "eu-central-1b",
"shortName": "b"
},
{
"id": 6,
"name": "eu-central-1c",
"shortName": "c"
}
]
},
"operatingsystemVersion": {
"id": 5,
"version": "8.7",
"type": "64",
"operatingsystem": {
"id": 3,
"name": "Debian",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_t2.micro_linux",
"description": "General purpose T2 family",
"prices": [
{
"id": 1502,
"period": 1,
"currency": "EUR",
"price": "878",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1503,
"period": 12,
"currency": "EUR",
"price": "10530",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1504,
"period": 36,
"currency": "EUR",
"price": "31590",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_datatransfer",
"description": "AWS data transfer estimated price",
"prices": [
{
"id": 1514,
"period": 1,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1515,
"period": 12,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1516,
"period": 36,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_disk",
"description": "AWS EBS volume per GB",
"prices": [
{
"id": 1517,
"period": 1,
"currency": "EUR",
"price": "11",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1518,
"period": 12,
"currency": "EUR",
"price": "132",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1519,
"period": 36,
"currency": "EUR",
"price": "396",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 43,
"name": "Debian 8",
"externalId": "ami-402f1a33",
"region": {
"id": 1,
"name": "eu-west-1",
"country": {
"id": "IE",
"name": "IE"
},
"zones": [
{
"id": 1,
"name": "eu-west-1a",
"shortName": "a"
},
{
"id": 2,
"name": "eu-west-1b",
"shortName": "b"
},
{
"id": 3,
"name": "eu-west-1c",
"shortName": "c"
}
]
},
"operatingsystemVersion": {
"id": 7,
"version": "8",
"type": "64",
"operatingsystem": {
"id": 3,
"name": "Debian",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_t2.micro_linux",
"description": "General purpose T2 family",
"prices": [
{
"id": 1502,
"period": 1,
"currency": "EUR",
"price": "878",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1503,
"period": 12,
"currency": "EUR",
"price": "10530",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1504,
"period": 36,
"currency": "EUR",
"price": "31590",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_datatransfer",
"description": "AWS data transfer estimated price",
"prices": [
{
"id": 1514,
"period": 1,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1515,
"period": 12,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1516,
"period": 36,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_disk",
"description": "AWS EBS volume per GB",
"prices": [
{
"id": 1517,
"period": 1,
"currency": "EUR",
"price": "11",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1518,
"period": 12,
"currency": "EUR",
"price": "132",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1519,
"period": 36,
"currency": "EUR",
"price": "396",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 44,
"name": "Debian 9",
"externalId": "ami-867ceaff",
"region": {
"id": 1,
"name": "eu-west-1",
"country": {
"id": "IE",
"name": "IE"
},
"zones": [
{
"id": 1,
"name": "eu-west-1a",
"shortName": "a"
},
{
"id": 2,
"name": "eu-west-1b",
"shortName": "b"
},
{
"id": 3,
"name": "eu-west-1c",
"shortName": "c"
}
]
},
"operatingsystemVersion": {
"id": 8,
"version": "9",
"type": "64",
"operatingsystem": {
"id": 3,
"name": "Debian",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_t2.micro_linux",
"description": "General purpose T2 family",
"prices": [
{
"id": 1502,
"period": 1,
"currency": "EUR",
"price": "878",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1503,
"period": 12,
"currency": "EUR",
"price": "10530",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1504,
"period": 36,
"currency": "EUR",
"price": "31590",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_datatransfer",
"description": "AWS data transfer estimated price",
"prices": [
{
"id": 1514,
"period": 1,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1515,
"period": 12,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1516,
"period": 36,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_disk",
"description": "AWS EBS volume per GB",
"prices": [
{
"id": 1517,
"period": 1,
"currency": "EUR",
"price": "11",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1518,
"period": 12,
"currency": "EUR",
"price": "132",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1519,
"period": 36,
"currency": "EUR",
"price": "396",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 45,
"name": "Debian 8",
"externalId": "ami-5900cc36",
"region": {
"id": 2,
"name": "eu-central-1",
"country": {
"id": "DE",
"name": "DE"
},
"zones": [
{
"id": 4,
"name": "eu-central-1a",
"shortName": "a"
},
{
"id": 5,
"name": "eu-central-1b",
"shortName": "b"
},
{
"id": 6,
"name": "eu-central-1c",
"shortName": "c"
}
]
},
"operatingsystemVersion": {
"id": 7,
"version": "8",
"type": "64",
"operatingsystem": {
"id": 3,
"name": "Debian",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_t2.micro_linux",
"description": "General purpose T2 family",
"prices": [
{
"id": 1502,
"period": 1,
"currency": "EUR",
"price": "878",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1503,
"period": 12,
"currency": "EUR",
"price": "10530",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1504,
"period": 36,
"currency": "EUR",
"price": "31590",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_datatransfer",
"description": "AWS data transfer estimated price",
"prices": [
{
"id": 1514,
"period": 1,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1515,
"period": 12,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1516,
"period": 36,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_disk",
"description": "AWS EBS volume per GB",
"prices": [
{
"id": 1517,
"period": 1,
"currency": "EUR",
"price": "11",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1518,
"period": 12,
"currency": "EUR",
"price": "132",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1519,
"period": 36,
"currency": "EUR",
"price": "396",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 46,
"name": "Debian 9",
"externalId": "ami-b58f1cda",
"region": {
"id": 2,
"name": "eu-central-1",
"country": {
"id": "DE",
"name": "DE"
},
"zones": [
{
"id": 4,
"name": "eu-central-1a",
"shortName": "a"
},
{
"id": 5,
"name": "eu-central-1b",
"shortName": "b"
},
{
"id": 6,
"name": "eu-central-1c",
"shortName": "c"
}
]
},
"operatingsystemVersion": {
"id": 8,
"version": "9",
"type": "64",
"operatingsystem": {
"id": 3,
"name": "Debian",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_t2.micro_linux",
"description": "General purpose T2 family",
"prices": [
{
"id": 1502,
"period": 1,
"currency": "EUR",
"price": "878",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1503,
"period": 12,
"currency": "EUR",
"price": "10530",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1504,
"period": 36,
"currency": "EUR",
"price": "31590",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_datatransfer",
"description": "AWS data transfer estimated price",
"prices": [
{
"id": 1514,
"period": 1,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1515,
"period": 12,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1516,
"period": 36,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_disk",
"description": "AWS EBS volume per GB",
"prices": [
{
"id": 1517,
"period": 1,
"currency": "EUR",
"price": "11",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1518,
"period": 12,
"currency": "EUR",
"price": "132",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1519,
"period": 36,
"currency": "EUR",
"price": "396",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
}
]
},
"stars": 5
},
{
"id": 2,
"cpu": 1,
"memory": "2.0",
"disk": 20,
"config": {
"id": 2,
"minCpu": 1,
"maxCpu": 1,
"minMemory": "2.0",
"maxMemory": "2.0",
"minDisk": 20,
"maxDisk": 1000,
"externalId": "t2.small",
"name": "Amazon t2.small",
"description": "General purpose T2 family"
},
"provider": {
"id": 3,
"api": "ec2",
"name": "Amazon EC2",
"icon": "",
"systemimages": [
{
"id": 1,
"name": "CentOS 7.2",
"externalId": "ami-147fc16d",
"region": {
"id": 1,
"name": "eu-west-1",
"country": {
"id": "IE",
"name": "IE"
},
"zones": [
{
"id": 1,
"name": "eu-west-1a",
"shortName": "a"
},
{
"id": 2,
"name": "eu-west-1b",
"shortName": "b"
},
{
"id": 3,
"name": "eu-west-1c",
"shortName": "c"
}
]
},
"operatingsystemVersion": {
"id": 4,
"version": "7.2",
"type": "64",
"operatingsystem": {
"id": 2,
"name": "CentOS",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_t2.small_linux",
"description": "General purpose T2 family",
"prices": [
{
"id": 1505,
"period": 1,
"currency": "EUR",
"price": "1688",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1506,
"period": 12,
"currency": "EUR",
"price": "20250",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1507,
"period": 36,
"currency": "EUR",
"price": "60750",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_datatransfer",
"description": "AWS data transfer estimated price",
"prices": [
{
"id": 1514,
"period": 1,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1515,
"period": 12,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1516,
"period": 36,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_disk",
"description": "AWS EBS volume per GB",
"prices": [
{
"id": 1517,
"period": 1,
"currency": "EUR",
"price": "11",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1518,
"period": 12,
"currency": "EUR",
"price": "132",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1519,
"period": 36,
"currency": "EUR",
"price": "396",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 2,
"name": "Ubuntu 14.04",
"externalId": "ami-a6b7d3df",
"region": {
"id": 1,
"name": "eu-west-1",
"country": {
"id": "IE",
"name": "IE"
},
"zones": [
{
"id": 1,
"name": "eu-west-1a",
"shortName": "a"
},
{
"id": 2,
"name": "eu-west-1b",
"shortName": "b"
},
{
"id": 3,
"name": "eu-west-1c",
"shortName": "c"
}
]
},
"operatingsystemVersion": {
"id": 2,
"version": "14.04 LTS",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_t2.small_linux",
"description": "General purpose T2 family",
"prices": [
{
"id": 1505,
"period": 1,
"currency": "EUR",
"price": "1688",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1506,
"period": 12,
"currency": "EUR",
"price": "20250",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1507,
"period": 36,
"currency": "EUR",
"price": "60750",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_datatransfer",
"description": "AWS data transfer estimated price",
"prices": [
{
"id": 1514,
"period": 1,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1515,
"period": 12,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1516,
"period": 36,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_disk",
"description": "AWS EBS volume per GB",
"prices": [
{
"id": 1517,
"period": 1,
"currency": "EUR",
"price": "11",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1518,
"period": 12,
"currency": "EUR",
"price": "132",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1519,
"period": 36,
"currency": "EUR",
"price": "396",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 3,
"name": "Ubuntu 16.04",
"externalId": "ami-1b791862",
"region": {
"id": 1,
"name": "eu-west-1",
"country": {
"id": "IE",
"name": "IE"
},
"zones": [
{
"id": 1,
"name": "eu-west-1a",
"shortName": "a"
},
{
"id": 2,
"name": "eu-west-1b",
"shortName": "b"
},
{
"id": 3,
"name": "eu-west-1c",
"shortName": "c"
}
]
},
"operatingsystemVersion": {
"id": 3,
"version": "16.04 LTS",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_t2.small_linux",
"description": "General purpose T2 family",
"prices": [
{
"id": 1505,
"period": 1,
"currency": "EUR",
"price": "1688",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1506,
"period": 12,
"currency": "EUR",
"price": "20250",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1507,
"period": 36,
"currency": "EUR",
"price": "60750",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_datatransfer",
"description": "AWS data transfer estimated price",
"prices": [
{
"id": 1514,
"period": 1,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1515,
"period": 12,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1516,
"period": 36,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_disk",
"description": "AWS EBS volume per GB",
"prices": [
{
"id": 1517,
"period": 1,
"currency": "EUR",
"price": "11",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1518,
"period": 12,
"currency": "EUR",
"price": "132",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1519,
"period": 36,
"currency": "EUR",
"price": "396",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 4,
"name": "Ubuntu 17.04",
"externalId": "ami-94b236ed",
"region": {
"id": 1,
"name": "eu-west-1",
"country": {
"id": "IE",
"name": "IE"
},
"zones": [
{
"id": 1,
"name": "eu-west-1a",
"shortName": "a"
},
{
"id": 2,
"name": "eu-west-1b",
"shortName": "b"
},
{
"id": 3,
"name": "eu-west-1c",
"shortName": "c"
}
]
},
"operatingsystemVersion": {
"id": 6,
"version": "17.04",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_t2.small_linux",
"description": "General purpose T2 family",
"prices": [
{
"id": 1505,
"period": 1,
"currency": "EUR",
"price": "1688",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1506,
"period": 12,
"currency": "EUR",
"price": "20250",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1507,
"period": 36,
"currency": "EUR",
"price": "60750",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_datatransfer",
"description": "AWS data transfer estimated price",
"prices": [
{
"id": 1514,
"period": 1,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1515,
"period": 12,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1516,
"period": 36,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_disk",
"description": "AWS EBS volume per GB",
"prices": [
{
"id": 1517,
"period": 1,
"currency": "EUR",
"price": "11",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1518,
"period": 12,
"currency": "EUR",
"price": "132",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1519,
"period": 36,
"currency": "EUR",
"price": "396",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 5,
"name": "Debian 8.7",
"externalId": "ami-402f1a33",
"region": {
"id": 1,
"name": "eu-west-1",
"country": {
"id": "IE",
"name": "IE"
},
"zones": [
{
"id": 1,
"name": "eu-west-1a",
"shortName": "a"
},
{
"id": 2,
"name": "eu-west-1b",
"shortName": "b"
},
{
"id": 3,
"name": "eu-west-1c",
"shortName": "c"
}
]
},
"operatingsystemVersion": {
"id": 5,
"version": "8.7",
"type": "64",
"operatingsystem": {
"id": 3,
"name": "Debian",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_t2.small_linux",
"description": "General purpose T2 family",
"prices": [
{
"id": 1505,
"period": 1,
"currency": "EUR",
"price": "1688",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1506,
"period": 12,
"currency": "EUR",
"price": "20250",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1507,
"period": 36,
"currency": "EUR",
"price": "60750",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_datatransfer",
"description": "AWS data transfer estimated price",
"prices": [
{
"id": 1514,
"period": 1,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1515,
"period": 12,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1516,
"period": 36,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_disk",
"description": "AWS EBS volume per GB",
"prices": [
{
"id": 1517,
"period": 1,
"currency": "EUR",
"price": "11",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1518,
"period": 12,
"currency": "EUR",
"price": "132",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1519,
"period": 36,
"currency": "EUR",
"price": "396",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 6,
"name": "CentOS 7.2",
"externalId": "ami-8f62ece0",
"region": {
"id": 2,
"name": "eu-central-1",
"country": {
"id": "DE",
"name": "DE"
},
"zones": [
{
"id": 4,
"name": "eu-central-1a",
"shortName": "a"
},
{
"id": 5,
"name": "eu-central-1b",
"shortName": "b"
},
{
"id": 6,
"name": "eu-central-1c",
"shortName": "c"
}
]
},
"operatingsystemVersion": {
"id": 4,
"version": "7.2",
"type": "64",
"operatingsystem": {
"id": 2,
"name": "CentOS",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_t2.small_linux",
"description": "General purpose T2 family",
"prices": [
{
"id": 1505,
"period": 1,
"currency": "EUR",
"price": "1688",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1506,
"period": 12,
"currency": "EUR",
"price": "20250",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1507,
"period": 36,
"currency": "EUR",
"price": "60750",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_datatransfer",
"description": "AWS data transfer estimated price",
"prices": [
{
"id": 1514,
"period": 1,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1515,
"period": 12,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1516,
"period": 36,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_disk",
"description": "AWS EBS volume per GB",
"prices": [
{
"id": 1517,
"period": 1,
"currency": "EUR",
"price": "11",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1518,
"period": 12,
"currency": "EUR",
"price": "132",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1519,
"period": 36,
"currency": "EUR",
"price": "396",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 7,
"name": "Ubuntu 14.04",
"externalId": "ami-f7b32a98",
"region": {
"id": 2,
"name": "eu-central-1",
"country": {
"id": "DE",
"name": "DE"
},
"zones": [
{
"id": 4,
"name": "eu-central-1a",
"shortName": "a"
},
{
"id": 5,
"name": "eu-central-1b",
"shortName": "b"
},
{
"id": 6,
"name": "eu-central-1c",
"shortName": "c"
}
]
},
"operatingsystemVersion": {
"id": 2,
"version": "14.04 LTS",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_t2.small_linux",
"description": "General purpose T2 family",
"prices": [
{
"id": 1505,
"period": 1,
"currency": "EUR",
"price": "1688",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1506,
"period": 12,
"currency": "EUR",
"price": "20250",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1507,
"period": 36,
"currency": "EUR",
"price": "60750",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_datatransfer",
"description": "AWS data transfer estimated price",
"prices": [
{
"id": 1514,
"period": 1,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1515,
"period": 12,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1516,
"period": 36,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_disk",
"description": "AWS EBS volume per GB",
"prices": [
{
"id": 1517,
"period": 1,
"currency": "EUR",
"price": "11",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1518,
"period": 12,
"currency": "EUR",
"price": "132",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1519,
"period": 36,
"currency": "EUR",
"price": "396",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 8,
"name": "Ubuntu 16.04",
"externalId": "ami-5055cd3f",
"region": {
"id": 2,
"name": "eu-central-1",
"country": {
"id": "DE",
"name": "DE"
},
"zones": [
{
"id": 4,
"name": "eu-central-1a",
"shortName": "a"
},
{
"id": 5,
"name": "eu-central-1b",
"shortName": "b"
},
{
"id": 6,
"name": "eu-central-1c",
"shortName": "c"
}
]
},
"operatingsystemVersion": {
"id": 3,
"version": "16.04 LTS",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_t2.small_linux",
"description": "General purpose T2 family",
"prices": [
{
"id": 1505,
"period": 1,
"currency": "EUR",
"price": "1688",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1506,
"period": 12,
"currency": "EUR",
"price": "20250",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1507,
"period": 36,
"currency": "EUR",
"price": "60750",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_datatransfer",
"description": "AWS data transfer estimated price",
"prices": [
{
"id": 1514,
"period": 1,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1515,
"period": 12,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1516,
"period": 36,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_disk",
"description": "AWS EBS volume per GB",
"prices": [
{
"id": 1517,
"period": 1,
"currency": "EUR",
"price": "11",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1518,
"period": 12,
"currency": "EUR",
"price": "132",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1519,
"period": 36,
"currency": "EUR",
"price": "396",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 9,
"name": "Ubuntu 17.04",
"externalId": "ami-daba31b5",
"region": {
"id": 2,
"name": "eu-central-1",
"country": {
"id": "DE",
"name": "DE"
},
"zones": [
{
"id": 4,
"name": "eu-central-1a",
"shortName": "a"
},
{
"id": 5,
"name": "eu-central-1b",
"shortName": "b"
},
{
"id": 6,
"name": "eu-central-1c",
"shortName": "c"
}
]
},
"operatingsystemVersion": {
"id": 6,
"version": "17.04",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_t2.small_linux",
"description": "General purpose T2 family",
"prices": [
{
"id": 1505,
"period": 1,
"currency": "EUR",
"price": "1688",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1506,
"period": 12,
"currency": "EUR",
"price": "20250",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1507,
"period": 36,
"currency": "EUR",
"price": "60750",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_datatransfer",
"description": "AWS data transfer estimated price",
"prices": [
{
"id": 1514,
"period": 1,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1515,
"period": 12,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1516,
"period": 36,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_disk",
"description": "AWS EBS volume per GB",
"prices": [
{
"id": 1517,
"period": 1,
"currency": "EUR",
"price": "11",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1518,
"period": 12,
"currency": "EUR",
"price": "132",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1519,
"period": 36,
"currency": "EUR",
"price": "396",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 10,
"name": "Debian 8.7",
"externalId": "ami-5900cc36",
"region": {
"id": 2,
"name": "eu-central-1",
"country": {
"id": "DE",
"name": "DE"
},
"zones": [
{
"id": 4,
"name": "eu-central-1a",
"shortName": "a"
},
{
"id": 5,
"name": "eu-central-1b",
"shortName": "b"
},
{
"id": 6,
"name": "eu-central-1c",
"shortName": "c"
}
]
},
"operatingsystemVersion": {
"id": 5,
"version": "8.7",
"type": "64",
"operatingsystem": {
"id": 3,
"name": "Debian",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_t2.small_linux",
"description": "General purpose T2 family",
"prices": [
{
"id": 1505,
"period": 1,
"currency": "EUR",
"price": "1688",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1506,
"period": 12,
"currency": "EUR",
"price": "20250",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1507,
"period": 36,
"currency": "EUR",
"price": "60750",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_datatransfer",
"description": "AWS data transfer estimated price",
"prices": [
{
"id": 1514,
"period": 1,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1515,
"period": 12,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1516,
"period": 36,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_disk",
"description": "AWS EBS volume per GB",
"prices": [
{
"id": 1517,
"period": 1,
"currency": "EUR",
"price": "11",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1518,
"period": 12,
"currency": "EUR",
"price": "132",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1519,
"period": 36,
"currency": "EUR",
"price": "396",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 43,
"name": "Debian 8",
"externalId": "ami-402f1a33",
"region": {
"id": 1,
"name": "eu-west-1",
"country": {
"id": "IE",
"name": "IE"
},
"zones": [
{
"id": 1,
"name": "eu-west-1a",
"shortName": "a"
},
{
"id": 2,
"name": "eu-west-1b",
"shortName": "b"
},
{
"id": 3,
"name": "eu-west-1c",
"shortName": "c"
}
]
},
"operatingsystemVersion": {
"id": 7,
"version": "8",
"type": "64",
"operatingsystem": {
"id": 3,
"name": "Debian",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_t2.small_linux",
"description": "General purpose T2 family",
"prices": [
{
"id": 1505,
"period": 1,
"currency": "EUR",
"price": "1688",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1506,
"period": 12,
"currency": "EUR",
"price": "20250",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1507,
"period": 36,
"currency": "EUR",
"price": "60750",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_datatransfer",
"description": "AWS data transfer estimated price",
"prices": [
{
"id": 1514,
"period": 1,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1515,
"period": 12,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1516,
"period": 36,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_disk",
"description": "AWS EBS volume per GB",
"prices": [
{
"id": 1517,
"period": 1,
"currency": "EUR",
"price": "11",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1518,
"period": 12,
"currency": "EUR",
"price": "132",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1519,
"period": 36,
"currency": "EUR",
"price": "396",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 44,
"name": "Debian 9",
"externalId": "ami-867ceaff",
"region": {
"id": 1,
"name": "eu-west-1",
"country": {
"id": "IE",
"name": "IE"
},
"zones": [
{
"id": 1,
"name": "eu-west-1a",
"shortName": "a"
},
{
"id": 2,
"name": "eu-west-1b",
"shortName": "b"
},
{
"id": 3,
"name": "eu-west-1c",
"shortName": "c"
}
]
},
"operatingsystemVersion": {
"id": 8,
"version": "9",
"type": "64",
"operatingsystem": {
"id": 3,
"name": "Debian",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_t2.small_linux",
"description": "General purpose T2 family",
"prices": [
{
"id": 1505,
"period": 1,
"currency": "EUR",
"price": "1688",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1506,
"period": 12,
"currency": "EUR",
"price": "20250",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1507,
"period": 36,
"currency": "EUR",
"price": "60750",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_datatransfer",
"description": "AWS data transfer estimated price",
"prices": [
{
"id": 1514,
"period": 1,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1515,
"period": 12,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1516,
"period": 36,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_disk",
"description": "AWS EBS volume per GB",
"prices": [
{
"id": 1517,
"period": 1,
"currency": "EUR",
"price": "11",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1518,
"period": 12,
"currency": "EUR",
"price": "132",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1519,
"period": 36,
"currency": "EUR",
"price": "396",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 45,
"name": "Debian 8",
"externalId": "ami-5900cc36",
"region": {
"id": 2,
"name": "eu-central-1",
"country": {
"id": "DE",
"name": "DE"
},
"zones": [
{
"id": 4,
"name": "eu-central-1a",
"shortName": "a"
},
{
"id": 5,
"name": "eu-central-1b",
"shortName": "b"
},
{
"id": 6,
"name": "eu-central-1c",
"shortName": "c"
}
]
},
"operatingsystemVersion": {
"id": 7,
"version": "8",
"type": "64",
"operatingsystem": {
"id": 3,
"name": "Debian",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_t2.small_linux",
"description": "General purpose T2 family",
"prices": [
{
"id": 1505,
"period": 1,
"currency": "EUR",
"price": "1688",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1506,
"period": 12,
"currency": "EUR",
"price": "20250",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1507,
"period": 36,
"currency": "EUR",
"price": "60750",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_datatransfer",
"description": "AWS data transfer estimated price",
"prices": [
{
"id": 1514,
"period": 1,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1515,
"period": 12,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1516,
"period": 36,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_disk",
"description": "AWS EBS volume per GB",
"prices": [
{
"id": 1517,
"period": 1,
"currency": "EUR",
"price": "11",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1518,
"period": 12,
"currency": "EUR",
"price": "132",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1519,
"period": 36,
"currency": "EUR",
"price": "396",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 46,
"name": "Debian 9",
"externalId": "ami-b58f1cda",
"region": {
"id": 2,
"name": "eu-central-1",
"country": {
"id": "DE",
"name": "DE"
},
"zones": [
{
"id": 4,
"name": "eu-central-1a",
"shortName": "a"
},
{
"id": 5,
"name": "eu-central-1b",
"shortName": "b"
},
{
"id": 6,
"name": "eu-central-1c",
"shortName": "c"
}
]
},
"operatingsystemVersion": {
"id": 8,
"version": "9",
"type": "64",
"operatingsystem": {
"id": 3,
"name": "Debian",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_t2.small_linux",
"description": "General purpose T2 family",
"prices": [
{
"id": 1505,
"period": 1,
"currency": "EUR",
"price": "1688",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1506,
"period": 12,
"currency": "EUR",
"price": "20250",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1507,
"period": 36,
"currency": "EUR",
"price": "60750",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_datatransfer",
"description": "AWS data transfer estimated price",
"prices": [
{
"id": 1514,
"period": 1,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1515,
"period": 12,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1516,
"period": 36,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_ec2_instance_disk",
"description": "AWS EBS volume per GB",
"prices": [
{
"id": 1517,
"period": 1,
"currency": "EUR",
"price": "11",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1518,
"period": 12,
"currency": "EUR",
"price": "132",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1519,
"period": 36,
"currency": "EUR",
"price": "396",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
}
]
},
"stars": 5
},
{
"id": 5,
"cpu": 1,
"memory": "1.0",
"disk": 30,
"config": {
"id": 5,
"minCpu": 1,
"maxCpu": 1,
"minMemory": "1.0",
"maxMemory": "1.0",
"minDisk": 30,
"maxDisk": 30,
"externalId": "1gb",
"name": "1gb",
"description": "Digital Ocean 1 GB"
},
"provider": {
"id": 4,
"api": "digitalocean",
"name": "Digital Ocean",
"icon": "",
"systemimages": [
{
"id": 11,
"name": "Ubuntu 12.04",
"externalId": "ubuntu-12-04-x64",
"region": {
"id": 3,
"name": "nyc",
"country": {
"id": "US",
"name": "US"
},
"zones": [
{
"id": 7,
"name": "nyc1",
"shortName": "1"
},
{
"id": 8,
"name": "nyc2",
"shortName": "2"
},
{
"id": 9,
"name": "nyc3",
"shortName": "3"
}
]
},
"operatingsystemVersion": {
"id": 1,
"version": "12.04 LTS",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_digitalocean_instance_1gb_linux",
"description": "Digital Ocean 1 GB",
"prices": [
{
"id": 1520,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1521,
"period": 12,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1522,
"period": 36,
"currency": "EUR",
"price": "36000",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 12,
"name": "Ubuntu 14.04",
"externalId": "ubuntu-14-04-x64",
"region": {
"id": 3,
"name": "nyc",
"country": {
"id": "US",
"name": "US"
},
"zones": [
{
"id": 7,
"name": "nyc1",
"shortName": "1"
},
{
"id": 8,
"name": "nyc2",
"shortName": "2"
},
{
"id": 9,
"name": "nyc3",
"shortName": "3"
}
]
},
"operatingsystemVersion": {
"id": 2,
"version": "14.04 LTS",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_digitalocean_instance_1gb_linux",
"description": "Digital Ocean 1 GB",
"prices": [
{
"id": 1520,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1521,
"period": 12,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1522,
"period": 36,
"currency": "EUR",
"price": "36000",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 13,
"name": "Ubuntu 16.04",
"externalId": "ubuntu-16-04-x64",
"region": {
"id": 3,
"name": "nyc",
"country": {
"id": "US",
"name": "US"
},
"zones": [
{
"id": 7,
"name": "nyc1",
"shortName": "1"
},
{
"id": 8,
"name": "nyc2",
"shortName": "2"
},
{
"id": 9,
"name": "nyc3",
"shortName": "3"
}
]
},
"operatingsystemVersion": {
"id": 3,
"version": "16.04 LTS",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_digitalocean_instance_1gb_linux",
"description": "Digital Ocean 1 GB",
"prices": [
{
"id": 1520,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1521,
"period": 12,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1522,
"period": 36,
"currency": "EUR",
"price": "36000",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 14,
"name": "Ubuntu 17.04",
"externalId": "ubuntu-17-04-x64",
"region": {
"id": 3,
"name": "nyc",
"country": {
"id": "US",
"name": "US"
},
"zones": [
{
"id": 7,
"name": "nyc1",
"shortName": "1"
},
{
"id": 8,
"name": "nyc2",
"shortName": "2"
},
{
"id": 9,
"name": "nyc3",
"shortName": "3"
}
]
},
"operatingsystemVersion": {
"id": 6,
"version": "17.04",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_digitalocean_instance_1gb_linux",
"description": "Digital Ocean 1 GB",
"prices": [
{
"id": 1520,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1521,
"period": 12,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1522,
"period": 36,
"currency": "EUR",
"price": "36000",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 15,
"name": "Ubuntu 12.04",
"externalId": "ubuntu-12-04-x64",
"region": {
"id": 4,
"name": "sfo",
"country": {
"id": "US",
"name": "US"
},
"zones": [
{
"id": 10,
"name": "sfo1",
"shortName": "1"
},
{
"id": 11,
"name": "sfo2",
"shortName": "2"
}
]
},
"operatingsystemVersion": {
"id": 1,
"version": "12.04 LTS",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_digitalocean_instance_1gb_linux",
"description": "Digital Ocean 1 GB",
"prices": [
{
"id": 1520,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1521,
"period": 12,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1522,
"period": 36,
"currency": "EUR",
"price": "36000",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 16,
"name": "Ubuntu 14.04",
"externalId": "ubuntu-14-04-x64",
"region": {
"id": 4,
"name": "sfo",
"country": {
"id": "US",
"name": "US"
},
"zones": [
{
"id": 10,
"name": "sfo1",
"shortName": "1"
},
{
"id": 11,
"name": "sfo2",
"shortName": "2"
}
]
},
"operatingsystemVersion": {
"id": 2,
"version": "14.04 LTS",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_digitalocean_instance_1gb_linux",
"description": "Digital Ocean 1 GB",
"prices": [
{
"id": 1520,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1521,
"period": 12,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1522,
"period": 36,
"currency": "EUR",
"price": "36000",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 17,
"name": "Ubuntu 16.04",
"externalId": "ubuntu-16-04-x64",
"region": {
"id": 4,
"name": "sfo",
"country": {
"id": "US",
"name": "US"
},
"zones": [
{
"id": 10,
"name": "sfo1",
"shortName": "1"
},
{
"id": 11,
"name": "sfo2",
"shortName": "2"
}
]
},
"operatingsystemVersion": {
"id": 3,
"version": "16.04 LTS",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_digitalocean_instance_1gb_linux",
"description": "Digital Ocean 1 GB",
"prices": [
{
"id": 1520,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1521,
"period": 12,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1522,
"period": 36,
"currency": "EUR",
"price": "36000",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 18,
"name": "Ubuntu 17.04",
"externalId": "ubuntu-17-04-x64",
"region": {
"id": 4,
"name": "sfo",
"country": {
"id": "US",
"name": "US"
},
"zones": [
{
"id": 10,
"name": "sfo1",
"shortName": "1"
},
{
"id": 11,
"name": "sfo2",
"shortName": "2"
}
]
},
"operatingsystemVersion": {
"id": 6,
"version": "17.04",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_digitalocean_instance_1gb_linux",
"description": "Digital Ocean 1 GB",
"prices": [
{
"id": 1520,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1521,
"period": 12,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1522,
"period": 36,
"currency": "EUR",
"price": "36000",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 19,
"name": "Ubuntu 12.04",
"externalId": "ubuntu-12-04-x64",
"region": {
"id": 5,
"name": "ams",
"country": {
"id": "NL",
"name": "NL"
},
"zones": [
{
"id": 12,
"name": "ams2",
"shortName": "2"
},
{
"id": 13,
"name": "ams3",
"shortName": "3"
}
]
},
"operatingsystemVersion": {
"id": 1,
"version": "12.04 LTS",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_digitalocean_instance_1gb_linux",
"description": "Digital Ocean 1 GB",
"prices": [
{
"id": 1520,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1521,
"period": 12,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1522,
"period": 36,
"currency": "EUR",
"price": "36000",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 20,
"name": "Ubuntu 14.04",
"externalId": "ubuntu-14-04-x64",
"region": {
"id": 5,
"name": "ams",
"country": {
"id": "NL",
"name": "NL"
},
"zones": [
{
"id": 12,
"name": "ams2",
"shortName": "2"
},
{
"id": 13,
"name": "ams3",
"shortName": "3"
}
]
},
"operatingsystemVersion": {
"id": 2,
"version": "14.04 LTS",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_digitalocean_instance_1gb_linux",
"description": "Digital Ocean 1 GB",
"prices": [
{
"id": 1520,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1521,
"period": 12,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1522,
"period": 36,
"currency": "EUR",
"price": "36000",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 21,
"name": "Ubuntu 16.04",
"externalId": "ubuntu-16-04-x64",
"region": {
"id": 5,
"name": "ams",
"country": {
"id": "NL",
"name": "NL"
},
"zones": [
{
"id": 12,
"name": "ams2",
"shortName": "2"
},
{
"id": 13,
"name": "ams3",
"shortName": "3"
}
]
},
"operatingsystemVersion": {
"id": 3,
"version": "16.04 LTS",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_digitalocean_instance_1gb_linux",
"description": "Digital Ocean 1 GB",
"prices": [
{
"id": 1520,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1521,
"period": 12,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1522,
"period": 36,
"currency": "EUR",
"price": "36000",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 22,
"name": "Ubuntu 17.04",
"externalId": "ubuntu-17-04-x64",
"region": {
"id": 5,
"name": "ams",
"country": {
"id": "NL",
"name": "NL"
},
"zones": [
{
"id": 12,
"name": "ams2",
"shortName": "2"
},
{
"id": 13,
"name": "ams3",
"shortName": "3"
}
]
},
"operatingsystemVersion": {
"id": 6,
"version": "17.04",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_digitalocean_instance_1gb_linux",
"description": "Digital Ocean 1 GB",
"prices": [
{
"id": 1520,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1521,
"period": 12,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1522,
"period": 36,
"currency": "EUR",
"price": "36000",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 23,
"name": "Ubuntu 12.04",
"externalId": "ubuntu-12-04-x64",
"region": {
"id": 6,
"name": "fra",
"country": {
"id": "DE",
"name": "DE"
},
"zones": [
{
"id": 14,
"name": "fra1",
"shortName": "1"
}
]
},
"operatingsystemVersion": {
"id": 1,
"version": "12.04 LTS",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_digitalocean_instance_1gb_linux",
"description": "Digital Ocean 1 GB",
"prices": [
{
"id": 1520,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1521,
"period": 12,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1522,
"period": 36,
"currency": "EUR",
"price": "36000",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 24,
"name": "Ubuntu 14.04",
"externalId": "ubuntu-14-04-x64",
"region": {
"id": 6,
"name": "fra",
"country": {
"id": "DE",
"name": "DE"
},
"zones": [
{
"id": 14,
"name": "fra1",
"shortName": "1"
}
]
},
"operatingsystemVersion": {
"id": 2,
"version": "14.04 LTS",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_digitalocean_instance_1gb_linux",
"description": "Digital Ocean 1 GB",
"prices": [
{
"id": 1520,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1521,
"period": 12,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1522,
"period": 36,
"currency": "EUR",
"price": "36000",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 25,
"name": "Ubuntu 16.04",
"externalId": "ubuntu-16-04-x64",
"region": {
"id": 6,
"name": "fra",
"country": {
"id": "DE",
"name": "DE"
},
"zones": [
{
"id": 14,
"name": "fra1",
"shortName": "1"
}
]
},
"operatingsystemVersion": {
"id": 3,
"version": "16.04 LTS",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_digitalocean_instance_1gb_linux",
"description": "Digital Ocean 1 GB",
"prices": [
{
"id": 1520,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1521,
"period": 12,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1522,
"period": 36,
"currency": "EUR",
"price": "36000",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 26,
"name": "Ubuntu 17.04",
"externalId": "ubuntu-17-04-x64",
"region": {
"id": 6,
"name": "fra",
"country": {
"id": "DE",
"name": "DE"
},
"zones": [
{
"id": 14,
"name": "fra1",
"shortName": "1"
}
]
},
"operatingsystemVersion": {
"id": 6,
"version": "17.04",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_digitalocean_instance_1gb_linux",
"description": "Digital Ocean 1 GB",
"prices": [
{
"id": 1520,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1521,
"period": 12,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1522,
"period": 36,
"currency": "EUR",
"price": "36000",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 27,
"name": "Ubuntu 12.04",
"externalId": "ubuntu-12-04-x64",
"region": {
"id": 7,
"name": "sgp",
"country": {
"id": "SG",
"name": "SG"
},
"zones": [
{
"id": 15,
"name": "sgp1",
"shortName": "1"
}
]
},
"operatingsystemVersion": {
"id": 1,
"version": "12.04 LTS",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_digitalocean_instance_1gb_linux",
"description": "Digital Ocean 1 GB",
"prices": [
{
"id": 1520,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1521,
"period": 12,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1522,
"period": 36,
"currency": "EUR",
"price": "36000",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 28,
"name": "Ubuntu 14.04",
"externalId": "ubuntu-14-04-x64",
"region": {
"id": 7,
"name": "sgp",
"country": {
"id": "SG",
"name": "SG"
},
"zones": [
{
"id": 15,
"name": "sgp1",
"shortName": "1"
}
]
},
"operatingsystemVersion": {
"id": 2,
"version": "14.04 LTS",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_digitalocean_instance_1gb_linux",
"description": "Digital Ocean 1 GB",
"prices": [
{
"id": 1520,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1521,
"period": 12,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1522,
"period": 36,
"currency": "EUR",
"price": "36000",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 29,
"name": "Ubuntu 16.04",
"externalId": "ubuntu-16-04-x64",
"region": {
"id": 7,
"name": "sgp",
"country": {
"id": "SG",
"name": "SG"
},
"zones": [
{
"id": 15,
"name": "sgp1",
"shortName": "1"
}
]
},
"operatingsystemVersion": {
"id": 3,
"version": "16.04 LTS",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_digitalocean_instance_1gb_linux",
"description": "Digital Ocean 1 GB",
"prices": [
{
"id": 1520,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1521,
"period": 12,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1522,
"period": 36,
"currency": "EUR",
"price": "36000",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 30,
"name": "Ubuntu 17.04",
"externalId": "ubuntu-17-04-x64",
"region": {
"id": 7,
"name": "sgp",
"country": {
"id": "SG",
"name": "SG"
},
"zones": [
{
"id": 15,
"name": "sgp1",
"shortName": "1"
}
]
},
"operatingsystemVersion": {
"id": 6,
"version": "17.04",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_digitalocean_instance_1gb_linux",
"description": "Digital Ocean 1 GB",
"prices": [
{
"id": 1520,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1521,
"period": 12,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1522,
"period": 36,
"currency": "EUR",
"price": "36000",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 31,
"name": "Ubuntu 12.04",
"externalId": "ubuntu-12-04-x64",
"region": {
"id": 8,
"name": "blr",
"country": {
"id": "BY",
"name": "BY"
},
"zones": [
{
"id": 16,
"name": "blr1",
"shortName": "1"
}
]
},
"operatingsystemVersion": {
"id": 1,
"version": "12.04 LTS",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_digitalocean_instance_1gb_linux",
"description": "Digital Ocean 1 GB",
"prices": [
{
"id": 1520,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1521,
"period": 12,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1522,
"period": 36,
"currency": "EUR",
"price": "36000",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 32,
"name": "Ubuntu 14.04",
"externalId": "ubuntu-14-04-x64",
"region": {
"id": 8,
"name": "blr",
"country": {
"id": "BY",
"name": "BY"
},
"zones": [
{
"id": 16,
"name": "blr1",
"shortName": "1"
}
]
},
"operatingsystemVersion": {
"id": 2,
"version": "14.04 LTS",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_digitalocean_instance_1gb_linux",
"description": "Digital Ocean 1 GB",
"prices": [
{
"id": 1520,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1521,
"period": 12,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1522,
"period": 36,
"currency": "EUR",
"price": "36000",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 33,
"name": "Ubuntu 16.04",
"externalId": "ubuntu-16-04-x64",
"region": {
"id": 8,
"name": "blr",
"country": {
"id": "BY",
"name": "BY"
},
"zones": [
{
"id": 16,
"name": "blr1",
"shortName": "1"
}
]
},
"operatingsystemVersion": {
"id": 3,
"version": "16.04 LTS",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_digitalocean_instance_1gb_linux",
"description": "Digital Ocean 1 GB",
"prices": [
{
"id": 1520,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1521,
"period": 12,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1522,
"period": 36,
"currency": "EUR",
"price": "36000",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 34,
"name": "Ubuntu 17.04",
"externalId": "ubuntu-17-04-x64",
"region": {
"id": 8,
"name": "blr",
"country": {
"id": "BY",
"name": "BY"
},
"zones": [
{
"id": 16,
"name": "blr1",
"shortName": "1"
}
]
},
"operatingsystemVersion": {
"id": 6,
"version": "17.04",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_digitalocean_instance_1gb_linux",
"description": "Digital Ocean 1 GB",
"prices": [
{
"id": 1520,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1521,
"period": 12,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1522,
"period": 36,
"currency": "EUR",
"price": "36000",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 35,
"name": "Ubuntu 12.04",
"externalId": "ubuntu-12-04-x64",
"region": {
"id": 9,
"name": "tor",
"country": {
"id": "CA",
"name": "CA"
},
"zones": [
{
"id": 17,
"name": "tor1",
"shortName": "1"
}
]
},
"operatingsystemVersion": {
"id": 1,
"version": "12.04 LTS",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_digitalocean_instance_1gb_linux",
"description": "Digital Ocean 1 GB",
"prices": [
{
"id": 1520,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1521,
"period": 12,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1522,
"period": 36,
"currency": "EUR",
"price": "36000",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 36,
"name": "Ubuntu 14.04",
"externalId": "ubuntu-14-04-x64",
"region": {
"id": 9,
"name": "tor",
"country": {
"id": "CA",
"name": "CA"
},
"zones": [
{
"id": 17,
"name": "tor1",
"shortName": "1"
}
]
},
"operatingsystemVersion": {
"id": 2,
"version": "14.04 LTS",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_digitalocean_instance_1gb_linux",
"description": "Digital Ocean 1 GB",
"prices": [
{
"id": 1520,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1521,
"period": 12,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1522,
"period": 36,
"currency": "EUR",
"price": "36000",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 37,
"name": "Ubuntu 16.04",
"externalId": "ubuntu-16-04-x64",
"region": {
"id": 9,
"name": "tor",
"country": {
"id": "CA",
"name": "CA"
},
"zones": [
{
"id": 17,
"name": "tor1",
"shortName": "1"
}
]
},
"operatingsystemVersion": {
"id": 3,
"version": "16.04 LTS",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_digitalocean_instance_1gb_linux",
"description": "Digital Ocean 1 GB",
"prices": [
{
"id": 1520,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1521,
"period": 12,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1522,
"period": 36,
"currency": "EUR",
"price": "36000",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 38,
"name": "Ubuntu 17.04",
"externalId": "ubuntu-17-04-x64",
"region": {
"id": 9,
"name": "tor",
"country": {
"id": "CA",
"name": "CA"
},
"zones": [
{
"id": 17,
"name": "tor1",
"shortName": "1"
}
]
},
"operatingsystemVersion": {
"id": 6,
"version": "17.04",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_digitalocean_instance_1gb_linux",
"description": "Digital Ocean 1 GB",
"prices": [
{
"id": 1520,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1521,
"period": 12,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1522,
"period": 36,
"currency": "EUR",
"price": "36000",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 39,
"name": "Ubuntu 12.04",
"externalId": "ubuntu-12-04-x64",
"region": {
"id": 10,
"name": "lon",
"country": {
"id": "GB",
"name": "GB"
},
"zones": [
{
"id": 18,
"name": "lon1",
"shortName": "1"
}
]
},
"operatingsystemVersion": {
"id": 1,
"version": "12.04 LTS",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_digitalocean_instance_1gb_linux",
"description": "Digital Ocean 1 GB",
"prices": [
{
"id": 1520,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1521,
"period": 12,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1522,
"period": 36,
"currency": "EUR",
"price": "36000",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 40,
"name": "Ubuntu 14.04",
"externalId": "ubuntu-14-04-x64",
"region": {
"id": 10,
"name": "lon",
"country": {
"id": "GB",
"name": "GB"
},
"zones": [
{
"id": 18,
"name": "lon1",
"shortName": "1"
}
]
},
"operatingsystemVersion": {
"id": 2,
"version": "14.04 LTS",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_digitalocean_instance_1gb_linux",
"description": "Digital Ocean 1 GB",
"prices": [
{
"id": 1520,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1521,
"period": 12,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1522,
"period": 36,
"currency": "EUR",
"price": "36000",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 41,
"name": "Ubuntu 16.04",
"externalId": "ubuntu-16-04-x64",
"region": {
"id": 10,
"name": "lon",
"country": {
"id": "GB",
"name": "GB"
},
"zones": [
{
"id": 18,
"name": "lon1",
"shortName": "1"
}
]
},
"operatingsystemVersion": {
"id": 3,
"version": "16.04 LTS",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_digitalocean_instance_1gb_linux",
"description": "Digital Ocean 1 GB",
"prices": [
{
"id": 1520,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1521,
"period": 12,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1522,
"period": 36,
"currency": "EUR",
"price": "36000",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 42,
"name": "Ubuntu 17.04",
"externalId": "ubuntu-17-04-x64",
"region": {
"id": 10,
"name": "lon",
"country": {
"id": "GB",
"name": "GB"
},
"zones": [
{
"id": 18,
"name": "lon1",
"shortName": "1"
}
]
},
"operatingsystemVersion": {
"id": 6,
"version": "17.04",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_digitalocean_instance_1gb_linux",
"description": "Digital Ocean 1 GB",
"prices": [
{
"id": 1520,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1521,
"period": 12,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1522,
"period": 36,
"currency": "EUR",
"price": "36000",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
}
]
},
"stars": 5
},
{
"id": 6,
"cpu": 2,
"memory": "2.0",
"disk": 40,
"config": {
"id": 6,
"minCpu": 2,
"maxCpu": 2,
"minMemory": "2.0",
"maxMemory": "2.0",
"minDisk": 40,
"maxDisk": 40,
"externalId": "2gb",
"name": "2gb",
"description": "Digital Ocean 2 GB"
},
"provider": {
"id": 4,
"api": "digitalocean",
"name": "Digital Ocean",
"icon": "",
"systemimages": [
{
"id": 11,
"name": "Ubuntu 12.04",
"externalId": "ubuntu-12-04-x64",
"region": {
"id": 3,
"name": "nyc",
"country": {
"id": "US",
"name": "US"
},
"zones": [
{
"id": 7,
"name": "nyc1",
"shortName": "1"
},
{
"id": 8,
"name": "nyc2",
"shortName": "2"
},
{
"id": 9,
"name": "nyc3",
"shortName": "3"
}
]
},
"operatingsystemVersion": {
"id": 1,
"version": "12.04 LTS",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_digitalocean_instance_2gb_linux",
"description": "Digital Ocean 2 GB",
"prices": [
{
"id": 1523,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1524,
"period": 12,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1525,
"period": 36,
"currency": "EUR",
"price": "72000",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 12,
"name": "Ubuntu 14.04",
"externalId": "ubuntu-14-04-x64",
"region": {
"id": 3,
"name": "nyc",
"country": {
"id": "US",
"name": "US"
},
"zones": [
{
"id": 7,
"name": "nyc1",
"shortName": "1"
},
{
"id": 8,
"name": "nyc2",
"shortName": "2"
},
{
"id": 9,
"name": "nyc3",
"shortName": "3"
}
]
},
"operatingsystemVersion": {
"id": 2,
"version": "14.04 LTS",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_digitalocean_instance_2gb_linux",
"description": "Digital Ocean 2 GB",
"prices": [
{
"id": 1523,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1524,
"period": 12,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1525,
"period": 36,
"currency": "EUR",
"price": "72000",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 13,
"name": "Ubuntu 16.04",
"externalId": "ubuntu-16-04-x64",
"region": {
"id": 3,
"name": "nyc",
"country": {
"id": "US",
"name": "US"
},
"zones": [
{
"id": 7,
"name": "nyc1",
"shortName": "1"
},
{
"id": 8,
"name": "nyc2",
"shortName": "2"
},
{
"id": 9,
"name": "nyc3",
"shortName": "3"
}
]
},
"operatingsystemVersion": {
"id": 3,
"version": "16.04 LTS",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_digitalocean_instance_2gb_linux",
"description": "Digital Ocean 2 GB",
"prices": [
{
"id": 1523,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1524,
"period": 12,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1525,
"period": 36,
"currency": "EUR",
"price": "72000",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 14,
"name": "Ubuntu 17.04",
"externalId": "ubuntu-17-04-x64",
"region": {
"id": 3,
"name": "nyc",
"country": {
"id": "US",
"name": "US"
},
"zones": [
{
"id": 7,
"name": "nyc1",
"shortName": "1"
},
{
"id": 8,
"name": "nyc2",
"shortName": "2"
},
{
"id": 9,
"name": "nyc3",
"shortName": "3"
}
]
},
"operatingsystemVersion": {
"id": 6,
"version": "17.04",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_digitalocean_instance_2gb_linux",
"description": "Digital Ocean 2 GB",
"prices": [
{
"id": 1523,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1524,
"period": 12,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1525,
"period": 36,
"currency": "EUR",
"price": "72000",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 15,
"name": "Ubuntu 12.04",
"externalId": "ubuntu-12-04-x64",
"region": {
"id": 4,
"name": "sfo",
"country": {
"id": "US",
"name": "US"
},
"zones": [
{
"id": 10,
"name": "sfo1",
"shortName": "1"
},
{
"id": 11,
"name": "sfo2",
"shortName": "2"
}
]
},
"operatingsystemVersion": {
"id": 1,
"version": "12.04 LTS",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_digitalocean_instance_2gb_linux",
"description": "Digital Ocean 2 GB",
"prices": [
{
"id": 1523,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1524,
"period": 12,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1525,
"period": 36,
"currency": "EUR",
"price": "72000",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 16,
"name": "Ubuntu 14.04",
"externalId": "ubuntu-14-04-x64",
"region": {
"id": 4,
"name": "sfo",
"country": {
"id": "US",
"name": "US"
},
"zones": [
{
"id": 10,
"name": "sfo1",
"shortName": "1"
},
{
"id": 11,
"name": "sfo2",
"shortName": "2"
}
]
},
"operatingsystemVersion": {
"id": 2,
"version": "14.04 LTS",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_digitalocean_instance_2gb_linux",
"description": "Digital Ocean 2 GB",
"prices": [
{
"id": 1523,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1524,
"period": 12,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1525,
"period": 36,
"currency": "EUR",
"price": "72000",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 17,
"name": "Ubuntu 16.04",
"externalId": "ubuntu-16-04-x64",
"region": {
"id": 4,
"name": "sfo",
"country": {
"id": "US",
"name": "US"
},
"zones": [
{
"id": 10,
"name": "sfo1",
"shortName": "1"
},
{
"id": 11,
"name": "sfo2",
"shortName": "2"
}
]
},
"operatingsystemVersion": {
"id": 3,
"version": "16.04 LTS",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_digitalocean_instance_2gb_linux",
"description": "Digital Ocean 2 GB",
"prices": [
{
"id": 1523,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1524,
"period": 12,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1525,
"period": 36,
"currency": "EUR",
"price": "72000",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 18,
"name": "Ubuntu 17.04",
"externalId": "ubuntu-17-04-x64",
"region": {
"id": 4,
"name": "sfo",
"country": {
"id": "US",
"name": "US"
},
"zones": [
{
"id": 10,
"name": "sfo1",
"shortName": "1"
},
{
"id": 11,
"name": "sfo2",
"shortName": "2"
}
]
},
"operatingsystemVersion": {
"id": 6,
"version": "17.04",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_digitalocean_instance_2gb_linux",
"description": "Digital Ocean 2 GB",
"prices": [
{
"id": 1523,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1524,
"period": 12,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1525,
"period": 36,
"currency": "EUR",
"price": "72000",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 19,
"name": "Ubuntu 12.04",
"externalId": "ubuntu-12-04-x64",
"region": {
"id": 5,
"name": "ams",
"country": {
"id": "NL",
"name": "NL"
},
"zones": [
{
"id": 12,
"name": "ams2",
"shortName": "2"
},
{
"id": 13,
"name": "ams3",
"shortName": "3"
}
]
},
"operatingsystemVersion": {
"id": 1,
"version": "12.04 LTS",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_digitalocean_instance_2gb_linux",
"description": "Digital Ocean 2 GB",
"prices": [
{
"id": 1523,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1524,
"period": 12,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1525,
"period": 36,
"currency": "EUR",
"price": "72000",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 20,
"name": "Ubuntu 14.04",
"externalId": "ubuntu-14-04-x64",
"region": {
"id": 5,
"name": "ams",
"country": {
"id": "NL",
"name": "NL"
},
"zones": [
{
"id": 12,
"name": "ams2",
"shortName": "2"
},
{
"id": 13,
"name": "ams3",
"shortName": "3"
}
]
},
"operatingsystemVersion": {
"id": 2,
"version": "14.04 LTS",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_digitalocean_instance_2gb_linux",
"description": "Digital Ocean 2 GB",
"prices": [
{
"id": 1523,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1524,
"period": 12,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1525,
"period": 36,
"currency": "EUR",
"price": "72000",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 21,
"name": "Ubuntu 16.04",
"externalId": "ubuntu-16-04-x64",
"region": {
"id": 5,
"name": "ams",
"country": {
"id": "NL",
"name": "NL"
},
"zones": [
{
"id": 12,
"name": "ams2",
"shortName": "2"
},
{
"id": 13,
"name": "ams3",
"shortName": "3"
}
]
},
"operatingsystemVersion": {
"id": 3,
"version": "16.04 LTS",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_digitalocean_instance_2gb_linux",
"description": "Digital Ocean 2 GB",
"prices": [
{
"id": 1523,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1524,
"period": 12,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1525,
"period": 36,
"currency": "EUR",
"price": "72000",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 22,
"name": "Ubuntu 17.04",
"externalId": "ubuntu-17-04-x64",
"region": {
"id": 5,
"name": "ams",
"country": {
"id": "NL",
"name": "NL"
},
"zones": [
{
"id": 12,
"name": "ams2",
"shortName": "2"
},
{
"id": 13,
"name": "ams3",
"shortName": "3"
}
]
},
"operatingsystemVersion": {
"id": 6,
"version": "17.04",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_digitalocean_instance_2gb_linux",
"description": "Digital Ocean 2 GB",
"prices": [
{
"id": 1523,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1524,
"period": 12,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1525,
"period": 36,
"currency": "EUR",
"price": "72000",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 23,
"name": "Ubuntu 12.04",
"externalId": "ubuntu-12-04-x64",
"region": {
"id": 6,
"name": "fra",
"country": {
"id": "DE",
"name": "DE"
},
"zones": [
{
"id": 14,
"name": "fra1",
"shortName": "1"
}
]
},
"operatingsystemVersion": {
"id": 1,
"version": "12.04 LTS",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_digitalocean_instance_2gb_linux",
"description": "Digital Ocean 2 GB",
"prices": [
{
"id": 1523,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1524,
"period": 12,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1525,
"period": 36,
"currency": "EUR",
"price": "72000",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 24,
"name": "Ubuntu 14.04",
"externalId": "ubuntu-14-04-x64",
"region": {
"id": 6,
"name": "fra",
"country": {
"id": "DE",
"name": "DE"
},
"zones": [
{
"id": 14,
"name": "fra1",
"shortName": "1"
}
]
},
"operatingsystemVersion": {
"id": 2,
"version": "14.04 LTS",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_digitalocean_instance_2gb_linux",
"description": "Digital Ocean 2 GB",
"prices": [
{
"id": 1523,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1524,
"period": 12,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1525,
"period": 36,
"currency": "EUR",
"price": "72000",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 25,
"name": "Ubuntu 16.04",
"externalId": "ubuntu-16-04-x64",
"region": {
"id": 6,
"name": "fra",
"country": {
"id": "DE",
"name": "DE"
},
"zones": [
{
"id": 14,
"name": "fra1",
"shortName": "1"
}
]
},
"operatingsystemVersion": {
"id": 3,
"version": "16.04 LTS",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_digitalocean_instance_2gb_linux",
"description": "Digital Ocean 2 GB",
"prices": [
{
"id": 1523,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1524,
"period": 12,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1525,
"period": 36,
"currency": "EUR",
"price": "72000",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 26,
"name": "Ubuntu 17.04",
"externalId": "ubuntu-17-04-x64",
"region": {
"id": 6,
"name": "fra",
"country": {
"id": "DE",
"name": "DE"
},
"zones": [
{
"id": 14,
"name": "fra1",
"shortName": "1"
}
]
},
"operatingsystemVersion": {
"id": 6,
"version": "17.04",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_digitalocean_instance_2gb_linux",
"description": "Digital Ocean 2 GB",
"prices": [
{
"id": 1523,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1524,
"period": 12,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1525,
"period": 36,
"currency": "EUR",
"price": "72000",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 27,
"name": "Ubuntu 12.04",
"externalId": "ubuntu-12-04-x64",
"region": {
"id": 7,
"name": "sgp",
"country": {
"id": "SG",
"name": "SG"
},
"zones": [
{
"id": 15,
"name": "sgp1",
"shortName": "1"
}
]
},
"operatingsystemVersion": {
"id": 1,
"version": "12.04 LTS",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_digitalocean_instance_2gb_linux",
"description": "Digital Ocean 2 GB",
"prices": [
{
"id": 1523,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1524,
"period": 12,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1525,
"period": 36,
"currency": "EUR",
"price": "72000",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 28,
"name": "Ubuntu 14.04",
"externalId": "ubuntu-14-04-x64",
"region": {
"id": 7,
"name": "sgp",
"country": {
"id": "SG",
"name": "SG"
},
"zones": [
{
"id": 15,
"name": "sgp1",
"shortName": "1"
}
]
},
"operatingsystemVersion": {
"id": 2,
"version": "14.04 LTS",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_digitalocean_instance_2gb_linux",
"description": "Digital Ocean 2 GB",
"prices": [
{
"id": 1523,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1524,
"period": 12,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1525,
"period": 36,
"currency": "EUR",
"price": "72000",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 29,
"name": "Ubuntu 16.04",
"externalId": "ubuntu-16-04-x64",
"region": {
"id": 7,
"name": "sgp",
"country": {
"id": "SG",
"name": "SG"
},
"zones": [
{
"id": 15,
"name": "sgp1",
"shortName": "1"
}
]
},
"operatingsystemVersion": {
"id": 3,
"version": "16.04 LTS",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_digitalocean_instance_2gb_linux",
"description": "Digital Ocean 2 GB",
"prices": [
{
"id": 1523,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1524,
"period": 12,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1525,
"period": 36,
"currency": "EUR",
"price": "72000",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 30,
"name": "Ubuntu 17.04",
"externalId": "ubuntu-17-04-x64",
"region": {
"id": 7,
"name": "sgp",
"country": {
"id": "SG",
"name": "SG"
},
"zones": [
{
"id": 15,
"name": "sgp1",
"shortName": "1"
}
]
},
"operatingsystemVersion": {
"id": 6,
"version": "17.04",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_digitalocean_instance_2gb_linux",
"description": "Digital Ocean 2 GB",
"prices": [
{
"id": 1523,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1524,
"period": 12,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1525,
"period": 36,
"currency": "EUR",
"price": "72000",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 31,
"name": "Ubuntu 12.04",
"externalId": "ubuntu-12-04-x64",
"region": {
"id": 8,
"name": "blr",
"country": {
"id": "BY",
"name": "BY"
},
"zones": [
{
"id": 16,
"name": "blr1",
"shortName": "1"
}
]
},
"operatingsystemVersion": {
"id": 1,
"version": "12.04 LTS",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_digitalocean_instance_2gb_linux",
"description": "Digital Ocean 2 GB",
"prices": [
{
"id": 1523,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1524,
"period": 12,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1525,
"period": 36,
"currency": "EUR",
"price": "72000",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 32,
"name": "Ubuntu 14.04",
"externalId": "ubuntu-14-04-x64",
"region": {
"id": 8,
"name": "blr",
"country": {
"id": "BY",
"name": "BY"
},
"zones": [
{
"id": 16,
"name": "blr1",
"shortName": "1"
}
]
},
"operatingsystemVersion": {
"id": 2,
"version": "14.04 LTS",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_digitalocean_instance_2gb_linux",
"description": "Digital Ocean 2 GB",
"prices": [
{
"id": 1523,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1524,
"period": 12,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1525,
"period": 36,
"currency": "EUR",
"price": "72000",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 33,
"name": "Ubuntu 16.04",
"externalId": "ubuntu-16-04-x64",
"region": {
"id": 8,
"name": "blr",
"country": {
"id": "BY",
"name": "BY"
},
"zones": [
{
"id": 16,
"name": "blr1",
"shortName": "1"
}
]
},
"operatingsystemVersion": {
"id": 3,
"version": "16.04 LTS",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_digitalocean_instance_2gb_linux",
"description": "Digital Ocean 2 GB",
"prices": [
{
"id": 1523,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1524,
"period": 12,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1525,
"period": 36,
"currency": "EUR",
"price": "72000",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 34,
"name": "Ubuntu 17.04",
"externalId": "ubuntu-17-04-x64",
"region": {
"id": 8,
"name": "blr",
"country": {
"id": "BY",
"name": "BY"
},
"zones": [
{
"id": 16,
"name": "blr1",
"shortName": "1"
}
]
},
"operatingsystemVersion": {
"id": 6,
"version": "17.04",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_digitalocean_instance_2gb_linux",
"description": "Digital Ocean 2 GB",
"prices": [
{
"id": 1523,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1524,
"period": 12,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1525,
"period": 36,
"currency": "EUR",
"price": "72000",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 35,
"name": "Ubuntu 12.04",
"externalId": "ubuntu-12-04-x64",
"region": {
"id": 9,
"name": "tor",
"country": {
"id": "CA",
"name": "CA"
},
"zones": [
{
"id": 17,
"name": "tor1",
"shortName": "1"
}
]
},
"operatingsystemVersion": {
"id": 1,
"version": "12.04 LTS",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_digitalocean_instance_2gb_linux",
"description": "Digital Ocean 2 GB",
"prices": [
{
"id": 1523,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1524,
"period": 12,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1525,
"period": 36,
"currency": "EUR",
"price": "72000",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 36,
"name": "Ubuntu 14.04",
"externalId": "ubuntu-14-04-x64",
"region": {
"id": 9,
"name": "tor",
"country": {
"id": "CA",
"name": "CA"
},
"zones": [
{
"id": 17,
"name": "tor1",
"shortName": "1"
}
]
},
"operatingsystemVersion": {
"id": 2,
"version": "14.04 LTS",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_digitalocean_instance_2gb_linux",
"description": "Digital Ocean 2 GB",
"prices": [
{
"id": 1523,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1524,
"period": 12,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1525,
"period": 36,
"currency": "EUR",
"price": "72000",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 37,
"name": "Ubuntu 16.04",
"externalId": "ubuntu-16-04-x64",
"region": {
"id": 9,
"name": "tor",
"country": {
"id": "CA",
"name": "CA"
},
"zones": [
{
"id": 17,
"name": "tor1",
"shortName": "1"
}
]
},
"operatingsystemVersion": {
"id": 3,
"version": "16.04 LTS",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_digitalocean_instance_2gb_linux",
"description": "Digital Ocean 2 GB",
"prices": [
{
"id": 1523,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1524,
"period": 12,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1525,
"period": 36,
"currency": "EUR",
"price": "72000",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 38,
"name": "Ubuntu 17.04",
"externalId": "ubuntu-17-04-x64",
"region": {
"id": 9,
"name": "tor",
"country": {
"id": "CA",
"name": "CA"
},
"zones": [
{
"id": 17,
"name": "tor1",
"shortName": "1"
}
]
},
"operatingsystemVersion": {
"id": 6,
"version": "17.04",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_digitalocean_instance_2gb_linux",
"description": "Digital Ocean 2 GB",
"prices": [
{
"id": 1523,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1524,
"period": 12,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1525,
"period": 36,
"currency": "EUR",
"price": "72000",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 39,
"name": "Ubuntu 12.04",
"externalId": "ubuntu-12-04-x64",
"region": {
"id": 10,
"name": "lon",
"country": {
"id": "GB",
"name": "GB"
},
"zones": [
{
"id": 18,
"name": "lon1",
"shortName": "1"
}
]
},
"operatingsystemVersion": {
"id": 1,
"version": "12.04 LTS",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_digitalocean_instance_2gb_linux",
"description": "Digital Ocean 2 GB",
"prices": [
{
"id": 1523,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1524,
"period": 12,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1525,
"period": 36,
"currency": "EUR",
"price": "72000",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 40,
"name": "Ubuntu 14.04",
"externalId": "ubuntu-14-04-x64",
"region": {
"id": 10,
"name": "lon",
"country": {
"id": "GB",
"name": "GB"
},
"zones": [
{
"id": 18,
"name": "lon1",
"shortName": "1"
}
]
},
"operatingsystemVersion": {
"id": 2,
"version": "14.04 LTS",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_digitalocean_instance_2gb_linux",
"description": "Digital Ocean 2 GB",
"prices": [
{
"id": 1523,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1524,
"period": 12,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1525,
"period": 36,
"currency": "EUR",
"price": "72000",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 41,
"name": "Ubuntu 16.04",
"externalId": "ubuntu-16-04-x64",
"region": {
"id": 10,
"name": "lon",
"country": {
"id": "GB",
"name": "GB"
},
"zones": [
{
"id": 18,
"name": "lon1",
"shortName": "1"
}
]
},
"operatingsystemVersion": {
"id": 3,
"version": "16.04 LTS",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_digitalocean_instance_2gb_linux",
"description": "Digital Ocean 2 GB",
"prices": [
{
"id": 1523,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1524,
"period": 12,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1525,
"period": 36,
"currency": "EUR",
"price": "72000",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
},
{
"id": 42,
"name": "Ubuntu 17.04",
"externalId": "ubuntu-17-04-x64",
"region": {
"id": 10,
"name": "lon",
"country": {
"id": "GB",
"name": "GB"
},
"zones": [
{
"id": 18,
"name": "lon1",
"shortName": "1"
}
]
},
"operatingsystemVersion": {
"id": 6,
"version": "17.04",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
},
"products": [
{
"id": "system_management_basic",
"description": "Level27 basic system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 1493,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1494,
"period": 12,
"currency": "EUR",
"price": "21600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1495,
"period": 36,
"currency": "EUR",
"price": "64800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_professional",
"description": "Level27 professional system management: basic + live support",
"prices": [
{
"id": 1496,
"period": 1,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1497,
"period": 12,
"currency": "EUR",
"price": "129600",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1498,
"period": 36,
"currency": "EUR",
"price": "388800",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1499,
"period": 1,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1500,
"period": 12,
"currency": "EUR",
"price": "259200",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1501,
"period": 36,
"currency": "EUR",
"price": "777600",
"timing": "pre",
"default": true,
"status": 10
}
]
},
{
"id": "system_digitalocean_instance_2gb_linux",
"description": "Digital Ocean 2 GB",
"prices": [
{
"id": 1523,
"period": 1,
"currency": "EUR",
"price": "2000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1524,
"period": 12,
"currency": "EUR",
"price": "24000",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 1525,
"period": 36,
"currency": "EUR",
"price": "72000",
"timing": "pre",
"default": true,
"status": 10
}
]
}
]
}
]
},
"stars": 5
}
],
"total": 4,
"limit": 100,
"offset": 0
}
HTTP status code 400
Bad request
HTTP status code 500
Response when a user does not have a proper role to access a controller
Create a new system in db
post /systems/import
Create a new system in db
Body
Media type: application/json
Type: object
Properties- name: required(string)
Name
- organisation: required(integer)
The unique identifier of an organisation
Example:
{
"name": "myImportedSystem",
"organisation": 123
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"system": {
"id": 11,
"uid": "271774c8-30f5-4754-e9d9-39f4ac526752",
"status": "to_import"
}
}
HTTP status code 400
Bad request
HTTP status code 500
Response when a user does not have a proper role to access a controller
Get available security updates dates
get /systems/securityupdatedates
Get available security updates dates
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"securityUpdateDates": [
"No security updates",
"1st Tuesday of the month (22:00-0:00)",
"1st Tuesday of the month (22:00-0:00)",
"1st Tuesday of the month (22:00-0:00)",
"1st Tuesday of the month (22:00-0:00)",
"2nd Tuesday of the month (22:00-0:00)",
"2nd Tuesday of the month (22:00-0:00)",
"2nd Tuesday of the month (22:00-0:00)",
"2nd Tuesday of the month (22:00-0:00)",
"Manual updates by Level27",
"Manual updates by Level27",
"Manual updates by Level27",
"Manual updates by Level27"
]
}
/systemimages
List of all available values of cookbook's paramater for a Systemimage
get /systemimages/{systemimageId}/{cookbooktype}/{parameter}
List of all available values of cookbook's paramater for a Systemimage
URI Parameters
- systemimageId: required(string)
- cookbooktype: required(string)
- parameter: required(string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"versions": [
{
"value": "5.3",
"default": true,
"exclusive": true
},
{
"value": "5.6",
"default": false,
"exclusive": false
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
/operatingsystemversions
List of all available values of cookbook's paramater for a OperatingsystemVersion
get /operatingsystemversions/{operatingsystemVersionId}/{cookbooktype}/{parameter}
List of all available values of cookbook's paramater for a OperatingsystemVersion
URI Parameters
- operatingsystemVersionId: required(string)
- cookbooktype: required(string)
- parameter: required(string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"versions": [
{
"value": "5.3",
"default": true,
"exclusive": true
},
{
"value": "5.6",
"default": false,
"exclusive": false
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
/cookbooktypes
List of all available cookbook types
get /cookbooktypes
List of all available cookbook types
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"cookbooktypes": {
"cp4_nagios": {
"cookbooktype": {
"name": "cp4_nagios",
"displayName": "Nagios",
"description": "monitoring tool",
"parameters": [
{
"name": "some_mailbox_param",
"description": "Nagios param description",
"type": "string",
"defaultValue": "someValue"
}
]
}
},
"docker": {
"cookbooktype": {
"name": "docker",
"displayName": "Docker",
"description": "container software",
"parameters": [
{
"name": "some_docker_param",
"description": "Docker param description",
"type": "string",
"defaultValue": "someValue"
}
]
}
},
"mail_box": {
"cookbooktype": {
"name": "mail_box",
"displayName": "Mailbox",
"description": "Mailbox",
"parameters": [
{
"name": "some_mailbox_param",
"description": "Mailbox param description",
"type": "string",
"defaultValue": "someValue"
}
]
}
},
"mail_lb": {
"cookbooktype": {
"name": "mail_lb",
"displayName": "mail_lb",
"description": "mail_lb",
"parameters": [
{
"name": "mail_lb_param",
"description": "mail_lb param description",
"type": "string",
"defaultValue": "someValue"
}
]
}
},
"mail_smtpin": {
"cookbooktype": {
"name": "mail_smtpin",
"displayName": "Mail smtpin",
"description": "Mail smtpin",
"parameters": [
{
"name": "some_mail_smtpin_param",
"description": "mail_smtpin param description",
"type": "string",
"defaultValue": "someValue"
}
]
}
},
"memcached": {
"cookbooktype": {
"name": "memcached",
"displayName": "Memcached",
"description": "Memcached",
"parameters": [
{
"name": "port",
"description": "Port",
"type": "string",
"defaultValue": "11211"
},
{
"name": "listen_address",
"description": "Listen adress",
"type": "string",
"defaultValue": "127.0.0.1"
},
{
"name": "memory",
"description": "Memory size",
"type": "integer",
"defaultValue": 64
}
]
}
},
"mysql": {
"cookbooktype": {
"name": "mysql",
"displayName": "Mysql",
"description": "MySQL\\n================\\nMySQL is an open-source relational database management system (RDBMS)",
"parameters": [
{
"name": "query_cache_size",
"description": "Query cache size",
"type": "integer",
"defaultValue": 32
},
{
"name": "query_cache_limit",
"description": "the maximum size of a single resultset in the cache",
"type": "integer",
"defaultValue": 1
},
{
"name": "table_cache",
"description": "Table cache",
"type": "integer",
"defaultValue": 400
},
{
"name": "port",
"description": "Port",
"type": "string",
"defaultValue": "3306"
},
{
"name": "bind_address",
"description": "Bind address",
"type": "string",
"defaultValue": "localhost"
}
]
}
},
"php": {
"cookbooktype": {
"name": "php",
"displayName": "PHP-FPM",
"description": "PHP-FPM",
"parameters": [
{
"name": "apache:port",
"description": "apache listening port",
"type": "string",
"defaultValue": 8080
},
{
"name": "apache:ssl",
"description": "ssl",
"type": "boolean",
"defaultValue": false
},
{
"name": "memory_limit",
"description": "Memory limit",
"type": "integer",
"defaultValue": 256
},
{
"name": "max_execution_time",
"description": "Max execution time",
"type": "integer",
"defaultValue": 300
},
{
"name": "upload_max_filesize",
"description": "Max upload filesize",
"type": "integer",
"defaultValue": 20
},
{
"name": "version",
"description": "PHP version",
"type": "string",
"defaultValue": "default"
},
{
"name": "disable_functions",
"description": "Disabled PHP functions",
"type": "string",
"defaultValue": "passthru,escapeshellarg,escapeshellcmd,popen,pcntl_exec,dl,proc_open,proc_close,proc_get_status,proc_nice,proc_terminate"
},
{
"name": "expected_traffic",
"description": "Traffic",
"type": "string",
"defaultValue": "low"
}
]
}
},
"storage_nfs": {
"cookbooktype": {
"name": "storage_nfs",
"displayName": "storage_nfs",
"description": "storage_nfs",
"parameters": [
{
"name": "activepool",
"description": "The active zpool",
"type": "string",
"defaultValue": ""
}
]
}
},
"testbook": {
"cookbooktype": {
"name": "testbook",
"displayName": "testbook for testing cookbook jobs",
"description": "testbook for testing cookbook jobs",
"parameters": [
{
"name": "fail_create",
"description": "create job will fail if true",
"type": "boolean",
"defaultValue": false
},
{
"name": "fail_delete",
"description": "delete job will fail if true",
"type": "boolean",
"defaultValue": false
}
]
}
},
"url": {
"cookbooktype": {
"name": "url",
"displayName": "Url",
"description": "Url",
"parameters": [
{
"name": "proxy_service",
"description": "Proxy service",
"type": "string",
"defaultValue": "nginx"
},
{
"name": "expected_traffic",
"description": "Traffic",
"type": "string",
"defaultValue": "low"
},
{
"name": "backend:port",
"description": "Backend port",
"type": "string",
"defaultValue": "8080"
},
{
"name": "backend:ip",
"description": "Backend ip",
"type": "string",
"defaultValue": "127.0.0.1"
}
]
}
},
"urlfw": {
"cookbooktype": {
"name": "urlfw",
"displayName": "url forwarder",
"description": "url forwarder",
"parameters": [
{
"name": "apache_port",
"description": "Apache port",
"type": "string",
"defaultValue": "80"
}
]
}
},
"web_varnish": {
"cookbooktype": {
"name": "web_varnish",
"displayName": "varnish",
"description": "varnish",
"parameters": [
{
"name": "backend_ip",
"description": "Backend ip address",
"type": "string",
"defaultValue": "localhost"
},
{
"name": "backend_port",
"description": "Backend port",
"type": "string",
"defaultValue": "8080"
},
{
"name": "frontend_ip",
"description": "Varnish listen address",
"type": "string",
"defaultValue": "0.0.0.0"
},
{
"name": "frontend_port",
"description": "Varnish port",
"type": "string",
"defaultValue": "80"
},
{
"name": "storage_size",
"description": "Cache size in MB",
"type": "string",
"defaultValue": "256"
},
{
"name": "admin_ip",
"description": "Admin listen address",
"type": "string",
"defaultValue": "127.0.0.1"
},
{
"name": "admin_port",
"description": "Admin port",
"type": "string",
"defaultValue": "6082"
}
]
}
}
}
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
/cookbooks
Send a notification for an cookbook
post /cookbooks/{cookbookId}/notifications
Send a notification for an cookbook
URI Parameters
- cookbookId: required(string)
The unique identifier of an cookbook
Body
Media type: application/json
Type: object
Properties- type: required(string)
Notification type
- group: required(one of App, Crm, Domain, Finance, Mail, System)
Notification group
- params: (object)
Additional parameters (json)
Example:
{
"type": "jobremoveCookbook50",
"params": {
"guiUrl": "gui.cp4dev.be"
},
"group": "System"
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"id": 4205,
"entityIndex": "Level27\\SystemBundle\\Entity\\Cookbook_9",
"entityName": "cookbook",
"dtStamp": "1522135955",
"notificationGroup": "System",
"type": "jobremoveCookbook50",
"entityClass": "Level27\\SystemBundle\\Entity\\Cookbook",
"entityId": 9,
"rootEntityClass": null,
"rootEntityId": null,
"status": 21,
"statusDisplay": "queued",
"statusCategory": "yellow",
"sendMode": 0,
"priority": 250,
"subject": null,
"params": {
"guiUrl": "gui.cp4dev.be"
},
"userId": 1,
"contacts": [],
"extraRecipients": [],
"entity": null,
"user": null
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to an cookbook
HTTP status code 500
Response when a user does not have a proper role to access a controller
/checktypes
List of all available check types
get /checktypes
List of all available check types
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"checktypes": {
"disk": {
"servicetype": {
"name": "disk",
"displayName": "Disk space",
"description": "Disk space",
"location": "local",
"parameters": [
{
"name": "w",
"description": "Warning threshold (%)",
"type": "string",
"defaultValue": "10%",
"mandatory": true
},
{
"name": "c",
"description": "Critical threshold (%)",
"type": "string",
"defaultValue": "5%",
"mandatory": true
}
]
}
},
"http": {
"servicetype": {
"name": "http",
"displayName": "HTTP",
"description": "HTTP",
"location": "remote",
"parameters": [
{
"name": "port",
"description": "HTTP port",
"type": "integer",
"defaultValue": 80,
"mandatory": true
},
{
"name": "hostname",
"description": "Specific host name",
"type": "string",
"defaultValue": null,
"mandatory": false
},
{
"name": "url",
"description": "Specific url",
"type": "string",
"defaultValue": null,
"mandatory": false
},
{
"name": "content",
"description": "Content to check for in the HTTP response",
"type": "string",
"defaultValue": null,
"mandatory": false
}
]
}
},
"load": {
"servicetype": {
"name": "load",
"displayName": "System load",
"description": "System load",
"location": "local",
"parameters": [
{
"name": "w",
"description": "Warning threshold (%)",
"type": "string",
"defaultValue": "3.0,2.25,2.0",
"mandatory": true
},
{
"name": "c",
"description": "Critical threshold (%)",
"type": "string",
"defaultValue": "6.0,4.5,3.75",
"mandatory": true
}
]
}
},
"ssh": {
"servicetype": {
"name": "ssh",
"displayName": "SSH",
"description": "SSH",
"location": "remote",
"parameters": [
{
"name": "port",
"description": "SSH port",
"type": "integer",
"defaultValue": 22,
"mandatory": true
}
]
}
},
"supervisor": {
"servicetype": {
"name": "supervisor",
"displayName": "Supervisor",
"description": "Supervisor",
"location": "local",
"parameters": null
}
}
}
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
/checks
All checks of all the systems a user has access on
get /checks
All checks of all the systems a user has access on
Query Parameters
- orderBy: (string)
- orderType: (string)
ASC or DESC
- filter: (string)
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- status: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"checks": [
{
"id": 1,
"checktype": "disk",
"status": "ok",
"statusInformation": null,
"dtLastMonitoringEnabled": null,
"dtLastStatusChange": null,
"dtLastCheck": null,
"dtNextCheck": null,
"checkparameters": {
"w": {
"value": "15%",
"default": false
},
"c": {
"value": "2%",
"default": false
}
},
"checkparameterDescriptions": {
"w": "Warning threshold (%)",
"c": "Critical threshold (%)"
},
"checktypeLocation": "local",
"system": {
"id": 14,
"name": "dns2.test1.be"
}
},
{
"id": 2,
"checktype": "load",
"status": "ok",
"statusInformation": null,
"dtLastMonitoringEnabled": null,
"dtLastStatusChange": null,
"dtLastCheck": null,
"dtNextCheck": null,
"checkparameters": {
"w": {
"value": "3.0,2.25,2.0",
"default": true
},
"c": {
"value": "6.0,4.5,3.75",
"default": true
}
},
"checkparameterDescriptions": {
"w": "Warning threshold (%)",
"c": "Critical threshold (%)"
},
"checktypeLocation": "local",
"system": {
"id": 124,
"name": "dns122.test1.be"
}
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Get a check
get /checks/{checkId}
Get a check
URI Parameters
- checkId: required(string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"check": {
"id": 1,
"checktype": "disk",
"status": "ok",
"statusInformation": null,
"dtLastMonitoringEnabled": null,
"dtLastStatusChange": null,
"dtLastCheck": null,
"dtNextCheck": null,
"checkparameters": {
"w": {
"value": "15%",
"default": false
},
"c": {
"value": "2%",
"default": false
}
},
"checkparameterDescriptions": {
"w": "Warning threshold (%)",
"c": "Critical threshold (%)"
},
"checktypeLocation": "local",
"system": {
"id": 1,
"name": "dns1Test"
},
"alerts": []
}
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
/checkalerts
Get all checkalerts for all systems
get /checkalerts
Get all checkalerts for all systems
Query Parameters
- status: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"checkalerts": [
{
"id": 101,
"dtStarted": "1499263676",
"dtClosed": "1584377072",
"status": "closed",
"statusInformation": "CHECK_NRPE: Error - Could not complete SSL handshake.",
"check": {
"id": 41,
"checktype": "supervisor",
"system": {
"id": 15,
"name": "test123.test.eu"
}
},
"checkalertEvents": [
{
"id": 4393,
"status": 59,
"statusInformation": "CHECK_NRPE: Error - Could not complete SSL handshake.",
"dtReceived": "1499263676",
"isArchived": false,
"system": {
"id": 16,
"name": "mon1.test.eu"
}
},
{
"id": 4394,
"status": 59,
"statusInformation": "CHECK_NRPE: Error - Could not complete SSL handshake.",
"dtReceived": "1499263679",
"isArchived": false,
"system": {
"id": 18,
"name": "mon3.test.eu"
}
},
{
"id": 4402,
"status": 10,
"statusInformation": "OK - Service and all processes running",
"dtReceived": "1499264516",
"isArchived": false,
"system": {
"id": 16,
"name": "mon1.test.eu"
}
},
{
"id": 4403,
"status": 10,
"statusInformation": "OK - Service and all processes running",
"dtReceived": "1499264516",
"isArchived": false,
"system": {
"id": 17,
"name": "mon2.test.eu"
}
},
{
"id": 4406,
"status": 59,
"statusInformation": "CHECK_NRPE: Error - Could not complete SSL handshake.",
"dtReceived": "1499264579",
"isArchived": false,
"system": {
"id": 18,
"name": "mon3.test.eu"
}
},
{
"id": 4409,
"status": 59,
"statusInformation": "CHECK_NRPE: Error - Could not complete SSL handshake.",
"dtReceived": "1499264816",
"isArchived": false,
"system": {
"id": 16,
"name": "mon1.test.eu"
}
},
{
"id": 4410,
"status": 59,
"statusInformation": "CHECK_NRPE: Error - Could not complete SSL handshake.",
"dtReceived": "1499264816",
"isArchived": false,
"system": {
"id": 17,
"name": "mon2.test.eu"
}
},
{
"id": 4416,
"status": 10,
"statusInformation": "OK - Service and all processes running",
"dtReceived": "1499265356",
"isArchived": false,
"system": {
"id": 16,
"name": "mon1.test.eu"
}
},
{
"id": 4418,
"status": 59,
"statusInformation": "CHECK_NRPE: Error - Could not complete SSL handshake.",
"dtReceived": "1499265479",
"isArchived": false,
"system": {
"id": 18,
"name": "mon3.test.eu"
}
},
{
"id": 4422,
"status": 10,
"statusInformation": "OK - Service and all processes running",
"dtReceived": "1499265596",
"isArchived": false,
"system": {
"id": 17,
"name": "mon2.test.eu"
}
},
{
"id": 4425,
"status": 10,
"statusInformation": "OK - Service and all processes running",
"dtReceived": "1499265719",
"isArchived": false,
"system": {
"id": 18,
"name": "mon3.test.eu"
}
}
]
}
]
}
HTTP status code 401
Response when a user does not have a proper role to access a controller
Send a notification for an checkalert
post /checkalerts/{checkalertId}/notifications
Send a notification for an checkalert
URI Parameters
- checkalertId: required(string)
Body
Media type: application/json
Type: object
Properties- type: required(string)
Notification type
- group: required(one of App, Crm, Domain, Finance, Mail, System)
Notification group
- params: (object)
Additional parameters (json)
Example:
{
"type": "critical",
"params": {
"systemUrl": "http://gui.cp4dev.be/systems/35",
"systemName": "test3",
"checkParams": {
"Warning threshold (%)": "10%",
"Critical threshold (%)": "5%"
}
},
"group": "System"
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"id": 4204,
"entityIndex": "Level27\\SystemBundle\\Entity\\Checkalert_9",
"entityName": "checkalert",
"dtStamp": "1522134994",
"notificationGroup": "System",
"type": "critical",
"entityClass": "Level27\\SystemBundle\\Entity\\Checkalert",
"entityId": 9,
"rootEntityClass": null,
"rootEntityId": null,
"status": 21,
"statusDisplay": "queued",
"statusCategory": "yellow",
"sendMode": 0,
"priority": 250,
"subject": null,
"params": {
"systemUrl": "http://gui.cp4dev.be/systems/35",
"systemName": "test3",
"checkParams": {
"Warning threshold (%)": "10%",
"Critical threshold (%)": "5%"
}
},
"userId": 1,
"contacts": [],
"extraRecipients": [],
"entity": null,
"user": null
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to an checkalert
HTTP status code 500
Response when a user does not have a proper role to access a controller
/systemgroups
Create a new systemgroup
List of all available systemgroups
post /systemgroups
Create a new systemgroup
Body
Media type: application/json
Type: object
Properties- name: required(string)
Name
- organisation: required(integer)
The unique identifier of an organisation
Example:
{
"name": "mySystemgroup",
"organisation": 123
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"systemgroup": {
"id": 2,
"name": "mySystemgroup",
"status": "ok",
"shared": false,
"systems": [
{
"id": 8,
"name": "Test System 1"
},
{
"id": 9,
"name": "Test System 2"
}
],
"organisation": {
"id": 123,
"name": "Test Company"
}
}
}
HTTP status code 400
Validation of new systemgroup failed
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /systemgroups
List of all available systemgroups
Query Parameters
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- orderBy: (string)
- orderType: (string)
ASC or DESC
- filter: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"systemgroups": [
{
"id": 1,
"name": "testSystemgroup",
"status": "ok",
"shared": false,
"systems": [
{
"id": 8,
"name": "Test System 1"
},
{
"id": 9,
"name": "Test System 2"
}
],
"organisation": {
"id": 123,
"name": "Test Comapany"
}
},
{
"id": 2,
"name": "mySystemgroup",
"status": "ok",
"shared": false,
"systems": [
{
"id": 8,
"name": "Test System 1"
}
],
"organisation": {
"id": 123,
"name": "Test Comapany"
}
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Update a systemgroup
Delete a systemgroup
Get a systemgroup
put /systemgroups/{systemgroupId}
Update a systemgroup
URI Parameters
- systemgroupId: required(string)
The unique identifier of a systemgroup
Body
Media type: application/json
Type: object
Properties- name: required(string)
Name
- organisation: required(integer)
The unique identifier of an organisation
Example:
{
"name": "mySystemgroup",
"organisation": 123
}
HTTP status code 204
Response when update of a systemgroup succeeded
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a systemgroup
HTTP status code 404
Response when systemgroup is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
delete /systemgroups/{systemgroupId}
Delete a systemgroup
URI Parameters
- systemgroupId: required(string)
The unique identifier of a systemgroup
HTTP status code 204
Request successfully processed
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a systemgroup
HTTP status code 404
Response when systemgroup is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /systemgroups/{systemgroupId}
Get a systemgroup
URI Parameters
- systemgroupId: required(string)
The unique identifier of a systemgroup
HTTP status code 200
Response when systemgroup is found
Body
Media type: application/json
Type: object
Example:
{
"systemgroup": {
"id": 2,
"name": "mySystemgroup",
"status": "ok",
"shared": false,
"systems": [
{
"id": 8,
"name": "Test System 1"
},
{
"id": 9,
"name": "Test System 2"
}
],
"organisation": {
"id": 123,
"name": "Test Company"
}
}
}
HTTP status code 403
Response when a user does not have access to a systemgroup
HTTP status code 404
Response when systemgroup is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Add access to a systemgroup
post /systemgroups/{systemgroupId}/acls
Add access to a systemgroup
URI Parameters
- systemgroupId: required(string)
The unique identifier of a systemgroup
Body
Media type: application/json
Type: object
Properties- organisation: required(integer)
The unique identifier of an organisation
Example:
{
"organisation": 123
}
HTTP status code 201
Response when access to a systemgroup was successfully added
Body
Media type: application/json
Type: object
Example:
{
"acl": {
"id": 39,
"object": "Level27\\SystemBundle\\Entity\\Systemgroup",
"objectId": 2,
"permissions": null,
"extra": null,
"type": "manual",
"organisation": {
"id": 123,
"name": "Test Company"
}
}
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a systemgroup
HTTP status code 404
Response when a systemgroup is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Remove access to a systemgroup
delete /systemgroups/{systemgroupId}/acls/{organisationId}
Remove access to a systemgroup
URI Parameters
- systemgroupId: required(string)
The unique identifier of a systemgroup
- organisationId: required(string)
HTTP status code 204
Response when access to a systemgroup was successfully removed
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a systemgroup
HTTP status code 404
Response when a systemgroup is not found
HTTP status code 500
Response when a user does not have a proper role to access a control
/volumegroups
Create a new volumegroup (action only for admin)
List of all available volumegroups (action only for admin)
post /volumegroups
Create a new volumegroup (action only for admin)
Body
Media type: application/json
Type: object
Properties- name: required(string)
Name
- organisation: required(integer)
The unique identifier of an organisation
- primarySystem: required(integer)
The unique identifier of a system
- it must have an active cookbook type storage_local or storage_nfs installed
- it can't be used as secondary and backup system as well
- secondarySystem: (integer)
The unique identifier of a system
- it must have an active cookbook type storage_local or storage_nfs installed
- it can't be the same as other two systems
- its cookbook must match the primarySystem cookbook
- backupSystem: (integer)
The unique identifier of a system
- it must have an active cookbook type storage_local or storage_nfs installed
- it can't be the same as other two systems
- its cookbook must match the primarySystem cookbook
Example:
{
"name": "myVolumegroup",
"organisation": 123,
"primarySystem": 12,
"secondarySystem": null,
"backupSystem": null
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"volumegroup": {
"id": 2,
"name": "myVolumegroup",
"status": "ok",
"uid": "a025e6a2-c8fd-8f84-e95f-060028fb0f99b",
"primarySystem": {
"id": 8,
"uid": "b025e6a2-35-8f84-e95f-ssssegret4563",
"fqdn": "436dsfdsf.level27.be",
"name": "TestSystem1"
},
"secondarySystem": null,
"backupSystem": null,
"organisation": {
"id": 123,
"name": "Test Company"
}
}
}
HTTP status code 400
Validation of new volumegroup failed
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /volumegroups
List of all available volumegroups (action only for admin)
Query Parameters
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- orderBy: (string)
- orderType: (string)
ASC or DESC
- filter: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"volumegroups": [
{
"id": 2,
"name": "myVolumegroup",
"status": "ok",
"uid": "a025e6a2-c8fd-8f84-e95f-060028fb0f99b",
"primarySystem": {
"id": 8,
"fqdn": "436dsfdsf.level27.be",
"name": "TestSystem1"
},
"secondarySystem": null,
"backupSystem": null,
"organisation": {
"id": 123,
"name": "Test Company"
}
},
{
"id": 2,
"name": "myVolumegroup2",
"status": "to_create",
"uid": "b025e6a2-c8ddfd-8f84-e95f-0600xd28fb0f1b",
"primarySystem": {
"id": 14,
"fqdn": "s4c56s447cs.level.be",
"name": "TestStystem2"
},
"secondarySystem": null,
"backupSystem": null,
"organisation": {
"id": 123,
"name": "Test Company"
}
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Update a volumegroup (not supported in current version)
Delete a volumegroup (action only for admin)
Get a volumegroup (action only for admin)
put /volumegroups/{volumegroupId}
Update a volumegroup (not supported in current version)
URI Parameters
- volumegroupId: required(string)
The unique identifier of a volumegroup
Body
Media type: application/json
Type: object
Properties- name: required(string)
Name
- organisation: required(integer)
The unique identifier of an organisation
- primarySystem: required(integer)
The unique identifier of a system
- it must have an active cookbook type storage_local or storage_nfs installed
- it can't be used as secondary and backup system as well
- secondarySystem: (integer)
The unique identifier of a system
- it must have an active cookbook type storage_local or storage_nfs installed
- it can't be the same as other two systems
- its cookbook must match the primarySystem cookbook
- backupSystem: (integer)
The unique identifier of a system
- it must have an active cookbook type storage_local or storage_nfs installed
- it can't be the same as other two systems
- its cookbook must match the primarySystem cookbook
Example:
{
"name": "myVolumegroup",
"organisation": 123,
"primarySystem": 12,
"secondarySystem": null,
"backupSystem": null
}
HTTP status code 204
Response when update of a volumegroup succeeded
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a volumegroup
HTTP status code 404
Response when volumegroup is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
delete /volumegroups/{volumegroupId}
Delete a volumegroup (action only for admin)
URI Parameters
- volumegroupId: required(string)
The unique identifier of a volumegroup
HTTP status code 204
Request successfully processed
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a volumegroup
HTTP status code 404
Response when volumegroup is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /volumegroups/{volumegroupId}
Get a volumegroup (action only for admin)
URI Parameters
- volumegroupId: required(string)
The unique identifier of a volumegroup
HTTP status code 200
Response when volumegroup is found
Body
Media type: application/json
Type: object
Example:
{
"volumegroup": {
"id": 2,
"name": "myVolumegroup",
"status": "ok",
"uid": "a025e6a2-c8fd-8f84-e95f-060028fb0f99b",
"primarySystem": {
"id": 8,
"uid": "b025e6a2-35-8f84-e95f-ssssegret4563",
"fqdn": "436dsfdsf.level27.be",
"name": "TestSystem1"
},
"secondarySystem": null,
"backupSystem": null,
"organisation": {
"id": 123,
"name": "Test Company"
}
}
}
HTTP status code 403
Response when a user does not have access to a volumegroup
HTTP status code 404
Response when volumegroup is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
/volumes
Create a new volume
List of all available volumes
post /volumes
Create a new volume
Body
Media type: application/json
Type: object
Properties- name: required(string)
Name
- space: required(integer)
Changing its value is allowed, but it only can grow
- organisation: required(integer)
The unique identifier of an organisation
- system: (integer)
The unique identifier of an System
- System, Volumegroup or Zone must be filled in. Only one of them can be chosen
- System must be active
- zone: (integer)
The unique identifier of an Zone
- System, Volumegroup or Zone must be filled in. Only one of them can be chosen
- (non-editable)
- volumegroup: (integer)
The unique identifier of an Zone
- System, Volumegroup or Zone must be filled in. Only one of them can be chosen
- Allowed only for admin
- Volume Organisation and Volumegroup Organisations must match
- (non-editable)
- initialSnapshot: (integer)
The unique identifier of an Snapshot
- NOT implemented in current version
- Both Snapshot and Systemimage can't be filled in
- (non-editable)
- systemimage: (integer)
The unique identifier of an Systemimage
- Both Snapshot and Systemimage can't be filled in
- Space of the volume must be greater than or equal to systemimage minimum volume space
- (non-editable)
Example:
{
"name": "myVolume",
"space": 1000,
"organisation": 123,
"system": 12,
"zone": null,
"volumegroup": null,
"systemimage": null,
"initialSnapshot": null
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"volume": {
"id": 1,
"name": "myVolume",
"status": "ok",
"space": 1000,
"uid": "2717ss4c8-3v0f5-475x4-e9fd9-39f4cac526752",
"organisation": {
"id": 123,
"name": "Test Company"
},
"system": null
}
}
HTTP status code 400
Validation of new volume failed
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /volumes
List of all available volumes
Query Parameters
- status: (string)
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- orderBy: (string)
- orderType: (string)
ASC or DESC
- filter: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"volumes": [
{
"id": 1,
"name": "myVolume",
"status": "ok",
"space": 1000,
"uid": "2717ss4c8-3v0f5-475x4-e9fd9-39f4cac526752",
"organisation": {
"id": 123,
"name": "Test Company"
},
"system": null
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Update a volume
Delete a volume
Get a volume
put /volumes/{volumeId}
Update a volume
URI Parameters
- volumeId: required(string)
The unique identifier of a volume
Body
Media type: application/json
Type: object
Properties- name: required(string)
Name
- space: required(integer)
Changing its value is allowed, but it only can grow
- organisation: required(integer)
The unique identifier of an organisation
- system: (integer)
The unique identifier of an System
- System, Volumegroup or Zone must be filled in. Only one of them can be chosen
- System must be active
- zone: (integer)
The unique identifier of an Zone
- System, Volumegroup or Zone must be filled in. Only one of them can be chosen
- (non-editable)
- volumegroup: (integer)
The unique identifier of an Zone
- System, Volumegroup or Zone must be filled in. Only one of them can be chosen
- Allowed only for admin
- Volume Organisation and Volumegroup Organisations must match
- (non-editable)
- initialSnapshot: (integer)
The unique identifier of an Snapshot
- NOT implemented in current version
- Both Snapshot and Systemimage can't be filled in
- (non-editable)
- systemimage: (integer)
The unique identifier of an Systemimage
- Both Snapshot and Systemimage can't be filled in
- Space of the volume must be greater than or equal to systemimage minimum volume space
- (non-editable)
Example:
{
"name": "myVolume",
"space": 1000,
"organisation": 123,
"system": 12,
"zone": null,
"volumegroup": null,
"systemimage": null,
"initialSnapshot": null
}
HTTP status code 204
Response when update of a volume succeeded
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a volume
HTTP status code 404
Response when volume is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
delete /volumes/{volumeId}
Delete a volume
URI Parameters
- volumeId: required(string)
The unique identifier of a volume
get /volumes/{volumeId}
Get a volume
URI Parameters
- volumeId: required(string)
The unique identifier of a volume
HTTP status code 200
Response when volume is found
Body
Media type: application/json
Type: object
Example:
{
"volume": {
"id": 1,
"name": "myVolume",
"status": "ok",
"space": 1000,
"uid": "2717ss4c8-3v0f5-475x4-e9fd9-39f4cac526752",
"organisation": {
"id": 123,
"name": "Test Company"
},
"system": null
}
}
HTTP status code 403
Response when a user does not have access to a volume
HTTP status code 404
Response when volume is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Add access to a volume
post /volumes/{volumeId}/acls
Add access to a volume
URI Parameters
- volumeId: required(string)
The unique identifier of a volume
Body
Media type: application/json
Type: object
Properties- organisation: required(integer)
The unique identifier of an organisation
Example:
{
"organisation": 123
}
HTTP status code 201
Response when access to a volume was successfully added
Body
Media type: application/json
Type: object
Example:
{
"acl": {
"id": 38,
"object": "Level27\\SystemBundle\\Entity\\Volume",
"objectId": 12,
"permissions": null,
"extra": null,
"type": "manual",
"organisation": {
"id": 123,
"name": "Test Company"
}
}
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a volume
HTTP status code 404
Response when a volume is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Remove access to a volume
delete /volumes/{volumeId}/acls/{organisationId}
Remove access to a volume
URI Parameters
- volumeId: required(string)
The unique identifier of a volume
- organisationId: required(string)
HTTP status code 204
Response when access to a volume was successfully removed
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a volume
HTTP status code 404
Response when a volume is not found
HTTP status code 500
Response when a user does not have a proper role to access a control
/networks
Create a new network (action only for admin)
Get list of all available networks
post /networks
Create a new network (action only for admin)
Query Parameters
- source: (string)
Body
Media type: application/json
Type: object
Properties- description: (string)
Description
- remarks: (string)
remarks
- customer: required(boolean)
customer
- internal: required(boolean)
internal
- public: required(boolean)
public
- zone: required(integer)
The unique identifier of a zone
- systemgroup: (integer)
The unique identifier of a systemgroup
- organisation: required(integer)
The unique identifier of an organisation
- name: required(string)
Name
- vlan: (integer)
vlan
- ipv4: (integer)
ipv4
- netmaskv4: (integer)
netmaskv4
- gatewayv4: (integer)
gatewayv4
- ipv6: (string)
ipv6
- netmaskv6: (integer)
netmaskv6
- gatewayv6: (integer)
gatewayv6
- externalId: (string)
External id
- ips: (array of any)
Array of ips (default: null)
Example:
{
"description": "test network",
"remarks": "private test network",
"customer": false,
"internal": false,
"public": true,
"zone": 123,
"systemgroup": null,
"organisation": 123,
"name": "level27_be1_public_1",
"vlan": null,
"ipv4": 1682642999,
"netmaskv4": 1682642970,
"gatewayv4": 27,
"ipv6": null,
"netmaskv6": null,
"gatewayv6": null,
"externalId": 2315,
"ips": {
"ipv4": [
{
"ip": "82.111.68.227",
"cp3System": 123,
"cp4System": 321
},
{
"ip": "82.111.68.228",
"cp3System": 124,
"cp4System": 325
}
],
"ipv6": [
{
"ip": "2a02:1802:12:82::ab15",
"cp3System": 123,
"cp4System": 321
}
]
}
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"network": {
"id": 27,
"name": "level27_be1_public_1",
"description": "test 123",
"remarks": null,
"status": "to_create",
"vlan": null,
"ipv4": "185.3.199.000",
"netmaskv4": 27,
"gatewayv4": "185.3.200.000",
"ipv6": null,
"netmaskv6": null,
"gatewayv6": null,
"externalId": null,
"nipapPoolId": null,
"public": true,
"customer": false,
"internal": false,
"publicIp4Native": null,
"publicIp6Native": null,
"full": null,
"systemgroup": null,
"organisation": {
"id": 123,
"name": "Test Organisation"
}
}
}
HTTP status code 400
Validation of new network failed
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /networks
Get list of all available networks
Query Parameters
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- orderBy: (string)
- orderType: (string)
ASC or DESC
- filter: (string)
- type: (one of public, internal, customer)
filters by network type
- provider: (integer)
provider id
- excludeFull: (one of false, false - default: 0)
decides if full networks should be shown on a list
- status: (string)
HTTP status code 200
Response when networks are found (action only for admin)
Body
Media type: application/json
Type: object
Example:
{
"networks": [
{
"id": 27,
"name": "level27_gent_public_1",
"description": "test 123",
"remarks": null,
"status": "to_create",
"vlan": null,
"ipv4": "185.3.199.000",
"netmaskv4": 27,
"gatewayv4": "185.3.200.000",
"ipv6": null,
"netmaskv6": null,
"gatewayv6": null,
"externalId": null,
"nipapPoolId": null,
"public": true,
"customer": false,
"internal": false,
"publicIp4Native": null,
"publicIp6Native": null,
"full": null,
"systemgroup": null,
"organisation": {
"id": 123,
"name": "Test Organisation"
}
}
]
}
HTTP status code 403
Response when a user does not have a proper role to access a controller
HTTP status code 500
Response when a user does not have a proper role to access a controller
Update a network (action only for admin)
Delete a network (action only for admin)
Get a network
put /networks/{networkId}
Update a network (action only for admin)
URI Parameters
- networkId: required(string)
The unique identifier of a network
Query Parameters
- source: (string)
Body
Media type: application/json
Type: object
Properties- description: (string)
Description
- remarks: (string)
remarks
- customer: required(boolean)
customer
- internal: required(boolean)
internal
- public: required(boolean)
public
- zone: required(integer)
The unique identifier of a zone
- systemgroup: (integer)
The unique identifier of a systemgroup
- organisation: required(integer)
The unique identifier of an organisation
- name: required(string)
Name
- vlan: (integer)
vlan
- ipv4: (integer)
ipv4
- netmaskv4: (integer)
netmaskv4
- gatewayv4: (integer)
gatewayv4
- ipv6: (string)
ipv6
- netmaskv6: (integer)
netmaskv6
- gatewayv6: (integer)
gatewayv6
- externalId: (string)
External id
- ips: (array of any)
Array of ips (default: null)
Example:
{
"description": "test network",
"remarks": "private test network",
"customer": false,
"internal": false,
"public": true,
"zone": 123,
"systemgroup": null,
"organisation": 123,
"name": "level27_be1_public_1",
"vlan": null,
"ipv4": 1682642999,
"netmaskv4": 1682642970,
"gatewayv4": 27,
"ipv6": null,
"netmaskv6": null,
"gatewayv6": null,
"externalId": 2315,
"ips": {
"ipv4": [
{
"ip": "82.111.68.227",
"cp3System": 123,
"cp4System": 321
},
{
"ip": "82.111.68.228",
"cp3System": 124,
"cp4System": 325
}
],
"ipv6": [
{
"ip": "2a02:1802:12:82::ab15",
"cp3System": 123,
"cp4System": 321
}
]
}
}
HTTP status code 204
Response when update of a network succeeded
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a network
HTTP status code 404
Response when network is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
delete /networks/{networkId}
Delete a network (action only for admin)
URI Parameters
- networkId: required(string)
The unique identifier of a network
Query Parameters
- source: (string)
HTTP status code 204
Request successfully processed
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a network
HTTP status code 404
Response when network is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /networks/{networkId}
Get a network
URI Parameters
- networkId: required(string)
The unique identifier of a network
HTTP status code 200
Response when network is found
Body
Media type: application/json
Type: object
Example:
{
"network": {
"id": 27,
"name": "level27_be1_public_1",
"description": "test 123",
"remarks": null,
"status": "to_create",
"vlan": null,
"ipv4": "185.3.199.000",
"netmaskv4": 27,
"gatewayv4": "185.3.200.000",
"ipv6": null,
"netmaskv6": null,
"gatewayv6": null,
"externalId": null,
"nipapPoolId": null,
"public": true,
"customer": false,
"internal": false,
"publicIp4Native": null,
"publicIp6Native": null,
"full": null,
"systemgroup": null,
"organisation": {
"id": 123,
"name": "Test Organisation"
}
}
}
HTTP status code 403
Response when a user does not have access to a network
HTTP status code 404
Response when network is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
List of network's systems (action only for admin)
get /networks/{networkId}/systems
List of network's systems (action only for admin)
URI Parameters
- networkId: required(string)
The unique identifier of a network
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"systems": [
{
"id": 123,
"fqdn": "111fbd5fa.firecontrol.be",
"customerFqdn": "testsystem.eu",
"name": "testsystem.eu",
"status": "ok",
"runningStatus": "running",
"organisation": {
"id": 1,
"name": "level27"
},
"networks": [
{
"mac": "06:24:1e:30:b2:22",
"ips": [
{
"ipv4": "1682702372",
"publicIpv4": "911045927",
"ipv6": null,
"publicIpv6": "2a05:d018:0123:cd00:0000:0000:0000:000b",
"hostname": "testsystem.eu"
}
]
}
]
}
]
}
HTTP status code 403
Response when a user does not have a proper role to access a controller
Fetch an ip from nipap (action only for admin)
Remove an ip from nipap (action only for admin)
post /networks/{networkId}/nipap/ips
Fetch an ip from nipap (action only for admin)
URI Parameters
- networkId: required(string)
The unique identifier of a network
Body
Media type: application/json
Type: object
Properties- version: required(one of 4, 6)
Version
Examples:
1:
{
"version": 4
}
2:
{
"version": 6
}
HTTP status code 201
Response when an ip was successfully fetched from nipap
Body
Media type: application/json
Type: object
Example:
{
"version": 4,
"ip": "82.112.68.228"
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have a proper role to access a controller
HTTP status code 404
Response when a network is not found
delete /networks/{networkId}/nipap/ips
Remove an ip from nipap (action only for admin)
/entities
Get all entities (admin only)
get /entities
Get all entities (admin only)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"total": {
"apps": 3,
"domains": 2,
"mailgroups": 1,
"systems": 3
},
"domains": [
{
"id": 1,
"fullname": "test1.be",
"organisationId": 17,
"organisationName": "test1"
},
{
"id": 2,
"fullname": "test1.nl",
"organisationId": 17,
"organisationName": "test1"
}
],
"systems": [
{
"id": 1,
"name": "dns1test",
"organisationId": 17,
"organisationName": "test1"
},
{
"id": 2,
"name": "dns1test",
"organisationId": 17,
"organisationName": "test1"
},
{
"id": 3,
"name": "mail1test",
"organisationId": 17,
"organisationName": "test1"
}
],
"mailgroups": [
{
"id": 3,
"name": "myMailgroup",
"organisationId": 17,
"organisationName": "test1",
"domains": [
{
"id": 6326,
"name": "test2344test",
"mailPrimary": true,
"domaintype": {
"id": 364,
"extension": "be"
}
}
]
}
],
"apps": [
{
"id": 1,
"name": "App1",
"organisationId": 17,
"organisationName": "test1"
},
{
"id": 2,
"name": "AppTest",
"organisationId": 17,
"organisationName": "test1"
},
{
"id": 4,
"name": "Test1App",
"organisationId": 17,
"organisationName": "test1"
}
]
}
/order
Create entities using one request
post /order
Create entities using one request
Body
Media type: application/json
Type: object
Properties- order: required(string)
json (parameters for all entities)
Example:
{
"domaincontact": {
"params": {
"type": "licensee",
"firstName": "Jan",
"lastName": "Kowalski",
"street": "TestStreet",
"zip": "12345",
"city": "TestCity",
"phone": "+32.123456789",
"email": "test@test.be",
"country": "BE",
"organisation": 123
}
},
"domains": [
{
"params": {
"name": "testorderdomain",
"domaintype": 364,
"action": "create",
"handleDns": true,
"eppCode": null,
"extraFields": null,
"organisation": 123,
"nameserver1": null,
"nameserver2": null,
"nameserver3": null,
"nameserverIp1": null,
"nameserverIp2": null,
"nameserverIp3": null,
"nameserverIpv61": null,
"nameserverIpv62": null,
"nameserverIpv63": null
}
},
{
"params": {
"name": "testorderdomain2",
"domaintype": 364,
"action": "transfer",
"handleDns": true,
"eppCode": "ghfty6712gHGTYU",
"extraFields": null,
"organisation": 123,
"nameserver1": null,
"nameserver2": null,
"nameserver3": null,
"nameserverIp1": null,
"nameserverIp2": null,
"nameserverIp3": null,
"nameserverIpv61": null,
"nameserverIpv62": null,
"nameserverIpv63": null
}
}
],
"system": {
"params": {
"name": "TestSystemOnboarding",
"systemimage": 13,
"zone": 7,
"systemproviderConfiguration": 15,
"disk": 30,
"managementType": "professional_level27",
"organisation": 123,
"publicNetworking": true,
"remarks": null
}
},
"app": {
"params": {
"name": "TestAppOnboarding",
"organisation": 123
},
"appcomponents": [
{
"params": {
"name": "php",
"appcomponenttype": "php",
"category": "config",
"pass": "vgyf67thg675tfvLhggiu7"
},
"urls": null
},
{
"params": {
"name": "mysql",
"appcomponenttype": "php",
"category": "config",
"pass": "vgyf67thg675tfvLhggiu7"
},
"urls": null
}
],
"sslCertificates": null
},
"mailgroup": {
"params": {
"name": "TestOnboarding",
"organisation": 123,
"type": "level27"
},
"mailboxes": [
{
"params": {
"name": "Mailbox",
"password": "vgyf67thg675tfLvhggiu7"
},
"mailboxAddresses": [
{
"params": {
"address": "test@testorderdomain.be"
}
},
{
"params": {
"address": "test@testorderdomain2.be"
}
}
]
}
],
"mailforwarders": null
}
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"domaincontact": {
"id": 123
},
"domains": [
{
"id": 321
},
{
"id": 322
}
],
"system": {
"id": 45,
"cookbooks": [
{
"id": 15
},
{
"id": 16
}
]
},
"app": {
"id": 85,
"appcomponents\"": [
{
"id": 123,
"urls": [
{
"id": 15
},
{
"id": 16
}
]
},
{
"id": 56,
"urls": null
}
],
"sslCertificates": [
{
"id": 15
}
]
},
"mailgroup": {
"id": 45,
"mailboxes": [
{
"id": 86,
"mailboxAddresses": [
{
"id": 99
},
{
"id": 100
}
]
}
],
"mailforwarders": null
}
}
HTTP status code 400
Bad request
Body
Media type: application/json
Type: object
Example:
{
"domaincontact": {
"errors": {
"children": {
"type": {
"errors": [
"Unrecognized domaincontact type."
]
},
"firstName": {},
"lastName": {},
"organisationName": {},
"street": {},
"houseNumber": {},
"zip": {},
"city": {},
"state": {},
"phone": {},
"fax": {},
"email": {},
"taxNumber": {},
"passportNumber": {},
"socialNumber": {},
"birthStreet": {},
"birthZip": {},
"birthCity": {},
"birthDate": {},
"gender": {},
"country": {},
"organisation": {
"errors": [
"This value is not valid."
]
}
}
}
},
"domains": [
{
"errors": {
"children": {
"name": {},
"nameserver1": {},
"nameserver2": {},
"nameserver3": {},
"nameserverIp1": {},
"nameserverIp2": {},
"nameserverIp3": {},
"nameserverIpv61": {},
"nameserverIpv62": {},
"nameserverIpv63": {},
"ttl": {},
"action": {},
"eppCode": {},
"handleDns": {},
"extraFields": {},
"domaintype": {
"errors": [
"This value is not valid."
]
},
"domaincontactOnsite": {},
"organisation": {
"errors": [
"This value is not valid."
]
},
"autorecordTemplate": {},
"autorecordTemplateReplace": {},
"autoTeams": {}
}
}
},
{
"errors": {
"children": {
"name": {},
"nameserver1": {},
"nameserver2": {},
"nameserver3": {},
"nameserverIp1": {},
"nameserverIp2": {},
"nameserverIp3": {},
"nameserverIpv61": {},
"nameserverIpv62": {},
"nameserverIpv63": {},
"ttl": {},
"action": {},
"eppCode": {
"errors": [
"Please enter a EPP code"
]
},
"handleDns": {},
"extraFields": {},
"domaintype": {},
"domaincontactOnsite": {},
"organisation": {
"errors": [
"This value is not valid."
]
},
"autorecordTemplate": {},
"autorecordTemplateReplace": {},
"autoTeams": {}
}
}
}
],
"mailgroup": {
"errors": {
"children": {
"name": {},
"type": {},
"organisation": {
"errors": [
"This value is not valid."
]
},
"systemgroup": {},
"autoTeams": {}
}
},
"mailboxes": [
{
"errors": {
"children": {
"name": {},
"password": {
"errors": [
"Your password must contain at least 1 capital letter and 1 number"
]
},
"oooEnabled": {},
"oooSubject": {},
"oooText": {}
}
},
"mailboxAddresses": [
{
"errors": {
"children": {
"address": {
"errors": [
"Mailgroup is not linked to a proper domain"
]
}
}
}
},
{
"errors": null
}
]
}
],
"mailforwarders": null
},
"system": {
"errors": {
"children": {
"customerFqdn": {},
"name": {},
"remarks": {},
"disk": {},
"managementType": {},
"publicNetworking": {},
"systemimage": {},
"organisation": {
"errors": [
"This value is not valid."
]
},
"systemproviderConfiguration": {
"errors": [
"This value is not valid."
]
},
"zone": {},
"autoTeams": {},
"cpu": {},
"memory": {}
}
},
"cookbooks": [
{
"errors": null
},
{
"errors": null
}
]
},
"app": {
"errors": {
"children": {
"name": {},
"organisation": {
"errors": [
"This value is not valid."
]
},
"autoTeams": {}
}
},
"appcomponents": [
{
"errors": {
"errors": [
"This form should not contain extra fields. Extra fields: \"invalidPatam\"."
],
"children": {
"name": {},
"category": {},
"appcomponenttype": {},
"systemgroup": {},
"systemprovider": {},
"pass": {
"errors": [
"Your password must contain at least 1 capital letter and 1 number"
]
},
"path": {},
"sshkeys": {},
"extraconfig": {}
}
},
"urls": [
{
"errors": {
"message": "Invalid hostname testorderdomain"
}
},
{
"errors": null
}
]
},
{
"errors": {
"children": {
"name": {},
"category": {},
"appcomponenttype": {},
"systemgroup": {},
"systemprovider": {},
"pass": {
"errors": [
"Your password must contain at least 1 capital letter and 1 number"
]
},
"path": {},
"sshkeys": {},
"extraconfig": {}
}
},
"urls": null
}
],
"sslCertificates": [
{
"errors": {
"children": {
"name": {},
"sslType": {},
"autoSslCertificateUrls": {
"errors": [
"Invalid hostname testorderdomain"
]
},
"autoUrlLink": {}
}
}
}
]
}
}
HTTP status code 403
Response when a user does not have access to some entity
HTTP status code 500
Response when a user does not have a proper role to access a controller
/attachments
Create a new attachment
List of all available attachments
post /attachments
Create a new attachment
Body
Media type: application/json
Type: object
Properties- name: required(string)
Name
- entityClass: required(string)
Entity class
- entityId: required(integer)
The unique identifier of an entity
- organisation: required(integer)
The unique identifier of an organisation
- file: required(string)
Base64 encoded pdf file
Example:
{
"name": "My Agreement",
"entityClass": "Level27\\FinanceBundle\\Entity\\Agreement",
"entityId": 132,
"organisation": 11,
"file": "BASE_64_file"
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"attachment": {
"id": 1,
"name": "test1",
"entityClass": "Level27\\FinanceBundle\\Entity\\Agreement",
"entityId": 3,
"filename": "document1628761186-6114ec62e5ab6.pdf",
"status": "ok",
"statusCategory": "green"
}
}
HTTP status code 400
Validation of new attachment failed
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /attachments
List of all available attachments
Query Parameters
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- orderBy: (string)
- orderType: (string)
ASC or DESC
- filter: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"total": 4,
"attachments": [
{
"id": 1,
"name": "test1",
"entityClass": "Level27\\FinanceBundle\\Entity\\Agreement",
"entityId": 3,
"filename": "document1628761186-6114ec62e5ab6.pdf",
"status": "ok",
"statusCategory": "green"
},
{
"id": 2,
"name": "test2",
"entityClass": "Level27\\FinanceBundle\\Entity\\Agreement",
"entityId": 3,
"filename": "attachment1628764379_6114f8db4dbae-6114f8db631d5.pdf",
"status": "ok",
"statusCategory": "green"
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Update an attachment
Delete a attachment
Get a attachment
put /attachments/{attachmentId}
Update an attachment
URI Parameters
- attachmentId: required(string)
The unique identifier of a attachment
Body
Media type: application/json
Type: object
Properties- name: required(string)
Name
- organisation: required(integer)
The unique identifier of an organisation
Example:
{
"name": "My Agreement",
"organisation": 11
}
HTTP status code 204
Response when update of an attachment succeeded
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to an attachment
HTTP status code 404
Response when an attachment is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
delete /attachments/{attachmentId}
Delete a attachment
URI Parameters
- attachmentId: required(string)
The unique identifier of a attachment
HTTP status code 204
Request successfully processed
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a attachment
HTTP status code 404
Response when attachment is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /attachments/{attachmentId}
Get a attachment
URI Parameters
- attachmentId: required(string)
The unique identifier of a attachment
HTTP status code 200
Response when attachment is found
Body
Media type: application/json
Type: object
Example:
{
"attachment": {
"id": 1,
"name": "test1",
"entityClass": "Level27\\FinanceBundle\\Entity\\Agreement",
"entityId": 3,
"filename": "document1628761186-6114ec62e5ab6.pdf",
"status": "ok",
"statusCategory": "green"
}
}
HTTP status code 403
Response when a user does not have access to a attachment
HTTP status code 404
Response when attachment is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Download an attachment
get /attachments/{attachmentId}/download
Download an attachment
URI Parameters
- attachmentId: required(string)
The unique identifier of a attachment
/languages
List of all available languages
/jobs
Get job history (action only for admin)
get /jobs/history/{type}/{id}/{status}
Get job history (action only for admin)
URI Parameters
- type: required(string)
Type (one of all, app, appcomponent, domain, system)
- id: (string)
Id (The unique identifier of an entity or 0)
- status: (string)
Status (one of 0, 20, 21, 40, 50, 90 or busy)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
[
{
"id": 510839,
"status": 40,
"conc": 1,
"hoe": 1,
"msg": "Update cookbook",
"dt": "1582712817"
},
{
"id": 510829,
"status": 50,
"conc": 1,
"hoe": 1,
"msg": "System creation",
"dt": "1582712683"
},
{
"id": 510801,
"status": 21,
"conc": 5,
"hoe": 1,
"msg": "Maintenance job: security updates",
"dt": "1582711203"
}
]
HTTP status code 403
Response when a user does not have an admin role
Get job history (action only for admin)
get /jobs/history/root/{rootJobId}
Get job history (action only for admin)
URI Parameters
- rootJobId: required(string)
Query Parameters
- type: (one of normal, verbose, very_verbose - default: verbose)
verbosity
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"id": 510829,
"hoe": 1,
"conc": 1,
"status": 21,
"msg": "",
"dt": 1582712683,
"logs": [],
"jobs": [
{
"id": 510827,
"hoe": 1,
"conc": 3,
"status": 21,
"msg": "Update all cookbooks",
"dt": 1582712683,
"logs": [],
"jobs": [
{
"id": 510828,
"hoe": 1,
"status": 50,
"msg": "Update cookbook on system",
"action": "updateCookbook",
"dt": 1582712683,
"eClass": "Level27\\SystemBundle\\Entity\\Cookbook",
"eId": 4451,
"rClass": "Level27\\SystemBundle\\Entity\\System",
"rId": 5208,
"eString": "Cookbook 4451",
"service": "level27_system.systemjob",
"system": 5208,
"excCode": null,
"excMsg": "null \"logs\"",
"jobs": []
}
]
},
{
"id": 510830,
"hoe": 1,
"status": 20,
"msg": "Process cookbook updates",
"action": "processCookbookUpdates",
"dt": 1582712683,
"eClass": "Level27\\SystemBundle\\Entity\\System",
"eId": 5208,
"eString": "System #5208/testsystem.be",
"service": "level27_system.systemjob",
"logs": [],
"jobs": []
}
]
}
HTTP status code 403
Response when a user does not have an admin role
Removes a job (action only for admin)
Retry all failed jobs in a job tree (action only for admin)
Get root job for a job (action only for admin)