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)
Endpoints which don't require authorization token:
- /login
- /softlogin
- /resetting/send_email
- /resetting/{token}
- /enable2faandget2fasecret
- /activate2fa
- /cancel2faActivation
- /downloadpdf/{id}/{contactId}/{hash}
- /downloadxml/{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 '
- 6digitCode: required(string)
6 digit code
- trustThisDevice: (boolean)
Trust this device (default: false)
- 2faToken: (string)
Hash
Examples:
Using email:
{
"username": "testlogin@test.be",
"password": "Test123password"
}
Using login:
{
"username": "testlogin",
"password": "Test123password"
}
with 2fa:
{
"username": "testlogin@test.be",
"password": "Test123password",
"6digitCode": "012345",
"trustThisDevice": true,
"2faToken": "cincfFtjAy3FCOPtZctATNoxTDMsXHoEbTPOmggMpaXTw38gPQLpMUt//pA+BYX4b1lNcG5qUrBagyRtU+pkYg=="
}
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",
"updateEntitiesOnly": false,
"prePaymentRequired": false,
"externalInfoRequired": 0,
"agencyMode": 0,
"street": "Test-Street",
"houseNumber": "23",
"zip": "1000",
"city": "Test City",
"reseller": null
},
"country": {
"id": "BE",
"name": "Belgium"
},
"fullname": "Test User"
},
"hash": "vO3isKQe80YnggT3s1Svh4QejJlg44zpNF7mRTf+0V8XEq5kHGBgJIui13RG11JbZ9upIbpaGDsy8IKKW6aYzaRg==",
"hash2fa": "cincfFtjAy3FCOPtZctATNoxTDMsXHoEbTPOmggMpaXTw38gPQLpMUt//pA+BYX4b1lNcG5qUrBagyRtU+pkYg=="
}
HTTP status code 400
Bad request
HTTP status code 401
Bad credentials
HTTP status code 404
Response when a username is not found
/softlogin
Log in
post /softlogin
Log in
Body
Media type: application/json
Type: object
Properties- username: required(string)
Login or email
- confirmationCode: required(string)
This is the unique identifier
Example:
{
"username": "testemail@testemail.com",
"confirmationCode": "Rt4UTb"
}
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",
"updateEntitiesOnly": false,
"prePaymentRequired": false,
"externalInfoRequired": 0,
"agencyMode": 0,
"street": "Test-Street",
"houseNumber": "23",
"zip": "1000",
"city": "Test City",
"reseller": null
},
"country": {
"id": "BE",
"name": "Belgium"
},
"fullname": "Test User"
},
"hash": "vO3isKQe80YnggT3s1Svh4QejJlg44zpNF7mRTf+0V8XEq5kHGBgJIui13RG11JbZ9upIbpaGDsy8IKKW6aYzaRg==",
"hash2fa": "cincfFtjAy3FCOPtZctATNoxTDMsXHoEbTPOmggMpaXTw38gPQLpMUt//pA+BYX4b1lNcG5qUrBagyRtU+pkYg=="
}
HTTP status code 400
Bad request
HTTP status code 401
Bad credentials
HTTP status code 404
Response when a username is not found
/logout
/enable2faandget2fasecret
Enable 2FA and get secret
post /enable2faandget2fasecret
Enable 2FA and get secret
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 '
Example:
{
"username": "test@test.be",
"password": "test123PassValid"
}
HTTP status code 200
Response when a request is successfully processed
Body
Media type: application/json
Type: object
Example:
{
"success": true,
"secret": "BYPBQACB2RBZC3GLWFBEHIEKAOTH4QPF"
}
HTTP status code 400
Bad request
HTTP status code 401
Bad credentials
HTTP status code 404
Response when a username is not found
/activate2fa
Activate 2FA
post /activate2fa
Activate 2FA
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 '
- 6digitCode: required(string)
6 digit code
- trustThisDevice: (boolean)
Trust this device (default: false)
Example:
{
"username": "test@test.be",
"password": "test123PassValid",
"6digitCode": "012345",
"trustThisDevice": true
}
HTTP status code 200
Response when a request is successfully processed
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",
"updateEntitiesOnly": false,
"prePaymentRequired": false,
"externalInfoRequired": 0,
"agencyMode": 0,
"street": "Test-Street",
"houseNumber": "23",
"zip": "1000",
"city": "Test City",
"reseller": null
},
"country": {
"id": "BE",
"name": "Belgium"
},
"fullname": "Test User"
},
"hash": "vO3isKQe80YnggT3s1Svh4QejJlg44zpNF7mRTf+0V8XEq5kHGBgJIui13RG11JbZ9upIbpaGDsy8IKKW6aYzaRg==",
"hash2fa": "cincfFtjAy3FCOPtZctATNoxTDMsXHoEbTPOmggMpaXTw38gPQLpMUt//pA+BYX4b1lNcG5qUrBagyRtU+pkYg=="
}
HTTP status code 400
Bad request
HTTP status code 401
Bad credentials
HTTP status code 404
Response when a username is not found
/cancel2faActivation
Cancel 2FA
post /cancel2faActivation
Cancel 2FA
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 '
Example:
{
"username": "test@test.be",
"password": "test123PassValid"
}
/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
- externalInfoRequired: (one of 0, 1, 2)
externalInfoRequired
- agencyMode: (integer)
Is the organisation an agency? (admin only) (default: 0)
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": 1,
"name": "Test Organisation",
"taxNumber": null,
"mustPayTax": true,
"remarksToPrintInvoice": null,
"externalId": null,
"updateEntitiesOnly": false,
"preventDeactivation": false,
"parentOrganisation": "level27",
"externalInfoRequired": 0,
"nextInvoiceRun": "1677798000",
"required2fa": true,
"agencyMode": 0,
"bundleProRata": false,
"street": null,
"houseNumber": null,
"zip": null,
"city": null,
"paymentperiod": 30,
"documentInterval": "0",
"source1": null,
"source2": null,
"resellerKickback": null,
"pdfInvoice": false,
"discount": "0",
"isSoft": null,
"prePaymentRequired": null,
"defaultAgreements": {
"Level27\\AppBundle\\Entity\\App": 83,
"Level27\\DomainBundle\\Entity\\Domain": 3,
"Level27\\FinanceBundle\\Entity\\GenericItem": 83,
"Level27\\ConnectBundle\\Entity\\Location": 83,
"Level27\\MailBundle\\Entity\\Mailgroup": 3,
"Level27\\SystemBundle\\Entity\\System": 83
},
"country": null,
"resellerOrganisation": null,
"users": [],
"pricegroup": {
"id": "default",
"description": "List prices"
},
"organisationType": {
"id": "it_agency_2",
"description": "IT agency 2"
}
}
}
with reseller:
{
"organisation": {
"id": 2,
"name": "Test Organisation with Reseller",
"taxNumber": null,
"mustPayTax": true,
"remarksToPrintInvoice": null,
"externalId": null,
"updateEntitiesOnly": false,
"preventDeactivation": false,
"parentOrganisation": "level27",
"externalInfoRequired": 0,
"nextInvoiceRun": "1677798000",
"required2fa": true,
"agencyMode": 0,
"bundleProRata": false,
"street": null,
"houseNumber": null,
"zip": null,
"city": null,
"paymentperiod": 30,
"documentInterval": "0",
"source1": null,
"source2": null,
"resellerKickback": null,
"pdfInvoice": false,
"discount": "0",
"isSoft": null,
"prePaymentRequired": null,
"defaultAgreements": null,
"country": null,
"resellerOrganisation": {
"id": 231,
"name": "Test Company 2",
"taxNumber": "BE123456"
},
"users": [],
"pricegroup": {
"id": "default",
"description": "List prices"
},
"organisationType": {
"id": "it_agency_2",
"description": "IT agency 2"
}
}
}
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,
"remarksToPrintInvoice": null,
"externalId": null,
"updateEntitiesOnly": false,
"parentOrganisation": "level27",
"agencyMode": 1,
"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"
]
}
]
},
{
"id": 2,
"name": "Test Company 2",
"taxNumber": "BE654321",
"mustPayTax": true,
"remarksToPrintInvoice": null,
"externalId": null,
"updateEntitiesOnly": false,
"parentOrganisation": "level27",
"agencyMode": 1,
"street": "Test-Street",
"houseNumber": "24",
"zip": "123",
"city": "Test City",
"country": {
"id": "BE",
"name": "Belgium"
},
"resellerOrganisation": {
"id": 1,
"name": "Test Company 1",
"taxNumber": "BE123456",
"agencyMode": 1
},
"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 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)
- defaultResellerKickback: (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)
- externalInfoRequired: (one of 0, 1, 2)
externalInfoRequired
- organisationType: (integer)
The unique identifier of an organisation type
- nextInvoiceRun: (string)
DateTime - timestamp
- defaultAgreements: (array of any)
Array of default agreements for entity class (default: null)
- required2fa: (boolean)
2FA is required or not
- agencyMode: (integer)
Is the organisation an agency? (admin only) (default: 0)
- bundleProRata: (boolean)
(default: false)
Examples:
1:
{
"name": "Test SubCompany",
"taxNumber": "EB123456",
"resellerOrganisation": null,
"street": "Test123",
"houseNumber": 123,
"zip": 123,
"city": "Test City",
"country": "BE",
"remarksToPrintInvoice": null,
"required2fa": true
}
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,
"nextInvoiceRun": 1677798000,
"defaultAgreement": {
"Level27\\AppBundle\\Entity\\App": 83,
"Level27\\DomainBundle\\Entity\\Domain": 3,
"Level27\\FinanceBundle\\Entity\\GenericItem": 83,
"Level27\\ConnectBundle\\Entity\\Location": 83,
"Level27\\MailBundle\\Entity\\Mailgroup": 3,
"Level27\\SystemBundle\\Entity\\System": 83
},
"bundleProRata": false
}
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)
- defaultResellerKickback: (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)
- externalInfoRequired: (one of 0, 1, 2)
externalInfoRequired
- organisationType: (integer)
The unique identifier of an organisation type
- nextInvoiceRun: (string)
DateTime - timestamp
- defaultAgreements: (array of any)
Array of default agreements for entity class (default: null)
- required2fa: (boolean)
2FA is required or not
- agencyMode: (integer)
Is the organisation an agency? (admin only) (default: 0)
- bundleProRata: (boolean)
(default: false)
Examples:
1:
{
"name": "Test SubCompany",
"taxNumber": "EB123456",
"resellerOrganisation": null,
"street": "Test123",
"houseNumber": 123,
"zip": 123,
"city": "Test City",
"country": "BE",
"remarksToPrintInvoice": null,
"required2fa": true
}
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,
"nextInvoiceRun": 1677798000,
"defaultAgreement": {
"Level27\\AppBundle\\Entity\\App": 83,
"Level27\\DomainBundle\\Entity\\Domain": 3,
"Level27\\FinanceBundle\\Entity\\GenericItem": 83,
"Level27\\ConnectBundle\\Entity\\Location": 83,
"Level27\\MailBundle\\Entity\\Mailgroup": 3,
"Level27\\SystemBundle\\Entity\\System": 83
},
"bundleProRata": false
}
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,
"remarksToPrintInvoice": null,
"externalId": 123,
"updateEntitiesOnly": false,
"preventDeactivation": false,
"parentOrganisation": "level27",
"externalInfoRequired": 0,
"nextInvoiceRun": "1678057200",
"required2fa": true,
"agencyMode": 1,
"bundleProRata": false,
"testAccount": false,
"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"
]
}
],
"defaultAgreements": {
"Level27\\AppBundle\\Entity\\App": 83,
"Level27\\DomainBundle\\Entity\\Domain": 3,
"Level27\\FinanceBundle\\Entity\\GenericItem": 83,
"Level27\\ConnectBundle\\Entity\\Location": 83,
"Level27\\MailBundle\\Entity\\Mailgroup": 3,
"Level27\\SystemBundle\\Entity\\System": 83
}
}
}
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"
]
}
],
"invitationCount": 0
},
{
"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"
]
}
],
"invitationCount": 1
}
]
}
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)
- autoTeams: (string)
A csv list of team ids
Example:
{
"firstName": "Test",
"lastName": "TestInvitation",
"email": "test123@level27.be",
"language": "en",
"autoRoles": "ROLE_SYSTEM,ROLE_APP",
"autoTeams": "1,2,3"
}
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)
- autoTeams: (string)
A csv list of team ids
Example:
{
"firstName": "Test",
"lastName": "TestInvitation",
"email": "test123@level27.be",
"language": "en",
"autoRoles": "ROLE_SYSTEM,ROLE_APP",
"autoTeams": "1,2,3"
}
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
List of all available users
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)
Example:
{
"username": "test123@test.com",
"firstName": "Test",
"lastName": "TestUser",
"language": "nl",
"defaultRoles": "ROLE_CUSTADMIN,ROLE_FINANCE"
}
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
Enable 2fa
patch /organisations/{organisationId}/users/{userId}/enable2fa
Enable 2fa
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- userId: required(string)
The unique identifier of a user
Disable 2fa
patch /organisations/{organisationId}/users/{userId}/disable2fa
Disable 2fa
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- userId: required(string)
The unique identifier of a user
Get a list of a user's tokens 2fa
get /organisations/{organisationId}/users/{userId}/token2fa
Get a list of a user's tokens 2fa
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- userId: required(string)
The unique identifier of a user
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"total": 1,
"tokens2fa": [
{
"id": 1,
"trustedDevice": {
"country": "Belgium",
"ip": "85.0.0.1",
"os": "Windows",
"browser": "Firefox",
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:177.0) Firefox/111.0"
},
"dtCreated": "1681131502",
"dtExpires": "1683723502"
}
]
}
HTTP status code 403
Response when a user does not have access to an organisation or a user
Get a single token2fa
Delete a token2fa
get /organisations/{organisationId}/users/{userId}/token2fa/{token2faId}
Get a single token2fa
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- userId: required(string)
The unique identifier of a user
- token2faId: required(string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"token2fa": [
{
"id": 1,
"trustedDevice": {
"country": "Belgium",
"ip": "85.0.0.1",
"os": "Windows",
"browser": "Firefox",
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:177.0) Firefox/111.0"
},
"dtCreated": "1681131502",
"dtExpires": "1683723502"
}
]
}
HTTP status code 403
Response when a user does not have access to an organisation or a user
delete /organisations/{organisationId}/users/{userId}/token2fa/{token2faId}
Delete a token2fa
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- userId: required(string)
The unique identifier of a user
- token2faId: required(string)
Create a new ApiKey
Get an ApiKeys
post /organisations/{organisationId}/users/{userId}/apikeys
Create a new ApiKey
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- name: required(string)
Name
- whitelist: required(array of any)
Array of ips
Example:
{
"name": "TokenWithApiKey",
"whitelist": [
"10.0.0.9",
"2041:0000:140F::875B:131B"
]
}
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"apiKey": {
"id": 1,
"name": "MyApiKey",
"whitelist": [
"10.0.0.9",
"2041:0:140f::875b:131b"
],
"hash": "MY_TOKEN"
}
}
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
get /organisations/{organisationId}/users/{userId}/apikeys
Get an ApiKeys
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- userId: required(string)
The unique identifier of a user
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"total": 1,
"apiKeys": [
{
"id": 11,
"name": "MyApiKey",
"whitelist": [
"10.0.0.9",
"2041:0:140f::875b:131b"
],
"dtExpires": "1714729525"
}
]
}
HTTP status code 403
Response when a user does not have access to a user
Update an ApiKey
Delete an ApiKey
put /organisations/{organisationId}/users/{userId}/apikeys/{apiKeyId}
Update an ApiKey
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- userId: required(string)
The unique identifier of a user
- apiKeyId: required(string)
Body
Media type: application/json
Type: object
Properties- name: required(string)
Name
- whitelist: required(array of any)
Array of ips
Example:
{
"name": "TokenWithApiKey",
"whitelist": [
"10.0.0.9",
"2041:0000:140F::875B:131B"
]
}
delete /organisations/{organisationId}/users/{userId}/apikeys/{apiKeyId}
Delete an ApiKey
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- userId: required(string)
The unique identifier of a user
- apiKeyId: required(string)
Get a user's preferences
Update a user's preferences
get /organisations/{organisationId}/users/{userId}/preferences
Get a user's preferences
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- userId: required(string)
The unique identifier of a user
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"preferences": {
"darkTheme": true,
"shortcuts": [
{
"entityClass": "Level27\\AppBundle\\Entity\\Appcomponent",
"entityId": "1"
},
{
"entityClass": "Level27\\AppBundle\\Entity\\Appcomponent",
"entityId": 2
}
]
}
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access
HTTP status code 404
Response when a user does not exist
patch /organisations/{organisationId}/users/{userId}/preferences
Update a user's preferences
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- optional parameters: required(string)
Parameters defined by definition. See list of available preferences: /userpreferences.
Example:
{
"darkTheme": true,
"shortcuts": [
{
"entityClass": "appcomponent",
"entityId": "1",
"name": "myAppcomponent"
},
{
"entityClass": "domain",
"entityId": 2,
"name": "MyDomain1"
}
]
}
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"preferences": {
"darkTheme": true,
"shortcuts": [
{
"entityClass": "Level27\\AppBundle\\Entity\\Appcomponent",
"entityId": "1"
},
{
"entityClass": "Level27\\AppBundle\\Entity\\Appcomponent",
"entityId": 2
}
]
}
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access
HTTP status code 404
Response when a user does not exist
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
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,
"locations": 1,
"rootTasks": 1,
"customPackages": 1
},
"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"
}
],
"locations": [
{
"id": 5,
"name": "Test1",
"organisationId": 17,
"organisationName": "test1"
}
],
"rootTasks": [
{
"id": 37,
"package": null,
"template": "system_resources_update",
"organisationId": 2570,
"organisationName": "test1"
}
],
"customPackages": [
{
"id": 2,
"name": "MyPackage",
"organisationId": 5286,
"organisationName": "TestAgency"
}
]
}
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,
"locations": 1,
"rootTasks": 1,
"customPackages": 1
},
"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"
}
],
"locations": [
{
"id": 5,
"name": "Test1",
"organisationId": 17,
"organisationName": "test1"
}
],
"rootTasks": [
{
"id": 37,
"package": null,
"template": "system_resources_update",
"organisationId": 2570,
"organisationName": "test1"
}
],
"customPackages": [
{
"id": 2,
"name": "MyPackage",
"organisationId": 5286,
"organisationName": "TestAgency"
}
]
}
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,
"locations": 1,
"rootTasks": 1,
"customPackages": 1
},
"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"
}
],
"locations": [
{
"id": 5,
"name": "Test1",
"organisationId": 17,
"organisationName": "test1"
}
],
"rootTasks": [
{
"id": 37,
"package": null,
"template": "system_resources_update",
"organisationId": 2570,
"organisationName": "test1"
}
],
"customPackages": [
{
"id": 2,
"name": "MyPackage",
"organisationId": 5286,
"organisationName": "TestAgency"
}
]
}
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/project for the team
Remove the app/project from the team
get /organisations/{organisationId}/teams/{teamId}/apps/{appId}
Get the app/project 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/project 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 customPackage to the team
List of all available custompackages
post /organisations/{organisationId}/teams/{teamId}/custompackages
Add a customPackage 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\\BaseBundle\\Entity\\CustomPackage",
"objectId": 1
}
}
HTTP status code 400
Validation of new custompackage failed
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /organisations/{organisationId}/teams/{teamId}/custompackages
List of all available custompackages
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\\BaseBundle\\Entity\\CustomPackage",
"objectId": 1
},
{
"id": 2,
"object": "Level27\\BaseBundle\\Entity\\CustomPackage",
"objectId": 2
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Get the customPackage in the team
Remove the customPackage from the team
get /organisations/{organisationId}/teams/{teamId}/custompackages/{customPackageId}
Get the customPackage in the team
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- teamId: required(string)
The unique identifier of a team
- customPackageId: 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\\BaseBundle\\Entity\\CustomPackage",
"objectId": 1
}
}
}
delete /organisations/{organisationId}/teams/{teamId}/custompackages/{customPackageId}
Remove the customPackage from the team
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- teamId: required(string)
The unique identifier of a team
- customPackageId: 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 an organisation's billableitems with details to pay
get /organisations/{organisationId}/billableitems/topay
Get an organisation's billableitems with details to pay
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": 1,
"billableitems": [
{
"id": 32478,
"status": "to_pay",
"statusCategory": "red",
"description": "Domain domaintopay.be",
"autoRenew": true,
"dtExpires": 1648555138,
"extra1": null,
"extra2": null,
"externalInfo": null,
"preventDeactivation": false,
"price": {
"priceTaxExcluded": 2000,
"tax": 420,
"priceTaxIncluded": 2420
},
"entityId": 1,
"type": "domain",
"details": [
{
"id": 62570,
"price": null,
"status": "to_pay",
"statusCategory": "red",
"dtExpires": "1648555138",
"quantity": 1,
"description": ".be domain registration",
"externalId": null,
"manuallyAdded": null,
"product": {
"id": "domain_be_registration",
"description": ".be domain registration",
"allowQuantityChange": null
},
"productPrice": {
"id": 1453,
"period": 12,
"currency": "EUR",
"price": "2000",
"timing": "pre"
},
"entityId": null,
"type": "null"
}
]
}
]
}
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 billableitemInfo data
Create a new BillableitemInfo
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"
}
]
}
post /organisations/{organisationId}/billableiteminfo
Create a new BillableitemInfo
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
Body
Media type: application/json
Type: object
Properties- value: required(string)
Value of external order
- description: (string)
Description
Example:
My external order
XXX-111
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"billableitemInfo": {
"id": 8691,
"value": "XXX-111",
"description": "My external order",
"status": "ok",
"organisation": {
"id": 1,
"name": "My organisation"
},
"statusCategory": "green"
}
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to an organisation
Update BillableitemInfo
Remove a BillableitemInfo
put /organisations/{organisationId}/billableiteminfo/{billableiteminfoId}
Update BillableitemInfo
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- billableiteminfoId: required(string)
Body
Media type: application/json
Type: object
Properties- value: required(string)
Value of external order
- description: (string)
Description
Example:
My external order
XXX-111
delete /organisations/{organisationId}/billableiteminfo/{billableiteminfoId}
Remove a BillableitemInfo
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- billableiteminfoId: required(string)
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
Query Parameters
- createdByIndexCommand: (one of false, false - default: 0)
decides if agreement's product prices should be returned as well
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 prices for a chosen product
get /organisations/{organisationId}/products/{productId}/prices
Get prices for a chosen product
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- productId: required(string)
Query Parameters
- agreementId: (integer)
agreement id
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"product": {
"id": "domain_be_registration",
"description": ".be domain registration",
"prices": [
{
"id": 7628,
"period": 12,
"currency": "EUR",
"price": "1750",
"timing": "pre",
"default": true,
"status": 10
},
{
"id": 7629,
"period": 24,
"currency": "EUR",
"price": "11500",
"timing": "pre",
"default": true,
"status": 10
}
],
"allowQuantityChange": null
}
}
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",
"allowQuantityChange": true,
"quantityCalculation": null
},
{
"id": "genericitem_sslcertificate_comodo_domain",
"description": "Ssl certificate comodo domain",
"allowQuantityChange": true,
"quantityCalculation": null
},
{
"id": "genericitem_sslcertificate_comodo_ev",
"description": "Ssl certificate comodo ev",
"allowQuantityChange": true,
"quantityCalculation": null
}
]
}
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,
"locations": 1,
"connections": {
"4G": 1,
"FTTB": 1,
"FTTH": 1
}
}
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 documents for an organisation
get /organisations/{organisationId}/documents
Get documents for an organisation
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
Query Parameters
- paymentStatus: (string)
- source: (string)
- type: (string)
- status: (string)
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- filter: (string)
- orderBy: (string)
- orderType: (string)
ASC or DESC
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"total": 12,
"documents": [
{
"id": 52448,
"type": "invoice",
"organisation": {
"id": 1,
"name": "My organisation",
"status": "ok",
"statusCategory": "green",
"paymentperiod": 30
},
"number": "T210901",
"date": "2022-09-21",
"status": "ok",
"statusCategory": "orange",
"paymentStatus": "unpaid",
"paymentStatusCategory": "red",
"reminderStatus": "ok",
"reminderStatusCategory": "green",
"organisationName": "My organisation",
"taxrate": 0,
"remarksToPrint": null,
"price": 1000,
"tax": 0,
"priceWithTax": 1000,
"parentOrganisation": "level27",
"priceToPay": 1000,
"notes": null
},
{
"id": 52446,
"type": "invoice",
"organisation": {
"id": 2,
"name": "My organisation 2",
"status": "ok",
"statusCategory": "green",
"paymentperiod": 30
},
"number": "T217984",
"date": "2022-09-21",
"status": "ok",
"statusCategory": "green",
"paymentStatus": "partially_paid",
"paymentStatusCategory": "orange",
"reminderStatus": "ok",
"reminderStatusCategory": "green",
"organisationName": "My organisation 2",
"taxrate": 0,
"remarksToPrint": null,
"price": 10000,
"tax": 2100,
"priceWithTax": 12100,
"parentOrganisation": "level27",
"priceToPay": 500,
"notes": null
}
]
}
HTTP status code 400
Bad request
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
Print a finance overview (admin only)
get /organisations/{organisationId}/finance/overview/print
Print a finance overview (admin only)
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
Query Parameters
- level: (integer)
- language: (string)
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
- dtEnd: (string)
DateTime - timestamp
- pricegroup: (string)
Pricegroup id (admin only) (default: default)
- autoIndex: (boolean)
If autoIndex = true the agreement will be index by the command (default: true)
- dtIndex: (string)
Expiration timestamp
- externalInfo: (string)
ExternalInfo (required when billableitemInfo entities for an Organisation exist in db)
- separateInvoice: (boolean)
Should a separate invoice be created for the agremment? (default: false)
Example:
{
"name": "My agreement",
"description": "My great agreement",
"discount": 1000,
"durationDiscount": 500,
"cashPaymentDiscount": 250,
"dtFrom": 1628188851,
"dtUntil": 1628189851,
"dtEnd": 1628189851,
"pricegroup": "gold",
"externalInfo": 134,
"separateInvoice": false
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"agreement": {
"id": 4,
"name": "My agreement",
"description": "My great agreement",
"dtStart": "1636967653",
"dtEnd": "1733996527",
"dtFrom": "1635721200",
"dtUntil": "1730329200",
"dtIndex": "1730329200",
"discount": "1500",
"durationDiscount": "500",
"cashPaymentDiscount": "10",
"parentOrganisation": "level27",
"status": "ok",
"autoIndex": true,
"indexed": true,
"totalIndex": "125",
"separateInvoice": false,
"externalInfo": 123,
"pricegroup": {
"id": "default",
"description": "Default pricegroup"
},
"agreementHasIndexes": [
{
"id": 3,
"dtCreated": "1669676400",
"dtFrom": "1638192594",
"dtUntil": "1667046594",
"indexationPct": "1088"
}
],
"statusCategory": "green",
"linkedBillableitemsCount": 1
}
}
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",
"dtStart": null,
"dtEnd": "1733996527",
"dtFrom": null,
"dtUntil": null,
"dtIndex": null,
"discount": "1000",
"durationDiscount": null,
"cashPaymentDiscount": null,
"parentOrganisation": "level27",
"status": "ok",
"statusCategory": "green",
"totalIndex": "1478",
"externalInfo": 122
},
{
"id": 3,
"name": "My agreement 2",
"description": "My agreement 2",
"dtStart": null,
"dtEnd": "1733996527",
"dtFrom": "1635721200",
"dtUntil": "1730329200",
"dtIndex": "1730329200",
"discount": "1000",
"durationDiscount": "1000",
"cashPaymentDiscount": "200",
"parentOrganisation": "level27",
"status": "ok",
"statusCategory": "green",
"totalIndex": null,
"externalInfo": 123
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Update an agreement
Patch an agreement
Delete a agreement
Get a agreement
put /organisations/{organisationId}/agreements/{agreementId}
Update an agreement
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- agreementId: required(string)
The unique identifier of a agreement
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
- dtEnd: (string)
DateTime - timestamp
- pricegroup: (string)
Pricegroup id (admin only) (default: default)
- autoIndex: (boolean)
If autoIndex = true the agreement will be index by the command (default: true)
- dtIndex: (string)
Expiration timestamp
- externalInfo: (string)
ExternalInfo (required when billableitemInfo entities for an Organisation exist in db)
- separateInvoice: (boolean)
Should a separate invoice be created for the agremment? (default: false)
Example:
{
"name": "My agreement",
"description": "My great agreement",
"discount": 1000,
"durationDiscount": 500,
"cashPaymentDiscount": 250,
"dtFrom": 1628188851,
"dtUntil": 1628189851,
"dtEnd": 1628189851,
"pricegroup": "gold",
"externalInfo": 134,
"separateInvoice": false
}
HTTP status code 204
Response when update of a agreement succeeded
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
patch /organisations/{organisationId}/agreements/{agreementId}
Patch an agreement
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- agreementId: required(string)
The unique identifier of a agreement
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
- dtEnd: (string)
DateTime - timestamp
- pricegroup: (string)
Pricegroup id (admin only) (default: default)
- autoIndex: (boolean)
If autoIndex = true the agreement will be index by the command (default: true)
- dtIndex: (string)
Expiration timestamp
- externalInfo: (string)
ExternalInfo (required when billableitemInfo entities for an Organisation exist in db)
- separateInvoice: (boolean)
Should a separate invoice be created for the agremment? (default: false)
Example:
{
"name": "My agreement",
"description": "My great agreement",
"discount": 1000,
"durationDiscount": 500,
"cashPaymentDiscount": 250,
"dtFrom": 1628188851,
"dtUntil": 1628189851,
"dtEnd": 1628189851,
"pricegroup": "gold",
"externalInfo": 134,
"separateInvoice": false
}
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 agreement
HTTP status code 404
Response when an agreement is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
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": 4,
"name": "My agreement",
"description": "My great agreement",
"dtStart": "1636967653",
"dtEnd": "1733996527",
"dtFrom": "1635721200",
"dtUntil": "1730329200",
"dtIndex": "1730329200",
"discount": "1500",
"durationDiscount": "500",
"cashPaymentDiscount": "10",
"parentOrganisation": "level27",
"status": "ok",
"autoIndex": true,
"indexed": true,
"totalIndex": "125",
"separateInvoice": false,
"externalInfo": 123,
"pricegroup": {
"id": "default",
"description": "Default pricegroup"
},
"agreementHasIndexes": [
{
"id": 3,
"dtCreated": "1669676400",
"dtFrom": "1638192594",
"dtUntil": "1667046594",
"indexationPct": "1088"
}
],
"statusCategory": "green",
"linkedBillableitemsCount": 1
}
}
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
Add an agreement to multiple billableitems
post /organisations/{organisationId}/agreements/{agreementId}/link
Add an agreement to multiple billableitems
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
- agreementId: required(string)
The unique identifier of a agreement
Body
Media type: application/json
Type: object
Properties- entityClass: required(string)
Entity class
- ids: required(array of any)
array of ids
Example:
{
"entityClass": "Level27\\DomainBundle\\Entity\\Domain",
"ids": [
1,
2
]
}
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
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": 4,
"attachments": [
{
"id": 1,
"name": "test1",
"entityClass": "Level27\\FinanceBundle\\Entity\\Agreement",
"entityId": 3,
"filename": "document1628761186-6114ec62e5ab6.pdf",
"status": "ok",
"statusCategory": "green",
"type": null
},
{
"id": 2,
"name": "test2",
"entityClass": "Level27\\FinanceBundle\\Entity\\Agreement",
"entityId": 3,
"filename": "attachment1628764379_6114f8db4dbae-6114f8db631d5.pdf",
"status": "ok",
"statusCategory": "green",
"type": null
}
]
}
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 the most used domaincontact licensee
get /organisations/{organisationId}/domaincontacts/mostused
Get the most used domaincontact licensee
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:
{
"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 an organisation
Delete trusted devices
delete /organisations/{organisationId}/forgettrusteddevices
Delete trusted devices
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
Body
Media type: application/json
Type: object
Properties- forget2faTokens: (boolean)
Forget 2FA tokens (default: false)
- logoutAllUsers: (boolean)
Log out all users (default: false)
- forceApiKeyDeletion: (boolean)
forceApiKeyDeletion
Example:
{
"forget2faTokens": true,
"logoutAllUsers": true,
"forceApiKeyDeletion": false
}
Get all matching sslCertificates for the url
get /organisations/{organisationId}/apps/matchingsslcertificates
Get all matching sslCertificates for the url
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
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",
"sslStatus": "ok",
"dtExpires": "1655785713",
"app": {
"id": 9928,
"name": "My app"
},
"sslStatusCategory": "green"
},
{
"id": 24,
"name": "Xolphin: test1.testdomain.be, test2.testdomain.b",
"sslStatus": "ok",
"dtExpires": "1655785713",
"app": {
"id": 9928,
"name": "My app"
},
"sslStatusCategory": "green"
},
{
"id": 25,
"name": "Own Certificate",
"sslStatus": "ok",
"dtExpires": "1655785713",
"app": {
"id": 9928,
"name": "My app"
},
"sslStatusCategory": "green"
}
]
}
HTTP status code 403
Response when a user does not have a proper role to access a controller
/softorganisations
Create a soft organisation (admin only)
post /softorganisations
Create a soft organisation (admin only)
Body
Media type: application/json
Type: object
Properties- email: required(string)
Email (unique)
- language: (one of nl, en, fr)
Language id (default: nl)
Example:
{
"email": "testemail@testemail.com",
"language": "nl"
}
Update a soft organisation
put /softorganisations/{organisationId}
Update a soft organisation
URI Parameters
- organisationId: required(string)
Body
Media type: application/json
Type: object
Properties- name: required(string)
Name
- taxNumber: required(string)
Tax number
- street: (string)
Street
- houseNumber: (string)
House number
- zip: (string)
Zip
- city: (string)
City
- country: (string)
Country id
- firstName: required(string)
First name
- lastName: required(string)
Last name
- 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:
{
"organisation": {
"name": "TestOrganisation",
"taxNumber": "BE1234567890",
"street": "Test",
"houseNumber": 123,
"zip": 12345,
"city": "Test",
"country": "BE"
},
"user": {
"firstName": "Test",
"lastName": "Test",
"password": "CorrectPassword2"
}
}
/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)
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",
"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"
]
},
"language": {}
}
}
}
}
/organisationtypes
List of organisation types
get /organisationtypes
List of organisation types
Query Parameters
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- orderBy: (string)
- orderType: (string)
ASC or DESC
- status: (string)
- filter: (string)
- default: (one of 0, 1, )
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"type": "object",
"example": {
"total": 3,
"organisationTypes": [
{
"id": "it_agency",
"description": "IT agency",
"status": "ok",
"default": false,
"statusCategory": "green"
}
]
}
}
HTTP status code 403
When a user doesn't have role admin
/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
/userpreferences
Get a user's preferences
get /userpreferences
Get a user's preferences
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"preferences": {
"shortcuts": {
"type": "array",
"properties": {
"entity": {
"type": "choice",
"possibleValues": [
"app",
"appcomponent",
"domain",
"system",
"mailgroup",
"certificate"
]
},
"entityId": {
"type": "int"
},
"name": {
"type": "string",
"regex": "/^[a-zA-Z0-9]*$/"
}
}
},
"darkTheme": {
"type": "boolean",
"properties": []
}
}
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access
HTTP status code 404
Response when a user does not exist
/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/project
List of all available apps/projects
post /apps
Create a new app/project
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
- autoUpgrades: (string)
A csv list of upgrades' names
- externalInfo: (string)
ExternalInfo (required when billableitemInfo entities for an Organisation exist in db)
- period: (integer)
Period
- customPackage: required(integer)
The unique identifier of a CustomPackage
- customPackageName: required(string)
CustomPackageName
Example:
{
"name": "MyApp",
"organisation": 123,
"autoTeams": null,
"externalInfo": null,
"customPackage": 1,
"customPackageName": "drupal_walk"
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"app": {
"id": 11595,
"name": "MyProject",
"status": "ok",
"statusCategory": "green",
"type": "run",
"customPackageName": "drupal_run",
"customPackage": null,
"organisation": {
"id": 1,
"name": "MyOrganisation",
"reseller": null
},
"system": null,
"systemgroup": {
"id": 105,
"name": "MyGroup"
},
"rules": [
{
"id": 151,
"limitGroup": "database",
"status": "ok",
"uniqueComponentType": true,
"max": 10,
"upgradeMax": 0,
"ruleResources": [
{
"id": 176,
"type": "size",
"value": 2560,
"upgradeValue": 0,
"status": "critical",
"displayName": {
"en": "Size",
"nl": "Grootte"
},
"criticalComponents": [
123
],
"incidentComponents": [
123,
122
],
"incident": "databasefull",
"statusCategory": "red",
"unit": "MB"
}
],
"allowedUpgrades": [
{
"name": "database_5",
"type": "size",
"description": "Database upgrade 5GB",
"value": 5,
"unit": "GB",
"maxAllowedUpgrades": 5
},
{
"name": "database_10",
"type": "size",
"description": "Database upgrade 10GB",
"value": 10,
"unit": "GB",
"maxAllowedUpgrades": 1
},
{
"name": "database_extra_component_5",
"type": "extra_component",
"description": "Extra 5 databases",
"value": 5,
"unit": "unit",
"addToMax": true,
"maxAllowedUpgrades": 5
}
]
},
{
"id": 152,
"limitGroup": "application",
"status": "ok",
"uniqueComponentType": true,
"max": 1,
"upgradeMax": 0,
"ruleResources": [
{
"id": 177,
"type": "application",
"value": 256,
"upgradeValue": 0,
"status": "ok",
"displayName": {
"en": "Application",
"nl": "Application"
},
"criticalComponents": [],
"incidentComponents": [],
"incident": null,
"statusCategory": "green",
"unit": "MB"
},
{
"id": 178,
"type": "opcache_apcu",
"value": 64,
"upgradeValue": 0,
"status": "ok",
"displayName": {
"en": "Opcache/APCu",
"nl": "Opcache/APCu"
},
"criticalComponents": [],
"incidentComponents": [],
"incident": null,
"statusCategory": "green",
"unit": "MB"
},
{
"id": 179,
"type": "total_memory",
"value": 256,
"upgradeValue": 0,
"status": "ok",
"displayName": {
"en": "Memory",
"nl": "Geheugen"
},
"criticalComponents": [],
"incidentComponents": [],
"incident": null,
"statusCategory": "green",
"unit": "MB"
}
]
},
{
"id": 153,
"limitGroup": "page_cache",
"status": "ok",
"uniqueComponentType": true,
"max": 1,
"upgradeMax": 0,
"ruleResources": [
{
"id": 180,
"type": "memory",
"value": 128,
"upgradeValue": 0,
"status": "ok",
"displayName": {
"en": "Memory",
"nl": "Geheugen"
},
"criticalComponents": [],
"incidentComponents": [],
"incident": null,
"statusCategory": "green",
"unit": "MB"
}
]
},
{
"id": 154,
"limitGroup": "object_cache",
"status": "ok",
"uniqueComponentType": true,
"max": 1,
"upgradeMax": 0,
"ruleResources": [
{
"id": 181,
"type": "memory",
"value": 64,
"upgradeValue": 0,
"status": "ok",
"displayName": {
"en": "Memory",
"nl": "Geheugen"
},
"criticalComponents": [],
"incidentComponents": [],
"incident": null,
"statusCategory": "green",
"unit": "MB"
}
]
},
{
"id": 155,
"limitGroup": "extra_vhosts",
"status": "ok",
"uniqueComponentType": false,
"max": 20,
"upgradeMax": 0,
"ruleResources": []
},
{
"id": 156,
"limitGroup": "optional_component",
"status": "ok",
"uniqueComponentType": true,
"max": 1,
"upgradeMax": 0,
"ruleResources": [
{
"id": 182,
"type": "memory",
"value": 256,
"upgradeValue": 0,
"status": "ok",
"displayName": {
"en": "Memory",
"nl": "Geheugen"
},
"criticalComponents": [],
"incidentComponents": [],
"incident": null,
"statusCategory": "green",
"unit": "MB"
}
]
}
],
"allowedUpgradesDowngrades": [
"drupal_walk",
"drupal_fly"
]
}
}
HTTP status code 400
Validation of a new app/project failed
HTTP status code 403
Response when a user does not have a proper role to access a controller
get /apps
List of all available apps/projects
Query Parameters
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- orderBy: (string)
- orderType: (string)
ASC or DESC
- filter: (string)
- status: (string)
- type: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"apps": [
{
"id": 1,
"name": "API 1",
"type": null,
"status": "ok",
"statusCategory": "green",
"organisation": {
"id": 123,
"name": "Test Company"
},
"count": {
"Databases": 2,
"Extensions": 8,
"Web-apps": 34,
"sslCertificates": 13
}
},
{
"id": 3,
"name": "MyApp",
"type": "walk",
"status": "ok",
"statusCategory": "green",
"organisation": {
"id": 123,
"name": "Test Company"
},
"count": []
}
]
}
HTTP status code 403
Response when a user does not have a proper role to access a controller
Get an app/project
Update an app/project
Delete an app/project
get /apps/{appId}
Get an app/project
URI Parameters
- appId: required(string)
HTTP status code 200
Response when an app/project is found
Body
Media type: application/json
Type: object
Example:
{
"app": {
"id": 11595,
"name": "MyProject",
"status": "ok",
"statusCategory": "green",
"type": "run",
"customPackageName": "drupal_run",
"customPackage": null,
"organisation": {
"id": 1,
"name": "MyOrganisation",
"reseller": null
},
"system": null,
"systemgroup": {
"id": 105,
"name": "MyGroup"
},
"rules": [
{
"id": 151,
"limitGroup": "database",
"status": "ok",
"uniqueComponentType": true,
"max": 10,
"upgradeMax": 0,
"ruleResources": [
{
"id": 176,
"type": "size",
"value": 2560,
"upgradeValue": 0,
"status": "critical",
"displayName": {
"en": "Size",
"nl": "Grootte"
},
"criticalComponents": [
123
],
"incidentComponents": [
123,
122
],
"incident": "databasefull",
"statusCategory": "red",
"unit": "MB"
}
],
"allowedUpgrades": [
{
"name": "database_5",
"type": "size",
"description": "Database upgrade 5GB",
"value": 5,
"unit": "GB",
"maxAllowedUpgrades": 5
},
{
"name": "database_10",
"type": "size",
"description": "Database upgrade 10GB",
"value": 10,
"unit": "GB",
"maxAllowedUpgrades": 1
},
{
"name": "database_extra_component_5",
"type": "extra_component",
"description": "Extra 5 databases",
"value": 5,
"unit": "unit",
"addToMax": true,
"maxAllowedUpgrades": 5
}
]
},
{
"id": 152,
"limitGroup": "application",
"status": "ok",
"uniqueComponentType": true,
"max": 1,
"upgradeMax": 0,
"ruleResources": [
{
"id": 177,
"type": "application",
"value": 256,
"upgradeValue": 0,
"status": "ok",
"displayName": {
"en": "Application",
"nl": "Application"
},
"criticalComponents": [],
"incidentComponents": [],
"incident": null,
"statusCategory": "green",
"unit": "MB"
},
{
"id": 178,
"type": "opcache_apcu",
"value": 64,
"upgradeValue": 0,
"status": "ok",
"displayName": {
"en": "Opcache/APCu",
"nl": "Opcache/APCu"
},
"criticalComponents": [],
"incidentComponents": [],
"incident": null,
"statusCategory": "green",
"unit": "MB"
},
{
"id": 179,
"type": "total_memory",
"value": 256,
"upgradeValue": 0,
"status": "ok",
"displayName": {
"en": "Memory",
"nl": "Geheugen"
},
"criticalComponents": [],
"incidentComponents": [],
"incident": null,
"statusCategory": "green",
"unit": "MB"
}
]
},
{
"id": 153,
"limitGroup": "page_cache",
"status": "ok",
"uniqueComponentType": true,
"max": 1,
"upgradeMax": 0,
"ruleResources": [
{
"id": 180,
"type": "memory",
"value": 128,
"upgradeValue": 0,
"status": "ok",
"displayName": {
"en": "Memory",
"nl": "Geheugen"
},
"criticalComponents": [],
"incidentComponents": [],
"incident": null,
"statusCategory": "green",
"unit": "MB"
}
]
},
{
"id": 154,
"limitGroup": "object_cache",
"status": "ok",
"uniqueComponentType": true,
"max": 1,
"upgradeMax": 0,
"ruleResources": [
{
"id": 181,
"type": "memory",
"value": 64,
"upgradeValue": 0,
"status": "ok",
"displayName": {
"en": "Memory",
"nl": "Geheugen"
},
"criticalComponents": [],
"incidentComponents": [],
"incident": null,
"statusCategory": "green",
"unit": "MB"
}
]
},
{
"id": 155,
"limitGroup": "extra_vhosts",
"status": "ok",
"uniqueComponentType": false,
"max": 20,
"upgradeMax": 0,
"ruleResources": []
},
{
"id": 156,
"limitGroup": "optional_component",
"status": "ok",
"uniqueComponentType": true,
"max": 1,
"upgradeMax": 0,
"ruleResources": [
{
"id": 182,
"type": "memory",
"value": 256,
"upgradeValue": 0,
"status": "ok",
"displayName": {
"en": "Memory",
"nl": "Geheugen"
},
"criticalComponents": [],
"incidentComponents": [],
"incident": null,
"statusCategory": "green",
"unit": "MB"
}
]
}
],
"allowedUpgradesDowngrades": [
"drupal_walk",
"drupal_fly"
]
}
}
HTTP status code 403
Response when a user does not have access to an app/project
HTTP status code 404
Response when app/project is not found
put /apps/{appId}
Update an app/project
URI Parameters
- appId: required(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
- autoUpgrades: (string)
A csv list of upgrades' names
- customPackage: required(integer)
The unique identifier of a CustomPackage
- customPackageName: required(string)
CustomPackageName
Example:
{
"name": "MyApp",
"organisation": 123,
"autoTeams": null,
"customPackage": 1,
"customPackageName": "drupal_walk"
}
HTTP status code 204
Response when update of an app/project succeeded
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to an app/project
HTTP status code 404
Response when an app/project is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
delete /apps/{appId}
Get comparison stats for an app
get /apps/{appId}/comparisonstats
Get comparison stats for an app
URI Parameters
- appId: required(string)
HTTP status code 200
Response when users are found
Body
Media type: application/json
Type: object
Example:
{
"total": 4,
"statsCollectors": [
{
"id": 3,
"status": "ok",
"currentValue": 433,
"valueLastWeek": 0,
"dtStamp": "2023-05-17 15:56:44",
"statisticName": "database_size",
"type": "prometheus",
"statusCategory": "green",
"limitGroup": "database",
"resourceName": "size",
"resourceDisplayName": {
"en": "Size",
"nl": "Databank"
}
},
{
"id": 4,
"status": "ok",
"currentValue": 25000,
"valueLastWeek": 42000,
"dtStamp": "2023-05-22 13:36:21",
"statisticName": "apm_throughput",
"type": "apm",
"statusCategory": "green",
"limitGroup\"": null,
"resourceName": null,
"resourceDisplayName": {
"en": "Throughput",
"nl": "Throughput"
}
},
{
"id": 5,
"status": "ok",
"currentValue": 62522922,
"valueLastWeek": 16403003,
"dtStamp": "2023-05-22 13:36:21",
"statisticName": "apm_latency",
"type": "apm",
"statusCategory": "green",
"limitGroup": null,
"resourceName": null,
"resourceDisplayName": {
"en": "Latency",
"nl": "Latency"
}
},
{
"id": 6,
"status": "ok",
"currentValue": 0,
"valueLastWeek": 0,
"dtStamp": "2023-05-22 13:36:21",
"statisticName": "apm_error_rate",
"type": "apm",
"statusCategory": "green",
"limitGroup": null,
"resourceName": null,
"resourceDisplayName": {
"en": "Error rate",
"nl": "Error rate"
}
}
]
}
HTTP status code 403
Response when a user does not have access to an app/project
HTTP status code 404
Response when an app/project is not found
Get stats for an app's urls
get /apps/{appId}/urlstats
Get stats for an app's urls
URI Parameters
- appId: required(string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"urls": [
{
"id": "636",
"duration": "9.926351760000001",
"http_status_code": "200",
"ssl_cert_expiry": "1692702722",
"success": "1"
},
{
"id": "646",
"duration": "4.6684722",
"http_status_code": "200",
"success": "1"
}
]
}
HTTP status code 400
Bad request
HTTP status code 403
Access Denied - when user doesn't have access to app/project
HTTP status code 404
Not found - when app/project doesn't exist
Get users for an app/project
get /apps/{appId}/users
Get users for an app/project
URI Parameters
- appId: required(string)
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/project
HTTP status code 404
Response when an app/project 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/project
get /apps/{appId}/organisations
Get organisations with acl access to an app/project
URI Parameters
- appId: required(string)
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",
"teams": [
{
"id": 14,
"name": "OwnerTeam"
}
]
},
{
"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",
"teams": [
{
"id": 15,
"name": "ResellerTeam"
}
]
},
{
"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",
"teams": []
}
]
}
HTTP status code 403
Response when a user does not have access to an app/project
HTTP status code 404
Response when an app/project 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/project
post /apps/{appId}/actions
Deactivate or activate an app/project
URI Parameters
- appId: required(string)
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": 11595,
"name": "MyProject",
"status": "ok",
"statusCategory": "green",
"type": "run",
"customPackageName": "drupal_run",
"customPackage": null,
"organisation": {
"id": 1,
"name": "MyOrganisation",
"reseller": null
},
"system": null,
"systemgroup": {
"id": 105,
"name": "MyGroup"
},
"rules": [
{
"id": 151,
"limitGroup": "database",
"status": "ok",
"uniqueComponentType": true,
"max": 10,
"upgradeMax": 0,
"ruleResources": [
{
"id": 176,
"type": "size",
"value": 2560,
"upgradeValue": 0,
"status": "critical",
"displayName": {
"en": "Size",
"nl": "Grootte"
},
"criticalComponents": [
123
],
"incidentComponents": [
123,
122
],
"incident": "databasefull",
"statusCategory": "red",
"unit": "MB"
}
],
"allowedUpgrades": [
{
"name": "database_5",
"type": "size",
"description": "Database upgrade 5GB",
"value": 5,
"unit": "GB",
"maxAllowedUpgrades": 5
},
{
"name": "database_10",
"type": "size",
"description": "Database upgrade 10GB",
"value": 10,
"unit": "GB",
"maxAllowedUpgrades": 1
},
{
"name": "database_extra_component_5",
"type": "extra_component",
"description": "Extra 5 databases",
"value": 5,
"unit": "unit",
"addToMax": true,
"maxAllowedUpgrades": 5
}
]
},
{
"id": 152,
"limitGroup": "application",
"status": "ok",
"uniqueComponentType": true,
"max": 1,
"upgradeMax": 0,
"ruleResources": [
{
"id": 177,
"type": "application",
"value": 256,
"upgradeValue": 0,
"status": "ok",
"displayName": {
"en": "Application",
"nl": "Application"
},
"criticalComponents": [],
"incidentComponents": [],
"incident": null,
"statusCategory": "green",
"unit": "MB"
},
{
"id": 178,
"type": "opcache_apcu",
"value": 64,
"upgradeValue": 0,
"status": "ok",
"displayName": {
"en": "Opcache/APCu",
"nl": "Opcache/APCu"
},
"criticalComponents": [],
"incidentComponents": [],
"incident": null,
"statusCategory": "green",
"unit": "MB"
},
{
"id": 179,
"type": "total_memory",
"value": 256,
"upgradeValue": 0,
"status": "ok",
"displayName": {
"en": "Memory",
"nl": "Geheugen"
},
"criticalComponents": [],
"incidentComponents": [],
"incident": null,
"statusCategory": "green",
"unit": "MB"
}
]
},
{
"id": 153,
"limitGroup": "page_cache",
"status": "ok",
"uniqueComponentType": true,
"max": 1,
"upgradeMax": 0,
"ruleResources": [
{
"id": 180,
"type": "memory",
"value": 128,
"upgradeValue": 0,
"status": "ok",
"displayName": {
"en": "Memory",
"nl": "Geheugen"
},
"criticalComponents": [],
"incidentComponents": [],
"incident": null,
"statusCategory": "green",
"unit": "MB"
}
]
},
{
"id": 154,
"limitGroup": "object_cache",
"status": "ok",
"uniqueComponentType": true,
"max": 1,
"upgradeMax": 0,
"ruleResources": [
{
"id": 181,
"type": "memory",
"value": 64,
"upgradeValue": 0,
"status": "ok",
"displayName": {
"en": "Memory",
"nl": "Geheugen"
},
"criticalComponents": [],
"incidentComponents": [],
"incident": null,
"statusCategory": "green",
"unit": "MB"
}
]
},
{
"id": 155,
"limitGroup": "extra_vhosts",
"status": "ok",
"uniqueComponentType": false,
"max": 20,
"upgradeMax": 0,
"ruleResources": []
},
{
"id": 156,
"limitGroup": "optional_component",
"status": "ok",
"uniqueComponentType": true,
"max": 1,
"upgradeMax": 0,
"ruleResources": [
{
"id": 182,
"type": "memory",
"value": 256,
"upgradeValue": 0,
"status": "ok",
"displayName": {
"en": "Memory",
"nl": "Geheugen"
},
"criticalComponents": [],
"incidentComponents": [],
"incident": null,
"statusCategory": "green",
"unit": "MB"
}
]
}
],
"allowedUpgradesDowngrades": [
"drupal_walk",
"drupal_fly"
]
}
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to an app/project
HTTP status code 404
Response when an app/project is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Download an app info in pdf
get /apps/{appId}/pdf/download
Download an app info in pdf
Get a list system connections
get /apps/{appId}/systems/connectionstring
Get a list system connections
URI Parameters
- appId: required(string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"total": 8,
"systems": [
{
"id": 1,
"name": "test1.level27.eu",
"fqdn": "1111111.level27.eu",
"customerFqdn": "test1.level27.eu",
"ipv4": null,
"ipv6": null,
"systemgroupFunction": "docker"
},
{
"id": 2,
"name": "test2.level27.eu",
"fqdn": "222222.level27.eu",
"customerFqdn": "test2.level27.eu",
"ipv4": "173.3.1.101",
"ipv6": "111:5b40:3:234::58",
"systemgroupFunction": "database"
},
{
"id": 3,
"name": "test3.level27.eu",
"fqdn": "333333.level27.eu",
"customerFqdn": "test3.level27.eu",
"ipv4": "127.3.2.1",
"ipv6": null,
"systemgroupFunction": "web"
}
]
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to an app/project
Create a new component
List of all available components
post /apps/{appId}/components
Create a new component
URI Parameters
- appId: required(string)
Query Parameters
- source: (string)
Body
Media type: application/json
Type: object
Properties- name: required(string)
Name
- 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)
- period: (integer)
Period
- limitGroup: (string)
LimitGroup
- attachment: (integer)
The unique identifier of an attachment
- optional parameters: (string)
Additional params can be required for specific component type. See list of available 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",
"system": 123,
"systemgroup": null,
"version": "7.2",
"limitGroup": null
}
2:
{
"name": "MyComponent2",
"appcomponenttype": "php",
"system": null,
"systemgroup": 5,
"version": "7.0",
"pass": "AdditionalParameter123",
"limitGroup": null
}
3:
{
"name": "MyComponent3",
"appcomponenttype": "mysql",
"category": "config",
"system": 123,
"systemgroup": null,
"limitGroup": "database"
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"component": {
"id": 1,
"name": "My component",
"category": "Web-apps",
"limitGroup": null,
"appcomponenttype": "php",
"userId": 4002,
"billableitemDetailId": 47,
"appcomponentparameters": {
"pass": "******",
"basic_auth_enabled": false,
"basic_auth_pass": "******",
"path": "/public_html",
"version": "5.6",
"composer_version": "1",
"extraconfig": null,
"user": "vx1234235",
"sshkeys": [
{
"id": 1,
"description": "My key",
"status": "ok",
"statusCategory": "green",
"organisationId": 1,
"type": "user",
"owner": "My User",
"appcomponentHasSshkeyId": 1,
"appcomponentHasSshkeyStatus": "ok",
"appcomponentHasSshkeyStatusCategory": "green"
}
]
},
"appcomponentparameterDescriptions": {
"user": "Username",
"pass": "password",
"basic_auth_enabled": "enable or disable basic authentication",
"basic_auth_pass": "basic authentication password",
"path": "Relative path",
"version": "PHP version",
"composer_version": "Major composer version that will be provided",
"extraconfig": "Extra Apache config"
},
"status": "updating",
"statusCategory": "yellow",
"app": {
"id": 1,
"status": "ok",
"statusCategory": "green"
},
"organisation": {
"id": 1,
"name": "Test Company"
},
"apmEnabled": true,
"attachment": {
"id": 23,
"name": "Test1",
"filename": "attachment1686578238_6487243ed0e29-6487243f0a6ed.zip"
},
"definition": {
"name": "php",
"cookbook": "php",
"displayName": "Php",
"description": "php component with apache",
"adminOnly": false,
"urlPossible": true,
"sshkeyPossible": true,
"updateUrlsOnUpdate": false,
"restorePossible": true,
"migrationPossible": true,
"selectingSystemPossible": false,
"apmPossible": true,
"statisticsPossible": true,
"disabledOnProduction": false,
"invisibleOnProduction": false,
"runlist": "php",
"allowedActions": {
"installCMS": [
"Drupal",
"Wordpress",
"Magento",
"Shopware"
]
},
"category": "Web-apps",
"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-sha512",
"defaultValue": "auto",
"readonly": false,
"disableEdit": false,
"required": false,
"category": "credentials"
},
{
"name": "basic_auth_enabled",
"group": "basic_auth",
"displayName": "basic_auth_enabled",
"description": "enable or disable basic authentication",
"type": "boolean",
"defaultValue": false,
"readonly": false,
"disableEdit": false,
"required": false,
"category": "credentials"
},
{
"name": "basic_auth_pass",
"group": "basic_auth",
"displayName": "basic authentication password",
"description": "basic authentication password",
"type": "password-sha512",
"defaultValue": "auto",
"readonly": false,
"disableEdit": false,
"required": false,
"category": "credentials"
},
{
"name": "path",
"displayName": "path",
"description": "Relative path",
"type": "path",
"defaultValue": "/public_html",
"readonly": false,
"disableEdit": false,
"required": true,
"category": "advanced"
},
{
"name": "version",
"displayName": "version",
"description": "PHP version",
"type": "select",
"defaultValue": null,
"readonly": false,
"disableEdit": false,
"required": true,
"cookbookParamName": "versions",
"category": "advanced"
},
{
"name": "composer_version",
"displayName": "composer version",
"description": "Major composer version that will be provided",
"type": "array",
"possibleValues": [
"1",
"2"
],
"defaultValue": "1",
"readonly": false,
"disableEdit": false,
"required": false,
"category": "advanced"
},
{
"name": "extraconfig",
"displayName": "extra config",
"description": "Extra Apache config",
"type": "textarea",
"defaultValue": null,
"readonly": false,
"disableEdit": false,
"required": false,
"category": "code"
}
]
}
}
}
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)
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": "Web-apps",
"limitGroup": null,
"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,
"name": "Test2",
"status\"": "ok",
"statusCategory": "green"
},
"apmEnabled": true,
"attachment": {
"id": 53,
"name": "My attachment"
}
},
{
"id": 24,
"name": "testTTTT",
"category": "Databases",
"limitGroup": null,
"appcomponenttype": "mysql",
"billableitemDetailId": 33,
"appcomponentparameters": {
"user": "ml11097",
"pass": "******",
"host": null
},
"appcomponentparameterDescriptions": {
"user": "Username",
"pass": "encrypted password",
"host": "%"
},
"status": "to_create",
"app": {
"id": 1,
"name": "Test2",
"status\"": "ok",
"statusCategory": "green"
},
"apmEnabled": true,
"attachment": null
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Get a list appcomponent connections
get /apps/{appId}/components/connectionstring
Get a list appcomponent connections
URI Parameters
- appId: required(string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"components": [
{
"id": 30626,
"name": "PHP",
"appcomponenttype": "php",
"fqdn": null,
"customerFqdn": null,
"ipv4": "multiple systems found",
"ipv6": null,
"connection": [
{
"protocol": "HTTP/HTTPS",
"port": "80/443",
"map": null
},
{
"protocol": "SSH/SFTP",
"port": 22,
"map": null
}
]
},
{
"id": 30627,
"name": "MySQL",
"appcomponenttype": "mysql",
"fqdn": "21414qwe.level27.be",
"customerFqdn": "nopubliipsystem.level27.be",
"ipv4": null,
"ipv6": null,
"connection": [
{
"protocol": "MySQL",
"port": "3306",
"map": null
}
]
},
{
"id": 30878,
"name": "Worker",
"appcomponenttype": "worker",
"fqdn": "47sn39.level27.be",
"customerFqdn": "mysystem.level27.be",
"ipv4": "173.340.33.1",
"ipv6": "111:5b40:3:234::58",
"connection": [
{
"protocol": "SSH",
"port": "22",
"map": null
}
]
}
]
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to an app/project
Get a list available parentComponents
get /apps/{appId}/components/availableparentcomponents/type/{type}
Get a list available parentComponents
URI Parameters
- appId: required(string)
- type: required(string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"total": 1,
"components": [
{
"id": 1,
"name": "Php",
"appcomponenttype": "php",
"appcomponentparameters": {
"pass": "******",
"path": "/app/web",
"version": "7.1",
"extraconfig": null,
"user": "vvd2442d3",
"sshkeys": []
},
"system": {
"id": null
},
"systemgroup": {
"id": 1
}
}
]
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to an app/project
Get a list summaryStats for a single app's components
get /apps/{appId}/components/statsummary
Get a list summaryStats for a single app's components
URI Parameters
- appId: required(string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"components": [
{
"id": 1,
"statsSummary": {
"diskspace": {
"unit": "GB",
"value": 4
},
"disk": {
"unit": "%",
"value": 5
},
"memory": {
"unit": "%",
"value": 5
},
"cpu": {
"unit": "%",
"value": 3
}
}
}
]
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to an app/project
Get a list of an project/app's components with apm enabled or not
get /apps/{appId}/components/apmenabled
Get a list of an project/app's components with apm enabled or not
URI Parameters
- appId: required(string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"total": 1,
"components": [
{
"id": 2170,
"name": "php",
"username": "pp1143555"
}
]
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to an app/project
Update an appcomponent
Update an appcomponent
Delete a component
Get a component
put /apps/{appId}/components/{componentId}
Update an appcomponent
URI Parameters
- appId: required(string)
- componentId: required(string)
The unique identifier of a component
Body
Media type: application/json
Type: object
Properties- name: required(string)
Name
- appcomponenttype: required(one of asp, mssql, mysql, php, sftp, testbook)
Component type (non-editable)
- period: (integer)
Period
- limitGroup: (string)
LimitGroup
- attachment: (integer)
The unique identifier of an attachment
- optional parameters: (string)
Additional params can be required for specific component type. See list of available 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",
"version": "7.2",
"limitGroup": null
}
2:
{
"name": "MyComponent2",
"appcomponenttype": "php",
"version": "7.0",
"pass": "AdditionalParameter123",
"limitGroup": null
}
3:
{
"name": "MyComponent3",
"appcomponenttype": "mysql",
"category": "config",
"limitGroup": "database"
}
HTTP status code 204
Response when update of an appcomponent succeeded
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to an app/project
HTTP status code 404
Response when an appcomponent is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
patch /apps/{appId}/components/{componentId}
Update an appcomponent
URI Parameters
- appId: required(string)
- componentId: required(string)
The unique identifier of a component
Body
Media type: application/json
Type: object
Properties- name: required(string)
Name
- appcomponenttype: required(one of asp, mssql, mysql, php, sftp, testbook)
Component type (non-editable)
- period: (integer)
Period
- limitGroup: (string)
LimitGroup
- attachment: (integer)
The unique identifier of an attachment
- optional parameters: (string)
Additional params can be required for specific component type. See list of available 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",
"version": "7.2",
"limitGroup": null
}
2:
{
"name": "MyComponent2",
"appcomponenttype": "php",
"version": "7.0",
"pass": "AdditionalParameter123",
"limitGroup": null
}
3:
{
"name": "MyComponent3",
"appcomponenttype": "mysql",
"category": "config",
"limitGroup": "database"
}
HTTP status code 204
Response when update of an appcomponent succeeded
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to an app/project
HTTP status code 404
Response when an appcomponent 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)
- 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)
- 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": 1,
"name": "My component",
"category": "Web-apps",
"limitGroup": null,
"appcomponenttype": "php",
"userId": 4002,
"billableitemDetailId": 47,
"appcomponentparameters": {
"pass": "******",
"basic_auth_enabled": false,
"basic_auth_pass": "******",
"path": "/public_html",
"version": "5.6",
"composer_version": "1",
"extraconfig": null,
"user": "vx1234235",
"sshkeys": [
{
"id": 1,
"description": "My key",
"status": "ok",
"statusCategory": "green",
"organisationId": 1,
"type": "user",
"owner": "My User",
"appcomponentHasSshkeyId": 1,
"appcomponentHasSshkeyStatus": "ok",
"appcomponentHasSshkeyStatusCategory": "green"
}
]
},
"appcomponentparameterDescriptions": {
"user": "Username",
"pass": "password",
"basic_auth_enabled": "enable or disable basic authentication",
"basic_auth_pass": "basic authentication password",
"path": "Relative path",
"version": "PHP version",
"composer_version": "Major composer version that will be provided",
"extraconfig": "Extra Apache config"
},
"status": "updating",
"statusCategory": "yellow",
"app": {
"id": 1,
"status": "ok",
"statusCategory": "green"
},
"organisation": {
"id": 1,
"name": "Test Company"
},
"apmEnabled": true,
"attachment": {
"id": 23,
"name": "Test1",
"filename": "attachment1686578238_6487243ed0e29-6487243f0a6ed.zip"
},
"definition": {
"name": "php",
"cookbook": "php",
"displayName": "Php",
"description": "php component with apache",
"adminOnly": false,
"urlPossible": true,
"sshkeyPossible": true,
"updateUrlsOnUpdate": false,
"restorePossible": true,
"migrationPossible": true,
"selectingSystemPossible": false,
"apmPossible": true,
"statisticsPossible": true,
"disabledOnProduction": false,
"invisibleOnProduction": false,
"runlist": "php",
"allowedActions": {
"installCMS": [
"Drupal",
"Wordpress",
"Magento",
"Shopware"
]
},
"category": "Web-apps",
"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-sha512",
"defaultValue": "auto",
"readonly": false,
"disableEdit": false,
"required": false,
"category": "credentials"
},
{
"name": "basic_auth_enabled",
"group": "basic_auth",
"displayName": "basic_auth_enabled",
"description": "enable or disable basic authentication",
"type": "boolean",
"defaultValue": false,
"readonly": false,
"disableEdit": false,
"required": false,
"category": "credentials"
},
{
"name": "basic_auth_pass",
"group": "basic_auth",
"displayName": "basic authentication password",
"description": "basic authentication password",
"type": "password-sha512",
"defaultValue": "auto",
"readonly": false,
"disableEdit": false,
"required": false,
"category": "credentials"
},
{
"name": "path",
"displayName": "path",
"description": "Relative path",
"type": "path",
"defaultValue": "/public_html",
"readonly": false,
"disableEdit": false,
"required": true,
"category": "advanced"
},
{
"name": "version",
"displayName": "version",
"description": "PHP version",
"type": "select",
"defaultValue": null,
"readonly": false,
"disableEdit": false,
"required": true,
"cookbookParamName": "versions",
"category": "advanced"
},
{
"name": "composer_version",
"displayName": "composer version",
"description": "Major composer version that will be provided",
"type": "array",
"possibleValues": [
"1",
"2"
],
"defaultValue": "1",
"readonly": false,
"disableEdit": false,
"required": false,
"category": "advanced"
},
{
"name": "extraconfig",
"displayName": "extra config",
"description": "Extra Apache config",
"type": "textarea",
"defaultValue": null,
"readonly": false,
"disableEdit": false,
"required": false,
"category": "code"
}
]
}
}
}
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)
- 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
- option: (string)
Action option value | An additional option that must be passed to certain action types.
Examples:
1:
{
"type": "start"
}
2:
{
"type": "stop"
}
3:
{
"type": "installCMS",
"option": "Wordpress"
}
Get a list of children of a component
get /apps/{appId}/components/{componentId}/components
Get a list of children of a component
URI Parameters
- appId: required(string)
- componentId: required(string)
The unique identifier of a component
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"components": [
{
"id": 23,
"name": "MyComponent",
"category": "Web-apps",
"limitGroup": null,
"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,
"name": "Test2",
"status\"": "ok",
"statusCategory": "green"
},
"apmEnabled": true,
"attachment": {
"id": 53,
"name": "My attachment"
}
},
{
"id": 24,
"name": "testTTTT",
"category": "Databases",
"limitGroup": null,
"appcomponenttype": "mysql",
"billableitemDetailId": 33,
"appcomponentparameters": {
"user": "ml11097",
"pass": "******",
"host": null
},
"appcomponentparameterDescriptions": {
"user": "Username",
"pass": "encrypted password",
"host": "%"
},
"status": "to_create",
"app": {
"id": 1,
"name": "Test2",
"status\"": "ok",
"statusCategory": "green"
},
"apmEnabled": true,
"attachment": null
}
]
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to an app/project
HTTP status code 404
Response when an appcomponent is not found
Create a new Url
List of all available urls
post /apps/{appId}/components/{componentId}/urls
Create a new Url
URI Parameters
- appId: required(string)
- 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)
- autoSslCertificate: (boolean)
The flag is only respected if handleDns = true and SslCertificate is not chosen (default: false)
- caching: (boolean)
(default: false)
- authentication: (boolean)
Enable basic authentication on URL (default: false)
Example:
{
"content": "test2.test.be",
"sslForce": false,
"sslCertificate": null,
"handleDns": true,
"autoSslCertificate": true,
"caching": true,
"authentication": false
}
HTTP status code 201
Response when a Url was successfully created
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",
"caching": false,
"authentication": false
}
}
HTTP status code 400
Validation of new url failed
HTTP status code 403
Response when a user does not have access to an app/project
HTTP status code 404
Response when an app/project 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}/urls
List of all available urls
URI Parameters
- appId: required(string)
- 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,
"caching": false,
"authentication": false
},
{
"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,
"caching": false,
"authentication": true
}
]
}
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)
- 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)
- caching: (boolean)
(default: false)
- authentication: (boolean)
Enable basic authentication on URL (default: false)
Examples:
1:
{
"content": "test1.test.be",
"sslForce": true,
"sslCertificate": 123
}
2:
{
"content": "test2.test.be",
"sslForce": false,
"sslCertificate": null,
"handleDns": true,
"caching": false
}
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)
- 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)
- 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",
"caching": false,
"authentication": false
}
}
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
Create a new restore
List of all available restores
post /apps/{appId}/components/{componentId}/restores
Create a new restore
URI Parameters
- appId: required(string)
- componentId: required(string)
The unique identifier of a component
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}/components/{componentId}/restores
List of all available restores
URI Parameters
- appId: required(string)
- componentId: required(string)
The unique identifier of a component
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}/components/{componentId}/restores/{restoreId}
Update a restore
URI Parameters
- appId: required(string)
- componentId: required(string)
The unique identifier of a component
- 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}/components/{componentId}/restores/{restoreId}
Delete a restore
URI Parameters
- appId: required(string)
- componentId: required(string)
The unique identifier of a component
- 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}/components/{componentId}/restores/{restoreId}
Get a restore
URI Parameters
- appId: required(string)
- componentId: required(string)
The unique identifier of a component
- 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}/components/{componentId}/restores/{restoreId}/download
Get a restore file
URI Parameters
- appId: required(string)
- componentId: required(string)
The unique identifier of a component
- restoreId: required(string)
The unique identifier of a restore
Get a restore file
get /apps/{appId}/components/{componentId}/restores/{restoreId}/download/{userId}/{hash}
Get a restore file
URI Parameters
- appId: required(string)
- componentId: required(string)
The unique identifier of a component
- restoreId: required(string)
The unique identifier of a restore
- userId: required(string)
- hash: required(string)
Link an appcomponent with a domain
Get an appcomponent's domains
post /apps/{appId}/components/{componentId}/domains
Link an appcomponent with a domain
URI Parameters
- appId: required(string)
- componentId: required(string)
The unique identifier of a component
Body
Media type: application/json
Type: object
Properties- domain: required(integer)
The unique identifier of a domain
- handleDns: (boolean)
Should dns be handled by us? (default: true)
- dkim: (boolean)
dkim
Example:
{
"domain": 1,
"handleDns": true,
"dkim": true
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"componentHasDomain": {
"id": 15,
"status": "updating",
"handleDns": true,
"dkim": true,
"dkimRecords": [
{
"name": "NAME_1",
"content": "CONTENT_1"
},
{
"name": "NAME_2",
"content": "CONTENT_2"
}
],
"domain": {
"id": 1,
"name": "domainnametest",
"handleDns": true,
"handleMailDns": false,
"domaintype": {
"id": 364,
"extension": "be"
}
},
"appcomponent": {
"id": 1,
"name": "my component",
"appcomponenttype": "mail"
},
"statusCategory": "yellow"
}
}
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 /apps/{appId}/components/{componentId}/domains
Get an appcomponent's domains
URI Parameters
- appId: required(string)
- 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:
{
"total": 6,
"componentHasDomains": [
{
"id": 8,
"status": "ok",
"handleDns": true,
"dkim": false,
"dkimRecords": [],
"domain": {
"id": 1,
"name": "testdomainbe",
"handleDns": true,
"handleMailDns": false,
"domaintype": {
"id": 364,
"extension": "be"
}
},
"appcomponent": {
"id": 1,
"name": "mail",
"appcomponenttype": "mail"
},
"statusCategory": "green"
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Update a domainHasAppcomponent
Unlink a domain from an appcomponent
Get a appcomponent's domain
put /apps/{appId}/components/{componentId}/domains/{domainId}
Update a domainHasAppcomponent
URI Parameters
- appId: required(string)
- componentId: required(string)
The unique identifier of a component
- domainId: required(string)
- appcomponentHasDomainId: required(string)
The unique identifier of a domain
Body
Media type: application/json
Type: object
Properties- domain: required(integer)
The unique identifier of a domain
- handleDns: (boolean)
Should dns be handled by us? (default: true)
- dkim: (boolean)
dkim
Example:
{
"domain": 1,
"handleDns": true,
"dkim": true
}
HTTP status code 204
Response when update of a domain 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 domain 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}/domains/{domainId}
Unlink a domain from an appcomponent
URI Parameters
- appId: required(string)
- componentId: required(string)
The unique identifier of a component
- domainId: required(string)
- appcomponentHasDomainId: required(string)
The unique identifier of a domain
get /apps/{appId}/components/{componentId}/domains/{domainId}
Get a appcomponent's domain
URI Parameters
- appId: required(string)
- componentId: required(string)
The unique identifier of a component
- domainId: required(string)
- appcomponentHasDomainId: 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:
{
"componentHasDomain": {
"id": 15,
"status": "updating",
"handleDns": true,
"dkim": true,
"dkimRecords": [
{
"name": "NAME_1",
"content": "CONTENT_1"
},
{
"name": "NAME_2",
"content": "CONTENT_2"
}
],
"domain": {
"id": 1,
"name": "domainnametest",
"handleDns": true,
"handleMailDns": false,
"domaintype": {
"id": 364,
"extension": "be"
}
},
"appcomponent": {
"id": 1,
"name": "my component",
"appcomponenttype": "mail"
},
"statusCategory": "yellow"
}
}
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 stats for a component's urls
get /apps/{appId}/components/{componentId}/urlstats
Get stats for a component's urls
URI Parameters
- appId: required(string)
- componentId: required(string)
The unique identifier of a component
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"urls": [
{
"id": "636",
"duration": "9.926351760000001",
"http_status_code": "200",
"ssl_cert_expiry": "1692702722",
"success": "1"
},
{
"id": "646",
"duration": "4.6684722",
"http_status_code": "200",
"success": "1"
}
]
}
HTTP status code 400
Bad request
HTTP status code 403
Access Denied - when user doesn't have access to app/project
HTTP status code 404
Not found - when app/project doesn't exist
Get available backups for an appcomponent
get /apps/{appId}/components/{componentId}/availablebackups
Get available backups for an appcomponent
URI Parameters
- appId: required(string)
- 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
- systemId: (integer)
system id
- date: (integer)
Get all systems the appcomponent is installed on
get /apps/{appId}/components/{componentId}/installedsystems
Get all systems the appcomponent is installed on
URI Parameters
- appId: required(string)
- componentId: required(string)
The unique identifier of a component
HTTP status code 200
Response when users are found
Body
Media type: application/json
Type: object
Example:
{
"total": 1,
"systems": [
{
"id": 2921,
"name": "My system",
"fqdn": "3235352.level27.eu",
"customerFqdn": "test3877.level27.eu",
"ipv4": "127.0.0.1",
"publicipv4": null,
"cookbooks": [
{
"id": 4160,
"cookbooktype": "docker",
"cookbookparameters": {
"monitoring_cache": {
"value": 7200,
"default": true
}
},
"cookbookparameterDescriptions": {
"monitoring_cache": "Docker monitoring check cache age"
},
"previousCookbookparameters": null,
"status": "ok",
"statusCategory": "green"
}
]
}
],
"systemgroup": {
"id": 1,
"name": "My group"
}
}
Get a component connections
get /apps/{appId}/components/{componentId}/connectionstring
Get a component connections
URI Parameters
- appId: required(string)
- componentId: required(string)
The unique identifier of a component
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"component": {
"id": 30626,
"name": "PHP",
"appcomponenttype": "php",
"fqdn": null,
"customerFqdn": null,
"ipv4": "multiple systems found",
"ipv6": null,
"connection": [
{
"protocol": "HTTP/HTTPS",
"port": "80/443",
"map": null
},
{
"protocol": "SSH/SFTP",
"port": 22,
"map": null
}
]
}
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to an app/project
/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)
- 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
Get latency
get /apps/{appId}/components/{componentId}/apm/latency
Get latency
URI Parameters
- appId: required(string)
- componentId: required(string)
The unique identifier of a component
Query Parameters
- start: (integer)
- end: (integer)
- comparison: (one of 1d, 1w)
- transactionName: required(string)
- kuery: (string)
- interval: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"currentPeriod": {
"overallAvgDuration": null,
"latencyTimeseries": [
{
"x": 1664560800000,
"y": null
},
{
"x": 1664571600000,
"y": null
},
{
"x": 1664582400000,
"y": null
}
]
},
"previousPeriod": {
"overallAvgDuration": null,
"latencyTimeseries": [
{
"x": 1664355600000,
"y": null
},
{
"x": 1664366400000,
"y": null
},
{
"x": 1664377200000,
"y": null
}
]
}
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to an app
Get throughput
get /apps/{appId}/components/{componentId}/apm/throughput
Get throughput
URI Parameters
- appId: required(string)
- componentId: required(string)
The unique identifier of a component
Query Parameters
- start: (integer)
- end: (integer)
- comparison: (one of 1d, 1w)
- transactionName: required(string)
- kuery: (string)
- interval: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"currentPeriod": [
{
"x": 1664355600000,
"y": 0
},
{
"x": 1664366400000,
"y": 0
},
{
"x": 1664377200000,
"y": 0
}
],
"previousPeriod": [
{
"x": 1664355600000,
"y": 0
},
{
"x": 1664366400000,
"y": 0
},
{
"x": 1664377200000,
"y": 0
}
]
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to an app
Get failed transactions
get /apps/{appId}/components/{componentId}/apm/failedtransactions
Get failed transactions
URI Parameters
- appId: required(string)
- componentId: required(string)
The unique identifier of a component
Query Parameters
- start: (integer)
- end: (integer)
- comparison: (one of 1d, 1w)
- transactionName: required(string)
- kuery: (string)
- interval: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"currentPeriod": {
"timeseries": [
{
"x": 1664355600000,
"y": null
},
{
"x": 1664366400000,
"y": null
},
{
"x": 1664377200000,
"y": null
}
],
"average": null
},
"previousPeriod": {
"timeseries": [
{
"x": 1664355600000,
"y": null
},
{
"x": 1664366400000,
"y": null
},
{
"x": 1664377200000,
"y": null
}
],
"average": null
}
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to an app
Get breakdown
get /apps/{appId}/components/{componentId}/apm/breakdown
Get breakdown
URI Parameters
- appId: required(string)
- componentId: required(string)
The unique identifier of a component
Query Parameters
- start: (integer)
- end: (integer)
- transactionName: required(string)
- kuery: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"timeseries": [
{
"title": "app",
"color": "#54b399",
"type": "areaStacked",
"data": [
{
"x": 1664355600000,
"y": 0.6499065152281066
},
{
"x": 1664366400000,
"y": 0.6294368189313084
},
{
"x": 1664377200000,
"y": 0.699383493670429
}
],
"hideLegend": false,
"legendValue": "61%"
},
{
"title": "http",
"color": "#6092c0",
"type": "areaStacked",
"data": [
{
"x": 1664355600000,
"y": 0.19495480293373435
},
{
"x": 1664366400000,
"y": 0.17192148635281196
},
{
"x": 1664377200000,
"y": 0.11284648855135294
}
],
"hideLegend": false,
"legendValue": "11%"
},
{
"title": "mysql",
"color": "#d36086",
"type": "areaStacked",
"data": [
{
"x": 1664355600000,
"y": 0.1551386818381591
},
{
"x": 1664366400000,
"y": 0.19864169471587959
},
{
"x": 1664377200000,
"y": 0.18777001777821814
}
],
"hideLegend": false,
"legendValue": "28%"
}
]
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to an app
Get transactions list
get /apps/{appId}/components/{componentId}/apm/transactions
Get transactions list
URI Parameters
- appId: required(string)
- componentId: required(string)
The unique identifier of a component
Query Parameters
- start: (integer)
- end: (integer)
- kuery: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"transactionGroups": [
{
"name": "GET /v1/endpoint1",
"latency": 32485.030803147678,
"throughput": 16.199900793650794,
"errorRate": 0,
"impact": 4.293284448077484,
"transactionType": "request"
},
{
"name": "GET /v1/endpoint2",
"latency": 87754.67371394334,
"throughput": 11.590277777777779,
"errorRate": 0,
"impact": 8.29770757945317,
"transactionType": "request"
}
],
"isAggregationAccurate": false,
"bucketSize": 1000
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to an app
Get latency distribution
get /apps/{appId}/components/{componentId}/apm/transactions/latencydistribution
Get latency distribution
URI Parameters
- appId: required(string)
- componentId: required(string)
The unique identifier of a component
Query Parameters
- start: (integer)
- end: (integer)
- transactionName: required(string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"percentileThresholdValue": 127424,
"durationMin": 112639,
"durationMax": 342014,
"totalDocCount": 2225,
"overallHistogram": [
{
"key": 0,
"doc_count": 0
},
{
"key": 111382,
"doc_count": 0
},
{
"key": 112639,
"doc_count": 10
},
{
"key": 113910,
"doc_count": 25
},
{
"key": 115195,
"doc_count": 105
},
{
"key": 116495,
"doc_count": 370
},
{
"key": 117809,
"doc_count": 410
},
{
"key": 119138,
"doc_count": 625
},
{
"key": 120482,
"doc_count": 215
}
]
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to an app
Get transaction traces
get /apps/{appId}/components/{componentId}/apm/transactions/traces
Get transaction traces
URI Parameters
- appId: required(string)
- componentId: required(string)
The unique identifier of a component
Query Parameters
- start: (integer)
- end: (integer)
- transactionName: required(string)
- kuery: (string)
- sampleRangeFrom: (integer)
- sampleRangeTo: (integer)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"traceSamples": [
{
"transactionId": "9a9b31013203a4d4",
"traceId": "97aed5bad71fe638637a8b31dd60f74c"
},
{
"transactionId": "fcb1f7f3450cc4d0",
"traceId": "cc334c168e4775042fb128926f4fa1e3"
},
{
"transactionId": "169262a64b896de5",
"traceId": "9ca06052262fa54fb1095e29791526ff"
}
]
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to an app
Get trace
get /apps/{appId}/components/{componentId}/apm/transactions/traces/{traceId}/{entryTransactionId}
Get trace
URI Parameters
- appId: required(string)
- componentId: required(string)
The unique identifier of a component
- traceId: required(string)
- entryTransactionId: required(string)
Query Parameters
- start: (integer)
- end: (integer)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"exceedsMax": false,
"traceDocs": [],
"errorDocs": [],
"linkedChildrenOfSpanCountBySpanId": []
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to an app
Get statistics for appcomponent
get /apps/{appId}/components/{componentId}/getstats/{statistic}/{bucket}
Get statistics for appcomponent
URI Parameters
- appId: required(string)
- componentId: required(string)
The unique identifier of a component
- statistic: required(string)
- bucket: required(string)
Create a new cron
List of all available crons
post /apps/{appId}/components/{componentId}/crons
Create a new cron
URI Parameters
- appId: required(string)
- componentId: required(string)
The unique identifier of a component
Body
Media type: application/json
Type: object
Properties- name: required(string)
Name
- command: required(string)
Cron command
- schedule: required(string)
Schedule
- selectedSystem: (integer)
The unique identifier of a system
Example:
{
"name": "My cron",
"command": "php bin/console test:cron",
"schedule": "30 6 * * *"
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"cron": {
"id": 3,
"name": "My cron",
"command": "php bin/console test:cron",
"schedule": "30 6 * * * ",
"status": "ok",
"appcomponent": {
"id": 2808,
"name": "Php",
"appcomponenttype": "php",
"status": "ok",
"app": {
"id": 1153
}
},
"statusCategory": "green"
}
}
HTTP status code 400
Validation of new cron failed
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /apps/{appId}/components/{componentId}/crons
List of all available crons
URI Parameters
- appId: required(string)
- 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:
{
"total": 3,
"crons": [
{
"id": 3,
"name": "My cron",
"command": "php bin/console test:cron",
"schedule": "30 6 * * * ",
"status": "ok",
"appcomponent": {
"id": 2808,
"name": "Php",
"appcomponenttype": "php",
"status": "ok"
},
"selectedSystem": {
"id": 33,
"name": "testselectedsystem.level27.be"
},
"statusCategory": "green"
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Update a cron
Delete a cron
Get a cron
put /apps/{appId}/components/{componentId}/crons/{cronId}
Update a cron
URI Parameters
- appId: required(string)
- componentId: required(string)
The unique identifier of a component
- cronId: required(string)
The unique identifier of a cron
Body
Media type: application/json
Type: object
Properties- name: required(string)
Name
- command: required(string)
Cron command
- schedule: required(string)
Schedule
- selectedSystem: (integer)
The unique identifier of a system
Example:
{
"name": "My cron",
"command": "php bin/console test:cron",
"schedule": "30 6 * * *"
}
HTTP status code 204
Response when update of a cron succeeded
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a cron
HTTP status code 404
Response when cron 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}/crons/{cronId}
Delete a cron
URI Parameters
- appId: required(string)
- componentId: required(string)
The unique identifier of a component
- cronId: required(string)
The unique identifier of a cron
get /apps/{appId}/components/{componentId}/crons/{cronId}
Get a cron
URI Parameters
- appId: required(string)
- componentId: required(string)
The unique identifier of a component
- cronId: required(string)
The unique identifier of a cron
HTTP status code 200
Response when cron is found
Body
Media type: application/json
Type: object
Example:
{
"cron": {
"id": 3,
"name": "My cron",
"command": "php bin/console test:cron",
"schedule": "30 6 * * * ",
"status": "ok",
"appcomponent": {
"id": 2808,
"name": "Php",
"appcomponenttype": "php",
"status": "ok",
"app": {
"id": 1153
}
},
"statusCategory": "green"
}
}
HTTP status code 403
Response when a user does not have access to a cron
HTTP status code 404
Response when cron 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 cron
post /apps/{appId}/components/{componentId}/crons/{cronId}/actions
Execute an action for a cron
URI Parameters
- appId: required(string)
- componentId: required(string)
The unique identifier of a component
- cronId: required(string)
The unique identifier of a cron
Body
Media type: application/json
Type: object
Properties- type: required(one of deactivate, activate)
Action type
Examples:
1:
{
"type": "activate"
}
2:
{
"type": "deactivate"
}
HTTP status code 204
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"cron": {
"id": 3,
"name": "My cron",
"command": "php bin/console test:cron",
"schedule": "30 6 * * * ",
"status": "ok",
"appcomponent": {
"id": 2808,
"name": "Php",
"appcomponenttype": "php",
"status": "ok",
"app": {
"id": 1153
}
},
"statusCategory": "green"
}
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to an app/project
HTTP status code 404
Response when a cron is not found
Get allowed components for app/project
get /apps/{appId}/rules
Get allowed components for app/project
URI Parameters
- appId: required(string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"limits": {
"database": {
"id": 151,
"limitGroup": "database",
"description": "database",
"status": "ok",
"uniqueComponentType": true,
"sharedResource": false,
"allowedTemplates": [
{
"componentType": "mysql",
"template": "mysql_component_creation_allocation",
"templateDescription": "mysql appcomponent"
}
],
"allowedUpgrades": [
{
"name": "database_5",
"type": "size",
"description": "Database upgrade 5GB",
"value": 5,
"unit": "GB",
"maxAllowedUpgrades": 5
},
{
"name": "database_10",
"type": "size",
"description": "Database upgrade 10GB",
"value": 10,
"unit": "GB",
"maxAllowedUpgrades": 5
},
{
"name": "database_extra_component_5",
"type": "extra_component",
"description": "Extra 5 databases",
"value": 5,
"unit": "unit",
"addToMax": true,
"maxAllowedUpgrades": 5
}
],
"upgrades": [],
"max": 10,
"upgradeMax": 0,
"ruleIdentifier": "database",
"ruleResources": [
{
"id": 176,
"type": "size",
"value": 2560,
"upgradeValue": 0,
"operator": "<",
"status": 10
}
],
"correctlyAddedComponents": [],
"invalidComponents": [],
"maxCount": 10,
"actualCount": 0,
"canBeAddedCount": 10
},
"application": {
"id": 152,
"limitGroup": "application",
"description": "application",
"status": "ok",
"uniqueComponentType": true,
"sharedResource": false,
"allowedTemplates": [
{
"componentType": "php",
"template": "php_component_creation_allocation",
"templateDescription": "php appcomponent",
"selects": [
"version"
]
}
],
"allowedUpgrades": [],
"upgrades": [],
"max": 1,
"upgradeMax": 0,
"ruleIdentifier": "php_application",
"ruleResources": [
{
"id": 177,
"type": "application",
"value": 256,
"upgradeValue": 0,
"operator": "<",
"status": 10
},
{
"id": 178,
"type": "opcache_apcu",
"value": 64,
"upgradeValue": 0,
"operator": "<",
"status": 10
},
{
"id": 179,
"type": "total_memory",
"value": 256,
"upgradeValue": 0,
"operator": "<",
"status": 10
}
],
"correctlyAddedComponents": [],
"invalidComponents": [],
"maxCount": 1,
"actualCount": 0,
"canBeAddedCount": 1
},
"page_cache": {
"id": 153,
"limitGroup": "page_cache",
"description": "Page caching with varnish",
"status": "ok",
"uniqueComponentType": true,
"sharedResource": false,
"allowedTemplates": [
{
"componentType": "varnish",
"template": "varnish_component_creation_allocation",
"templateDescription": "varnish appcomponent"
}
],
"allowedUpgrades": [
{
"name": "varnish_256",
"type": "memory",
"description": "Varnish upgrade to 256mb",
"value": 256,
"unit": "MB",
"maxAllowedUpgrades": 5
},
{
"name": "memory_512",
"type": "memory",
"description": "Varnish upgrade to 512mb",
"value": 512,
"unit": "MB",
"maxAllowedUpgrades": 5
}
],
"upgrades": [],
"max": 1,
"upgradeMax": 0,
"ruleIdentifier": "page_cache",
"ruleResources": [
{
"id": 180,
"type": "memory",
"value": 128,
"upgradeValue": 0,
"operator": "<",
"status": 10
}
],
"correctlyAddedComponents": [],
"invalidComponents": [],
"maxCount": 1,
"actualCount": 0,
"canBeAddedCount": 1
},
"object_cache": {
"id": 154,
"limitGroup": "object_cache",
"description": "Object cache in redis or memcached",
"status": "ok",
"uniqueComponentType": false,
"sharedResource": true,
"allowedTemplates": [
{
"componentType": "redis",
"template": "redis_component_creation_allocation",
"templateDescription": "redis appcomponent"
},
{
"componentType": "memcached",
"template": "memcached_component_creation_allocation",
"templateDescription": "memcached appcomponent"
}
],
"allowedUpgrades": [],
"upgrades": [],
"max": 1,
"upgradeMax": 0,
"ruleIdentifier": "object_cache",
"ruleResources": [
{
"id": 181,
"type": "memory",
"value": 64,
"upgradeValue": 0,
"operator": "<",
"status": 10
}
],
"correctlyAddedComponents": [],
"invalidComponents": [],
"maxCount": 1,
"actualCount": 0,
"canBeAddedCount": 1
},
"extra_vhosts": {
"id": 155,
"limitGroup": "extra_vhosts",
"description": "Extra virtual hosts",
"status": "ok",
"uniqueComponentType": true,
"sharedResource": true,
"allowedTemplates": [
{
"componentType": "phplegacy",
"template": "phplegacy_component_creation_allocation",
"templateDescription": "phplegacy appcomponent"
}
],
"allowedUpgrades": [],
"upgrades": [],
"max": 20,
"upgradeMax": 0,
"ruleIdentifier": "extra_vhosts",
"ruleResources": [],
"correctlyAddedComponents": [],
"invalidComponents": [],
"maxCount": 20,
"actualCount": 0,
"canBeAddedCount": 20
},
"optional_component": {
"id": 156,
"limitGroup": "optional_component",
"description": "Optional component",
"status": "ok",
"uniqueComponentType": false,
"sharedResource": true,
"allowedTemplates": [
{
"componentType": "redis",
"template": "redis_component_creation_allocation",
"templateDescription": "redis appcomponent"
},
{
"componentType": "memcached",
"template": "memcached_component_creation_allocation",
"templateDescription": "memcached appcomponent"
},
{
"componentType": "nodejs",
"template": "nodejs_component_creation_allocation",
"templateDescription": "nodejs appcomponent"
},
{
"componentType": "rabbitmq",
"template": "rabbitmq_component_creation_allocation",
"templateDescription": "rabbitmq appcomponent"
},
{
"componentType": "elasticsearch",
"template": "elasticsearch_component_creation_allocation",
"templateDescription": "elasticsearch appcomponent"
},
{
"componentType": "worker",
"template": "worker_component_creation_allocation",
"templateDescription": "worker appcomponent"
},
{
"componentType": "url",
"template": "url_component_creation_allocation",
"templateDescription": "url appcomponent"
}
],
"allowedUpgrades": [
{
"name": "optional_extra_component_5",
"type": "extra_component",
"description": "Extra 5 components from the list",
"value": 5,
"unit": "unit",
"addToMax": true,
"maxAllowedUpgrades": 5
}
],
"upgrades": [],
"max": 1,
"upgradeMax": 0,
"ruleIdentifier": "optional_component",
"ruleResources": [
{
"id": 182,
"type": "memory",
"value": 256,
"upgradeValue": 0,
"operator": "<",
"status": 10
}
],
"correctlyAddedComponents": [],
"invalidComponents": [],
"maxCount": 1,
"actualCount": 0,
"canBeAddedCount": 1
}
}
}
HTTP status code 403
Response when a user does not have access to a app/project
HTTP status code 404
Response when a app/project is not found
Add multiple upgrades for an app/project
post /apps/{appId}/rules/upgrades
Add multiple upgrades for an app/project
URI Parameters
- appId: required(string)
Body
Media type: application/json
Type: object
Properties- upgrades: required(string)
json (various parameters)
Example:
{
"upgrades": [
{
"ruleId": 1,
"name": "mysql_database_5",
"amount": 2
},
{
"ruleId": 2,
"name": "php_memory_1",
"amount": 0
}
]
}
HTTP status code 201
Response when an upgrade was successfully added
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 an app/project
HTTP status code 404
Response when an app/project is not found
Add an upgrade for an app/project
post /apps/{appId}/rules/{ruleId}/upgrades
Add an upgrade for an app/project
URI Parameters
- appId: required(string)
- ruleId: required(string)
Body
Media type: application/json
Type: object
Properties- name: required(string)
Name
Example:
{
"name": "database_5"
}
HTTP status code 201
Response when an upgrade was successfully added
Body
Media type: application/json
Type: object
Example:
{
"rule": {
"id": 55,
"limitGroup": "database",
"description": "database",
"upgrades": [
{
"name": "database_10",
"type": "size",
"description": "Database upgrade 10GB",
"value": 10,
"unit": "GB"
},
{
"name": "database_extra_component_5",
"type": "extra_component",
"description": "Extra 5 databases",
"value": 5,
"unit": "unit",
"addToMax": true,
"rule": {
"id": 55,
"limitGroup": "database"
}
}
],
"allowedUpgrades": [
{
"name": "database_5",
"type": "size",
"description": "Database upgrade 5GB",
"value": 5,
"unit": "GB"
},
{
"name": "database_10",
"type": "size",
"description": "Database upgrade 10GB",
"value": 10,
"unit": "GB"
},
{
"name": "database_extra_component_5",
"type": "extra_component",
"description": "Extra 5 databases",
"value": 5,
"unit": "unit",
"addToMax": true
}
],
"allowedTemplates": [
{
"componentType": "mysql",
"template": "mysql_component_creation_allocation",
"templateDescription": "mysql appcomponent"
},
{
"componentType": "mongodb",
"template": "mongodb_component_creation_allocation",
"templateDescription": "mongodb appcomponent"
}
],
"max": 10,
"upgradeMax": 5,
"uniqueComponentType": true,
"sharedResource": null,
"status": "ok",
"app": {
"id": 11589,
"name": "Test",
"status": 10,
"source": "",
"organisation": {
"id": 5286,
"name": "TestAgency"
}
},
"ruleResources": [
{
"id": 64,
"type": "size",
"value": 5120,
"upgradeValue": 1024,
"operator": "<",
"status": "ok"
}
]
}
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to an app/project
HTTP status code 404
Response when an app/project is not found
Remove an upgrade for a rule
delete /apps/{appId}/rules/{ruleId}/upgrades/{upgradeName}
Remove an upgrade for a rule
URI Parameters
- appId: required(string)
- ruleId: required(string)
- upgradeName: required(string)
Get all available upgrades for an app/project
get /apps/{appId}/upgrades/allowed
Get all available upgrades for an app/project
URI Parameters
- appId: required(string)
Query Parameters
- organisationId: (integer - default: 0)
- agreementId: (integer)
agreement id
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"total": 6,
"upgrades": [
{
"name": "database_5",
"type": "size",
"description": "Database upgrade 5GB",
"value": 5,
"unit": "GB",
"maxAllowedUpgrades": 5,
"rule": {
"id": 151,
"limitGroup": "database"
},
"product": {
"id": "custompackage_walk_database_5",
"description": "Custompackage walk database 5GB",
"prices": [
{
"id": 16150,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16162,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"agreementPrices": [],
"defaultAgreementPrices": [
{
"id": 16150,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16162,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"allowQuantityChange": false,
"quantityCalculation": null
}
},
{
"name": "database_10",
"type": "size",
"description": "Database upgrade 10GB",
"value": 10,
"unit": "GB",
"maxAllowedUpgrades": 5,
"rule": {
"id": 151,
"limitGroup": "database"
},
"product": {
"id": "custompackage_walk_database_10",
"description": "Custompackage walk database 10GB",
"prices": [
{
"id": 16151,
"period": 1,
"currency": "EUR",
"price": "1900",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16163,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"agreementPrices": [],
"defaultAgreementPrices": [
{
"id": 16151,
"period": 1,
"currency": "EUR",
"price": "1900",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16163,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"allowQuantityChange": null,
"quantityCalculation": null
}
},
{
"name": "database_extra_component_5",
"type": "extra_component",
"description": "Extra 5 databases",
"value": 5,
"unit": "unit",
"addToMax": true,
"maxAllowedUpgrades": 5,
"rule": {
"id": 151,
"limitGroup": "database"
},
"product": {
"id": "custompackage_walk_database_extra_component_5",
"description": "5 extra databases",
"prices": [
{
"id": 16164,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"agreementPrices": [],
"defaultAgreementPrices": [
{
"id": 16164,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"allowQuantityChange": null,
"quantityCalculation": null
}
},
{
"name": "varnish_256",
"type": "memory",
"description": "Varnish upgrade to 256mb",
"value": 256,
"unit": "MB",
"maxAllowedUpgrades": 5,
"rule": {
"id": 153,
"limitGroup": "page_cache"
},
"product": {
"id": "custompackage_walk_varnish_256",
"description": "Varnish 256MB",
"prices": [
{
"id": 16165,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"agreementPrices": [],
"defaultAgreementPrices": [
{
"id": 16165,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"allowQuantityChange": null,
"quantityCalculation": null
}
},
{
"name": "memory_512",
"type": "memory",
"description": "Varnish upgrade to 512mb",
"value": 512,
"unit": "MB",
"maxAllowedUpgrades": 5,
"rule": {
"id": 153,
"limitGroup": "page_cache"
},
"product": {
"id": "custompackage_walk_memory_512",
"description": "Memory 512MB",
"prices": [
{
"id": 16166,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"agreementPrices": [],
"defaultAgreementPrices": [
{
"id": 16166,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"allowQuantityChange": null,
"quantityCalculation": null
}
},
{
"name": "optional_extra_component_5",
"type": "extra_component",
"description": "Extra 5 components from the list",
"value": 5,
"unit": "unit",
"addToMax": true,
"maxAllowedUpgrades": 5,
"rule": {
"id": 156,
"limitGroup": "optional_component"
},
"product": {
"id": "custompackage_walk_optional_extra_component_5",
"description": "5 extra optional components",
"prices": [
{
"id": 16167,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"agreementPrices": [],
"defaultAgreementPrices": [
{
"id": 16167,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"allowQuantityChange": null,
"quantityCalculation": null
}
}
]
}
HTTP status code 403
Response when a user does not have access to an app/project
HTTP status code 404
Response when an app/project is not found
Get all available component types for a chosen limitGroup
get /apps/{appId}/limitgroups/{limitGroup}/componenttypes/allowed
Get all available component types for a chosen limitGroup
URI Parameters
- appId: required(string)
- limitGroup: required(string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"total": 1,
"components": [
{
"type": "php",
"displayName": "PHP",
"appcomponentparameters": [
{
"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-sha512",
"defaultValue": "auto",
"readonly": false,
"disableEdit": false,
"required": false,
"category": "credentials"
},
{
"name": "basic_auth_enabled",
"group": "basic_auth",
"displayName": "basic_auth_enabled",
"description": "enable or disable basic authentication",
"type": "boolean",
"defaultValue": false,
"readonly": false,
"disableEdit": false,
"required": false,
"category": "credentials"
},
{
"name": "basic_auth_pass",
"group": "basic_auth",
"displayName": "basic authentication password",
"description": "basic authentication password",
"type": "password-sha512",
"defaultValue": "auto",
"readonly": false,
"disableEdit": false,
"required": false,
"category": "credentials"
},
{
"name": "path",
"displayName": "path",
"description": "Relative path",
"type": "path",
"defaultValue": "/public_html",
"readonly": false,
"disableEdit": false,
"required": true,
"category": "advanced"
},
{
"name": "version",
"displayName": "version",
"description": "PHP version",
"type": "select",
"defaultValue": null,
"readonly": false,
"disableEdit": false,
"required": true,
"cookbookParamName": "versions",
"category": "advanced"
},
{
"name": "composer_version",
"displayName": "composer version",
"description": "Major composer version that will be provided",
"type": "array",
"possibleValues": [
"1",
"2"
],
"defaultValue": "1",
"readonly": false,
"disableEdit": false,
"required": false,
"category": "advanced"
},
{
"name": "extraconfig",
"displayName": "extra config",
"description": "Extra Apache config",
"type": "textarea",
"defaultValue": null,
"readonly": false,
"disableEdit": false,
"required": false,
"category": "code"
},
{
"name": "app_memory_limit",
"displayName": "app memory limit",
"description": "PHP application memory limit (MiB)",
"type": "array",
"possibleValues": [
"128",
"256",
"512",
"1024"
],
"defaultValue": "256",
"readonly": false,
"disableEdit": false,
"required": false,
"category": "advanced"
}
],
"dependency": []
}
],
"max": 2,
"upgradeMax": 1,
"actualCount": 1,
"canBeAddedCount": 2
}
HTTP status code 403
Response when a user does not have access to an app/project
HTTP status code 404
Response when an app/project is not found
Create a new sslcertificate
List of all available sslcertificates
post /apps/{appId}/sslcertificates
Create a new sslcertificate
URI Parameters
- appId: required(string)
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)
- period: (integer)
Period
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)
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)
- 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)
- 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)
- 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)
- 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)
- 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)
- 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/project
get /apps/{appId}/urls
Get all urls for an app/project
URI Parameters
- appId: required(string)
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": 2,
"content": "test1.level27.be",
"https": false,
"status": "ok",
"sslForce": true,
"handleDns": false,
"authentication": false,
"caching": null,
"appcomponent": {
"id": 2,
"app": {
"id": 2,
"name": "test1"
}
},
"sslCertificate": null,
"statusCategory": "green"
},
{
"id": 3,
"content": "test2.level27.be",
"https": false,
"status": "ok",
"sslForce": true,
"handleDns": false,
"authentication": false,
"caching": null,
"appcomponent": {
"id": 2,
"app": {
"id": 2,
"name": "test1"
}
},
"sslCertificate": {
"id": 22,
"name": "testCertificate1"
},
"statusCategory": "green"
}
]
}
HTTP status code 403
Response when a user does not have access to an app/project
HTTP status code 404
Response when an app/project is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Create a new migration
List of all available migrations
post /apps/{appId}/migrations
Create a new migration
URI Parameters
- appId: required(string)
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, 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",
"reminderStatus": 1,
"dtSent": null,
"mode": "agency_hosting",
"customPackageName": null,
"investigationResults": {
"customPackageId": null,
"customPackageName": "drupal_run",
"type": "run",
"systemId": null,
"systemgroupId": 6
},
"app": {
"id": 49,
"name": "Test"
},
"migrationItems": [
{
"id": 1764,
"type": "php",
"source": "agency_hosting",
"sourceInformation": "122",
"destinationEntity": "systemgroup",
"destinationEntityId": 6,
"status": "ok",
"ord": 1,
"sshkey": null,
"investigationResults": [],
"urls": [
{
"id": 310,
"content": "mytest.level27.be",
"handleDns": true,
"authentication": false,
"sslForce": true,
"sslCertificateId": null,
"appcomponentId": 1
}
],
"dependencies": [],
"cp4domains": []
},
{
"preparationResults": []
},
{
"presyncResults": []
},
{
"migrationResults": []
},
{
"logs": []
},
{
"appcomponent": null
},
{
"statusCategory": "green"
},
{
"sourceExtraData": {
"appcomponentparameters": {
"pass": "******",
"basic_auth_enabled": false,
"basic_auth_pass": "******",
"path": "/public_html",
"version": "5.6",
"composer_version": "1",
"extraconfig": null,
"user": "USER",
"sshkeys": [
{
"id": 462,
"description": "Test",
"status": "ok",
"statusCategory": "green",
"organisationId": 1,
"type": "user",
"owner": "Test Test",
"appcomponentHasSshkeyId": 1,
"appcomponentHasSshkeyStatus": "ok",
"appcomponentHasSshkeyStatusCategory": "green"
}
]
},
"status": "ok",
"statusCategory": "green",
"systemgroup": {
"id": 8,
"name": "my_group"
},
"systems": [
{
"id": 1,
"uid": "UID",
"deprecatedUid": "UID",
"fqdn": "221421424.level17.eu",
"customerFqdn": null,
"name": "test-web1",
"status": "ok",
"statusCategory": "green",
"runningStatus": "running",
"runningStatusCategory": "green",
"osv": "Ubuntu 16.04"
},
{
"id": 2,
"uid": "UID",
"deprecatedUid": "UID",
"fqdn": "22fs21424.level17.eu",
"customerFqdn": null,
"name": "test-db1",
"status": "ok",
"statusCategory": "green",
"runningStatus": "running",
"runningStatusCategory": "green",
"osv": "Ubuntu 18.04"
}
]
}
},
{
"destinationExtraData": {
"systemgroup": {
"id": 6,
"name": "Test"
},
"systems": [
{
"id": 3,
"uid": "UID",
"deprecatedUid": "UID",
"fqdn": "ssvdge45.level17.eu",
"customerFqdn": null,
"name": "test-web2",
"status": "ok",
"statusCategory": "green",
"runningStatus": "running",
"runningStatusCategory": "green",
"osv": "Ubuntu 20.04"
}
]
}
},
""
],
"statusCategory": "ok"
}
}
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)
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)
- 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/project
HTTP status code 404
Response when an app/project 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)
- 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",
"reminderStatus": 1,
"dtSent": null,
"mode": "agency_hosting",
"customPackageName": null,
"investigationResults": {
"customPackageId": null,
"customPackageName": "drupal_run",
"type": "run",
"systemId": null,
"systemgroupId": 6
},
"app": {
"id": 49,
"name": "Test"
},
"migrationItems": [
{
"id": 1764,
"type": "php",
"source": "agency_hosting",
"sourceInformation": "122",
"destinationEntity": "systemgroup",
"destinationEntityId": 6,
"status": "ok",
"ord": 1,
"sshkey": null,
"investigationResults": [],
"urls": [
{
"id": 310,
"content": "mytest.level27.be",
"handleDns": true,
"authentication": false,
"sslForce": true,
"sslCertificateId": null,
"appcomponentId": 1
}
],
"dependencies": [],
"cp4domains": []
},
{
"preparationResults": []
},
{
"presyncResults": []
},
{
"migrationResults": []
},
{
"logs": []
},
{
"appcomponent": null
},
{
"statusCategory": "green"
},
{
"sourceExtraData": {
"appcomponentparameters": {
"pass": "******",
"basic_auth_enabled": false,
"basic_auth_pass": "******",
"path": "/public_html",
"version": "5.6",
"composer_version": "1",
"extraconfig": null,
"user": "USER",
"sshkeys": [
{
"id": 462,
"description": "Test",
"status": "ok",
"statusCategory": "green",
"organisationId": 1,
"type": "user",
"owner": "Test Test",
"appcomponentHasSshkeyId": 1,
"appcomponentHasSshkeyStatus": "ok",
"appcomponentHasSshkeyStatusCategory": "green"
}
]
},
"status": "ok",
"statusCategory": "green",
"systemgroup": {
"id": 8,
"name": "my_group"
},
"systems": [
{
"id": 1,
"uid": "UID",
"deprecatedUid": "UID",
"fqdn": "221421424.level17.eu",
"customerFqdn": null,
"name": "test-web1",
"status": "ok",
"statusCategory": "green",
"runningStatus": "running",
"runningStatusCategory": "green",
"osv": "Ubuntu 16.04"
},
{
"id": 2,
"uid": "UID",
"deprecatedUid": "UID",
"fqdn": "22fs21424.level17.eu",
"customerFqdn": null,
"name": "test-db1",
"status": "ok",
"statusCategory": "green",
"runningStatus": "running",
"runningStatusCategory": "green",
"osv": "Ubuntu 18.04"
}
]
}
},
{
"destinationExtraData": {
"systemgroup": {
"id": 6,
"name": "Test"
},
"systems": [
{
"id": 3,
"uid": "UID",
"deprecatedUid": "UID",
"fqdn": "ssvdge45.level17.eu",
"customerFqdn": null,
"name": "test-web2",
"status": "ok",
"statusCategory": "green",
"runningStatus": "running",
"runningStatusCategory": "green",
"osv": "Ubuntu 20.04"
}
]
}
},
""
],
"statusCategory": "ok"
}
}
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)
- 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",
"reminderStatus": 1,
"dtSent": null,
"mode": "agency_hosting",
"customPackageName": null,
"investigationResults": {
"customPackageId": null,
"customPackageName": "drupal_run",
"type": "run",
"systemId": null,
"systemgroupId": 6
},
"app": {
"id": 49,
"name": "Test"
},
"migrationItems": [
{
"id": 1764,
"type": "php",
"source": "agency_hosting",
"sourceInformation": "122",
"destinationEntity": "systemgroup",
"destinationEntityId": 6,
"status": "ok",
"ord": 1,
"sshkey": null,
"investigationResults": [],
"urls": [
{
"id": 310,
"content": "mytest.level27.be",
"handleDns": true,
"authentication": false,
"sslForce": true,
"sslCertificateId": null,
"appcomponentId": 1
}
],
"dependencies": [],
"cp4domains": []
},
{
"preparationResults": []
},
{
"presyncResults": []
},
{
"migrationResults": []
},
{
"logs": []
},
{
"appcomponent": null
},
{
"statusCategory": "green"
},
{
"sourceExtraData": {
"appcomponentparameters": {
"pass": "******",
"basic_auth_enabled": false,
"basic_auth_pass": "******",
"path": "/public_html",
"version": "5.6",
"composer_version": "1",
"extraconfig": null,
"user": "USER",
"sshkeys": [
{
"id": 462,
"description": "Test",
"status": "ok",
"statusCategory": "green",
"organisationId": 1,
"type": "user",
"owner": "Test Test",
"appcomponentHasSshkeyId": 1,
"appcomponentHasSshkeyStatus": "ok",
"appcomponentHasSshkeyStatusCategory": "green"
}
]
},
"status": "ok",
"statusCategory": "green",
"systemgroup": {
"id": 8,
"name": "my_group"
},
"systems": [
{
"id": 1,
"uid": "UID",
"deprecatedUid": "UID",
"fqdn": "221421424.level17.eu",
"customerFqdn": null,
"name": "test-web1",
"status": "ok",
"statusCategory": "green",
"runningStatus": "running",
"runningStatusCategory": "green",
"osv": "Ubuntu 16.04"
},
{
"id": 2,
"uid": "UID",
"deprecatedUid": "UID",
"fqdn": "22fs21424.level17.eu",
"customerFqdn": null,
"name": "test-db1",
"status": "ok",
"statusCategory": "green",
"runningStatus": "running",
"runningStatusCategory": "green",
"osv": "Ubuntu 18.04"
}
]
}
},
{
"destinationExtraData": {
"systemgroup": {
"id": 6,
"name": "Test"
},
"systems": [
{
"id": 3,
"uid": "UID",
"deprecatedUid": "UID",
"fqdn": "ssvdge45.level17.eu",
"customerFqdn": null,
"name": "test-web2",
"status": "ok",
"statusCategory": "green",
"runningStatus": "running",
"runningStatusCategory": "green",
"osv": "Ubuntu 20.04"
}
]
}
},
""
],
"statusCategory": "ok"
}
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to an app/project
HTTP status code 404
Response when an app/project is not found
Migrate all migration items (agency hosting migrations)
post /apps/{appId}/migrations/all
Migrate all migration items (agency hosting migrations)
URI Parameters
- appId: required(string)
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
- customPackage: required(integer)
The unique identifier of a CustomPackage
- customPackageName: required(string)
CustomPackageName
- system: required(integer)
The unique identifier of a CustomPackage
- systemgroup: (integer)
The unique identifier of a systemgroup
- mode: (one of agency_hosting, classic)
Mode
Example:
{
"migrationType": "confirmed",
"dtPlanned": null,
"customPackage": 1,
"customPackageName": "drupal_run",
"system": null,
"systemgroup": null,
"mode": "agency_hosting"
}
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"migration": {
"id": 5,
"migrationType": "confirmed",
"dtPlanned": null,
"status": "investigating",
"reminderStatus": 1,
"dtSent": null,
"mode": "agency_hosting",
"customPackageName": null,
"investigationResults": {
"customPackageId": null,
"customPackageName": "drupal_run",
"type": "run",
"systemId": null,
"systemgroupId": 6
},
"app": {
"id": 49,
"name": "Test"
},
"migrationItems": [
{
"id": 1764,
"type": "php",
"source": "agency_hosting",
"sourceInformation": "122",
"destinationEntity": "systemgroup",
"destinationEntityId": 6,
"status": "ok",
"ord": 1,
"sshkey": null,
"investigationResults": [],
"urls": [
{
"id": 310,
"content": "mytest.level27.be",
"handleDns": true,
"authentication": false,
"sslForce": true,
"sslCertificateId": null,
"appcomponentId": 1
}
],
"dependencies": [],
"cp4domains": []
},
{
"preparationResults": []
},
{
"presyncResults": []
},
{
"migrationResults": []
},
{
"logs": []
},
{
"appcomponent": null
},
{
"statusCategory": "green"
},
{
"sourceExtraData": {
"appcomponentparameters": {
"pass": "******",
"basic_auth_enabled": false,
"basic_auth_pass": "******",
"path": "/public_html",
"version": "5.6",
"composer_version": "1",
"extraconfig": null,
"user": "USER",
"sshkeys": [
{
"id": 462,
"description": "Test",
"status": "ok",
"statusCategory": "green",
"organisationId": 1,
"type": "user",
"owner": "Test Test",
"appcomponentHasSshkeyId": 1,
"appcomponentHasSshkeyStatus": "ok",
"appcomponentHasSshkeyStatusCategory": "green"
}
]
},
"status": "ok",
"statusCategory": "green",
"systemgroup": {
"id": 8,
"name": "my_group"
},
"systems": [
{
"id": 1,
"uid": "UID",
"deprecatedUid": "UID",
"fqdn": "221421424.level17.eu",
"customerFqdn": null,
"name": "test-web1",
"status": "ok",
"statusCategory": "green",
"runningStatus": "running",
"runningStatusCategory": "green",
"osv": "Ubuntu 16.04"
},
{
"id": 2,
"uid": "UID",
"deprecatedUid": "UID",
"fqdn": "22fs21424.level17.eu",
"customerFqdn": null,
"name": "test-db1",
"status": "ok",
"statusCategory": "green",
"runningStatus": "running",
"runningStatusCategory": "green",
"osv": "Ubuntu 18.04"
}
]
}
},
{
"destinationExtraData": {
"systemgroup": {
"id": 6,
"name": "Test"
},
"systems": [
{
"id": 3,
"uid": "UID",
"deprecatedUid": "UID",
"fqdn": "ssvdge45.level17.eu",
"customerFqdn": null,
"name": "test-web2",
"status": "ok",
"statusCategory": "green",
"runningStatus": "running",
"runningStatusCategory": "green",
"osv": "Ubuntu 20.04"
}
]
}
},
""
],
"statusCategory": "ok"
}
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to an app/project
HTTP status code 404
Response when an app/project 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)
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)
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)
- 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)
- 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)
- 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}/download
Get a restore file
URI Parameters
- appId: required(string)
- restoreId: required(string)
The unique identifier of a restore
Get a restore file
get /apps/{appId}/restores/{restoreId}/download/{userId}/{hash}
Get a restore file
URI Parameters
- appId: required(string)
- restoreId: required(string)
The unique identifier of a restore
- userId: required(string)
- hash: required(string)
Add access to an app/project
post /apps/{appId}/acls
Add access to an app/project
URI Parameters
- appId: required(string)
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/project 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/project
HTTP status code 404
Response when an app/project 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/project
delete /apps/{appId}/acls/{organisationId}
Remove access to an app/project
URI Parameters
- appId: required(string)
- organisationId: required(string)
HTTP status code 204
Response when access to an app/project was successfully removed
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to an app/project
HTTP status code 404
Response when an app/project 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/project
Send a notification for an app/project (currently no available app/project notifications exist)
get /apps/{appId}/notifications
Get notifications for an app/project
URI Parameters
- appId: required(string)
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/project (currently no available app/project notifications exist)
Create a billableitem (action only for admin)
post /apps/{appId}/bill
Create a billableitem (action only for admin)
URI Parameters
- appId: required(string)
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/project
HTTP status code 404
Response when an app/project 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/project
Update an existing billableitem
Delete a billableitem (action only for admin)
get /apps/{appId}/billableitem
Get billableitem for an existing app/project
URI Parameters
- appId: required(string)
Query Parameters
- doNotReturnFreeDetails: (boolean)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Examples:
active:
{
"billableitem": {
"id": 21,
"organisation": {
"id": 123,
"name": "Test Company"
},
"status": 10,
"statusDisplay": "ok",
"description": "App test1",
"autoRenew": true,
"dtExpires": 1518024820,
"dtNextRenewal": 1518024820,
"documentsExist": false,
"totalPrice": 0,
"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
},
"agreementProductPrice": null,
"type": "php"
}
],
"extra1": null,
"extra2": null,
"externalInfo": "123",
"agreement": {
"id": 3,
"name": "My agreement"
}
}
}
deactivated:
{
"billableitem": {
"id": 32637,
"status": 70,
"statusDisplay": "deactivated",
"statusCategory": "yellow",
"externalInfo": "be1"
}
}
HTTP status code 403
Response when a user does not have access to an app/project
patch /apps/{appId}/billableitem
Update an existing billableitem
URI Parameters
- appId: required(string)
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
- hideDetails: (boolean)
Hide details (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/project
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)
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/project
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)
post /apps/{appId}/billableitem/agreements
Add an agreement to billableitem (action only for admin)
URI Parameters
- appId: required(string)
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
Examples:
active:
{
"billableitem": {
"id": 21,
"organisation": {
"id": 123,
"name": "Test Company"
},
"status": 10,
"statusDisplay": "ok",
"description": "App test1",
"autoRenew": true,
"dtExpires": 1518024820,
"dtNextRenewal": 1518024820,
"documentsExist": false,
"totalPrice": 0,
"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
},
"agreementProductPrice": null,
"type": "php"
}
],
"extra1": null,
"extra2": null,
"externalInfo": "123",
"agreement": {
"id": 3,
"name": "My agreement"
}
}
}
deactivated:
{
"billableitem": {
"id": 32637,
"status": 70,
"statusDisplay": "deactivated",
"statusCategory": "yellow",
"externalInfo": "be1"
}
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to an app/project
HTTP status code 404
Response when a billableitem is not found
Delete an agreement from billableitem (action only for admin)
delete /apps/{appId}/billableitem/agreements/{agreementId}
Delete an agreement from billableitem (action only for admin)
URI Parameters
- appId: required(string)
- agreementId: required(string)
Create a new BillableitemDetail (action only for admin)
post /apps/{appId}/billableitem/details
Create a new BillableitemDetail (action only for admin)
URI Parameters
- appId: required(string)
Body
Media type: application/json
Type: object
Properties- product: required(string)
The unique identifier of a Product
- description: (string)
Description
- price: (integer)
Price in cents (admin only)
- dtExpires: (string)
DateTime - timestamp
- quantity: (integer)
Quantity (admin only)
Example:
{
"product": "product_name",
"description": "some description",
"price": null,
"dtExpires": "1637669422",
"quantity": 1
}
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"billableitemDetail": {
"id": 55392,
"description": "Test 1",
"price": 200,
"product": {
"id": "product_name",
"description": "Product description"
},
"productPrice": {
"id": 9207,
"price": "1000",
"period": 1,
"timing": "pre",
"currency": "EUR"
},
"agreementProductPrice": {
"id": 9208,
"price": "999",
"period": 1,
"timing": "pre",
"currency": "EUR"
},
"quantity": 17,
"dtExpires": "1637669422"
}
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user is not admin
HTTP status code 404
Response when an app/project is not found
Update an existing billableitem detail
Delete a manually added billableitemDetail (action only for admin)
patch /apps/{appId}/billableitem/details/{detailId}
Update an existing billableitem detail
URI Parameters
- appId: required(string)
- 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)
- period: (integer)
Period
Examples:
1:
{
"description": "May description",
"productPrice": "product_price_id"
}
3:
{
"period": 6
}
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/project
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
delete /apps/{appId}/billableitem/details/{detailId}
Delete a manually added billableitemDetail (action only for admin)
Update externalInfo for an existing billableitem
patch /apps/{appId}/billableitem/externalinfo
Update externalInfo for an existing billableitem
URI Parameters
- appId: required(string)
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/project
Get app integrity checks
post /apps/{appId}/integritychecks
Create integrity check for app/project
URI Parameters
- appId: required(string)
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/project
HTTP status code 404
Response when an app/project 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)
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/project
HTTP status code 403
Access Denied - when user doesn't have access to app/project
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/project integrity check
Delete app/project integrity check
get /apps/{appId}/integritychecks/{integritycheckId}
Get app/project integrity check
URI Parameters
- appId: required(string)
- 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/project
HTTP status code 403
Access Denied - when user doesn't have access to app/project
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
delete /apps/{appId}/integritychecks/{integritycheckId}
Delete app/project integrity check
URI Parameters
- appId: required(string)
- integritycheckId: required(string)
HTTP status code 204
Request successfully processed
HTTP status code 400
Bad request
HTTP status code 401
Unauthorized - when user doesn't have role admin, custadmin or app/project
HTTP status code 403
Access Denied - when user doesn't have access to app/project
HTTP status code 404
Not found - when integritycheck doesn't exist
Get app integrity check
get /apps/{appId}/integritychecks/{integritycheckId}/report
Get app integrity check
URI Parameters
- appId: required(string)
- 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/project
HTTP status code 403
Access Denied - when user doesn't have access to app/project
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 available statistics
get /apps/{appId}/statistics/getavailablestats
Get available statistics
URI Parameters
- appId: required(string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"database": {
"displayName": {
"en": "Database",
"nl": "Databank"
},
"resource_limits": [
{
"name": "size",
"displayName": {
"en": "Database size",
"nl": "Databank grootte"
},
"order": 1
}
]
},
"application": {
"displayName": {
"en": "Application",
"nl": "Applicatie"
},
"resource_limits": [
{
"name": "application",
"displayName": {
"en": "Max pool-memory",
"nl": "Max poolgeheugen"
},
"order": 1
},
{
"name": "apcu",
"displayName": {
"en": "APCU",
"nl": "APCU"
},
"order": 5
},
{
"name": "opcache",
"displayName": {
"en": "OPcache",
"nl": "OPcache"
},
"order": 4
},
{
"name": "memory",
"displayName": {
"en": "Memory",
"nl": "Geheugen"
},
"order": 3
},
{
"name": "pools",
"displayName": {
"en": "Active pools",
"nl": "Active pools"
},
"order": 2
}
]
},
"page_cache": {
"displayName": {
"en": "Page cache",
"nl": "Pagina cache"
},
"resource_limits": [
{
"name": "memory",
"displayName": {
"en": "Memory",
"nl": "Geheugen"
},
"order": 1
}
]
},
"object_cache": {
"displayName": {
"en": "Object cache",
"nl": "Object cache"
},
"resource_limits": [
{
"name": "memory",
"displayName": {
"en": "Memory",
"nl": "Geheugen"
},
"order": 1
}
]
},
"optional_component": {
"displayName": {
"en": "Optional component",
"nl": "Optioneel component"
},
"resource_limits": [
{
"name": "memory",
"displayName": {
"en": "Memory",
"nl": "Geheugen"
},
"order": 1
}
]
}
}
HTTP status code 403
Response when a user does not have access to an app
Get available statistics
get /apps/{appId}/getstats/{resourceGroup}/{resourceLimit}
Get available statistics
Calculate price for a new component on an app/project
get /apps/{appId}/priceproposal/componenttype/{type}
Calculate price for a new component on an app/project
URI Parameters
- appId: required(string)
- type: required(string)
Query Parameters
- agreementId: (integer)
agreement id
- systemId: (integer)
system id
- systemgroupId: (integer)
systemgroup id
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
}
],
"agreementPrices": [],
"defaultAgreementPrices": [],
"allowQuantityChange": null,
"quantityCalculation": 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
get /apps/priceproposal/componenttype/{type}
Calculate price for a new component
URI Parameters
- type: required(string)
Query Parameters
- agreementId: (integer)
agreement id
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
}
],
"agreementPrices": [],
"defaultAgreementPrices": [],
"allowQuantityChange": null,
"quantityCalculation": 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)
Query Parameters
- agreementId: (integer)
agreement id
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
}
],
"agreementPrices": [],
"defaultAgreementPrices": [],
"allowQuantityChange": null,
"quantityCalculation": 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)
- limit: (integer - default: 5)
- offset: (integer - default: 0)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"total": 53,
"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
}
],
"defaultAgreementPrices": [
{
"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
}
],
"defaultAgreementPrices": [
{
"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)
Query Parameters
- agreementId: (integer)
agreement id
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
}
],
"agreementPrices": [],
"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
}
],
"agreementPrices": [],
"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
}
],
"agreementPrices": [],
"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)
Query Parameters
- agreementId: (integer)
agreement id
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
}
],
"agreementPrices": [],
"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
}
],
"agreementPrices": [],
"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
}
],
"agreementPrices": [],
"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)
- limit: (integer - default: 5)
- offset: (integer - default: 0)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"total": 5,
"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
}
],
"defaultAgreementPrices": [
{
"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
}
],
"defaultAgreementPrices": [
{
"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
}
],
"defaultAgreementPrices": [
{
"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
Calculate price for a new customPackage
get /apps/priceproposal/custompackagename/{customPackageName}
Calculate price for a new customPackage
URI Parameters
- customPackageName: required(string)
Query Parameters
- agreementId: (integer)
agreement id
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"products": [
{
"id": "custompackage_run",
"description": "Custom package run",
"prices": [
{
"id": 16147,
"period": 1,
"currency": "EUR",
"price": "1200",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"agreementPrices": [],
"defaultAgreementPrices": [
{
"id": 16147,
"period": 1,
"currency": "EUR",
"price": "1200",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"allowQuantityChange": false,
"quantityCalculation": null
},
{
"id": "custompackage_run_database_5",
"description": "Custompackage run database 5GB",
"prices": [
{
"id": 16156,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"agreementPrices": [],
"defaultAgreementPrices": [
{
"id": 16156,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"allowQuantityChange": null,
"quantityCalculation": null
},
{
"id": "custompackage_run_database_10",
"description": "Custompackage run database 10GB",
"prices": [
{
"id": 16157,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"agreementPrices": [],
"defaultAgreementPrices": [
{
"id": 16157,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"allowQuantityChange": null,
"quantityCalculation": null
},
{
"id": "custompackage_run_database_extra_component_5",
"description": "5 extra databases",
"prices": [
{
"id": 16158,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"agreementPrices": [],
"defaultAgreementPrices": [
{
"id": 16158,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"allowQuantityChange": null,
"quantityCalculation": null
},
{
"id": "custompackage_run_varnish_256",
"description": "Varnish 256MB",
"prices": [
{
"id": 16159,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"agreementPrices": [],
"defaultAgreementPrices": [
{
"id": 16159,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"allowQuantityChange": null,
"quantityCalculation": null
},
{
"id": "custompackage_run_memory_512",
"description": "Memory 512MB",
"prices": [
{
"id": 16160,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"agreementPrices": [],
"defaultAgreementPrices": [
{
"id": 16160,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"allowQuantityChange": null,
"quantityCalculation": null
},
{
"id": "custompackage_run_optional_extra_component_5",
"description": "5 extra optional components",
"prices": [
{
"id": 16161,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"agreementPrices": [],
"defaultAgreementPrices": [
{
"id": 16161,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"allowQuantityChange": null,
"quantityCalculation": null
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Calculate price for a new customPackage for a reseller organisation
get /apps/priceproposal/custompackagename/{customPackageName}/custompackagename/{organisationId}
Calculate price for a new customPackage for a reseller organisation
URI Parameters
- customPackageName: required(string)
- organisationId: required(string)
Query Parameters
- agreementId: (integer)
agreement id
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"products": [
{
"id": "custompackage_run",
"description": "Custom package run",
"prices": [
{
"id": 16147,
"period": 1,
"currency": "EUR",
"price": "1200",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"agreementPrices": [],
"defaultAgreementPrices": [
{
"id": 16147,
"period": 1,
"currency": "EUR",
"price": "1200",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"allowQuantityChange": false,
"quantityCalculation": null
},
{
"id": "custompackage_run_database_5",
"description": "Custompackage run database 5GB",
"prices": [
{
"id": 16156,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"agreementPrices": [],
"defaultAgreementPrices": [
{
"id": 16156,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"allowQuantityChange": null,
"quantityCalculation": null
},
{
"id": "custompackage_run_database_10",
"description": "Custompackage run database 10GB",
"prices": [
{
"id": 16157,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"agreementPrices": [],
"defaultAgreementPrices": [
{
"id": 16157,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"allowQuantityChange": null,
"quantityCalculation": null
},
{
"id": "custompackage_run_database_extra_component_5",
"description": "5 extra databases",
"prices": [
{
"id": 16158,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"agreementPrices": [],
"defaultAgreementPrices": [
{
"id": 16158,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"allowQuantityChange": null,
"quantityCalculation": null
},
{
"id": "custompackage_run_varnish_256",
"description": "Varnish 256MB",
"prices": [
{
"id": 16159,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"agreementPrices": [],
"defaultAgreementPrices": [
{
"id": 16159,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"allowQuantityChange": null,
"quantityCalculation": null
},
{
"id": "custompackage_run_memory_512",
"description": "Memory 512MB",
"prices": [
{
"id": 16160,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"agreementPrices": [],
"defaultAgreementPrices": [
{
"id": 16160,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"allowQuantityChange": null,
"quantityCalculation": null
},
{
"id": "custompackage_run_optional_extra_component_5",
"description": "5 extra optional components",
"prices": [
{
"id": 16161,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"agreementPrices": [],
"defaultAgreementPrices": [
{
"id": 16161,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"allowQuantityChange": null,
"quantityCalculation": null
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Returns all prices for customPackages
get /apps/priceproposal/custompackages/organisation/{organisationId}
Returns all prices for customPackages
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": {
"walk": [
{
"id": "custompackage_walk",
"description": "Custom package walk",
"prices": [
{
"id": 16146,
"period": 1,
"currency": "EUR",
"price": "600",
"timing": "pre",
"default": true,
"pricegroupId": "default"
}
],
"defaultAgreementPrices": [
{
"id": 16146,
"period": 1,
"currency": "EUR",
"price": "600",
"timing": "pre",
"default": true,
"pricegroupId": "default"
}
]
},
{
"id": "custompackage_walk_database_extra_component_5",
"description": "5 extra databases",
"prices": [
{
"id": 16164,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"pricegroupId": "default"
}
],
"defaultAgreementPrices": [
{
"id": 16164,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"pricegroupId": "default"
}
]
},
{
"id": "custompackage_walk_optional_extra_component_5",
"description": "5 extra optional components",
"prices": [
{
"id": 16167,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"pricegroupId": "default"
}
],
"defaultAgreementPrices": [
{
"id": 16167,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"pricegroupId": "default"
}
]
},
{
"id": "custompackage_walk_database_10",
"description": "Custompackage walk database 10GB",
"prices": [
{
"id": 16151,
"period": 1,
"currency": "EUR",
"price": "1900",
"timing": "pre",
"default": true,
"pricegroupId": "default"
},
{
"id": 16163,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"pricegroupId": "default"
}
],
"defaultAgreementPrices": [
{
"id": 16151,
"period": 1,
"currency": "EUR",
"price": "1900",
"timing": "pre",
"default": true,
"pricegroupId": "default"
},
{
"id": 16163,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"pricegroupId": "default"
}
]
},
{
"id": "custompackage_walk_database_5",
"description": "Custompackage walk database 5GB",
"prices": [
{
"id": 16150,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"pricegroupId": "default"
},
{
"id": 16162,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"pricegroupId": "default"
}
],
"defaultAgreementPrices": [
{
"id": 16150,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"pricegroupId": "default"
},
{
"id": 16162,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"pricegroupId": "default"
}
]
},
{
"id": "custompackage_walk_memory_512",
"description": "Memory 512MB",
"prices": [
{
"id": 16166,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"pricegroupId": "default"
}
],
"defaultAgreementPrices": [
{
"id": 16166,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"pricegroupId": "default"
}
]
},
{
"id": "custompackage_walk_varnish_256",
"description": "Varnish 256MB",
"prices": [
{
"id": 16165,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"pricegroupId": "default"
}
],
"defaultAgreementPrices": [
{
"id": 16165,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"pricegroupId": "default"
}
]
}
],
"run": [
{
"id": "custompackage_run",
"description": "Custom package run",
"prices": [
{
"id": 16147,
"period": 1,
"currency": "EUR",
"price": "1200",
"timing": "pre",
"default": true,
"pricegroupId": "default"
}
],
"defaultAgreementPrices": [
{
"id": 16147,
"period": 1,
"currency": "EUR",
"price": "1200",
"timing": "pre",
"default": true,
"pricegroupId": "default"
}
]
},
{
"id": "custompackage_run_database_extra_component_5",
"description": "5 extra databases",
"prices": [
{
"id": 16158,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"pricegroupId": "default"
}
],
"defaultAgreementPrices": [
{
"id": 16158,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"pricegroupId": "default"
}
]
},
{
"id": "custompackage_run_optional_extra_component_5",
"description": "5 extra optional components",
"prices": [
{
"id": 16161,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"pricegroupId": "default"
}
],
"defaultAgreementPrices": [
{
"id": 16161,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"pricegroupId": "default"
}
]
},
{
"id": "custompackage_run_database_10",
"description": "Custompackage run database 10GB",
"prices": [
{
"id": 16157,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"pricegroupId": "default"
}
],
"defaultAgreementPrices": [
{
"id": 16157,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"pricegroupId": "default"
}
]
},
{
"id": "custompackage_run_database_5",
"description": "Custompackage run database 5GB",
"prices": [
{
"id": 16156,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"pricegroupId": "default"
}
],
"defaultAgreementPrices": [
{
"id": 16156,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"pricegroupId": "default"
}
]
},
{
"id": "custompackage_run_memory_512",
"description": "Memory 512MB",
"prices": [
{
"id": 16160,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"pricegroupId": "default"
}
],
"defaultAgreementPrices": [
{
"id": 16160,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"pricegroupId": "default"
}
]
},
{
"id": "custompackage_run_varnish_256",
"description": "Varnish 256MB",
"prices": [
{
"id": 16159,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"pricegroupId": "default"
}
],
"defaultAgreementPrices": [
{
"id": 16159,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"pricegroupId": "default"
}
]
}
],
"fly": [
{
"id": "custompackage_fly",
"description": "Custom package fly",
"prices": [
{
"id": 16148,
"period": 1,
"currency": "EUR",
"price": "4800",
"timing": "pre",
"default": true,
"pricegroupId": "default"
}
],
"defaultAgreementPrices": [
{
"id": 16148,
"period": 1,
"currency": "EUR",
"price": "4800",
"timing": "pre",
"default": true,
"pricegroupId": "default"
}
]
}
],
"server": [
{
"id": "custompackage_server",
"description": "Custom package server",
"prices": [
{
"id": 16149,
"period": 1,
"currency": "EUR",
"price": "18500",
"timing": "pre",
"default": true,
"pricegroupId": "default"
}
],
"defaultAgreementPrices": [
{
"id": 16149,
"period": 1,
"currency": "EUR",
"price": "18500",
"timing": "pre",
"default": true,
"pricegroupId": "default"
}
]
}
]
}
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
/app/products
Get available app products
get /app/products
Get available app products
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:
{
"total": 33,
"products": [
{
"id": "appcomponent_asp",
"description": "ASP website",
"allowQuantityChange": false,
"quantityCalculation": null
},
{
"id": "appcomponent_testbook",
"description": "Test component",
"allowQuantityChange": false,
"quantityCalculation": null
},
{
"id": "appcomponent_url",
"description": "Url",
"allowQuantityChange": false,
"quantityCalculation": null
},
{
"id": "sslcertificate_comodo_multi_domain",
"description": "Comodo Domain validation Multi domain",
"allowQuantityChange": false,
"quantityCalculation": null
},
{
"id": "sslcertificate_comodo_single_domain",
"description": "Comodo Domain validation Single domain",
"allowQuantityChange": false,
"quantityCalculation": null
},
{
"id": "sslcertificate_comodo_wildcard_domain",
"description": "Comodo Domain validation Wildcard",
"allowQuantityChange": false,
"quantityCalculation": null
},
{
"id": "custompackage_fly",
"description": "Custom package fly",
"allowQuantityChange": false,
"quantityCalculation": null
},
{
"id": "custompackage_run",
"description": "Custom package run",
"allowQuantityChange": false,
"quantityCalculation": null
}
]
}
/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": {
"solr": {
"servicetype": {
"adminOnly": false,
"allowedActions": {
"clearAppcomponent": [],
"restartAppcomponent": []
},
"apmPossible": false,
"category": "Extensions",
"cookbook": "docker",
"cronPossible": false,
"description": "Solr Docker container",
"disabledOnProduction": false,
"displayName": "Solr",
"invisibleOnProduction": false,
"isContainer": true,
"migrationPossible": false,
"name": "solr",
"parameters": [
{
"category": "credentials",
"defaultValue": "auto",
"description": "Username",
"disableEdit": true,
"displayName": "username",
"group": "general",
"name": "user",
"readonly": true,
"required": false,
"type": "username"
},
{
"category": "credentials",
"defaultValue": "auto",
"description": "password",
"disableEdit": false,
"displayName": "password",
"group": "general",
"name": "pass",
"readonly": false,
"required": false,
"type": "password-sha512"
}
],
"restorePossible": false,
"runlist": "docker",
"selectingSystemPossible": true,
"sshkeyPossible": true,
"statisticsPossible": true,
"updateUrlsOnUpdate": false,
"urlPossible": true
}
},
"mysql": {
"servicetype": {
"adminOnly": false,
"allowedActions": [],
"apmPossible": false,
"category": "Databases",
"cookbook": "mysql",
"cronPossible": false,
"description": "MySQL database",
"disabledOnProduction": false,
"displayName": "MySQL",
"invisibleOnProduction": false,
"migrationPossible": true,
"name": "mysql",
"parameters": [
{
"category": "credentials",
"defaultValue": "auto",
"description": "Username",
"disableEdit": true,
"displayName": "username",
"name": "user",
"readonly": true,
"required": false,
"type": "username"
},
{
"category": "credentials",
"defaultValue": "auto",
"description": "encrypted password",
"disableEdit": false,
"displayName": "password",
"name": "pass",
"readonly": false,
"required": false,
"type": "password-sha1"
},
{
"category": "advanced",
"defaultValue": "localhost",
"description": "Host",
"disableEdit": false,
"displayName": "Host",
"name": "host",
"readonly": false,
"required": false,
"type": "string"
}
],
"restorePossible": true,
"runlist": "mysql",
"selectingSystemPossible": false,
"sshkeyPossible": false,
"statisticsPossible": true,
"urlPossible": false
}
},
"php": {
"servicetype": {
"adminOnly": false,
"allowedActions": {
"installCMS": [
"Drupal",
"Wordpress",
"Magento",
"Shopware"
]
},
"apmPossible": true,
"category": "Web-apps",
"cookbook": "php",
"cronPossible": true,
"description": "PHP application with apache",
"disabledOnProduction": false,
"displayName": "PHP",
"invisibleOnProduction": false,
"migrationPossible": true,
"name": "php",
"parameters": [
{
"category": "credentials",
"defaultValue": "auto",
"description": "Username",
"disableEdit": true,
"displayName": "username",
"name": "user",
"readonly": true,
"required": false,
"type": "username"
},
{
"category": "credentials",
"defaultValue": "auto",
"description": "password",
"disableEdit": false,
"displayName": "password",
"name": "pass",
"readonly": false,
"required": false,
"type": "password-sha512"
}
],
"restorePossible": true,
"runlist": "php",
"runningStatusPossible": true,
"selectingSystemPossible": false,
"sshkeyPossible": true,
"statisticsPossible": true,
"updateUrlsOnUpdate": false,
"urlPossible": true
}
}
}
}
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)
- category: (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"
},
"userId": 4002,
"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,
"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)
- 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
Link an appcomponent with an sshkey
Get an appcomponent's sshkeys
post /appcomponents/{componentId}/sshkeys
Link an appcomponent with an sshkey
URI Parameters
- componentId: required(string)
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 /appcomponents/{componentId}/sshkeys
Get an appcomponent's sshkeys
URI Parameters
- componentId: required(string)
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 an appcomponent
Get a appcomponent's sshkey
delete /appcomponents/{componentId}/sshkeys/{sshkeyId}
Unlink an sshkey from an appcomponent
URI Parameters
- componentId: required(string)
- sshkeyId: required(string)
The unique identifier of a sshkey
get /appcomponents/{componentId}/sshkeys/{sshkeyId}
Get a appcomponent's sshkey
URI Parameters
- componentId: required(string)
- 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 sshkeys which can be added to a appcomponent for a logged in user
get /appcomponents/{componentId}/organisations/{organisationId}/users/{userId}/nonadded-sshkeys
Get all sshkeys which can be added to a appcomponent for a logged in user
Get available statistics
get /appcomponents/{type}/statistics/getavailablestats
Get available statistics
URI Parameters
- type: required(string)
/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": 2,
"content": "test1.level27.be",
"https": false,
"status": "ok",
"sslForce": true,
"handleDns": false,
"authentication": false,
"caching": null,
"appcomponent": {
"id": 2,
"app": {
"id": 2,
"name": "test1"
}
},
"sslCertificate": null,
"statusCategory": "green"
},
{
"id": 3,
"content": "test2.level27.be",
"https": false,
"status": "ok",
"sslForce": true,
"handleDns": false,
"authentication": false,
"caching": null,
"appcomponent": {
"id": 2,
"app": {
"id": 2,
"name": "test1"
}
},
"sslCertificate": {
"id": 22,
"name": "testCertificate1"
},
"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
/ruleresources
Get all accessible ruleResources
get /ruleresources
Get all accessible ruleResources
Query Parameters
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- orderBy: (string)
- orderType: (string)
ASC or DESC
- filter: (string)
- status: (string)
- incident: (string)
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"total": 2,
"ruleResources": [
{
"id": 259,
"type": "memory",
"value": 256,
"upgradeValue": 0,
"operator": "<",
"status": "warning",
"criticalComponents": null,
"incidentComponents": null,
"dtLastNotificationSent": null,
"incident": null,
"rule": {
"id": 222,
"limitGroup": "optional_component",
"description": "Optional component",
"max": 1,
"upgradeMax": 0,
"app": {
"id": 11602,
"name": "My app"
}
},
"statusCategory": "orange"
},
{
"id": 169,
"type": "size",
"value": 5120,
"upgradeValue": 0,
"operator": "<",
"status": "critical",
"criticalComponents": null,
"incidentComponents": [
122
],
"dtLastNotificationSent": null,
"incident": "databasefull",
"rule": {
"id": 145,
"limitGroup": "database",
"description": "database",
"max": 10,
"upgradeMax": 0,
"app": {
"id": 11595,
"name": "My app 2"
}
},
"statusCategory": "red"
}
]
}
HTTP status code 400
Bad request
/systemsandgroups
Get available systems and groups
get /systemsandgroups
Get available systems and groups
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
/sharedsystems
List of shared systems
get /sharedsystems
List of shared systems
Query Parameters
- filter: (string)
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- orderBy: (string)
- orderType: (string)
ASC or DESC
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"total": 3,
"systems": [
{
"id": 85,
"name": "web2",
"organisation": {
"id": 1,
"name": "level27"
}
},
{
"id": 1118,
"name": "web2",
"organisation": {
"id": 1,
"name": "level27"
}
}
]
}
HTTP status code 403
Response when a user does not have a proper role to access a controller
List of shared systems for component type
get /sharedsystems/componenttype/{type}
List of shared systems for component type
URI Parameters
- type: required(string)
The component type
Query Parameters
- filter: (string)
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- orderBy: (string)
- orderType: (string)
ASC or DESC
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"total": 3,
"systems": [
{
"id": 85,
"name": "web2",
"organisation": {
"id": 1,
"name": "level27"
}
},
{
"id": 1118,
"name": "web2",
"organisation": {
"id": 1,
"name": "level27"
}
}
]
}
HTTP status code 403
Response when a user does not have a proper role to access a controller
/nonsharedsystems
List of systems without shared ones
get /nonsharedsystems
List of systems without shared ones
Query Parameters
- filter: (string)
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- orderBy: (string)
- orderType: (string)
ASC or DESC
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"total": 3,
"systems": [
{
"id": 85,
"name": "web2",
"organisation": {
"id": 1,
"name": "level27"
}
},
{
"id": 1118,
"name": "web2",
"organisation": {
"id": 1,
"name": "level27"
}
}
]
}
HTTP status code 403
Response when a user does not have a proper role to access a controller
/sharedsystemgroups
List of shared systemgroups
get /sharedsystemgroups
List of shared systemgroups
Query Parameters
- filter: (string)
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- orderBy: (string)
- orderType: (string)
ASC or DESC
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"total": 68,
"systemgroups": [
{
"id": 3,
"name": "My group",
"systems": [
{
"id": 33,
"name": "test.mdw.test.net",
"organisation": {
"id": 23134,
"name": "My company"
}
}
]
}
]
}
HTTP status code 403
Response when a user does not have a proper role to access a controller
List of shared systemgroups for component type
get /sharedsystemgroups/componenttype/{type}
List of shared systemgroups for component type
URI Parameters
- type: required(string)
The component type
Query Parameters
- filter: (string)
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- orderBy: (string)
- orderType: (string)
ASC or DESC
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"total": 68,
"systemgroups": [
{
"id": 3,
"name": "My group",
"systems": [
{
"id": 33,
"name": "test.mdw.test.net",
"organisation": {
"id": 23134,
"name": "My company"
}
}
]
}
]
}
HTTP status code 403
Response when a user does not have a proper role to access a controller
/nonsharedsystemgroups
List of systemgroups without shared ones
get /nonsharedsystemgroups
List of systemgroups without shared ones
Query Parameters
- filter: (string)
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- orderBy: (string)
- orderType: (string)
ASC or DESC
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"total": 68,
"systemgroups": [
{
"id": 3,
"name": "My group",
"systems": [
{
"id": 33,
"name": "test.mdw.test.net",
"organisation": {
"id": 23134,
"name": "My company"
}
}
]
}
]
}
HTTP status code 403
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)
- period: (integer)
Period
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"
},
"extraFields": null,
"handleMailDns": true,
"enableMailDkim": null,
"mailPrimary": null,
"transferredAway": null,
"dtExpires": null,
"billingStatus": null,
"externalInfo": null,
"teams": [],
"countTeams": 0
}
}
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,
"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 domain 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 domain 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"
},
"extraFields": null,
"handleMailDns": true,
"enableMailDkim": null,
"mailPrimary": null,
"transferredAway": null,
"dtExpires": null,
"billingStatus": null,
"externalInfo": null,
"teams": [],
"countTeams": 0
}
}
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
Sync a domain
patch /domains/{domainId}/sync
Sync a domain
URI Parameters
- domainId: required(string)
The unique identifier of a domain
Body
Media type: application/json
Type: object
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",
"teams": [
{
"id": 14,
"name": "OwnerTeam"
}
]
},
{
"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",
"teams": [
{
"id": 15,
"name": "ResellerTeam"
}
]
},
{
"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",
"teams": []
}
]
}
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"
}
4:
{
"type": "reactivateFromQuarantine",
"force": false
}
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"
},
"extraFields": null,
"handleMailDns": true,
"enableMailDkim": null,
"mailPrimary": null,
"transferredAway": null,
"dtExpires": null,
"billingStatus": null,
"externalInfo": null,
"teams": [],
"countTeams": 0
}
}
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)
- period: (integer)
Period
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)
- period: (integer)
Period
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,
"realCertificateExpiryDate": null,
"type": "A",
"systemHasNetworkIp": {
"id": 1
},
"url": null,
"sslCertificate": null,
"mailgroup": null,
"appcomponentHasDomain": 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,
"realCertificateExpiryDate": null,
"type": "A",
"systemHasNetworkIp": {
"id": 1
},
"url": null,
"sslCertificate": null,
"mailgroup": null,
"appcomponentHasDomain": null
},
{
"id": 4,
"name": "*.ddd957f7cd",
"content": "2a03:6b40:4:224::8b",
"priority": null,
"realCertificateExpiryDate": null,
"type": "AAAA",
"systemHasNetworkIp": {
"id": 2
},
"url": null,
"sslCertificate": null,
"mailgroup": null,
"appcomponentHasDomain": null
},
{
"id": 7,
"name": "test",
"content": "http://test123.test.be",
"priority": null,
"realCertificateExpiryDate": null,
"type": "URLFW1",
"systemHasNetworkIp": null,
"url": null,
"sslCertificate": {
"id": 123,
"name": "test.ddd957f7cd.be",
"dtExpires": 1518104201,
"status": "ok"
},
"mailgroup": null,
"appcomponentHasDomain": null
},
{
"id": 8,
"name": null,
"content": "v=spf1 include:_spf.level27.be ?all",
"priority": null,
"realCertificateExpiryDate": null,
"type": "TXT",
"systemHasNetworkIp": null,
"url": null,
"sslCertificate": null,
"mailgroup": null,
"appcomponentHasDomain": {
"id": 2
}
}
]
}
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,
"realCertificateExpiryDate": null,
"type": "A",
"systemHasNetworkIp": {
"id": 1
},
"url": null,
"sslCertificate": null,
"mailgroup": null,
"appcomponentHasDomain": 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,
"realCertificateExpiryDate": null,
"type": "A",
"systemHasNetworkIp": {
"id": 1
},
"url": null,
"sslCertificate": null,
"mailgroup": null,
"appcomponentHasDomain": 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
Create multi records
post /domains/{domainId}/multirecords
Create multi records
URI Parameters
- domainId: required(string)
The unique identifier of a domain
Body
Media type: application/json
Type: object
Properties- records: required(string)
json (various parameters)
Example:
records:
[
{
"type": "A",
"content": "193.104.8.1",
"name": "test1"
},
{
"type": "URLFW1",
"content": "https://test4.level27.be",
"name": "test2"
}
]
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"records": [
1,
2,
3
]
}
HTTP status code 400
Bad request
Body
Media type: application/json
Type: object
Example:
[
{
"record": {
"id": 1
},
"errors": [
"This record can't be deleted because it is linked to a url, a mailgroup or an appcomponentHasDomain"
]
},
{
"params": {
"type": "A",
"content": "193.104.8",
"name": "bl bla",
"domain": "1"
},
"errors": {
"name": "This value is not a valid hostname",
"content": "Please enter a valid IP address"
}
},
{
"params": {
"type": "CNAME",
"content": "193.104.8.2",
"name": "bl bla",
"domain": "1"
},
"errors": [
"CNAME/NS record with the same name as an existing record is not allowed ## ADD_CODE"
]
}
]
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
Validate multi records
post /domains/{domainId}/multirecords/validate
Validate multi records
URI Parameters
- domainId: required(string)
The unique identifier of a domain
Body
Media type: application/json
Type: object
Properties- records: required(string)
json (various parameters)
Example:
records:
[
{
"type": "A",
"content": "193.104.8.1",
"name": "test1"
},
{
"type": "URLFW1",
"content": "https://test4.level27.be",
"name": "test2"
}
]
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"success": true
}
HTTP status code 400
Bad request
Body
Media type: application/json
Type: object
Example:
[
{
"record": {
"id": 1
},
"errors": [
"This record can't be deleted because it is linked to a url, a mailgroup or an appcomponentHasDomain"
]
},
{
"params": {
"type": "A",
"content": "193.104.8",
"name": "bl bla",
"domain": "1"
},
"errors": {
"name": "This value is not a valid hostname",
"content": "Please enter a valid IP address"
}
},
{
"params": {
"type": "CNAME",
"content": "193.104.8.2",
"name": "bl bla",
"domain": "1"
},
"errors": [
"CNAME/NS record with the same name as an existing record is not allowed ## ADD_CODE"
]
}
]
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
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
Query Parameters
- doNotReturnFreeDetails: (boolean)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Examples:
active:
{
"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,
"totalPrice": 335,
"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
},
"agreementProductPrice": null,
"type": 75
}
],
"extra1": null,
"extra2": null,
"externalInfo": "123",
"agreement": {
"id": 3,
"name": "My agreement"
}
}
}
deactivated:
{
"billableitem": {
"id": 32637,
"status": 70,
"statusDisplay": "deactivated",
"statusCategory": "yellow",
"externalInfo": "be1"
}
}
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
- hideDetails: (boolean)
Hide details (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)
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
Examples:
active:
{
"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,
"totalPrice": 335,
"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
},
"agreementProductPrice": null,
"type": 75
}
],
"extra1": null,
"extra2": null,
"externalInfo": "123",
"agreement": {
"id": 3,
"name": "My agreement"
}
}
}
deactivated:
{
"billableitem": {
"id": 32637,
"status": 70,
"statusDisplay": "deactivated",
"statusCategory": "yellow",
"externalInfo": "be1"
}
}
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
Delete an agreement from billableitem (action only for admin)
delete /domains/{domainId}/billableitem/agreements/{agreementId}
Delete an agreement from billableitem (action only for admin)
URI Parameters
- domainId: required(string)
The unique identifier of a domain
- agreementId: required(string)
Create a new BillableitemDetail (action only for admin)
post /domains/{domainId}/billableitem/details
Create a new BillableitemDetail (action only for admin)
URI Parameters
- domainId: required(string)
The unique identifier of a domain
Body
Media type: application/json
Type: object
Properties- product: required(string)
The unique identifier of a Product
- description: (string)
Description
- price: (integer)
Price in cents (admin only)
- dtExpires: (string)
DateTime - timestamp
- quantity: (integer)
Quantity (admin only)
Example:
{
"product": "product_name",
"description": "some description",
"price": null,
"dtExpires": "1637669422",
"quantity": 1
}
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"billableitemDetail": {
"id": 55392,
"description": "Test 1",
"price": 200,
"product": {
"id": "product_name",
"description": "Product description"
},
"productPrice": {
"id": 9207,
"price": "1000",
"period": 1,
"timing": "pre",
"currency": "EUR"
},
"agreementProductPrice": {
"id": 9208,
"price": "999",
"period": 1,
"timing": "pre",
"currency": "EUR"
},
"quantity": 17,
"dtExpires": "1637669422"
}
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user is not admin
HTTP status code 404
Response when an app is not found
Update an existing billableitem detail
Delete a manually added billableitemDetail (action only for admin)
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)
- period: (integer)
Period
Examples:
1:
{
"description": "May description",
"productPrice": "product_price_id"
}
3:
{
"period": 6
}
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
delete /domains/{domainId}/billableitem/details/{detailId}
Delete a manually added billableitemDetail (action only for admin)
URI Parameters
- domainId: required(string)
The unique identifier of a domain
- detailId: required(string)
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
Delete 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
delete /domains/{domainId}/integritychecks/{integritycheckId}
Delete domain integrity check
URI Parameters
- domainId: required(string)
The unique identifier of a domain
- integritycheckId: required(string)
HTTP status code 204
Request successfully processed
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
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)
Query Parameters
- agreementId: (integer)
agreement id
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
}
],
"agreementPrices": [],
"defaultAgreementPrices": [],
"allowQuantityChange": null,
"quantityCalculation": 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)
Query Parameters
- agreementId: (integer)
agreement id
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
}
],
"agreementPrices": [],
"defaultAgreementPrices": [],
"allowQuantityChange": null,
"quantityCalculation": 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)
- limit: (integer - default: 5)
- offset: (integer - default: 0)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"total": 125,
"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
}
],
"defaultAgreementPrices": [
{
"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
}
],
"defaultAgreementPrices": [
{
"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
}
],
"defaultAgreementPrices": [
{
"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)
- organisationId: (integer - default: 0)
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": 1453,
"period": 12,
"currency": "EUR",
"price": "2400",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"agreementPrices": [],
"defaultAgreementPrices": [
{
"id": 1453,
"period": 12,
"currency": "EUR",
"price": "2400",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"allowQuantityChange": null,
"quantityCalculation": null
}
]
}
registered:
{
"success": true,
"status": "registered",
"action": "none",
"domaintypeId": 364,
"domainNameWithExtension": "google.be",
"requestIncomingTransferCodePossible": true,
"transferAutoLicensee": true,
"transferEppCodeRequired": true,
"products": null
}
/domain/products
Get available domain products
get /domain/products
Get available domain products
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:
{
"total": 745,
"products": [
{
"id": "domain_aaa.pro_registration",
"description": ".aaa.pro domain registration",
"allowQuantityChange": false,
"quantityCalculation": null
},
{
"id": "domain_abc.br_registration",
"description": ".abc.br domain registration",
"allowQuantityChange": false,
"quantityCalculation": null
},
{
"id": "domain_ac_registration",
"description": ".ac domain registration",
"allowQuantityChange": false,
"quantityCalculation": 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": 52433225,
"type": "invoice",
"organisation": {
"id": 1,
"name": "My organisation",
"status": "ok",
"statusCategory": "green",
"paymentperiod": 30
},
"number": "TEST217954",
"date": "2022-08-15",
"status": "ok",
"statusCategory": "green",
"paymentStatus": "unpaid",
"paymentStatusCategory": "red",
"reminderStatus": "ok",
"reminderStatusCategory": "green",
"paymentperiod": 30,
"organisationTaxNumber": "BE02XTY1957",
"taxrate": 21,
"onlinePaymentAttempts": null,
"from": {
"name": "Level27",
"street": "Genutstraat 35",
"zipCity": "3740 Bilzen"
},
"to": {
"name": "Test Organisation",
"street": "Test 123",
"zipCity": "1234"
},
"remarksToPrint": "",
"items": [
{
"id": 187107,
"description": "Domain testdomain123.com",
"price": "2214",
"amount": "100",
"discount": null,
"dtStart": "1660650430",
"dtEnd": "1723722430",
"totalPrice": 2214,
"extra1": null,
"extra2": null,
"billableitemDetailId": 62428,
"account": "701001",
"product": {
"id": "domain_com_registration",
"description": ".com domain registration"
},
"status": "ok",
"statusCategory": "green",
"agreement": {
"id": 68,
"name": "My Agreement",
"normalDiscount": "10%",
"durationDiscount": null,
"cashPaymentDiscount": null,
"agreementHasIndexes": [
{
"id": 1,
"indexationPct": 2.75,
"dtCreated": "2021-11-29",
"dtFrom": "2020-11-29",
"dtUntil": "2021-10-29"
},
{
"id": 2,
"indexationPct": 1.75,
"dtCreated": "2022-11-29",
"dtFrom": "2021-11-29",
"dtUntil": "2022-10-29"
}
]
}
}
],
"source": null,
"parentOrganisation": "level27",
"discountApplied": true,
"priceWithoutDiscounts": 2214,
"normalDiscountPrice": -221,
"priceWithNormalDiscount": 1993,
"durationDiscountPrice": 0,
"priceWithDurationDiscount": 1993,
"priceWithCashPaymentDiscount": 1993,
"priceEOTaxWithCashPaymentDiscount": 419,
"priceWithEOTaxIncludedWithCashPaymentDiscount": 2412,
"priceTaxWithCashPaymentDiscount": 419,
"priceTaxIncludedWithCashPaymentDiscount": 2412,
"EOTax": 419,
"priceWithEOTax": 2412,
"price": 1993,
"tax": 419,
"priceWithTax": 2412,
"priceToPay": 2412,
"contactId": 6733335,
"hash": "HASH",
"entityHash": "HASH",
"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)
- parentOrganisation: (string)
Parent organisation
- invoiceStatus: (string)
- creditnoteStatus: (string)
- orderStatus: (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": 12,
"documents": [
{
"id": 52448,
"type": "invoice",
"organisation": {
"id": 1,
"name": "My organisation",
"status": "ok",
"statusCategory": "green",
"paymentperiod": 30
},
"number": "T210901",
"date": "2022-09-21",
"status": "ok",
"statusCategory": "orange",
"paymentStatus": "unpaid",
"paymentStatusCategory": "red",
"reminderStatus": "ok",
"reminderStatusCategory": "green",
"organisationName": "My organisation",
"taxrate": 0,
"remarksToPrint": null,
"price": 1000,
"tax": 0,
"priceWithTax": 1000,
"parentOrganisation": "level27",
"priceToPay": 1000,
"notes": null
},
{
"id": 52446,
"type": "invoice",
"organisation": {
"id": 2,
"name": "My organisation 2",
"status": "ok",
"statusCategory": "green",
"paymentperiod": 30
},
"number": "T217984",
"date": "2022-09-21",
"status": "ok",
"statusCategory": "green",
"paymentStatus": "partially_paid",
"paymentStatusCategory": "orange",
"reminderStatus": "ok",
"reminderStatusCategory": "green",
"organisationName": "My organisation 2",
"taxrate": 0,
"remarksToPrint": null,
"price": 10000,
"tax": 2100,
"priceWithTax": 12100,
"parentOrganisation": "level27",
"priceToPay": 500,
"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": 52433225,
"type": "invoice",
"organisation": {
"id": 1,
"name": "My organisation",
"status": "ok",
"statusCategory": "green",
"paymentperiod": 30
},
"number": "TEST217954",
"date": "2022-08-15",
"status": "ok",
"statusCategory": "green",
"paymentStatus": "unpaid",
"paymentStatusCategory": "red",
"reminderStatus": "ok",
"reminderStatusCategory": "green",
"paymentperiod": 30,
"organisationTaxNumber": "BE02XTY1957",
"taxrate": 21,
"onlinePaymentAttempts": null,
"from": {
"name": "Level27",
"street": "Genutstraat 35",
"zipCity": "3740 Bilzen"
},
"to": {
"name": "Test Organisation",
"street": "Test 123",
"zipCity": "1234"
},
"remarksToPrint": "",
"items": [
{
"id": 187107,
"description": "Domain testdomain123.com",
"price": "2214",
"amount": "100",
"discount": null,
"dtStart": "1660650430",
"dtEnd": "1723722430",
"totalPrice": 2214,
"extra1": null,
"extra2": null,
"billableitemDetailId": 62428,
"account": "701001",
"product": {
"id": "domain_com_registration",
"description": ".com domain registration"
},
"status": "ok",
"statusCategory": "green",
"agreement": {
"id": 68,
"name": "My Agreement",
"normalDiscount": "10%",
"durationDiscount": null,
"cashPaymentDiscount": null,
"agreementHasIndexes": [
{
"id": 1,
"indexationPct": 2.75,
"dtCreated": "2021-11-29",
"dtFrom": "2020-11-29",
"dtUntil": "2021-10-29"
},
{
"id": 2,
"indexationPct": 1.75,
"dtCreated": "2022-11-29",
"dtFrom": "2021-11-29",
"dtUntil": "2022-10-29"
}
]
}
}
],
"source": null,
"parentOrganisation": "level27",
"discountApplied": true,
"priceWithoutDiscounts": 2214,
"normalDiscountPrice": -221,
"priceWithNormalDiscount": 1993,
"durationDiscountPrice": 0,
"priceWithDurationDiscount": 1993,
"priceWithCashPaymentDiscount": 1993,
"priceEOTaxWithCashPaymentDiscount": 419,
"priceWithEOTaxIncludedWithCashPaymentDiscount": 2412,
"priceTaxWithCashPaymentDiscount": 419,
"priceTaxIncludedWithCashPaymentDiscount": 2412,
"EOTax": 419,
"priceWithEOTax": 2412,
"price": 1993,
"tax": 419,
"priceWithTax": 2412,
"priceToPay": 2412,
"contactId": 6733335,
"hash": "HASH",
"entityHash": "HASH",
"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
Update multiple items (action only for admin)
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
put /documents/{documentId}/items
Update multiple items (action only for admin)
URI Parameters
- documentId: required(string)
The unique identifier of a document
Body
Media type: application/json
Type: object
Properties- order: required(string)
json (various parameters)
Example:
{
"items": [
{
"id": 1,
"description": "Item 1",
"price": 5000,
"amount": 100,
"dtStart": "1514847600",
"dtEnd": 1517353200
},
{
"id": 2,
"description": "Item 2",
"price": 5000,
"amount": 100,
"dtStart": "1514847600",
"dtEnd": 1517353200
}
]
}
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": 52433225,
"type": "invoice",
"organisation": {
"id": 1,
"name": "My organisation",
"status": "ok",
"statusCategory": "green",
"paymentperiod": 30
},
"number": "TEST217954",
"date": "2022-08-15",
"status": "ok",
"statusCategory": "green",
"paymentStatus": "unpaid",
"paymentStatusCategory": "red",
"reminderStatus": "ok",
"reminderStatusCategory": "green",
"paymentperiod": 30,
"organisationTaxNumber": "BE02XTY1957",
"taxrate": 21,
"onlinePaymentAttempts": null,
"from": {
"name": "Level27",
"street": "Genutstraat 35",
"zipCity": "3740 Bilzen"
},
"to": {
"name": "Test Organisation",
"street": "Test 123",
"zipCity": "1234"
},
"remarksToPrint": "",
"items": [
{
"id": 187107,
"description": "Domain testdomain123.com",
"price": "2214",
"amount": "100",
"discount": null,
"dtStart": "1660650430",
"dtEnd": "1723722430",
"totalPrice": 2214,
"extra1": null,
"extra2": null,
"billableitemDetailId": 62428,
"account": "701001",
"product": {
"id": "domain_com_registration",
"description": ".com domain registration"
},
"status": "ok",
"statusCategory": "green",
"agreement": {
"id": 68,
"name": "My Agreement",
"normalDiscount": "10%",
"durationDiscount": null,
"cashPaymentDiscount": null,
"agreementHasIndexes": [
{
"id": 1,
"indexationPct": 2.75,
"dtCreated": "2021-11-29",
"dtFrom": "2020-11-29",
"dtUntil": "2021-10-29"
},
{
"id": 2,
"indexationPct": 1.75,
"dtCreated": "2022-11-29",
"dtFrom": "2021-11-29",
"dtUntil": "2022-10-29"
}
]
}
}
],
"source": null,
"parentOrganisation": "level27",
"discountApplied": true,
"priceWithoutDiscounts": 2214,
"normalDiscountPrice": -221,
"priceWithNormalDiscount": 1993,
"durationDiscountPrice": 0,
"priceWithDurationDiscount": 1993,
"priceWithCashPaymentDiscount": 1993,
"priceEOTaxWithCashPaymentDiscount": 419,
"priceWithEOTaxIncludedWithCashPaymentDiscount": 2412,
"priceTaxWithCashPaymentDiscount": 419,
"priceTaxIncludedWithCashPaymentDiscount": 2412,
"EOTax": 419,
"priceWithEOTax": 2412,
"price": 1993,
"tax": 419,
"priceWithTax": 2412,
"priceToPay": 2412,
"contactId": 6733335,
"hash": "HASH",
"entityHash": "HASH",
"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
Create a new document type order
post /documents/orders
Create a new document type order
Body
Media type: application/json
Type: object
Properties- organisation: required(integer)
The unique identifier of an organisation
- billableitems: required(string)
Billableitems ids (array)
Example:
{
"organisation": 123,
"billableitems": [
23,
42,
22
]
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"document": {
"id": 52433225,
"type": "invoice",
"organisation": {
"id": 1,
"name": "My organisation",
"status": "ok",
"statusCategory": "green",
"paymentperiod": 30
},
"number": "TEST217954",
"date": "2022-08-15",
"status": "ok",
"statusCategory": "green",
"paymentStatus": "unpaid",
"paymentStatusCategory": "red",
"reminderStatus": "ok",
"reminderStatusCategory": "green",
"paymentperiod": 30,
"organisationTaxNumber": "BE02XTY1957",
"taxrate": 21,
"onlinePaymentAttempts": null,
"from": {
"name": "Level27",
"street": "Genutstraat 35",
"zipCity": "3740 Bilzen"
},
"to": {
"name": "Test Organisation",
"street": "Test 123",
"zipCity": "1234"
},
"remarksToPrint": "",
"items": [
{
"id": 187107,
"description": "Domain testdomain123.com",
"price": "2214",
"amount": "100",
"discount": null,
"dtStart": "1660650430",
"dtEnd": "1723722430",
"totalPrice": 2214,
"extra1": null,
"extra2": null,
"billableitemDetailId": 62428,
"account": "701001",
"product": {
"id": "domain_com_registration",
"description": ".com domain registration"
},
"status": "ok",
"statusCategory": "green",
"agreement": {
"id": 68,
"name": "My Agreement",
"normalDiscount": "10%",
"durationDiscount": null,
"cashPaymentDiscount": null,
"agreementHasIndexes": [
{
"id": 1,
"indexationPct": 2.75,
"dtCreated": "2021-11-29",
"dtFrom": "2020-11-29",
"dtUntil": "2021-10-29"
},
{
"id": 2,
"indexationPct": 1.75,
"dtCreated": "2022-11-29",
"dtFrom": "2021-11-29",
"dtUntil": "2022-10-29"
}
]
}
}
],
"source": null,
"parentOrganisation": "level27",
"discountApplied": true,
"priceWithoutDiscounts": 2214,
"normalDiscountPrice": -221,
"priceWithNormalDiscount": 1993,
"durationDiscountPrice": 0,
"priceWithDurationDiscount": 1993,
"priceWithCashPaymentDiscount": 1993,
"priceEOTaxWithCashPaymentDiscount": 419,
"priceWithEOTaxIncludedWithCashPaymentDiscount": 2412,
"priceTaxWithCashPaymentDiscount": 419,
"priceTaxIncludedWithCashPaymentDiscount": 2412,
"EOTax": 419,
"priceWithEOTax": 2412,
"price": 1993,
"tax": 419,
"priceWithTax": 2412,
"priceToPay": 2412,
"contactId": 6733335,
"hash": "HASH",
"entityHash": "HASH",
"notes": null
}
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to billableitems
HTTP status code 404
Response when billableitems are not found
/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
/documentanditems
Create Document and with multiple items
post /documentanditems
Create Document and with multiple items
Body
Media type: application/json
Type: object
Properties- order: required(string)
json (various parameters)
Example:
{
"document": {
"organisation": 4870
},
"items": [
{
"price": 100
},
{
"price": 200
}
]
}
/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": {
"id": 1,
"name": "My organisation",
"status": "ok",
"statusCategory": "green",
"paymentperiod": 30
},
"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": {
"id": 1,
"name": "My organisation",
"status": "ok",
"statusCategory": "green",
"paymentperiod": 30
},
"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,
"manuallyAdded": null,
"billableitem": {
"id": 1827,
"externalInfo": null,
"agreement": null
},
"productPrice": {
"id": 1835,
"period": 1,
"currency": "EUR",
"price": "115",
"timing": "pre",
"default": false,
"status": "ok",
"statusCategory": "green"
},
"agreementProductPrice": null,
"statusCategory": "grey"
},
{
"id": 2082,
"price": null,
"status": "ok",
"dtExpires": "2018-03-02",
"quantity": 1,
"description": "Domain test123.be",
"externalId": null,
"allowToSkipInvoicing": null,
"manuallyAdded": null,
"billableitem": {
"id": 1829,
"externalInfo": null,
"agreement": null
},
"productPrice": {
"id": 1835,
"period": 1,
"currency": "EUR",
"price": "500",
"timing": "pre",
"default": false,
"status": "ok",
"statusCategory": "green"
},
"agreementProductPrice": null,
"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)
/downloadxml
Download a document in xml (a user is logged in)
get /downloadxml/{documentId}
Download a document in xml (a user is logged in)
Download a document in xml (a user is not logged in)
get /downloadxml/{documentId}/{contactId}/{hash}
Download a document in xml (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
Match a payment with multiple documents (action only for admin)
post /payments/{paymentId}/documents/match
Match a payment with multiple documents (action only for admin)
URI Parameters
- paymentId: required(string)
The unique identifier of a payment
Body
Media type: application/json
Type: object
Properties- documents: required(array of any)
Array of document ids
- applyCashPaymentDiscount: (boolean)
Apply cash payment discount (default: false)
Example:
{
"applyCashPaymentDiscount": false,
"documents": [
2,
3
]
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"documentHasPayments": [
{
"id": 25817,
"amount": "14520",
"status": "payment_processed",
"payment": {
"id": 37003,
"amount": "75000000",
"status": "partially_processed",
"statusCategory": "orange"
},
"document": {
"id": 52408,
"paymentStatus": "paid",
"paymentStatusCategory": "green",
"amount": 14520
},
"statusCategory": "green"
},
{
"id": 25818,
"amount": "14485",
"status": "payment_processed",
"payment": {
"id": 37003,
"amount": "75000000",
"status": "partially_processed",
"statusCategory": "orange"
},
"document": {
"id": 52409,
"paymentStatus": "paid",
"paymentStatusCategory": "green",
"amount": 14485
},
"statusCategory": "green"
}
]
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user is not admin
HTTP status code 404
Response when a document or a payment is not found
/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)
- period: (integer)
Period
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)
- organisationId: (integer - default: 0)
- 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",
"quantity": 1,
"source": null,
"organisation": {
"id": 123,
"name": "Test Company"
},
"product": {
"id": "genericitem_sslcertificate_comodo_ev",
"description": "SSL certificate DV single domain"
},
"statusCategory": "green",
"dtExpires": 1518104201,
"billingStatus": "ok",
"externalInfo": null,
"autoRenew": true
},
{
"id": 3,
"description": "test",
"status": "ok",
"quantity": 1,
"source": null,
"organisation": {
"id": 123,
"name": "Test Company"
},
"product": {
"id": "genericitem_newrelic_professional",
"description": "Newrelic professional"
},
"statusCategory": "green"
}
]
}
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)
- period: (integer)
Period
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
Query Parameters
- doNotReturnFreeDetails: (boolean)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Examples:
active:
{
"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,
"totalPrice": 300,
"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
},
"agreementProductPrice": null,
"type": "genericitem_newrelic_professional"
}
],
"extra1": null,
"extra2": null,
"agreement": {
"id": 3,
"name": "My agreement"
}
}
}
deactivated:
{
"billableitem": {
"id": 32637,
"status": 70,
"statusDisplay": "deactivated",
"statusCategory": "yellow",
"externalInfo": "be1"
}
}
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
- hideDetails: (boolean)
Hide details (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)
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
Examples:
active:
{
"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,
"totalPrice": 300,
"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
},
"agreementProductPrice": null,
"type": "genericitem_newrelic_professional"
}
],
"extra1": null,
"extra2": null,
"agreement": {
"id": 3,
"name": "My agreement"
}
}
}
deactivated:
{
"billableitem": {
"id": 32637,
"status": 70,
"statusDisplay": "deactivated",
"statusCategory": "yellow",
"externalInfo": "be1"
}
}
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
Delete an agreement from billableitem (action only for admin)
delete /genericitems/{genericitemId}/billableitem/agreements/{agreementId}
Delete an agreement from billableitem (action only for admin)
URI Parameters
- genericitemId: required(string)
The unique identifier of a genericitem
- agreementId: required(string)
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)
- period: (integer)
Period
Examples:
1:
{
"description": "May description",
"productPrice": "product_price_id"
}
3:
{
"period": 6
}
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)
Query Parameters
- agreementId: (integer)
agreement id
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
}
],
"agreementPrices": [],
"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)
Query Parameters
- agreementId: (integer)
agreement id
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
}
],
"agreementPrices": [],
"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)
- limit: (integer - default: 5)
- offset: (integer - default: 0)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"total": 5,
"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
}
],
"defaultAgreementPrices": [
{
"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
}
],
"defaultAgreementPrices": [
{
"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
}
],
"defaultAgreementPrices": [
{
"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
}
],
"defaultAgreementPrices": [
{
"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
}
],
"defaultAgreementPrices": [
{
"id": 2545,
"period": 1,
"currency": "EUR",
"price": "770",
"timing": "pre",
"default": true
},
{
"id": 2555,
"period": 12,
"currency": "EUR",
"price": "9240",
"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
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:
{
"products": [
{
"id": "genericitem_newrelic_professional",
"description": "Newrelic professional",
"allowQuantityChange": true,
"quantityCalculation": null
},
{
"id": "genericitem_sslcertificate_comodo_domain",
"description": "Ssl certificate comodo domain",
"allowQuantityChange": true,
"quantityCalculation": null
},
{
"id": "genericitem_sslcertificate_comodo_ev",
"description": "Ssl certificate comodo ev",
"allowQuantityChange": true,
"quantityCalculation": null
}
]
}
/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)
- period: (integer)
Period
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,
"enableMailDkim": 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"
},
"domains": [
{
"id": 2,
"name": "test",
"mailPrimary": true,
"domaintype": {
"id": 1,
"extension": "nl"
}
}
],
"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"
},
"domains": [],
"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,
"enableMailDkim": 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",
"teams": [
{
"id": 14,
"name": "OwnerTeam"
}
]
},
{
"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",
"teams": [
{
"id": 15,
"name": "ResellerTeam"
}
]
},
{
"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",
"teams": []
}
]
}
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,
"enableMailDkim": 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
- enableMailDkim: (boolean)
Enable dkim? (default: the same value as handleMailDns)
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,
"enableMailDkim": 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
- enableMailDkim: (boolean)
Enable dkim? (default: the same value as handleMailDns)
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)
- period: (integer)
Period
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)
- period: (integer)
Period
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
Query Parameters
- doNotReturnFreeDetails: (boolean)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Examples:
active:
{
"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,
"totalPrice": 0,
"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
},
"agreementProductPrice": {
"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"
}
}
}
deactivated:
{
"billableitem": {
"id": 32637,
"status": 70,
"statusDisplay": "deactivated",
"statusCategory": "yellow",
"externalInfo": "be1"
}
}
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
- hideDetails: (boolean)
Hide details (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)
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
Examples:
active:
{
"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,
"totalPrice": 0,
"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
},
"agreementProductPrice": {
"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"
}
}
}
deactivated:
{
"billableitem": {
"id": 32637,
"status": 70,
"statusDisplay": "deactivated",
"statusCategory": "yellow",
"externalInfo": "be1"
}
}
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
Delete an agreement from billableitem (action only for admin)
delete /mailgroups/{mailgroupId}/billableitem/agreements/{agreementId}
Delete an agreement from billableitem (action only for admin)
URI Parameters
- mailgroupId: required(string)
The unique identifier of a mailgroup
- agreementId: required(string)
Create a new BillableitemDetail (action only for admin)
post /mailgroups/{mailgroupId}/billableitem/details
Create a new BillableitemDetail (action only for admin)
URI Parameters
- mailgroupId: required(string)
The unique identifier of a mailgroup
Body
Media type: application/json
Type: object
Properties- product: required(string)
The unique identifier of a Product
- description: (string)
Description
- price: (integer)
Price in cents (admin only)
- dtExpires: (string)
DateTime - timestamp
- quantity: (integer)
Quantity (admin only)
Example:
{
"product": "product_name",
"description": "some description",
"price": null,
"dtExpires": "1637669422",
"quantity": 1
}
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"billableitemDetail": {
"id": 55392,
"description": "Test 1",
"price": 200,
"product": {
"id": "product_name",
"description": "Product description"
},
"productPrice": {
"id": 9207,
"price": "1000",
"period": 1,
"timing": "pre",
"currency": "EUR"
},
"agreementProductPrice": {
"id": 9208,
"price": "999",
"period": 1,
"timing": "pre",
"currency": "EUR"
},
"quantity": 17,
"dtExpires": "1637669422"
}
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user is not admin
HTTP status code 404
Response when an app is not found
Update an existing billableitem detail
Delete a manually added billableitemDetail (action only for admin)
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)
- period: (integer)
Period
Examples:
1:
{
"description": "May description",
"productPrice": "product_price_id"
}
3:
{
"period": 6
}
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
delete /mailgroups/{mailgroupId}/billableitem/details/{detailId}
Delete a manually added billableitemDetail (action only for admin)
URI Parameters
- mailgroupId: required(string)
The unique identifier of a mailgroup
- detailId: required(string)
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
Delete 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
delete /mailgroups/{mailgroupId}/integritychecks/{integritycheckId}
Delete mailgroup integrity check
URI Parameters
- mailgroupId: required(string)
The unique identifier of a mailgroup
- integritycheckId: required(string)
HTTP status code 204
Request successfully processed
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
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/{mailgroupId}/priceproposal/{type}
Calculate price for a new mailgroup
URI Parameters
- mailgroupId: required(string)
The unique identifier of a mailgroup
- type: required(string)
Query Parameters
- agreementId: (integer)
agreement id
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
}
],
"agreementPrices": [],
"defaultAgreementPrices": [],
"allowQuantityChange": null,
"quantityCalculation": null
}
]
}
HTTP status code 403
Response when a user does not have a proper role to access a mailgroup
Calculate price for a new mailgroup
get /mailgroups/priceproposal/{type}
Calculate price for a new mailgroup
URI Parameters
- type: required(string)
Query Parameters
- agreementId: (integer)
agreement id
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
}
],
"agreementPrices": [],
"defaultAgreementPrices": [],
"allowQuantityChange": null,
"quantityCalculation": 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)
Query Parameters
- agreementId: (integer)
agreement id
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
}
],
"agreementPrices": [],
"defaultAgreementPrices": [],
"allowQuantityChange": null,
"quantityCalculation": 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)
- limit: (integer - default: 5)
- offset: (integer - default: 0)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"total": 5,
"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
}
],
"defaultAgreementPrices": [
{
"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
/mailgroup/products
Get available mail products
get /mailgroup/products
Get available mail products
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:
{
"total": 2,
"products": [
{
"id": "mailbox_level27",
"description": "Mailbox Level27",
"allowQuantityChange": false,
"quantityCalculation": null
},
{
"id": "mailgroup_sh_mailbox",
"description": "SH mailbox",
"allowQuantityChange": false,
"quantityCalculation": null
}
]
}
/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 (various parameters)
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"
}
],
"handleMailDns": false
}
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"
}
/mailgroupandmailbox
Get mailgroup and mailbox id for address
/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 (various parameters)
Examples:
1:
{
"mailgroup": {
"organisation": 12,
"externalInfo": "some-info"
},
"domains": [
111,
222
],
"mailforwarder": {
"address": "source@mydomain.be",
"destination": "destination@mydomain.be"
},
"handleMailDns": false
}
2:
{
"mailgroup": {
"id": 12
},
"mailforwarder": {
"address": "source@mydomain.be",
"destination": "destination@mydomain.be"
}
}
/locations
Create a new location
List of all available locations
post /locations
Create a new location
Body
Media type: application/json
Type: object
Properties- name: required(string)
Name
- managementType: (one of kmo, store, critical)
Management type
- primaryIp: required(string)
primaryIp
- locationcontact: required(integer)
The unique identifier of a locationcontact
- organisation: required(integer)
The unique identifier of an organisation
- externalInfo: (string)
ExternalInfo (required when billableitemInfo entities for an Organisation exist in db)
- period: (integer)
Period
Example:
{
"name": "My location",
"managementType": "store",
"primaryIp": "{\"ipv4\":\"172.1.12.33\"}",
"locationcontact": 1,
"organisation": 1,
"externalInfo": "xx-222"
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"location": {
"id": 2,
"name": "My location",
"managementType": "kmo",
"maintenance": true,
"dtMaintenanceEnd": "1684926810",
"primaryIp": "172.1.12.33",
"status": "ok",
"locationcontact": {
"id": 2,
"firstName": "test",
"lastName": "test",
"street\"": "test",
"houseNumber": "1",
"zip": "12345",
"city": "Test",
"phone": "+32.123456789",
"email": "test@test.be",
"country": {
"id": "BE",
"name": "Belgium"
}
},
"organisation": {
"id": 1,
"name": "Level27 BV"
},
"statusCategory": "green",
"dtExpires": 1636987460,
"billingStatus": "ok",
"externalInfo": null,
"connectionCount": 2
}
}
HTTP status code 400
Validation of new location failed
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /locations
List of all available locations
Query Parameters
- managementType: (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,
"locations": [
{
"id": 2,
"name": "My location",
"managementType": "kmo",
"maintenance": true,
"primaryIp": "172.1.12.33",
"status": "ok",
"locationcontact": {
"id": 2,
"firstName": "test",
"lastName": "test",
"street\"": "test",
"houseNumber": "1",
"zip": "12345",
"city": "Test",
"country": {
"id": "BE",
"name": "Belgium"
}
},
"organisation": {
"id": 1,
"name": "Level27 BV"
},
"statusCategory": "green",
"connectionCount": 2
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Update a location
Delete a location
Get a location
put /locations/{locationId}
Update a location
URI Parameters
- locationId: required(string)
The unique identifier of a location
Body
Media type: application/json
Type: object
Properties- name: required(string)
Name
- managementType: (one of kmo, store, critical)
Management type
- primaryIp: required(string)
primaryIp
- locationcontact: required(integer)
The unique identifier of a locationcontact
- organisation: required(integer)
The unique identifier of an organisation
Example:
{
"name": "My location",
"managementType": "store",
"primaryIp": "{\"ipv4\":\"172.1.12.33\"}",
"locationcontact": 1,
"organisation": 1
}
HTTP status code 204
Response when update of a location succeeded
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a location
HTTP status code 404
Response when a location is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
delete /locations/{locationId}
Delete a location
URI Parameters
- locationId: required(string)
The unique identifier of a location
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 location
HTTP status code 404
Response when location is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /locations/{locationId}
Get a location
URI Parameters
- locationId: required(string)
The unique identifier of a location
HTTP status code 200
Response when location is found
Body
Media type: application/json
Type: object
Example:
{
"location": {
"id": 2,
"name": "My location",
"managementType": "kmo",
"maintenance": true,
"dtMaintenanceEnd": "1684926810",
"primaryIp": "172.1.12.33",
"status": "ok",
"locationcontact": {
"id": 2,
"firstName": "test",
"lastName": "test",
"street\"": "test",
"houseNumber": "1",
"zip": "12345",
"city": "Test",
"phone": "+32.123456789",
"email": "test@test.be",
"country": {
"id": "BE",
"name": "Belgium"
}
},
"organisation": {
"id": 1,
"name": "Level27 BV"
},
"statusCategory": "green",
"dtExpires": 1636987460,
"billingStatus": "ok",
"externalInfo": null,
"connectionCount": 2
}
}
HTTP status code 403
Response when a user does not have access to a location
HTTP status code 404
Response when location 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 location
post /locations/{locationId}/actions
Execute an action on a location
URI Parameters
- locationId: required(string)
The unique identifier of a location
Body
Media type: application/json
Type: object
Properties- type: required(one of deactivate, activate, startMaintenance, stopMaintenance, enable_monitoring, disable_monitoring)
Action type
- stopMaintenance: (integer)
Number of minutes maintenance should be on (default: 1440)
Examples:
1:
{
"type": "activate"
}
2:
{
"type": "deactivate"
}
3:
{
"type": "startMaintenance",
"stopMaintenance": 20
}
4:
{
"type": "stopMaintenance"
}
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"location": {
"id": 2,
"name": "My location",
"managementType": "kmo",
"maintenance": true,
"dtMaintenanceEnd": "1684926810",
"primaryIp": "172.1.12.33",
"status": "ok",
"locationcontact": {
"id": 2,
"firstName": "test",
"lastName": "test",
"street\"": "test",
"houseNumber": "1",
"zip": "12345",
"city": "Test",
"phone": "+32.123456789",
"email": "test@test.be",
"country": {
"id": "BE",
"name": "Belgium"
}
},
"organisation": {
"id": 1,
"name": "Level27 BV"
},
"statusCategory": "green",
"dtExpires": 1636987460,
"billingStatus": "ok",
"externalInfo": null,
"connectionCount": 2
}
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a location
HTTP status code 404
Response when a location is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Get users for a location
get /locations/{locationId}/users
Get users for a location
URI Parameters
- locationId: required(string)
The unique identifier of a location
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 location
HTTP status code 404
Response when a location is not found
Get organisations with acl access to a location
get /locations/{locationId}/organisations
Get organisations with acl access to a location
URI Parameters
- locationId: required(string)
The unique identifier of a location
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",
"teams": [
{
"id": 14,
"name": "OwnerTeam"
}
]
},
{
"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",
"teams": [
{
"id": 15,
"name": "ResellerTeam"
}
]
},
{
"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",
"teams": []
}
]
}
HTTP status code 403
Response when a user does not have access to a location
HTTP status code 404
Response when a location is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Create a new connection
List of all available connections
post /locations/{locationId}/connections
Create a new connection
URI Parameters
- locationId: required(string)
The unique identifier of a location
Body
Media type: application/json
Type: object
Properties- type: required(string)
Connection type | Get available choices
- speed: required(string)
Connection speed | Get available choices
- 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 '
- configuration: required(string)
Configuration
- provider: required(string)
Connection provider | Get available choices
- providerId: required(string)
- location: required(integer)
The unique identifier of a location
- period: (integer)
Period
Example:
{
"type": "FTTH",
"speed": "500/500",
"username": "my_username",
"password": "MySavePassword123",
"configuration": "xx-222",
"provider": "Telenet",
"providerId": "e261824b1",
"location": 1
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"connection": {
"id": 1,
"type": "sharedfiberL2",
"speed": "150_50",
"username": "my_username",
"configuration": "test",
"provider": "Proximus",
"providerId": "e282y12141n",
"status": "ok",
"location": {
"id": 2,
"name": "My location"
},
"billableitemDetail": {
"id": 55382
},
"statusCategory": "green"
}
}
HTTP status code 400
Validation of new connection failed
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /locations/{locationId}/connections
List of all available connections
URI Parameters
- locationId: required(string)
The unique identifier of a location
Query Parameters
- speed: (string)
- type: (string)
- category: (string)
- provider: (string)
provider
- 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,
"connections": [
{
"id": 1,
"type": "sharedfiberL2",
"speed": "150_50",
"username": "my_username",
"configuration": "test",
"provider": "Proximus",
"providerId": "21612b872b",
"status": "ok",
"location": {
"id": 2,
"name": "My location"
},
"billableitemDetail": {
"id": 55382
},
"statusCategory": "green",
"category": "fixed",
"shortName": "Shared fiber L2",
"displayName": "Shared fiber L2"
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Update a connection
Delete a connection
Get a connection
put /locations/{locationId}/connections/{connectionId}
Update a connection
URI Parameters
- locationId: required(string)
The unique identifier of a location
- connectionId: required(string)
The unique identifier of a connection
Body
Media type: application/json
Type: object
Properties- type: required(string)
Connection type | Get available choices
- speed: required(string)
Connection speed | Get available choices
- 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 '
- configuration: required(string)
Configuration
- provider: required(string)
Connection provider | Get available choices
- providerId: required(string)
- location: required(integer)
The unique identifier of a location
- period: (integer)
Period
Example:
{
"type": "FTTH",
"speed": "500/500",
"username": "my_username",
"password": "MySavePassword123",
"configuration": "xx-222",
"provider": "Telenet",
"providerId": "e261824b1",
"location": 1
}
HTTP status code 204
Response when update of a connection succeeded
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a connection
HTTP status code 404
Response when connection is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
delete /locations/{locationId}/connections/{connectionId}
Delete a connection
URI Parameters
- locationId: required(string)
The unique identifier of a location
- connectionId: required(string)
The unique identifier of a connection
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 connection
HTTP status code 404
Response when connection is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /locations/{locationId}/connections/{connectionId}
Get a connection
URI Parameters
- locationId: required(string)
The unique identifier of a location
- connectionId: required(string)
The unique identifier of a connection
HTTP status code 200
Response when connection is found
Body
Media type: application/json
Type: object
Example:
{
"connection": {
"id": 1,
"type": "sharedfiberL2",
"speed": "150_50",
"username": "my_username",
"configuration": "test",
"provider": "Proximus",
"providerId": "e282y12141n",
"status": "ok",
"location": {
"id": 2,
"name": "My location"
},
"billableitemDetail": {
"id": 55382
},
"statusCategory": "green"
}
}
HTTP status code 403
Response when a user does not have access to a connection
HTTP status code 404
Response when connection is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Return a password for a Connection
get /locations/{locationId}/connections/{connectionId}/password
Return a password for a Connection
URI Parameters
- locationId: required(string)
The unique identifier of a location
- connectionId: required(string)
The unique identifier of a connection
Add access to a location
post /locations/{locationId}/acls
Add access to a location
URI Parameters
- locationId: required(string)
The unique identifier of a location
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 location was successfully added
Body
Media type: application/json
Type: object
Example:
{
"acl": {
"id": 3512372,
"object": "Level27\\ConnectBundle\\Entity\\Location",
"objectId": 2,
"permissions": null,
"extra": null,
"type": "manual",
"organisation": {
"id": 123,
"name": "Test"
}
}
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a location
HTTP status code 404
Response when a location 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 location
delete /locations/{locationId}/acls/{organisationId}
Remove access to a location
URI Parameters
- locationId: required(string)
The unique identifier of a location
- organisationId: required(string)
HTTP status code 204
Response when access to a location was successfully removed
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a location
HTTP status code 404
Response when a location is not found
HTTP status code 500
Response when a user does not have a proper role to access a control
Create a new check
List of all available checks
post /locations/{locationId}/checks
Create a new check
URI Parameters
- locationId: required(string)
The unique identifier of a location
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 available types and parameters: /checktypes. Extra paramaters:
- 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 ping:
- "w": string (default: 100.0,20%) - not required
- "c": string (default: 500.0,60%) - not required
- check type ssh:
- "port": integer (default: 22) - required
Example:
{
"checktype": "ping"
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"check": {
"id": 16389,
"checktype": "ping",
"status": "critical",
"statusInformation": "critical for a location",
"dtLastMonitoringEnabled": 1636750421,
"dtLastStatusChange": 1637051280,
"dtLastCheck": 1637051280,
"dtNextCheck": null,
"checkparameters": [],
"checkparameterDescriptions": [],
"checktypeLocation\"": "remote",
"system": null,
"location": {
"id": 2,
"name": "My location"
},
"monitoringSystem": {
"id": 74,
"name": "mon3.test.eu"
},
"statusCategory": "red",
"alerts": [
{
"id": 9,
"dtStarted": "1637051280",
"dtClosed": null,
"status": "opened",
"statusInformation": "critical for a location",
"microtime": "0.03768100 1637051280",
"statusCategory": "grey",
"events": [
{
"id": 1,
"status": "critical",
"statusInformation": "critical for a location",
"dtReceived": "1637051280",
"isArchived": false,
"statusCategory": "red",
"monitor": {
"id": 74
}
}
]
}
]
}
}
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 /locations/{locationId}/checks
List of all available checks
URI Parameters
- locationId: required(string)
The unique identifier of a location
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:
{
"total": 4,
"checks": [
{
"id": 16389,
"checktype": "ping",
"status": "critical",
"statusInformation": "critical for a location",
"dtLastMonitoringEnabled": 1636750421,
"dtLastStatusChange": 1637051280,
"dtLastCheck": 1637051280,
"dtNextCheck": null,
"checkparameters": [],
"checkparameterDescriptions": [],
"checktypeLocation": "remote",
"system": null,
"location": {
"id": 2,
"name": "My location"
},
"statusCategory": "red"
}
]
}
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 /locations/{locationId}/checks/{checkId}
Update a check
URI Parameters
- locationId: required(string)
The unique identifier of a location
- checkId: required(string)
- locationCheckId: 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 available types and parameters: /checktypes. Extra paramaters:
- 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 ping:
- "w": string (default: 100.0,20%) - not required
- "c": string (default: 500.0,60%) - not required
- check type ssh:
- "port": integer (default: 22) - required
Example:
{
"checktype": "ping"
}
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 /locations/{locationId}/checks/{checkId}
Delete a check
URI Parameters
- locationId: required(string)
The unique identifier of a location
- checkId: required(string)
- locationCheckId: required(string)
The unique identifier of a check
get /locations/{locationId}/checks/{checkId}
Get a check
URI Parameters
- locationId: required(string)
The unique identifier of a location
- checkId: required(string)
- locationCheckId: 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": 16389,
"checktype": "ping",
"status": "critical",
"statusInformation": "critical for a location",
"dtLastMonitoringEnabled": 1636750421,
"dtLastStatusChange": 1637051280,
"dtLastCheck": 1637051280,
"dtNextCheck": null,
"checkparameters": [],
"checkparameterDescriptions": [],
"checktypeLocation\"": "remote",
"system": null,
"location": {
"id": 2,
"name": "My location"
},
"monitoringSystem": {
"id": 74,
"name": "mon3.test.eu"
},
"statusCategory": "red",
"alerts": [
{
"id": 9,
"dtStarted": "1637051280",
"dtClosed": null,
"status": "opened",
"statusInformation": "critical for a location",
"microtime": "0.03768100 1637051280",
"statusCategory": "grey",
"events": [
{
"id": 1,
"status": "critical",
"statusInformation": "critical for a location",
"dtReceived": "1637051280",
"isArchived": false,
"statusCategory": "red",
"monitor": {
"id": 74
}
}
]
}
]
}
}
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 /locations/{locationId}/checks/{checkId}/alerts
Get all checkalerts for the check
URI Parameters
- locationId: required(string)
The unique identifier of a location
- checkId: required(string)
- locationCheckId: 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:
{
"total": 3,
"checkalerts": [
{
"id": 7,
"dtStarted": null,
"dtClosed": null,
"status": "ok",
"statusInformation": null,
"check": {
"id": 16389,
"checktype": "disk",
"location": {
"id": 2,
"name": "My location"
}
},
"checkalertEvents": [],
"statusCategory": "green"
}
]
}
HTTP status code 401
Response when a user does not have a proper role to access a controller
Get all checkalerts for a location
get /locations/{locationId}/checkalerts
Get all checkalerts for a location
URI Parameters
- locationId: required(string)
The unique identifier of a location
Query Parameters
- status: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"total": 3,
"checkalerts": [
{
"id": 7,
"dtStarted": null,
"dtClosed": null,
"status": "ok",
"statusInformation": null,
"check": {
"id": 16389,
"checktype": "disk",
"location": {
"id": 2,
"name": "My location"
}
},
"checkalertEvents": [],
"statusCategory": "green"
}
]
}
Create a billableitem (action only for admin)
post /locations/{locationId}/bill
Create a billableitem (action only for admin)
URI Parameters
- locationId: required(string)
The unique identifier of a location
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 location
HTTP status code 404
Response when a location 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 location
Update an existing billableitem
Delete a billableitem (action only for admin)
get /locations/{locationId}/billableitem
Get price for an existing location
URI Parameters
- locationId: required(string)
The unique identifier of a location
Query Parameters
- doNotReturnFreeDetails: (boolean)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Examples:
active:
{
"billableitem": {
"id": 30094,
"organisation": {
"id": 1,
"name": "Test BV"
},
"status": 10,
"statusDisplay": "ok",
"statusCategory": "green",
"description": "Location Test",
"autoRenew": true,
"dtExpires": 1639659906,
"dtNextRenewal": 1639659906,
"documentsExist": true,
"totalPrice": 17900,
"details": [],
"extra1": null,
"extra2": null,
"externalInfo": null,
"preventDeactivation": false
}
}
deactivated:
{
"billableitem": {
"id": 32637,
"status": 70,
"statusDisplay": "deactivated",
"statusCategory": "yellow",
"externalInfo": "be1"
}
}
patch /locations/{locationId}/billableitem
Update an existing billableitem
URI Parameters
- locationId: required(string)
The unique identifier of a location
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
- hideDetails: (boolean)
Hide details (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 location
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 /locations/{locationId}/billableitem
Delete a billableitem (action only for admin)
URI Parameters
- locationId: required(string)
The unique identifier of a location
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 location
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)
post /locations/{locationId}/billableitem/agreements
Add an agreement to billableitem (action only for admin)
URI Parameters
- locationId: required(string)
The unique identifier of a location
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
Examples:
active:
{
"billableitem": {
"id": 30094,
"organisation": {
"id": 1,
"name": "Test BV"
},
"status": 10,
"statusDisplay": "ok",
"statusCategory": "green",
"description": "Location Test",
"autoRenew": true,
"dtExpires": 1639659906,
"dtNextRenewal": 1639659906,
"documentsExist": true,
"totalPrice": 17900,
"details": [],
"extra1": null,
"extra2": null,
"externalInfo": null,
"preventDeactivation": false
}
}
deactivated:
{
"billableitem": {
"id": 32637,
"status": 70,
"statusDisplay": "deactivated",
"statusCategory": "yellow",
"externalInfo": "be1"
}
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a location
HTTP status code 404
Response when a billableitem is not found
Delete an agreement from billableitem (action only for admin)
delete /locations/{locationId}/billableitem/agreements/{agreementId}
Delete an agreement from billableitem (action only for admin)
URI Parameters
- locationId: required(string)
The unique identifier of a location
- agreementId: required(string)
Create a new BillableitemDetail (action only for admin)
post /locations/{locationId}/billableitem/details
Create a new BillableitemDetail (action only for admin)
URI Parameters
- locationId: required(string)
The unique identifier of a location
Body
Media type: application/json
Type: object
Properties- product: required(string)
The unique identifier of a Product
- description: (string)
Description
- price: (integer)
Price in cents (admin only)
- dtExpires: (string)
DateTime - timestamp
- quantity: (integer)
Quantity (admin only)
Example:
{
"product": "product_name",
"description": "some description",
"price": null,
"dtExpires": "1637669422",
"quantity": 1
}
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"billableitemDetail": {
"id": 55392,
"description": "Test 1",
"price": 200,
"product": {
"id": "product_name",
"description": "Product description"
},
"productPrice": {
"id": 9207,
"price": "1000",
"period": 1,
"timing": "pre",
"currency": "EUR"
},
"agreementProductPrice": {
"id": 9208,
"price": "999",
"period": 1,
"timing": "pre",
"currency": "EUR"
},
"quantity": 17,
"dtExpires": "1637669422"
}
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user is not admin
HTTP status code 404
Response when an location is not found
Update an existing billableitem detail
Delete a manually added billableitemDetail (action only for admin)
patch /locations/{locationId}/billableitem/details/{detailId}
Update an existing billableitem detail
URI Parameters
- locationId: required(string)
The unique identifier of a location
- 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)
- period: (integer)
Period
Examples:
1:
{
"description": "May description",
"productPrice": "product_price_id"
}
3:
{
"period": 6
}
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 location
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
delete /locations/{locationId}/billableitem/details/{detailId}
Delete a manually added billableitemDetail (action only for admin)
URI Parameters
- locationId: required(string)
The unique identifier of a location
- detailId: required(string)
Update externalInfo for an existing billableitem
patch /locations/{locationId}/billableitem/externalinfo
Update externalInfo for an existing billableitem
URI Parameters
- locationId: required(string)
The unique identifier of a location
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 connection
get /locations/priceproposal/connectiontype/{type}
Calculate price for a new connection
URI Parameters
- type: required(string)
Query Parameters
- agreementId: (integer)
agreement id
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"total": 2,
"products": [
{
"id": "connection_ftth_150/100",
"description": "Connection FTTH",
"prices": [
{
"id": 9218,
"period": 1,
"currency": "EUR",
"price": "114400",
"timing": "pre",
"default": true,
"status": 10
}
],
"agreementPrices": [],
"allowQuantityChange": false
},
{
"id": "connection_ftth_500/100",
"description": "Connection FTTH",
"prices": [
{
"id": 9219,
"period": 1,
"currency": "EUR",
"price": "115600",
"timing": "pre",
"default": true,
"status": 10
}
],
"agreementPrices": [],
"allowQuantityChange": false
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Calculate price for a new connection for a reseller organisation
get /locations/priceproposal/connectiontype/{type}/organisation/{organisationId}
Calculate price for a new connection for a reseller organisation
URI Parameters
- type: required(string)
- organisationId: required(string)
Query Parameters
- agreementId: (integer)
agreement id
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"total": 2,
"products": [
{
"id": "connection_ftth_150/100",
"description": "Connection FTTH",
"prices": [
{
"id": 9218,
"period": 1,
"currency": "EUR",
"price": "114400",
"timing": "pre",
"default": true,
"status": 10
}
],
"agreementPrices": [],
"allowQuantityChange": false
},
{
"id": "connection_ftth_500/100",
"description": "Connection FTTH",
"prices": [
{
"id": 9219,
"period": 1,
"currency": "EUR",
"price": "115600",
"timing": "pre",
"default": true,
"status": 10
}
],
"agreementPrices": [],
"allowQuantityChange": false
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Returns prices for all location extensions
get /locations/priceproposal/organisation/{organisationId}
Returns prices for all location extensions
URI Parameters
- organisationId: required(string)
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:
{
"total": 5,
"products": [
{
"id": "connection_4g_4g",
"description": "Connection 4G",
"prices": [
{
"id": 9221,
"period": 1,
"currency": "EUR",
"price": "111000",
"timing": "pre",
"default": true
}
],
"defaultAgreementPrices": [
{
"id": 9221,
"period": 1,
"currency": "EUR",
"price": "111000",
"timing": "pre",
"default": true
}
]
},
{
"id": "connection_df_custom",
"description": "Connection custom",
"prices": [
{
"id": 9222,
"period": 1,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true
}
],
"defaultAgreementPrices": [
{
"id": 9222,
"period": 1,
"currency": "EUR",
"price": "0",
"timing": "pre",
"default": true
}
]
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
All checks of all the locations a user has access to
get /locations/checks
All checks of all the locations a user has access to
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:
{
"total": 4,
"checks": [
{
"id": 16389,
"checktype": "ping",
"status": "critical",
"statusInformation": "critical for a location",
"dtLastMonitoringEnabled": 1636750421,
"dtLastStatusChange": 1637051280,
"dtLastCheck": 1637051280,
"dtNextCheck": null,
"checkparameters": [],
"checkparameterDescriptions": [],
"checktypeLocation": "remote",
"system": null,
"location": {
"id": 2,
"name": "My location"
},
"statusCategory": "red"
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Get all checkalerts for all locations
get /locations/checkalerts
Get all checkalerts for all locations
Query Parameters
- status: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"total": 3,
"checkalerts": [
{
"id": 7,
"dtStarted": null,
"dtClosed": null,
"status": "ok",
"statusInformation": null,
"check": {
"id": 16389,
"checktype": "disk",
"location": {
"id": 2,
"name": "My location"
}
},
"checkalertEvents": [],
"statusCategory": "green"
}
]
}
/location/products
Get available location products
get /location/products
Get available location products
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:
{
"total": 15,
"products": [
{
"id": "connection_4g_4g",
"description": "Connection type: 4G",
"allowQuantityChange": false,
"quantityCalculation": null
},
{
"id": "location_management_kmo",
"description": "Management type: KMO",
"allowQuantityChange": false,
"quantityCalculation": null
}
]
}
/locationcontacts
Create a new locationcontact
List of all available locationcontacts
post /locationcontacts
Create a new locationcontact
Body
Media type: application/json
Type: object
Properties- firstName: required(string)
First name
- lastName: required(string)
Last name
- street: (string)
Street
- houseNumber: (string)
House number
- zip: (string)
Zip
- city: (string)
City
- phone: required(string)
Phone (format: +32.12345678)
- email: required(string)
Email (unique)
- country: (string)
Country id
- organisation: required(integer)
The unique identifier of an organisation
Example:
{
"firstName": "Test",
"lastName": "Test",
"street": "Test-Street",
"houseNumber": 23,
"zip": 123,
"city": "Test City",
"phone": 32.22341234,
"email": "test@test.com",
"country": "BE",
"organisation": 1
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"locationcontact": {
"id": 2,
"firstName": "Test",
"lastName": "Test",
"street": "Test",
"houseNumber": "1",
"zip": "11111",
"city": "Test",
"phone": "+32.123456789",
"email": "test@test.be",
"country": {
"id": "BE",
"name": "Belgium"
},
"organisation": {
"id": 1,
"name": "Test"
},
"fullname": "Test Test"
}
}
HTTP status code 400
Validation of new locationcontact failed
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /locationcontacts
List of all available locationcontacts
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:
{
"total": 3,
"locationcontacts": [
{
"id": 2,
"firstName": "Test",
"lastName": "Test",
"street": "Test",
"houseNumber": "1",
"zip": "11111",
"city": "1",
"phone": "+32.123456789",
"email": "test@test.be",
"country": {
"id": "BE",
"name": "Belgium"
},
"organisation": {
"id": 1,
"name": "Test BV"
},
"fullname": "Test Test"
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Update a locationcontact
Delete a locationcontact
Get a locationcontact
put /locationcontacts/{locationcontactId}
Update a locationcontact
URI Parameters
- locationcontactId: required(string)
The unique identifier of a locationcontact
Body
Media type: application/json
Type: object
Properties- firstName: required(string)
First name
- lastName: required(string)
Last name
- street: (string)
Street
- houseNumber: (string)
House number
- zip: (string)
Zip
- city: (string)
City
- phone: required(string)
Phone (format: +32.12345678)
- email: required(string)
Email (unique)
- country: (string)
Country id
- organisation: required(integer)
The unique identifier of an organisation
Example:
{
"firstName": "Test",
"lastName": "Test",
"street": "Test-Street",
"houseNumber": 23,
"zip": 123,
"city": "Test City",
"phone": 32.22341234,
"email": "test@test.com",
"country": "BE",
"organisation": 1
}
HTTP status code 204
Response when update of a locationcontact succeeded
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a locationcontact
HTTP status code 404
Response when locationcontact is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
delete /locationcontacts/{locationcontactId}
Delete a locationcontact
URI Parameters
- locationcontactId: required(string)
The unique identifier of a locationcontact
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 locationcontact
HTTP status code 404
Response when locationcontact is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /locationcontacts/{locationcontactId}
Get a locationcontact
URI Parameters
- locationcontactId: required(string)
The unique identifier of a locationcontact
HTTP status code 200
Response when locationcontact is found
Body
Media type: application/json
Type: object
Example:
{
"locationcontact": {
"id": 2,
"firstName": "Test",
"lastName": "Test",
"street": "Test",
"houseNumber": "1",
"zip": "11111",
"city": "Test",
"phone": "+32.123456789",
"email": "test@test.be",
"country": {
"id": "BE",
"name": "Belgium"
},
"organisation": {
"id": 1,
"name": "Test"
},
"fullname": "Test Test"
}
}
HTTP status code 403
Response when a user does not have access to a locationcontact
HTTP status code 404
Response when locationcontact 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 locationcontact
post /locationcontacts/{locationcontactId}/acls
Add access to a locationcontact
URI Parameters
- locationcontactId: required(string)
The unique identifier of a locationcontact
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 locationcontact was successfully added
Body
Media type: application/json
Type: object
Example:
{
"acl": {
"id": 3512372,
"object": "Level27\\ConnectBundle\\Entity\\Locationcontact",
"objectId": 2,
"permissions": null,
"extra": null,
"type": "manual",
"organisation": {
"id": 123,
"name": "Test"
}
}
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a locationcontact
HTTP status code 404
Response when a locationcontact 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 locationcontact
delete /locationcontacts/{locationcontactId}/acls/{organisationId}
Remove access to a locationcontact
URI Parameters
- locationcontactId: required(string)
The unique identifier of a locationcontact
- organisationId: required(string)
HTTP status code 204
Response when access to a locationcontact was successfully removed
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a locationcontact
HTTP status code 404
Response when a locationcontact is not found
HTTP status code 500
Response when a user does not have a proper role to access a control
/connections
Return all connections a user has access to
get /connections
Return all connections a user has access to
Query Parameters
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- orderBy: (string)
- orderType: (string)
ASC or DESC
- filter: (string)
- category: (string)
- speed: (string)
- type: (string)
- provider: (string)
provider
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"total": 2,
"connections": [
{
"id": 1,
"type": "sharedfiberL2",
"speed": "150_50",
"username": "my_username",
"configuration": "test",
"provider": "Proximus",
"providerId": "21612b872b",
"status": "ok",
"location": {
"id": 2,
"name": "My location"
},
"billableitemDetail": {
"id": 55382
},
"statusCategory": "green",
"category": "fixed",
"shortName": "Shared fiber L2",
"displayName": "Shared fiber L2"
}
]
}
HTTP status code 400
Bad request
Return a single Connection
get /connections/{connectionId}
Return a single Connection
URI Parameters
- connectionId: required(string)
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"connection": {
"id": 1,
"type": "sharedfiberL2",
"speed": "150_50",
"username": "my_username",
"configuration": "test",
"provider": "Proximus",
"providerId": "e282y12141n",
"status": "ok",
"location": {
"id": 2,
"name": "My location"
},
"billableitemDetail": {
"id": 55382
},
"statusCategory": "green"
}
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a location
HTTP status code 404
Response when a location is not found
Return a available connection types
get /connections/types
Return a available connection types
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"types": [
{
"type": "vdslL3",
"shorName": "VDSL L3",
"displayName": "VDSL L3"
},
{
"type": "wholesalevdsl",
"shorName": "Wholesale VDSL",
"displayName": "Wholesale VDSL"
},
{
"type": "sharedfiberL2",
"shorName": "Shared fiber L2",
"displayName": "Shared fiber L2"
},
{
"type": "sharedfiberL3",
"shorName": "Shared fiber L3",
"displayName": "Shared fiber L3"
},
{
"type": "wholesaleGPON",
"shorName": "Wholesale GPON",
"displayName": "Wholesale GPON"
},
{
"type": "df",
"shorName": "DF",
"displayName": "Dedicated fiber"
}
]
}
HTTP status code 400
Bad request
Return a available speeds for a connection type
get /connections/types/{type}/speeds
Return all available speeds
get /connections/speeds
Return all available speeds
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"speeds": [
{
"speed": "250/250",
"types": [
"FTTB"
]
},
{
"speed": "500/100",
"types": [
"FTTB",
"FTTH"
]
},
{
"speed": "500/500",
"types": [
"FTTB"
]
},
{
"speed": "1000/1000",
"types": [
"FTTB"
]
},
{
"speed": "150/100",
"types": [
"FTTH"
]
},
{
"speed": "100/40",
"types": [
"VDSL"
]
},
{
"speed": "4G",
"types": [
"4G"
]
},
{
"speed": "custom",
"types": [
"DF"
]
}
]
}
HTTP status code 400
Bad request
Return a available connection providers
/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 infra, infra_plus, pro, enterprise, premium)
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
- 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)
- parentsystem: (integer)
The unique identifier of a system
- type: (one of kvmhost, kvmguest, storage, backup)
System type
- autoNetworks: (array of any)
Array of network ips (default: null)
- period: (integer)
Period
Example:
{
"customerFqdn": null,
"name": "Test System",
"remarks": null,
"disk": 8,
"systemimage": 1,
"organisation": 123,
"systemproviderConfiguration": 2,
"zone": 1,
"installSecurityUpdates": null,
"autoTeams": null,
"externalInfo": null,
"parentsystem": 14,
"autoNetworks": [
22,
37
],
"type": "kvmguest"
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"system": {
"id": 1718,
"uid": "6908wer6e71-0dwe4-59c4-sdwe2e3589d",
"hostname": null,
"fqdn": "e01ceed6c.test.eu",
"name": "My system",
"type": "kvmguest",
"status": "ok",
"statusCategory": "green",
"runningStatus": "running",
"runningStatusCategory": "green",
"cpu": 2,
"memory": 1,
"disk": "30.0",
"monitoringEnabled": false,
"managementType": "pro",
"organisation": {
"id": 1,
"name": "level27",
"reseller": null
},
"systemimage": {
"id": 188,
"name": "ubuntu_1804lts_server",
"externalId": "",
"osId": 1,
"osName": "Ubuntu",
"osType": "linux",
"osVersion": "18.04 LTS",
"osVersionId": 28
},
"operatingsystemVersion": {
"id": 28,
"osId": 1,
"osName": "Ubuntu",
"osType": "linux",
"osVersion": "18.04 LTS"
},
"provider": {
"id": 1,
"name": "Level27",
"api": "level27"
},
"systemproviderConfiguration": {
"id": 45,
"externalId": "flexible",
"name": "Level27 Flexible",
"description": "Level27 Flexible configuration"
},
"region": "be",
"zone": {
"id": 20,
"name": "Brussel Interxion 2 (IX2)"
},
"publicNetworking": true,
"limitRiops": 1000,
"limitWiops": 600,
"maintenance": true,
"dtMaintenanceEnd": "1684926727",
"dtLastPong": 1684926727,
"dtExpires": 1626779793,
"billingStatus": "ok",
"externalInfo": null,
"teams": [],
"countTeams": 0,
"statsSummary": {
"cpu": {
"average": {
"unit": "%",
"value": "2.124374999988106",
"statusCategory": "grey"
},
"max": {
"unit": "%",
"value": "2.7483333333705957",
"statusCategory": "grey"
},
"usage": {
"unit": "%",
"value": "1.9833333333954215",
"statusCategory": "grey"
}
},
"memory": {
"average": {
"unit": "%",
"value": "51.484180008510016",
"statusCategory": "grey"
},
"max": {
"unit": "%",
"value": "51.61919324059485",
"statusCategory": "grey"
},
"usage": {
"unit": "%",
"value": "51.47807520947362",
"statusCategory": "grey"
}
},
"diskspace": {
"average": {
"unit": "%",
"value": "39.791999229568354",
"statusCategory": "grey"
},
"max": {
"unit": "%",
"value": "39.794372918596075",
"statusCategory": "grey"
},
"usage": {
"unit": "%",
"value": "39.79254651866645",
"statusCategory": "grey"
}
}
},
"osType": "linux",
"networks": [],
"groups": [],
"cookbooks": [],
"installSecurityUpdates": 7,
"vncPassword": "0e36473242xxxx503",
"parentsystem": {
"id": 1697,
"name": "hypervisor1"
},
"preferredparentsystem": null,
"remarks": null,
"externalId": null
}
}
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: (string)
provider
- parentsystemId: (integer)
parentsystem id
- zoneId: (integer)
zone id
- 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:
{
"total": 896,
"systems": [
{
"id": 1718,
"uid": "69083ac2-6e71-dqd-59c4-d5ew2e3589d",
"hostname": null,
"fqdn": "e01ceed6c.test.eu",
"name": "My system",
"type": "kvmguest",
"status": "ok",
"statusCategory": "green",
"runningStatus": "running",
"runningStatusCategory": "green",
"cpu": 1,
"memory": 1,
"disk": "30.0",
"monitoringEnabled": false,
"managementType": "pro",
"organisation": {
"id": 1,
"name": "level27"
},
"systemimage": {
"id": 188,
"name": "ubuntu_1804lts_server",
"externalId": "",
"osId": 1,
"osName": "Ubuntu",
"osType": "linux",
"osVersion": "18.04 LTS",
"osVersionId": 28
},
"operatingsystemVersion": {
"id": 28,
"osId": 1,
"osName": "Ubuntu",
"osType": "linux",
"osVersion": "18.04 LTS"
},
"providerId": 1,
"provider": "Level27",
"providerApi": "level27",
"systemproviderConfiguration": {
"id": 45,
"externalId": "flexible",
"name": "Level27 Flexible",
"description": "Level27 Flexible configuration"
},
"region": "be",
"zone": {
"id": 20,
"name": "Brussel Interxion 2 (IX2)"
},
"networks": [],
"publicNetworking": true,
"remarks": null
}
]
}
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)
- cpu: (integer)
Cpu (required for Level27 systems)
- memory: (integer)
Memory (required for Level27 systems)
- disk: (integer)
Disk (non-editable)
- managementType: (one of infra, infra_plus, pro, enterprise, premium)
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
- 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
- limitRiops: (integer)
limitRiops
- limitWiops: (integer)
limitWiops
- preferredparentsystem: (string)
Preferredparentsystem id
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": 1718,
"uid": "6908wer6e71-0dwe4-59c4-sdwe2e3589d",
"hostname": null,
"fqdn": "e01ceed6c.test.eu",
"name": "My system",
"type": "kvmguest",
"status": "ok",
"statusCategory": "green",
"runningStatus": "running",
"runningStatusCategory": "green",
"cpu": 2,
"memory": 1,
"disk": "30.0",
"monitoringEnabled": false,
"managementType": "pro",
"organisation": {
"id": 1,
"name": "level27",
"reseller": null
},
"systemimage": {
"id": 188,
"name": "ubuntu_1804lts_server",
"externalId": "",
"osId": 1,
"osName": "Ubuntu",
"osType": "linux",
"osVersion": "18.04 LTS",
"osVersionId": 28
},
"operatingsystemVersion": {
"id": 28,
"osId": 1,
"osName": "Ubuntu",
"osType": "linux",
"osVersion": "18.04 LTS"
},
"provider": {
"id": 1,
"name": "Level27",
"api": "level27"
},
"systemproviderConfiguration": {
"id": 45,
"externalId": "flexible",
"name": "Level27 Flexible",
"description": "Level27 Flexible configuration"
},
"region": "be",
"zone": {
"id": 20,
"name": "Brussel Interxion 2 (IX2)"
},
"publicNetworking": true,
"limitRiops": 1000,
"limitWiops": 600,
"maintenance": true,
"dtMaintenanceEnd": "1684926727",
"dtLastPong": 1684926727,
"dtExpires": 1626779793,
"billingStatus": "ok",
"externalInfo": null,
"teams": [],
"countTeams": 0,
"statsSummary": {
"cpu": {
"average": {
"unit": "%",
"value": "2.124374999988106",
"statusCategory": "grey"
},
"max": {
"unit": "%",
"value": "2.7483333333705957",
"statusCategory": "grey"
},
"usage": {
"unit": "%",
"value": "1.9833333333954215",
"statusCategory": "grey"
}
},
"memory": {
"average": {
"unit": "%",
"value": "51.484180008510016",
"statusCategory": "grey"
},
"max": {
"unit": "%",
"value": "51.61919324059485",
"statusCategory": "grey"
},
"usage": {
"unit": "%",
"value": "51.47807520947362",
"statusCategory": "grey"
}
},
"diskspace": {
"average": {
"unit": "%",
"value": "39.791999229568354",
"statusCategory": "grey"
},
"max": {
"unit": "%",
"value": "39.794372918596075",
"statusCategory": "grey"
},
"usage": {
"unit": "%",
"value": "39.79254651866645",
"statusCategory": "grey"
}
}
},
"osType": "linux",
"networks": [],
"groups": [],
"cookbooks": [],
"installSecurityUpdates": 7,
"vncPassword": "0e36473242xxxx503",
"parentsystem": {
"id": 1697,
"name": "hypervisor1"
},
"preferredparentsystem": null,
"remarks": null,
"externalId": null
}
}
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 available 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:
{
"total": 2,
"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 available 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
Get system's settings
get /systems/{systemId}/settings
Get system's settings
URI Parameters
- systemId: required(string)
The unique identifier of a system
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:
{
"total": 1,
"cookbooks": [
{
"id": 5568,
"cookbooktype": "cp4",
"cookbookparameters": {
"sftp_detailed_logging": {
"value": true,
"default": false
},
"fail2ban:enabled": {
"value": true,
"default": true
},
"pci_compliant": {
"value": true,
"default": true
}
},
"cookbookparameterDescriptions": {
"sftp_detailed_logging": "Detailed SFTP logging",
"fail2ban:enabled": "Fail2ban",
"pci_compliant": "Create a PCI confirmed configuration"
},
"previousCookbookparameters": "{\"sftp_detailed_logging\":null,\"fail2ban:enabled\":null,\"pci_compliant\":null}",
"status": "ok",
"system": {
"id": 1,
"name": "My system"
},
"statusCategory": "green"
}
]
}
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
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 available 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",
"location": null,
"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 available 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",
"location": null,
"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",
"teams": [
{
"id": 14,
"name": "OwnerTeam"
}
]
},
{
"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",
"teams": [
{
"id": 15,
"name": "ResellerTeam"
}
]
},
{
"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",
"teams": []
}
]
}
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, shutdownTimeout, reboot, reset, emergencyPowerOff, enable_monitoring, disable_monitoring, deactivate, activate, update_cookbooks, inventory, updateInterfaces, autoInstall, startMaintenance, stopMaintenance, hypervisorFailed, hypervisorOk)
Action type
- stopMaintenance: (integer)
Number of minutes maintenance should be on (default: 1440)
Examples:
1:
{
"type": "update_cookbooks"
}
2:
{
"type": "start"
}
3:
{
"type": "startMaintenance",
"stopMaintenance": 20
}
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"system": {
"id": 1718,
"uid": "6908wer6e71-0dwe4-59c4-sdwe2e3589d",
"hostname": null,
"fqdn": "e01ceed6c.test.eu",
"name": "My system",
"type": "kvmguest",
"status": "ok",
"statusCategory": "green",
"runningStatus": "running",
"runningStatusCategory": "green",
"cpu": 2,
"memory": 1,
"disk": "30.0",
"monitoringEnabled": false,
"managementType": "pro",
"organisation": {
"id": 1,
"name": "level27",
"reseller": null
},
"systemimage": {
"id": 188,
"name": "ubuntu_1804lts_server",
"externalId": "",
"osId": 1,
"osName": "Ubuntu",
"osType": "linux",
"osVersion": "18.04 LTS",
"osVersionId": 28
},
"operatingsystemVersion": {
"id": 28,
"osId": 1,
"osName": "Ubuntu",
"osType": "linux",
"osVersion": "18.04 LTS"
},
"provider": {
"id": 1,
"name": "Level27",
"api": "level27"
},
"systemproviderConfiguration": {
"id": 45,
"externalId": "flexible",
"name": "Level27 Flexible",
"description": "Level27 Flexible configuration"
},
"region": "be",
"zone": {
"id": 20,
"name": "Brussel Interxion 2 (IX2)"
},
"publicNetworking": true,
"limitRiops": 1000,
"limitWiops": 600,
"maintenance": true,
"dtMaintenanceEnd": "1684926727",
"dtLastPong": 1684926727,
"dtExpires": 1626779793,
"billingStatus": "ok",
"externalInfo": null,
"teams": [],
"countTeams": 0,
"statsSummary": {
"cpu": {
"average": {
"unit": "%",
"value": "2.124374999988106",
"statusCategory": "grey"
},
"max": {
"unit": "%",
"value": "2.7483333333705957",
"statusCategory": "grey"
},
"usage": {
"unit": "%",
"value": "1.9833333333954215",
"statusCategory": "grey"
}
},
"memory": {
"average": {
"unit": "%",
"value": "51.484180008510016",
"statusCategory": "grey"
},
"max": {
"unit": "%",
"value": "51.61919324059485",
"statusCategory": "grey"
},
"usage": {
"unit": "%",
"value": "51.47807520947362",
"statusCategory": "grey"
}
},
"diskspace": {
"average": {
"unit": "%",
"value": "39.791999229568354",
"statusCategory": "grey"
},
"max": {
"unit": "%",
"value": "39.794372918596075",
"statusCategory": "grey"
},
"usage": {
"unit": "%",
"value": "39.79254651866645",
"statusCategory": "grey"
}
}
},
"osType": "linux",
"networks": [],
"groups": [],
"cookbooks": [],
"installSecurityUpdates": 7,
"vncPassword": "0e36473242xxxx503",
"parentsystem": {
"id": 1697,
"name": "hypervisor1"
},
"preferredparentsystem": null,
"remarks": null,
"externalId": 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 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
Check if a system has enough resources
post /systems/{systemId}/allocate
Check if a system has enough resources
URI Parameters
- systemId: required(string)
The unique identifier of a system
Body
Media type: application/json
Type: object
Properties- cpu: (integer)
Cpu (required for Level27 systems)
- memory: (integer)
Memory (required for Level27 systems)
Example:
{
"cpu": 2,
"memory": 5
}
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"success": false,
"cpu": true,
"memory": false,
"disk": 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 404
Response when a system is not found
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
Get system's volumes
get /systems/{systemId}/volumes
Get system's volumes
URI Parameters
- systemId: required(string)
The unique identifier of a system
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:
{
"total": 1,
"volumes": [
{
"id": 7,
"name": "MyVolume",
"status": "unlinked",
"space": 10000,
"uid": "weew-6wwdw5a4-a754-dfwedw-2c871a0ed32f",
"remarks": null,
"autoResize": false,
"deviceName": "vd322",
"organisation": {
"id": 132,
"name": "TetCompany"
},
"system": {
"id": 1718,
"fqdn": "2e2dwd.test.eu",
"name": "My system"
},
"volumegroup": 22,
"statusCategory": "grey"
}
]
}
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
Execute an action for all system's volumes
post /systems/{systemId}/volumes/actions
Execute an action for all system's volumes
URI Parameters
- systemId: required(string)
The unique identifier of a system
Body
Media type: application/json
Type: object
Properties- type: required(one of preSync, fullSync, cancelSync)
Action type
- primarySystem: required(integer)
The unique identifier of a system
- zone: required(integer)
The unique identifier of a zone
Examples:
1:
{
"type": "fullSync"
}
2:
{
"type": "fullSync",
"primarySystem": 1210
}
3:
{
"type": "fullSync",
"zone": 20
}
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"system": {
"id": 1718,
"uid": "6908wer6e71-0dwe4-59c4-sdwe2e3589d",
"hostname": null,
"fqdn": "e01ceed6c.test.eu",
"name": "My system",
"type": "kvmguest",
"status": "ok",
"statusCategory": "green",
"runningStatus": "running",
"runningStatusCategory": "green",
"cpu": 2,
"memory": 1,
"disk": "30.0",
"monitoringEnabled": false,
"managementType": "pro",
"organisation": {
"id": 1,
"name": "level27",
"reseller": null
},
"systemimage": {
"id": 188,
"name": "ubuntu_1804lts_server",
"externalId": "",
"osId": 1,
"osName": "Ubuntu",
"osType": "linux",
"osVersion": "18.04 LTS",
"osVersionId": 28
},
"operatingsystemVersion": {
"id": 28,
"osId": 1,
"osName": "Ubuntu",
"osType": "linux",
"osVersion": "18.04 LTS"
},
"provider": {
"id": 1,
"name": "Level27",
"api": "level27"
},
"systemproviderConfiguration": {
"id": 45,
"externalId": "flexible",
"name": "Level27 Flexible",
"description": "Level27 Flexible configuration"
},
"region": "be",
"zone": {
"id": 20,
"name": "Brussel Interxion 2 (IX2)"
},
"publicNetworking": true,
"limitRiops": 1000,
"limitWiops": 600,
"maintenance": true,
"dtMaintenanceEnd": "1684926727",
"dtLastPong": 1684926727,
"dtExpires": 1626779793,
"billingStatus": "ok",
"externalInfo": null,
"teams": [],
"countTeams": 0,
"statsSummary": {
"cpu": {
"average": {
"unit": "%",
"value": "2.124374999988106",
"statusCategory": "grey"
},
"max": {
"unit": "%",
"value": "2.7483333333705957",
"statusCategory": "grey"
},
"usage": {
"unit": "%",
"value": "1.9833333333954215",
"statusCategory": "grey"
}
},
"memory": {
"average": {
"unit": "%",
"value": "51.484180008510016",
"statusCategory": "grey"
},
"max": {
"unit": "%",
"value": "51.61919324059485",
"statusCategory": "grey"
},
"usage": {
"unit": "%",
"value": "51.47807520947362",
"statusCategory": "grey"
}
},
"diskspace": {
"average": {
"unit": "%",
"value": "39.791999229568354",
"statusCategory": "grey"
},
"max": {
"unit": "%",
"value": "39.794372918596075",
"statusCategory": "grey"
},
"usage": {
"unit": "%",
"value": "39.79254651866645",
"statusCategory": "grey"
}
}
},
"osType": "linux",
"networks": [],
"groups": [],
"cookbooks": [],
"installSecurityUpdates": 7,
"vncPassword": "0e36473242xxxx503",
"parentsystem": {
"id": 1697,
"name": "hypervisor1"
},
"preferredparentsystem": null,
"remarks": null,
"externalId": 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 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
Query Parameters
- doNotReturnFreeDetails: (boolean)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Examples:
active:
{
"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,
"totalPrice": 2988,
"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
},
"agreementProductPrice": {
"id": 156,
"period": 1,
"currency": "EUR",
"price": "1900",
"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
},
"agreementProductPrice": {
"id": 157,
"period": 1,
"currency": "EUR",
"price": "870",
"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
},
"agreementProductPrice": {
"id": 158,
"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
},
"agreementProductPrice": {
"id": 151,
"period": 1,
"currency": "EUR",
"price": "10",
"timing": "pre",
"status": 10
},
"type": 1
}
],
"extra1": null,
"extra2": null,
"externalInfo": "123",
"agreement": {
"id": 3,
"name": "My agreement"
}
}
}
deactivated:
{
"billableitem": {
"id": 32637,
"status": 70,
"statusDisplay": "deactivated",
"statusCategory": "yellow",
"externalInfo": "be1"
}
}
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
- hideDetails: (boolean)
Hide details (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)
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
Examples:
active:
{
"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,
"totalPrice": 2988,
"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
},
"agreementProductPrice": {
"id": 156,
"period": 1,
"currency": "EUR",
"price": "1900",
"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
},
"agreementProductPrice": {
"id": 157,
"period": 1,
"currency": "EUR",
"price": "870",
"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
},
"agreementProductPrice": {
"id": 158,
"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
},
"agreementProductPrice": {
"id": 151,
"period": 1,
"currency": "EUR",
"price": "10",
"timing": "pre",
"status": 10
},
"type": 1
}
],
"extra1": null,
"extra2": null,
"externalInfo": "123",
"agreement": {
"id": 3,
"name": "My agreement"
}
}
}
deactivated:
{
"billableitem": {
"id": 32637,
"status": 70,
"statusDisplay": "deactivated",
"statusCategory": "yellow",
"externalInfo": "be1"
}
}
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
Delete an agreement from billableitem (action only for admin)
delete /systems/{systemId}/billableitem/agreements/{agreementId}
Delete an agreement from billableitem (action only for admin)
URI Parameters
- systemId: required(string)
The unique identifier of a system
- agreementId: required(string)
Create a new BillableitemDetail (action only for admin)
post /systems/{systemId}/billableitem/details
Create a new BillableitemDetail (action only for admin)
URI Parameters
- systemId: required(string)
The unique identifier of a system
Body
Media type: application/json
Type: object
Properties- product: required(string)
The unique identifier of a Product
- description: (string)
Description
- price: (integer)
Price in cents (admin only)
- dtExpires: (string)
DateTime - timestamp
- quantity: (integer)
Quantity (admin only)
Example:
{
"product": "product_name",
"description": "some description",
"price": null,
"dtExpires": "1637669422",
"quantity": 1
}
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"billableitemDetail": {
"id": 55392,
"description": "Test 1",
"price": 200,
"product": {
"id": "product_name",
"description": "Product description"
},
"productPrice": {
"id": 9207,
"price": "1000",
"period": 1,
"timing": "pre",
"currency": "EUR"
},
"agreementProductPrice": {
"id": 9208,
"price": "999",
"period": 1,
"timing": "pre",
"currency": "EUR"
},
"quantity": 17,
"dtExpires": "1637669422"
}
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user is not admin
HTTP status code 404
Response when an app is not found
Update an existing billableitem detail
Delete a manually added billableitemDetail (action only for admin)
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)
- period: (integer)
Period
Examples:
1:
{
"description": "May description",
"productPrice": "product_price_id"
}
3:
{
"period": 6
}
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
delete /systems/{systemId}/billableitem/details/{detailId}
Delete a manually added billableitemDetail (action only for admin)
URI Parameters
- systemId: required(string)
The unique identifier of a system
- detailId: required(string)
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 cdrom on system (admin only)
patch /systems/{systemId}/cdroms
Update cdrom on system (admin only)
URI Parameters
- systemId: required(string)
The unique identifier of a system
Body
Media type: application/json
Type: object
Properties- cdrom: required(string)
Cdrom
Example:
{
"cdrom": "gparted"
}
Mark system as installed (admin only)
patch /systems/{systemId}/markasinstalled
Mark system as installed (admin only)
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
- systemgroupFunction: (string)
Systemgroup function
- systemgroupArea: (string)
Systemgroup area
Example:
{
"systemgroup": 1
}
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": "My system group",
"status": "ok",
"shared": false,
"source": null,
"organisation": {
"id": 1,
"name": "My comapny"
},
"statusCategory": "green",
"sg-systems": [
{
"id": 1,
"name": "My system",
"systemgroupFunction": "Web",
"systemgroupArea": 1
}
]
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Update a link between a system and a systemgroup
Unlink a system from a systemgroup
Get a system's systemgroup
put /systems/{systemId}/groups/{systemgroupId}
Update a link between a system and a systemgroup
URI Parameters
- systemId: required(string)
The unique identifier of a system
- systemgroupId: required(string)
The unique identifier of a group
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 group succeeded
HTTP status code 400
Bad request
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
delete /systems/{systemId}/groups/{systemgroupId}
Unlink a 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:
[object Object]
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
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)
Creates a systemHasNetworkIp with a new ip/ips (admin only)
Get systemHasNetworkIps
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- ipv4: (string)
ipv4
- publicIpv4: (string)
ipv4
- ipv6: (string)
ipv6
- publicIpv6: (string)
ipv6
- hostname: (string)
Valid hostname
- externalId: (string)
External id
Example:
{
"ipv4": "182.0.0.13",
"publicIpv4": null,
"ipv6": null,
"publicIpv6": null,
"hostname": "valid.hostname.be"
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"systemHasNetworkIp": {
"id": 299,
"ipv4": null,
"publicIpv4": "10.0.0.12",
"ipv6": null,
"publicIpv6": null,
"hostname": "test.test123.be",
"status": "ok",
"statusCategory": "green",
"systemHasNetwork": {
"id": 200,
"system": {
"id": 20
},
"network": {
"id": 522
}
}
}
}
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
URI Parameters
- systemId: required(string)
The unique identifier of a system
- systemHasNetworkId: required(string)
Query Parameters
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- orderBy: (string)
- orderType: (string)
ASC or DESC
- filter: (string)
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"total": 1,
"systemHasNetworkIps": [
{
"id": 4099,
"ipv4": "10.0.0.12",
"publicIpv4": null,
"ipv6": null,
"publicIpv6": null,
"hostname": "testhostname.be",
"status": "ok",
"externalId": null,
"systemHasNetwork": {
"id": 3038,
"system": {
"id": 1698,
"name": "MySystem"
}
},
"statusCategory": "green"
}
]
}
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)
Update a systemHasNetworkIp's hostname
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": "10.0.0.12",
"ipv6": null,
"publicIpv6": null,
"hostname": "test.test123.be",
"status": "ok",
"statusCategory": "green",
"systemHasNetwork": {
"id": 200,
"system": {
"id": 20
},
"network": {
"id": 522
}
}
}
}
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
put /systems/{systemId}/networks/{systemHasNetworkId}/ips/{systemHasNetworkIpId}
Update a systemHasNetworkIp's hostname
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- hostname: (string)
Valid hostname
Example:
{
"hostname": "new.hostname.be"
}
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)
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": "pro"
},
"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
Delete 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": "pro"
},
"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
delete /systems/{systemId}/integritychecks/{integritycheckId}
Delete system integrity check
URI Parameters
- systemId: required(string)
The unique identifier of a system
- integritycheckId: required(string)
HTTP status code 204
Request successfully processed
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
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
Available options for appcomponent parameter
get /systems/{systemId}/componenttypes/{componenttype}/parameters/{parameter}/availableoptions
Available options for appcomponent parameter
URI Parameters
- systemId: required(string)
The unique identifier of a system
- componenttype: required(string)
- parameter: required(string)
Query Parameters
- componentId: (integer)
appcomponent id
HTTP status code 200
Response when the request was successfully processed
Body
Media type: application/json
Type: object
Example:
{
"version": [
"9.11",
14,
16,
"lts"
]
}
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
Get available statistics
get /systems/{systemId}/getavailablestats
Get available statistics
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:
{
"cpu": {
"buckets": [
{
"name": "cpu",
"order": 1
},
{
"name": "mode",
"order": 2
},
{
"name": "user",
"order": 3
}
]
},
"disk": {
"buckets": [
{
"name": "Used",
"order": 1
},
{
"name": "Disk iops completed",
"order": 2
},
{
"name": "Disk RW data",
"order": 3
}
]
},
"memory": {
"buckets": [
{
"name": "Memory",
"order": 1
}
]
},
"network": {
"buckets": [
{
"name": "network traffic",
"order": 1
}
]
},
"Apache": {
"buckets": [
{
"name": "cpu",
"order": 1
},
{
"name": "memory",
"order": 2
},
{
"name": "disk",
"order": 3
},
{
"name": "apache workers",
"order": 4
}
]
},
"mysql": {
"buckets": [
{
"name": "Queries per second",
"order": 1
},
{
"name": "innoDB IO",
"order": 2
},
{
"name": "Connections",
"order": 3
},
{
"name": "Slow queries",
"order": 4
}
]
},
"mongodb": {
"buckets": [
{
"name": "Queries per second",
"order": 1
},
{
"name": "memory",
"order": 2
}
]
},
"NGINX": {
"buckets": [
{
"name": "active connections",
"order": 1
},
{
"name": "Queries per second",
"order": 2
},
{
"name": "WAF blocks",
"order": 3
}
]
}
}
Calculate price for a new system
post /systems/priceproposal/systemproviderconfiguration/{systemproviderconfigurationId}
Calculate price for a new system
URI Parameters
- systemproviderconfigurationId: required(string)
Query Parameters
- agreementId: (integer)
agreement id
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_infra",
"description": "Level27 infra system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 16028,
"period": 1,
"currency": "EUR",
"price": "3000",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16029,
"period": 3,
"currency": "EUR",
"price": "8500",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16030,
"period": 6,
"currency": "EUR",
"price": "17000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16031,
"period": 12,
"currency": "EUR",
"price": "35000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16032,
"period": 36,
"currency": "EUR",
"price": "105000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"agreementPrices": [],
"defaultAgreementPrices": [
{
"id": 16028,
"period": 1,
"currency": "EUR",
"price": "3000",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16029,
"period": 3,
"currency": "EUR",
"price": "8500",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16030,
"period": 6,
"currency": "EUR",
"price": "17000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16031,
"period": 12,
"currency": "EUR",
"price": "35000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16032,
"period": 36,
"currency": "EUR",
"price": "105000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"allowQuantityChange": false,
"quantityCalculation": null
},
{
"id": "system_management_infra_plus",
"description": "Level27 infra plus system management",
"prices": [
{
"id": 16038,
"period": 1,
"currency": "EUR",
"price": "4000",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16039,
"period": 3,
"currency": "EUR",
"price": "11500",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16040,
"period": 6,
"currency": "EUR",
"price": "23000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16041,
"period": 12,
"currency": "EUR",
"price": "46000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16042,
"period": 36,
"currency": "EUR",
"price": "140000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"agreementPrices": [],
"defaultAgreementPrices": [
{
"id": 16038,
"period": 1,
"currency": "EUR",
"price": "4000",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16039,
"period": 3,
"currency": "EUR",
"price": "11500",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16040,
"period": 6,
"currency": "EUR",
"price": "23000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16041,
"period": 12,
"currency": "EUR",
"price": "46000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16042,
"period": 36,
"currency": "EUR",
"price": "140000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"allowQuantityChange": false,
"quantityCalculation": null
},
{
"id": "system_management_pro",
"description": "Level27 pro system management",
"prices": [
{
"id": 16048,
"period": 1,
"currency": "EUR",
"price": "8000",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16049,
"period": 3,
"currency": "EUR",
"price": "2300",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16050,
"period": 6,
"currency": "EUR",
"price": "46000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16051,
"period": 12,
"currency": "EUR",
"price": "92000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16052,
"period": 36,
"currency": "EUR",
"price": "1900000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"agreementPrices": [],
"defaultAgreementPrices": [
{
"id": 16048,
"period": 1,
"currency": "EUR",
"price": "8000",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16049,
"period": 3,
"currency": "EUR",
"price": "2300",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16050,
"period": 6,
"currency": "EUR",
"price": "46000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16051,
"period": 12,
"currency": "EUR",
"price": "92000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16052,
"period": 36,
"currency": "EUR",
"price": "1900000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"allowQuantityChange": false,
"quantityCalculation": null
},
{
"id": "system_management_premium",
"description": "Level27 premium system management",
"prices": [
{
"id": 16058,
"period": 1,
"currency": "EUR",
"price": "16000",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16059,
"period": 3,
"currency": "EUR",
"price": "45000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16060,
"period": 6,
"currency": "EUR",
"price": "92000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16061,
"period": 12,
"currency": "EUR",
"price": "1902000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16062,
"period": 36,
"currency": "EUR",
"price": "550000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"agreementPrices": [],
"defaultAgreementPrices": [
{
"id": 16058,
"period": 1,
"currency": "EUR",
"price": "16000",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16059,
"period": 3,
"currency": "EUR",
"price": "45000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16060,
"period": 6,
"currency": "EUR",
"price": "92000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16061,
"period": 12,
"currency": "EUR",
"price": "1902000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16062,
"period": 36,
"currency": "EUR",
"price": "550000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"allowQuantityChange": false,
"quantityCalculation": null
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1731,
"period": 1,
"currency": "EUR",
"price": "25000",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 1732,
"period": 12,
"currency": "EUR",
"price": "285600",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 1733,
"period": 36,
"currency": "EUR",
"price": "856800",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 2296,
"period": 3,
"currency": "EUR",
"price": "75000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 2297,
"period": 6,
"currency": "EUR",
"price": "150000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"agreementPrices": [],
"defaultAgreementPrices": [
{
"id": 1731,
"period": 1,
"currency": "EUR",
"price": "25000",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 1732,
"period": 12,
"currency": "EUR",
"price": "285600",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 1733,
"period": 36,
"currency": "EUR",
"price": "856800",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 2296,
"period": 3,
"currency": "EUR",
"price": "75000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 2297,
"period": 6,
"currency": "EUR",
"price": "150000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"allowQuantityChange": null,
"quantityCalculation": null
},
{
"id": "system_level27_instance_disk_2022",
"description": "Level27 instance Disk",
"prices": [
{
"id": 16002,
"period": 1,
"currency": "EUR",
"price": "15",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16003,
"period": 3,
"currency": "EUR",
"price": "45",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16004,
"period": 6,
"currency": "EUR",
"price": "90",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16005,
"period": 12,
"currency": "EUR",
"price": "180",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16006,
"period": 36,
"currency": "EUR",
"price": "540",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"agreementPrices": [],
"defaultAgreementPrices": [
{
"id": 16002,
"period": 1,
"currency": "EUR",
"price": "15",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16003,
"period": 3,
"currency": "EUR",
"price": "45",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16004,
"period": 6,
"currency": "EUR",
"price": "90",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16005,
"period": 12,
"currency": "EUR",
"price": "180",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16006,
"period": 36,
"currency": "EUR",
"price": "540",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"allowQuantityChange": null,
"quantityCalculation": "disk"
},
{
"id": "system_level27_instance_cpu",
"description": "Level27 instance CPU",
"prices": [
{
"id": 2474,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 2475,
"period": 3,
"currency": "EUR",
"price": "3000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 2476,
"period": 6,
"currency": "EUR",
"price": "6000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 2477,
"period": 12,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 2478,
"period": 36,
"currency": "EUR",
"price": "36000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"agreementPrices": [],
"defaultAgreementPrices": [
{
"id": 2474,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 2475,
"period": 3,
"currency": "EUR",
"price": "3000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 2476,
"period": 6,
"currency": "EUR",
"price": "6000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 2477,
"period": 12,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 2478,
"period": 36,
"currency": "EUR",
"price": "36000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"allowQuantityChange": null,
"quantityCalculation": "cpu"
},
{
"id": "system_level27_instance_memory_2022",
"description": "Level27 instance Memory",
"prices": [
{
"id": 15857,
"period": 1,
"currency": "EUR",
"price": "550",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 15858,
"period": 3,
"currency": "EUR",
"price": "1650",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 15859,
"period": 6,
"currency": "EUR",
"price": "3300",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 15860,
"period": 12,
"currency": "EUR",
"price": "6600",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 15861,
"period": 36,
"currency": "EUR",
"price": "19800",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"agreementPrices": [],
"defaultAgreementPrices": [
{
"id": 15857,
"period": 1,
"currency": "EUR",
"price": "550",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 15858,
"period": 3,
"currency": "EUR",
"price": "1650",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 15859,
"period": 6,
"currency": "EUR",
"price": "3300",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 15860,
"period": 12,
"currency": "EUR",
"price": "6600",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 15861,
"period": 36,
"currency": "EUR",
"price": "19800",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"allowQuantityChange": null,
"quantityCalculation": "memory"
},
{
"id": "system_level27_firewall_and_networking",
"description": "Level27 Networking + standard firewall + WAF",
"prices": [
{
"id": 15853,
"period": 12,
"currency": "EUR",
"price": "15600",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 15854,
"period": 6,
"currency": "EUR",
"price": "7800",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 15855,
"period": 3,
"currency": "EUR",
"price": "3900",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 15856,
"period": 1,
"currency": "EUR",
"price": "1300",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"agreementPrices": [],
"defaultAgreementPrices": [
{
"id": 15853,
"period": 12,
"currency": "EUR",
"price": "15600",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 15854,
"period": 6,
"currency": "EUR",
"price": "7800",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 15855,
"period": 3,
"currency": "EUR",
"price": "3900",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 15856,
"period": 1,
"currency": "EUR",
"price": "1300",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"allowQuantityChange": null,
"quantityCalculation": ""
},
{
"id": "system_backup_plan_4_weeks",
"description": "Backup plan 4 weeks + license",
"prices": [
{
"id": 15840,
"period": 12,
"currency": "EUR",
"price": "468",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 15841,
"period": 6,
"currency": "EUR",
"price": "234",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 15842,
"period": 3,
"currency": "EUR",
"price": "117",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 15843,
"period": 1,
"currency": "EUR",
"price": "39",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"agreementPrices": [],
"defaultAgreementPrices": [
{
"id": 15840,
"period": 12,
"currency": "EUR",
"price": "468",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 15841,
"period": 6,
"currency": "EUR",
"price": "234",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 15842,
"period": 3,
"currency": "EUR",
"price": "117",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 15843,
"period": 1,
"currency": "EUR",
"price": "39",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"allowQuantityChange": true,
"quantityCalculation": "disk"
}
]
}
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)
Query Parameters
- agreementId: (integer)
agreement id
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_infra",
"description": "Level27 infra system management: selfservice + monitoring + backups + security updates",
"prices": [
{
"id": 16028,
"period": 1,
"currency": "EUR",
"price": "3000",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16029,
"period": 3,
"currency": "EUR",
"price": "8500",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16030,
"period": 6,
"currency": "EUR",
"price": "17000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16031,
"period": 12,
"currency": "EUR",
"price": "35000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16032,
"period": 36,
"currency": "EUR",
"price": "105000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"agreementPrices": [],
"defaultAgreementPrices": [
{
"id": 16028,
"period": 1,
"currency": "EUR",
"price": "3000",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16029,
"period": 3,
"currency": "EUR",
"price": "8500",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16030,
"period": 6,
"currency": "EUR",
"price": "17000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16031,
"period": 12,
"currency": "EUR",
"price": "35000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16032,
"period": 36,
"currency": "EUR",
"price": "105000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"allowQuantityChange": false,
"quantityCalculation": null
},
{
"id": "system_management_infra_plus",
"description": "Level27 infra plus system management",
"prices": [
{
"id": 16038,
"period": 1,
"currency": "EUR",
"price": "4000",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16039,
"period": 3,
"currency": "EUR",
"price": "11500",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16040,
"period": 6,
"currency": "EUR",
"price": "23000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16041,
"period": 12,
"currency": "EUR",
"price": "46000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16042,
"period": 36,
"currency": "EUR",
"price": "140000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"agreementPrices": [],
"defaultAgreementPrices": [
{
"id": 16038,
"period": 1,
"currency": "EUR",
"price": "4000",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16039,
"period": 3,
"currency": "EUR",
"price": "11500",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16040,
"period": 6,
"currency": "EUR",
"price": "23000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16041,
"period": 12,
"currency": "EUR",
"price": "46000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16042,
"period": 36,
"currency": "EUR",
"price": "140000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"allowQuantityChange": false,
"quantityCalculation": null
},
{
"id": "system_management_pro",
"description": "Level27 pro system management",
"prices": [
{
"id": 16048,
"period": 1,
"currency": "EUR",
"price": "8000",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16049,
"period": 3,
"currency": "EUR",
"price": "2300",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16050,
"period": 6,
"currency": "EUR",
"price": "46000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16051,
"period": 12,
"currency": "EUR",
"price": "92000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16052,
"period": 36,
"currency": "EUR",
"price": "1900000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"agreementPrices": [],
"defaultAgreementPrices": [
{
"id": 16048,
"period": 1,
"currency": "EUR",
"price": "8000",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16049,
"period": 3,
"currency": "EUR",
"price": "2300",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16050,
"period": 6,
"currency": "EUR",
"price": "46000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16051,
"period": 12,
"currency": "EUR",
"price": "92000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16052,
"period": 36,
"currency": "EUR",
"price": "1900000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"allowQuantityChange": false,
"quantityCalculation": null
},
{
"id": "system_management_premium",
"description": "Level27 premium system management",
"prices": [
{
"id": 16058,
"period": 1,
"currency": "EUR",
"price": "16000",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16059,
"period": 3,
"currency": "EUR",
"price": "45000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16060,
"period": 6,
"currency": "EUR",
"price": "92000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16061,
"period": 12,
"currency": "EUR",
"price": "1902000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16062,
"period": 36,
"currency": "EUR",
"price": "550000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"agreementPrices": [],
"defaultAgreementPrices": [
{
"id": 16058,
"period": 1,
"currency": "EUR",
"price": "16000",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16059,
"period": 3,
"currency": "EUR",
"price": "45000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16060,
"period": 6,
"currency": "EUR",
"price": "92000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16061,
"period": 12,
"currency": "EUR",
"price": "1902000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16062,
"period": 36,
"currency": "EUR",
"price": "550000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"allowQuantityChange": false,
"quantityCalculation": null
},
{
"id": "system_management_enterprise",
"description": "Level27 enterprise system management: professional + advanced reporting",
"prices": [
{
"id": 1731,
"period": 1,
"currency": "EUR",
"price": "25000",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 1732,
"period": 12,
"currency": "EUR",
"price": "285600",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 1733,
"period": 36,
"currency": "EUR",
"price": "856800",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 2296,
"period": 3,
"currency": "EUR",
"price": "75000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 2297,
"period": 6,
"currency": "EUR",
"price": "150000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"agreementPrices": [],
"defaultAgreementPrices": [
{
"id": 1731,
"period": 1,
"currency": "EUR",
"price": "25000",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 1732,
"period": 12,
"currency": "EUR",
"price": "285600",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 1733,
"period": 36,
"currency": "EUR",
"price": "856800",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 2296,
"period": 3,
"currency": "EUR",
"price": "75000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 2297,
"period": 6,
"currency": "EUR",
"price": "150000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"allowQuantityChange": null,
"quantityCalculation": null
},
{
"id": "system_level27_instance_disk_2022",
"description": "Level27 instance Disk",
"prices": [
{
"id": 16002,
"period": 1,
"currency": "EUR",
"price": "15",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16003,
"period": 3,
"currency": "EUR",
"price": "45",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16004,
"period": 6,
"currency": "EUR",
"price": "90",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16005,
"period": 12,
"currency": "EUR",
"price": "180",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16006,
"period": 36,
"currency": "EUR",
"price": "540",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"agreementPrices": [],
"defaultAgreementPrices": [
{
"id": 16002,
"period": 1,
"currency": "EUR",
"price": "15",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16003,
"period": 3,
"currency": "EUR",
"price": "45",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16004,
"period": 6,
"currency": "EUR",
"price": "90",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16005,
"period": 12,
"currency": "EUR",
"price": "180",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 16006,
"period": 36,
"currency": "EUR",
"price": "540",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"allowQuantityChange": null,
"quantityCalculation": "disk"
},
{
"id": "system_level27_instance_cpu",
"description": "Level27 instance CPU",
"prices": [
{
"id": 2474,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 2475,
"period": 3,
"currency": "EUR",
"price": "3000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 2476,
"period": 6,
"currency": "EUR",
"price": "6000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 2477,
"period": 12,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 2478,
"period": 36,
"currency": "EUR",
"price": "36000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"agreementPrices": [],
"defaultAgreementPrices": [
{
"id": 2474,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 2475,
"period": 3,
"currency": "EUR",
"price": "3000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 2476,
"period": 6,
"currency": "EUR",
"price": "6000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 2477,
"period": 12,
"currency": "EUR",
"price": "12000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 2478,
"period": 36,
"currency": "EUR",
"price": "36000",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"allowQuantityChange": null,
"quantityCalculation": "cpu"
},
{
"id": "system_level27_instance_memory_2022",
"description": "Level27 instance Memory",
"prices": [
{
"id": 15857,
"period": 1,
"currency": "EUR",
"price": "550",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 15858,
"period": 3,
"currency": "EUR",
"price": "1650",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 15859,
"period": 6,
"currency": "EUR",
"price": "3300",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 15860,
"period": 12,
"currency": "EUR",
"price": "6600",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 15861,
"period": 36,
"currency": "EUR",
"price": "19800",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"agreementPrices": [],
"defaultAgreementPrices": [
{
"id": 15857,
"period": 1,
"currency": "EUR",
"price": "550",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 15858,
"period": 3,
"currency": "EUR",
"price": "1650",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 15859,
"period": 6,
"currency": "EUR",
"price": "3300",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 15860,
"period": 12,
"currency": "EUR",
"price": "6600",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 15861,
"period": 36,
"currency": "EUR",
"price": "19800",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"allowQuantityChange": null,
"quantityCalculation": "memory"
},
{
"id": "system_level27_firewall_and_networking",
"description": "Level27 Networking + standard firewall + WAF",
"prices": [
{
"id": 15853,
"period": 12,
"currency": "EUR",
"price": "15600",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 15854,
"period": 6,
"currency": "EUR",
"price": "7800",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 15855,
"period": 3,
"currency": "EUR",
"price": "3900",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 15856,
"period": 1,
"currency": "EUR",
"price": "1300",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"agreementPrices": [],
"defaultAgreementPrices": [
{
"id": 15853,
"period": 12,
"currency": "EUR",
"price": "15600",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 15854,
"period": 6,
"currency": "EUR",
"price": "7800",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 15855,
"period": 3,
"currency": "EUR",
"price": "3900",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 15856,
"period": 1,
"currency": "EUR",
"price": "1300",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"allowQuantityChange": null,
"quantityCalculation": ""
},
{
"id": "system_backup_plan_4_weeks",
"description": "Backup plan 4 weeks + license",
"prices": [
{
"id": 15840,
"period": 12,
"currency": "EUR",
"price": "468",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 15841,
"period": 6,
"currency": "EUR",
"price": "234",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 15842,
"period": 3,
"currency": "EUR",
"price": "117",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 15843,
"period": 1,
"currency": "EUR",
"price": "39",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"agreementPrices": [],
"defaultAgreementPrices": [
{
"id": 15840,
"period": 12,
"currency": "EUR",
"price": "468",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 15841,
"period": 6,
"currency": "EUR",
"price": "234",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 15842,
"period": 3,
"currency": "EUR",
"price": "117",
"timing": "pre",
"default": false,
"status": 10,
"pricegroup": {
"id": "default"
}
},
{
"id": 15843,
"period": 1,
"currency": "EUR",
"price": "39",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"allowQuantityChange": true,
"quantityCalculation": "disk"
}
]
}
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:
{
"total": 4,
"providerConfigurations": [
{
"id": 42,
"minCpu": 1,
"maxCpu": 1,
"minMemory": "2.0",
"maxMemory": "2.0",
"minDisk": 30,
"maxDisk": 30,
"status": 10,
"externalId": "small",
"name": "Level27 Small",
"description": "Level27 Small server for basic workloads",
"systemprovider": {
"id": 1,
"name": "Level27"
}
},
{
"id": 43,
"minCpu": 2,
"maxCpu": 2,
"minMemory": "4.0",
"maxMemory": "4.0",
"minDisk": 60,
"maxDisk": 60,
"status": 10,
"externalId": "medium",
"name": "Level27 Medium",
"description": "Level27 Medium server for general workloads",
"systemprovider": {
"id": 1,
"name": "Level27"
}
},
{
"id": 44,
"minCpu": 4,
"maxCpu": 4,
"minMemory": "8.0",
"maxMemory": "8.0",
"minDisk": 90,
"maxDisk": 90,
"status": 10,
"externalId": "large",
"name": "Level27 Large",
"description": "Level27 Large server for specific & high performance applications",
"systemprovider": {
"id": 1,
"name": "Level27"
}
},
{
"id": 45,
"minCpu": 1,
"maxCpu": 32,
"minMemory": "1.0",
"maxMemory": "256.0",
"minDisk": 30,
"maxDisk": 1000,
"status": 10,
"externalId": "flexible",
"name": "Level27 Flexible",
"description": "Level27 Flexible configuration",
"systemprovider": {
"id": 1,
"name": "Level27"
}
}
]
}
Get available regions
get /systems/regions
Get available regions
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"total": 11,
"regions": [
{
"id": 28,
"name": "ams",
"country": {
"id": "NL",
"name": "Netherlands"
},
"systemprovider": {
"id": 4,
"name": "Digital Ocean",
"api": "digitalocean"
}
},
{
"id": 35,
"name": "be",
"country": {
"id": "BE",
"name": "Belgium"
},
"systemprovider": {
"id": 1,
"name": "Level27",
"api": "level27"
}
},
{
"id": 31,
"name": "blr",
"country": {
"id": "BY",
"name": "Belarus"
},
"systemprovider": {
"id": 4,
"name": "Digital Ocean",
"api": "digitalocean"
}
},
{
"id": 2,
"name": "eu-central-1",
"country": {
"id": "DE",
"name": "Germany"
},
"systemprovider": {
"id": 3,
"name": "Amazon EC2",
"api": "ec2"
}
},
{
"id": 1,
"name": "eu-west-1",
"country": {
"id": "IE",
"name": "Ireland"
},
"systemprovider": {
"id": 3,
"name": "Amazon EC2",
"api": "ec2"
}
},
{
"id": 29,
"name": "fra",
"country": {
"id": "DE",
"name": "Germany"
},
"systemprovider": {
"id": 4,
"name": "Digital Ocean",
"api": "digitalocean"
}
},
{
"id": 33,
"name": "lon",
"country": {
"id": "GB",
"name": "United Kingdom"
},
"systemprovider": {
"id": 4,
"name": "Digital Ocean",
"api": "digitalocean"
}
},
{
"id": 26,
"name": "nyc",
"country": {
"id": "US",
"name": "United States"
},
"systemprovider": {
"id": 4,
"name": "Digital Ocean",
"api": "digitalocean"
}
},
{
"id": 27,
"name": "sfo",
"country": {
"id": "US",
"name": "United States"
},
"systemprovider": {
"id": 4,
"name": "Digital Ocean",
"api": "digitalocean"
}
},
{
"id": 30,
"name": "sgp",
"country": {
"id": "SG",
"name": "Singapore"
},
"systemprovider": {
"id": 4,
"name": "Digital Ocean",
"api": "digitalocean"
}
},
{
"id": 32,
"name": "tor",
"country": {
"id": "CA",
"name": "Canada"
},
"systemprovider": {
"id": 4,
"name": "Digital Ocean",
"api": "digitalocean"
}
}
]
}
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"
}
]
}
]
}
Get cdroms
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"
]
}
Get vnc console
get /systems/console
Get vnc console
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"vncConsoleUrl": "http://cp4.test.be/noVNC-1.2.0/vnc.html?password=PASS&host=HOST&port=POST&path=PATH/IP/PORT"
}
HTTP status code 403
Response when a user does not have access to a system
HTTP status code 404
Response when a system or parentSystem is not found
List of (non shared) systems for component type
get /systems/componenttype/{type}
List of (non shared) systems for component type
URI Parameters
- type: required(string)
The component type
Query Parameters
- filter: (string)
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- orderBy: (string)
- orderType: (string)
ASC or DESC
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"total": 3,
"systems": [
{
"id": 85,
"name": "web2",
"organisation": {
"id": 1,
"name": "level27"
}
},
{
"id": 1118,
"name": "web2",
"organisation": {
"id": 1,
"name": "level27"
}
}
]
}
HTTP status code 403
Response when a user does not have a proper role to access a controller
Get summary stats
get /systems/summarystats
Get summary stats
Query Parameters
- filter: (string)
- orderBy: (string)
- orderType: (string)
ASC or DESC
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- status: (string)
- runningStatus: (string)
- osvId: (integer)
operatingsystemVersion id
- osId: (integer)
operatingsystem id
- osType: (string)
operatingsystem type
- provider: (string)
provider
- parentsystemId: (integer)
parentsystem id
- zoneId: (integer)
zone id
- type: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"systems": [
{
"id": 15,
"cpu": {
"unit": "%",
"value": "10.45",
"statusCategory": "grey"
},
"memory": {
"unit": "%",
"value": "40.54",
"statusCategory": "grey"
},
"diskspace": {
"unit": "%",
"value": "99.98",
"statusCategory": "red"
}
}
]
}
HTTP status code 403
Response when a user does not have access
Update a component's runningStatus
patch /systems/{uid}/{password}/apps/{appId}/components/{componentId}/runningstatus
Update a component's runningStatus
URI Parameters
- uid: required(string)
- password: required(string)
- appId: required(string)
- componentId: required(string)
Body
Media type: application/json
Type: object
Properties- runningStatus: (integer)
Running status - one of:
- 0 - stopped
- 6 - running
- 9 - failed
Example:
{
"runningStatus": 6
}
Update a ruleResource's status
post /systems/{uid}/{password}/apps/resourcerulealerts
Update a ruleResource's status
URI Parameters
- uid: required(string)
- password: required(string)
Body
Media type: application/json
Type: object
Properties- status: required(one of resolved, firing)
Status
Example:
{
"status": "firing",
"alerts": [
{
"status": "firing",
"labels": {
"alertgroup": "AHapp.1",
"alertname": "App 1 rule 1 resource 1",
"app": "1",
"appcomponenttype": "mysql",
"component": "1",
"host": "my-host",
"instance": "3r332.myapp.be:9101",
"job": "agency",
"monitoringServer": "prometheus.level27.be",
"monitoringServerId": "1",
"organisationid": "1",
"rule": "1",
"rule_resource": "1",
"severity": "critical",
"systemid": "1",
"systemuid": "system_uid",
"user": "hb44333"
},
"annotations": {
"message": "App 1 component 1 of type mysql is reaching resource limit"
},
"startsAt": "2023-05-11T14:00:07.214183132+02:00",
"endsAt": "0001-01-01T00:00:00Z",
"generatorURL": "http://prometheus.myapp.be:8880/vmalert/alert?group_id=222&alert_id=2222",
"fingerprint": "2414"
}
],
"commonLabels": {
"alertgroup": "AHapp.1",
"alertname": "App 1 rule 1 resource 1",
"app": "1",
"appcomponenttype": "mysql",
"host": "my-host",
"instance": "22222.earthcontrol.be:9101",
"job": "agency",
"monitoringServer": "prometheus.level27.be",
"monitoringServerId": "1",
"organisationid": "1",
"rule": "1",
"rule_resource": "1",
"severity": "critical",
"systemid": "1",
"systemuid": "system_uid"
}
}
/systems/{uid}/{password}/apps/{appId}/components/{componentId}/rules/{ruleId}/resources/{resourceId}/incident patch
Update a ruleResource's incident
patch /systems/{uid}/{password}/apps/{appId}/components/{componentId}/rules/{ruleId}/resources/{resourceId}/incident
Update a ruleResource's incident
URI Parameters
- uid: required(string)
- password: required(string)
- appId: required(string)
- componentId: required(string)
- ruleId: required(string)
- resourceId: required(string)
Body
Media type: application/json
Type: object
Properties- incident: required(string)
Incident
Example:
{
"incident": "databasefull"
}
/systems/{uid}/{password}/apps/{appId}/components/{componentId}/attachments/{attachmentId}/download get
Download an attachment
get /systems/{uid}/{password}/apps/{appId}/components/{componentId}/attachments/{attachmentId}/download
Download an attachment
URI Parameters
- uid: required(string)
- password: required(string)
- appId: required(string)
- componentId: required(string)
- attachmentId: required(string)
Get volumegroups for primary/secondary/backup system
get /systems/{uid}/{password}/{type}/volumegroups
Get volumegroups for primary/secondary/backup system
URI Parameters
- uid: required(string)
- password: required(string)
- type: required(string)
HTTP status code 200
Response when request was successfully processed
Body
Media type: application/json
Type: object
Example:
{
"total": 70,
"volumegroups": [
{
"id": 1,
"name": "myVG",
"status": "ok",
"uid": "UIDa",
"remarks": "",
"space": "1000",
"usageSpace": "404",
"type": "local",
"dailySnapshots": 30,
"monthlySnapshots": 0,
"primarySystem": {
"id": 1964,
"fqdn": "ddd.level27.eu",
"name": "hv1"
},
"secondarySystem": {
"id": 1965,
"fqdn": "ddd2.level27.eu",
"name": "hv2"
},
"backupSystem": {
"id": 2783,
"fqdn": "444.level27.eu",
"name": "bc1"
},
"organisation": {
"id": 1,
"name": "level27"
},
"volumes": [
{
"id": 22,
"name": "myVolume",
"status": "ok",
"space": 20,
"uid": "UID",
"remarks": "",
"autoResize": true,
"deviceName": "vda",
"system": {
"id": 2596,
"fqdn": "2342552.level27.be",
"customerFqdn": "32535252.level27.be",
"name": "test1"
},
"statusCategory": "green"
}
],
"statusCategory": "red"
}
]
}
HTTP status code 400
Bad request
HTTP status code 403
Invalid system credentials
HTTP status code 404
Response when a system is not found
Get systems which are monitored by a monitor system
get /systems/{uid}/{password}/monitored/systems
Get systems which are monitored by a monitor system
URI Parameters
- uid: required(string)
- password: required(string)
Query Parameters
- status: (string)
- runningStatus: (string)
HTTP status code 200
Response when request was successfully processed
Body
Media type: application/json
Type: object
Example:
{
"total": 1118,
"systems": [
{
"id": 15,
"uid": "xxxxx-xxx-xxxx-xxx-xxxxxxx",
"fqdn": "3838923.level27.eu",
"customerFqdn": "3838923.level27.eu",
"name": "3838923.level27.eu",
"checks": [
{
"id": 34,
"checktype": "host",
"checktypeLocation": "remote",
"monitoringSystem": {
"id": 74
}
}
]
},
{
"id": 21,
"uid": "yyy-yyy",
"fqdn": "8728929107.level27.eu",
"customerFqdn": "8728929107.level27.eu",
"name": "8728929107.level27.eu",
"checks": [
{
"id": 39,
"checktype": "host",
"checktypeLocation": "remote",
"monitoringSystem": null
},
{
"id": 556,
"checktype": "http",
"checktypeLocation": "remote",
"monitoringSystem": null
}
]
}
]
}
HTTP status code 400
Bad request
HTTP status code 403
Invalid system credentials
HTTP status code 404
Response when a system is not found
/system/products
Get available system products
get /system/products
Get available system products
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:
{
"total": 40,
"products": [
{
"id": "system_digitalocean_instance_16gb_linux",
"description": "Digital Ocean 16 GB",
"allowQuantityChange": false,
"quantityCalculation": null
},
{
"id": "system_level27_cpu",
"description": "Level27 cpu",
"allowQuantityChange": false,
"quantityCalculation": "cpu"
}
]
}
/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
/operatingsystems
Get available operating systems
get /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"
}
]
}
]
}
/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
Query Parameters
- operatingSystem: (string)
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
Query Parameters
- location: (string)
- operatingSystem: (string)
- name: (string)
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",
"alwaysApply": true,
"operatingSystem": null,
"entityType": "system",
"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",
"alwaysApply": true,
"operatingSystem": null,
"entityType": null,
"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",
"alwaysApply": false,
"operatingSystem": null,
"entityType": null,
"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",
"alwaysApply": false,
"operatingSystem": null,
"entityType": "system",
"parameters": [
{
"name": "port",
"description": "SSH port",
"type": "integer",
"defaultValue": 22,
"mandatory": true
}
]
}
},
"supervisor": {
"servicetype": {
"name": "supervisor",
"displayName": "Supervisor",
"description": "Supervisor",
"location": "local",
"alwaysApply": false,
"operatingSystem": "linux",
"entityType": "system",
"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",
"location": null,
"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",
"location": null,
"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",
"location": null,
"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
}
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": "My system group",
"status": "ok",
"shared": false,
"source": null,
"organisation": {
"id": 1,
"name": "My comapny"
},
"statusCategory": "green",
"sg-systems": [
{
"id": 1,
"name": "My system",
"systemgroupFunction": "Web",
"systemgroupArea": 1
}
]
}
]
}
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:
[object Object]
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
/systemgroups/{systemgroupId}/componenttypes/{componenttype}/parameters/{parameter}/availableoptions get
Available options for appcomponent parameter
get /systemgroups/{systemgroupId}/componenttypes/{componenttype}/parameters/{parameter}/availableoptions
Available options for appcomponent parameter
URI Parameters
- systemgroupId: required(string)
The unique identifier of a systemgroup
- componenttype: required(string)
- parameter: required(string)
Query Parameters
- componentId: (integer)
appcomponent id
HTTP status code 200
Response when the request was successfully processed
Body
Media type: application/json
Type: object
Example:
{
"version": [
"9.11",
14,
16,
"lts"
]
}
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
List of (non shared) systemgroups for component type
get /systemgroups/componenttype/{type}
List of (non shared) systemgroups for component type
URI Parameters
- type: required(string)
The component type
Query Parameters
- filter: (string)
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- orderBy: (string)
- orderType: (string)
ASC or DESC
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"total": 68,
"systemgroups": [
{
"id": 3,
"name": "My group",
"systems": [
{
"id": 33,
"name": "test.mdw.test.net",
"organisation": {
"id": 23134,
"name": "My company"
}
}
]
}
]
}
HTTP status code 403
Response when a user does not have a proper role to access a controller
Get available systemgroups for custompackages
get /systemgroups/allocatable
Get available systemgroups for custompackages
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"total": 6,
"systemgroups": [
{
"id": 6,
"name": "MySystemgroup",
"limits": {
"database": [
{
"type": "size",
"unit": "MB",
"max": 512000,
"usage": 66560
}
],
"application": [
{
"type": "application",
"unit": "MB",
"max": 102400,
"usage": 3072
},
{
"type": "opcache_apcu",
"unit": "MB",
"max": 102400,
"usage": 1536
},
{
"type": "total_memory",
"unit": "MB",
"max": 102400,
"usage": 3072
}
],
"page_cache": [
{
"type": "memory",
"unit": "MB",
"max": 102400,
"usage": 3072
}
],
"object_cache": [
{
"type": "memory",
"unit": "MB",
"max": 102400,
"usage": 1536
}
],
"optional_component": [
{
"type": "memory",
"unit": "MB",
"max": 102400,
"usage": 1536
}
]
},
"installableComponent": {
"nodejs_extension": [
{
"id": 33,
"name": "system1.test.be",
"selects": []
}
],
"php": [
{
"id": 33,
"name": "system1.test.be",
"selects": {
"version": [
"7.1"
]
}
}
],
"phplegacy": [
{
"id": 33,
"name": "system1.test.be",
"selects": []
}
],
"sftp": [
{
"id": 15,
"name": "system1.test.be",
"selects": []
},
{
"id": 16,
"name": "system2.test.be",
"selects": []
}
],
"testbook": [
{
"id": 15,
"name": "system2.test.be",
"selects": []
}
],
"url": [
{
"id": 33,
"name": "system1.test.be",
"selects": []
}
],
"worker": [
{
"id": 33,
"name": "system1.test.be",
"selects": []
}
]
}
}
]
}
HTTP status code 403
Response when a user does not have access
Get available systemgroups for custompackage name
get /systemgroups/custompackagenames/{custompackageName}/locate
Get available systemgroups for custompackage name
URI Parameters
- custompackageName: required(string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"total": 6,
"systemgroups": [
{
"id": 6,
"name": "MySystemgroup",
"limits": {
"database": [
{
"type": "size",
"unit": "MB",
"max": 512000,
"usage": 66560
}
],
"application": [
{
"type": "application",
"unit": "MB",
"max": 102400,
"usage": 3072
},
{
"type": "opcache_apcu",
"unit": "MB",
"max": 102400,
"usage": 1536
},
{
"type": "total_memory",
"unit": "MB",
"max": 102400,
"usage": 3072
}
],
"page_cache": [
{
"type": "memory",
"unit": "MB",
"max": 102400,
"usage": 3072
}
],
"object_cache": [
{
"type": "memory",
"unit": "MB",
"max": 102400,
"usage": 1536
}
],
"optional_component": [
{
"type": "memory",
"unit": "MB",
"max": 102400,
"usage": 1536
}
]
},
"installableComponent": {
"nodejs_extension": [
{
"id": 33,
"name": "system1.test.be",
"selects": []
}
],
"php": [
{
"id": 33,
"name": "system1.test.be",
"selects": {
"version": [
"7.1"
]
}
}
],
"phplegacy": [
{
"id": 33,
"name": "system1.test.be",
"selects": []
}
],
"sftp": [
{
"id": 15,
"name": "system1.test.be",
"selects": []
},
{
"id": 16,
"name": "system2.test.be",
"selects": []
}
],
"testbook": [
{
"id": 15,
"name": "system2.test.be",
"selects": []
}
],
"url": [
{
"id": 33,
"name": "system1.test.be",
"selects": []
}
],
"worker": [
{
"id": 33,
"name": "system1.test.be",
"selects": []
}
]
}
}
]
}
HTTP status code 403
Response when a user does not have access
Get available systemgroups for custompackage id
get /systemgroups/custompackages/{customPackageId}/locate
Get available systemgroups for custompackage id
URI Parameters
- customPackageId: required(string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"total": 6,
"systemgroups": [
{
"id": 6,
"name": "MySystemgroup",
"limits": {
"database": [
{
"type": "size",
"unit": "MB",
"max": 512000,
"usage": 66560
}
],
"application": [
{
"type": "application",
"unit": "MB",
"max": 102400,
"usage": 3072
},
{
"type": "opcache_apcu",
"unit": "MB",
"max": 102400,
"usage": 1536
},
{
"type": "total_memory",
"unit": "MB",
"max": 102400,
"usage": 3072
}
],
"page_cache": [
{
"type": "memory",
"unit": "MB",
"max": 102400,
"usage": 3072
}
],
"object_cache": [
{
"type": "memory",
"unit": "MB",
"max": 102400,
"usage": 1536
}
],
"optional_component": [
{
"type": "memory",
"unit": "MB",
"max": 102400,
"usage": 1536
}
]
},
"installableComponent": {
"nodejs_extension": [
{
"id": 33,
"name": "system1.test.be",
"selects": []
}
],
"php": [
{
"id": 33,
"name": "system1.test.be",
"selects": {
"version": [
"7.1"
]
}
}
],
"phplegacy": [
{
"id": 33,
"name": "system1.test.be",
"selects": []
}
],
"sftp": [
{
"id": 15,
"name": "system1.test.be",
"selects": []
},
{
"id": 16,
"name": "system2.test.be",
"selects": []
}
],
"testbook": [
{
"id": 15,
"name": "system2.test.be",
"selects": []
}
],
"url": [
{
"id": 33,
"name": "system1.test.be",
"selects": []
}
],
"worker": [
{
"id": 33,
"name": "system1.test.be",
"selects": []
}
]
}
}
]
}
HTTP status code 403
Response when a user does not have access
/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
- 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
- space: required(integer)
Changing its value is allowed, but it only can grow
- remarks: (string)
remarks
- dailySnapshots: (integer)
Daily snapshots (defaults - min: 30, max: 180)
- monthlySnapshots: (integer)
Monthly snapshots (defaults - min: 0, max: 120)
Example:
{
"name": "myVolumegroup",
"organisation": 123,
"space": "100,",
"remarks": "this is my volumegroup",
"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",
"remarks": null,
"space": 10000,
"usageSpace": 1920,
"type": "local",
"dailySnapshots": 30,
"monthlySnapshots": 0,
"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"
},
"statusCategory": "green"
}
}
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
- status: (string)
- type: (string)
- primarySystemId: (integer)
primarySystem id
- secondarySystemId: (integer)
secondarySystem id
- backupSystemId: (integer)
backupSystem 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": 17,
"volumegroups": [
{
"id": 2,
"name": "myVolumegroup",
"status": "ok",
"uid": "a025e6a2-c8fd-8f84-e95f-060028fb0f99b",
"remarks": null,
"space": 10000,
"usageSpace": 1920,
"type": "local",
"dailySnapshots": 30,
"monthlySnapshots": 0,
"primarySystem": {
"id": 8,
"fqdn": "436dsfdsf.level27.be",
"name": "TestSystem1"
},
"secondarySystem": null,
"backupSystem": null,
"organisation": {
"id": 123,
"name": "Test Company"
},
"statusCategory": "green"
},
{
"id": 2,
"name": "myVolumegroup2",
"status": "to_create",
"uid": "b025e6a2-c8ddfd-8f84-e95f-0600xd28fb0f1b",
"remarks": null,
"space": 10000,
"usageSpace": 1920,
"type": "nfs",
"dailySnapshots": 30,
"monthlySnapshots": 0,
"primarySystem": {
"id": 14,
"fqdn": "s4c56s447cs.level.be",
"name": "TestStystem2"
},
"secondarySystem": null,
"backupSystem": null,
"organisation": {
"id": 123,
"name": "Test Company"
},
"statusCategory": "grey"
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Update a volumegroup (action only for admin)
Delete a volumegroup (action only for admin)
Get a volumegroup (action only for admin)
put /volumegroups/{volumegroupId}
Update a volumegroup (action only for admin)
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
- 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
- space: required(integer)
Changing its value is allowed, but it only can grow
- remarks: (string)
remarks
Example:
{
"name": "myVolumegroup",
"organisation": 123,
"space": "100,",
"remarks": "this is my volumegroup",
"secondarySystem": null,
"backupSystem": null
}
HTTP status code 204
Response when request was successfully processed
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have a proper role
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",
"remarks": null,
"space": 10000,
"usageSpace": 1920,
"type": "local",
"dailySnapshots": 30,
"monthlySnapshots": 0,
"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"
},
"statusCategory": "green"
}
}
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 volumegroup's volumes
get /volumegroups/{volumegroupId}/volumes
Get volumegroup's volumes
URI Parameters
- volumegroupId: required(string)
The unique identifier of a volumegroup
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:
{
"total": 1,
"volumes": [
{
"id": 7,
"name": "MyVolume",
"status": "unlinked",
"space": 10000,
"uid": "weew-6wwdw5a4-a754-dfwedw-2c871a0ed32f",
"remarks": null,
"autoResize": false,
"deviceName": "vd322",
"organisation": {
"id": 132,
"name": "TetCompany"
},
"system": {
"id": 1718,
"fqdn": "2e2dwd.test.eu",
"name": "My system"
},
"volumegroup": 22,
"statusCategory": "grey"
}
]
}
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 available hypervisors or storages for a volumegroup
post /volumegroups/{volumegroupId}/locate
Get available hypervisors or storages for a volumegroup
URI Parameters
- volumegroupId: required(string)
The unique identifier of a volumegroup
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"systems": {
"hypervisors": [
{
"id": 1697,
"name": "hypervisor1"
}
],
"storages": []
}
}
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 volumegroup is not found
Check a volumegroup for resource allocation
post /volumegroups/{volumegroupId}/allocate
Check a volumegroup for resource allocation
URI Parameters
- volumegroupId: required(string)
The unique identifier of a volumegroup
Body
Media type: application/json
Type: object
Properties- space: required(integer)
Changing its value is allowed, but it only can grow
Example:
{
"space": 10
}
Get statistics for volumegroup
get /volumegroups/{volumegroupId}/getstats/{statistic}/{bucket}
Get statistics for volumegroup
URI Parameters
- volumegroupId: required(string)
The unique identifier of a volumegroup
- statistic: required(string)
- bucket: required(string)
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{}
HTTP status code 400
Response when statistics are not enabled
HTTP status code 403
Response when a user does not have access to a volumegroup
HTTP status code 404
Response when a volumegroup doesn't exist
Get available statistics
get /volumegroups/getavailablestats
/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
- 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)
- autoResize: (boolean)
Enable auto resize
- deviceName: (string)
Device name
- remarks: (string)
remarks
Examples:
1:
{
"name": "myVolume",
"space": 1000,
"organisation": 123,
"system": 12,
"volumegroup": null,
"autoResize": true,
"deviceName": "vd111"
}
2 (admin only):
{
"name": "myVolume2",
"space": 1000,
"organisation": 123,
"system": 12,
"volumegroup": 12,
"autoResize": true,
"deviceName": "vd111"
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"volume": {
"id": 7,
"name": "MyVolume",
"status": "unlinked",
"space": 10000,
"uid": "weew-6wwdw5a4-a754-dfwedw-2c871a0ed32f",
"remarks": null,
"autoResize": false,
"deviceName": "vd322",
"organisation": {
"id": 132,
"name": "TetCompany"
},
"system": null,
"volumegroup": 22,
"statusCategory": "grey"
}
}
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:
{
"total": 1,
"volumes": [
{
"id": 7,
"name": "MyVolume",
"status": "unlinked",
"space": 10000,
"uid": "weew-6wwdw5a4-a754-dfwedw-2c871a0ed32f",
"remarks": null,
"autoResize": false,
"deviceName": "vd322",
"organisation": {
"id": 132,
"name": "TetCompany"
},
"system": {
"id": 1718,
"fqdn": "2e2dwd.test.eu",
"name": "My system"
},
"volumegroup": 22,
"statusCategory": "grey"
}
]
}
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
- autoResize: (boolean)
Enable auto resize
- remarks: (string)
remarks
- 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
- 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)
- deviceName: (string)
Device name
Example:
{
"name": "myVolume2",
"space": 1000,
"organisation": 123,
"autoResize": "true,",
"volumegroup": 123,
"deviceName": null,
"system": null
}
HTTP status code 204
Response when request was successfully processed
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have a proper role
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": 7,
"name": "MyVolume",
"status": "unlinked",
"space": 10000,
"uid": "weew-6wwdw5a4-a754-dfwedw-2c871a0ed32f",
"remarks": null,
"autoResize": false,
"deviceName": "vd322",
"organisation": {
"id": 132,
"name": "TetCompany"
},
"system": null,
"volumegroup": 22,
"statusCategory": "grey"
}
}
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
Execute an action for a Volume
post /volumes/{volumeId}/actions
Execute an action for a Volume
URI Parameters
- volumeId: required(string)
The unique identifier of a volume
Body
Media type: application/json
Type: object
Properties- type: required(one of link, unlink, migrate (currently unavailable))
Action type
- system: (integer)
The unique identifier of a system
- deviceName: (string)
Device name
Examples:
1:
{
"type": "link",
"system": 123,
"deviceName": "vda"
}
2:
{
"type": "unlink"
}
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"volume": {
"id": 7,
"name": "MyVolume",
"status": "unlinked",
"space": 10000,
"uid": "weew-6wwdw5a4-a754-dfwedw-2c871a0ed32f",
"remarks": null,
"autoResize": false,
"deviceName": "vd322",
"organisation": {
"id": 132,
"name": "TetCompany"
},
"system": null,
"volumegroup": 22,
"statusCategory": "grey"
}
}
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
Check a volume for resource allocation
post /volumes/{volumeId}/allocate
Check a volume for resource allocation
URI Parameters
- volumeId: required(string)
The unique identifier of a volume
Body
Media type: application/json
Type: object
Properties- space: required(integer)
Changing its value is allowed, but it only can grow
Example:
{
"space": 10
}
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- systemprovider: (integer)
The unique identifier of a systemprovider
- description: (string)
Description
- remarks: (string)
remarks
- customer: required(boolean)
customer
- internal: required(boolean)
internal
- public: required(boolean)
public
- zone: (integer)
The unique identifier of a zone
- zones: (array of any)
Array of zone ids
- systemgroup: (integer)
The unique identifier of a systemgroup
- organisation: required(integer)
The unique identifier of an organisation
- vlan: (integer)
vlan
- ipv4: (string)
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,
"systemprovider": 1,
"zone": null,
"zones": [
23,
24
],
"systemgroup": null,
"organisation": 123,
"name": "level27_be1_public_1",
"vlan": null,
"ipv4": 1682642999,
"netmaskv4": 1682642970,
"gatewayv4": 27,
"ipv6": null,
"netmaskv6": null,
"gatewayv6": null,
"externalId": null,
"ips": {
"ipv4": [
{
"ip": "82.111.68.227",
"cp4System": 321
},
{
"ip": "82.111.68.228",
"cp4System": 325
}
],
"ipv6": [
{
"ip": "2a02:1802:12:82::ab15",
"cp4System": 321
}
]
}
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"network": {
"id": 676,
"name": "level27_public_21",
"description": "level27 public network",
"remarks": null,
"status": "ok",
"vlan": 999,
"ipv4": "10.0.0.0",
"netmaskv4": 24,
"gatewayv4": "10.0.0.1",
"ipv6": null,
"netmaskv6": 0,
"gatewayv6": null,
"public": true,
"customer": false,
"internal": false,
"publicIp4Native": null,
"publicIp6Native": null,
"full": false,
"systemgroup": null,
"organisation": {
"id": 123,
"name": "My Organisation"
},
"zone": null,
"systemprovider": {
"id": 1,
"api": "level27",
"name": "Level27",
"advancedNetworking": true
},
"rzone4": {
"id": 30,
"name": "107.233.109.in-addr.arpa"
},
"rzone6": null,
"zones": [
{
"id": 26,
"name": "CP4Prod Interxion 1 zone 1",
"region": {
"id": 35,
"name": "be"
}
},
{
"id": 24,
"name": "Brussel Interxion 1 Zone 2 (IX1-2)",
"region": {
"id": 35,
"name": "be"
}
}
],
"statusCategory": "green"
}
}
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: (string)
provider
- excludeFull: (one of false, false - default: 0)
decides if full networks should be shown on a list
- status: (string)
- zoneId: (integer)
zone id
HTTP status code 200
Response when networks are found (action only for admin)
Body
Media type: application/json
Type: object
Example:
{
"networks": [
{
"id": 1,
"name": "level27_cust_103",
"description": "level27 customer network",
"remarks": null,
"status": "ok",
"vlan": 50,
"ipv4": "10.0.0.0",
"netmaskv4": 24,
"gatewayv4": "10.0.0.1",
"ipv6": null,
"netmaskv6": null,
"gatewayv6": null,
"public": false,
"customer": true,
"internal": false,
"publicIp4Native": null,
"publicIp6Native": null,
"full": false,
"systemgroup": null,
"organisation": {
"id": 123,
"name": "My Organisation"
},
"zone": null,
"systemprovider": {
"id": 1,
"api": "level27",
"name": "Level27",
"advancedNetworking": true
},
"rzone4": null,
"rzone6": null,
"zones": [
{
"id": 26,
"name": "CP4Prod Interxion 1 zone 1",
"region": {
"id": 35,
"name": "be"
}
}
],
"statusCategory": "green"
}
]
}
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
- zones: (array of any)
Array of zone ids
Example:
{
"description": "test network",
"remarks": "private test network"
}
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": 676,
"name": "level27_public_21",
"description": "level27 public network",
"remarks": null,
"status": "ok",
"vlan": 999,
"ipv4": "10.0.0.0",
"netmaskv4": 24,
"gatewayv4": "10.0.0.1",
"ipv6": null,
"netmaskv6": 0,
"gatewayv6": null,
"public": true,
"customer": false,
"internal": false,
"publicIp4Native": null,
"publicIp6Native": null,
"full": false,
"systemgroup": null,
"organisation": {
"id": 123,
"name": "My Organisation"
},
"zone": null,
"systemprovider": {
"id": 1,
"api": "level27",
"name": "Level27",
"advancedNetworking": true
},
"rzone4": {
"id": 30,
"name": "107.233.109.in-addr.arpa"
},
"rzone6": null,
"zones": [
{
"id": 26,
"name": "CP4Prod Interxion 1 zone 1",
"region": {
"id": 35,
"name": "be"
}
},
{
"id": 24,
"name": "Brussel Interxion 1 Zone 2 (IX1-2)",
"region": {
"id": 35,
"name": "be"
}
}
],
"statusCategory": "green"
}
}
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 free ip address or addresses
get /networks/{networkId}/locate
Get free ip address or addresses
URI Parameters
- networkId: required(string)
The unique identifier of a network
HTTP status code 200
Request was successfully processed
Body
Media type: application/json
Type: object
Example:
{
"ipv4": "82.111.68.227",
"ipv6": "2a02:1802:12:82::ab15"
}
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
Checks if a given ip address is available
post /networks/{networkId}/allocate
Checks if a given ip address is available
URI Parameters
- networkId: required(string)
The unique identifier of a network
Body
Media type: application/json
Type: object
Properties- ip: (integer)
ipv4 or ipv6
Examples:
1:
{
"ip": "82.111.68.227"
}
2:
{
"ip": "2a02:1802:12:82::ab15"
}
HTTP status code 200
Request was 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 a proper role to access a controller
HTTP status code 404
Response when a network is not found
Get all SystemHasNetworkIps for a Network
Create a SystemHasNetworkIp for a Network (not linked to a System)
get /networks/{networkId}/ips
Get all SystemHasNetworkIps for a Network
URI Parameters
- networkId: required(string)
The unique identifier of a network
Query Parameters
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- orderBy: (string)
- orderType: (string)
ASC or DESC
- filter: (string)
HTTP status code 200
Request was successfully processed
Body
Media type: application/json
Type: object
Example:
{
"total": 1,
"systemHasNetworkIps": [
{
"id": 4099,
"ipv4": "10.0.0.12",
"publicIpv4": null,
"ipv6": null,
"publicIpv6": null,
"hostname": "testhostname.be",
"status": "ok",
"externalId": null,
"systemHasNetwork": {
"id": 3038,
"system": {
"id": 1698,
"name": "MySystem"
}
},
"statusCategory": "green"
}
]
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a network or a proper role to access a controller
HTTP status code 404
Response when a network is not found
post /networks/{networkId}/ips
Create a SystemHasNetworkIp for a Network (not linked to a System)
URI Parameters
- networkId: required(string)
The unique identifier of a network
Body
Media type: application/json
Type: object
Properties- ipv4: (string)
ipv4
- publicIpv4: (string)
ipv4
- ipv6: (string)
ipv6
- publicIpv6: (string)
ipv6
- hostname: (string)
Valid hostname
- externalId: (string)
External id
Example:
{
"ipv4": "182.0.0.13",
"publicIpv4": null,
"ipv6": null,
"publicIpv6": null,
"hostname": "valid.hostname.be"
}
HTTP status code 200
Request was successfully processed
Body
Media type: application/json
Type: object
Example:
{
"systemHasNetworkIp": {
"id": 299,
"ipv4": null,
"publicIpv4": "10.0.0.12",
"ipv6": null,
"publicIpv6": null,
"hostname": "test.test123.be",
"status": "ok",
"statusCategory": "green",
"systemHasNetwork": {
"id": 200,
"system": {
"id": 20
},
"network": {
"id": 522
}
}
}
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a network or a proper role to access a controller
HTTP status code 404
Response when a network is not found
Update a systemHasNetworkIp's hostname
Delete a SystemHasNetworkIp for a Network (not linked to a System)
put /networks/{networkId}/ips/{systemHasNetworkIpId}
Update a systemHasNetworkIp's hostname
URI Parameters
- networkId: required(string)
The unique identifier of a network
- systemHasNetworkIpId: required(string)
Body
Media type: application/json
Type: object
Properties- hostname: (string)
Valid hostname
Example:
{
"hostname": "new.hostname.be"
}
delete /networks/{networkId}/ips/{systemHasNetworkIpId}
Delete a SystemHasNetworkIp for a Network (not linked to a System)
URI Parameters
- networkId: required(string)
The unique identifier of a network
- systemHasNetworkIpId: required(string)
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": "100.76.0.36 ",
"publicIpv4": "54.77.117.39",
"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)
Get rzones for a Newtork
get /networks/{networkId}/rzones
Get rzones for a Newtork
URI Parameters
- networkId: required(string)
The unique identifier of a network
HTTP status code 200
Request was successfully processed
Body
Media type: application/json
Type: object
Example:
{
"total": 2,
"rzones": [
{
"id": 1,
"name": "0.45.24.in-addr.arpa",
"nameserver1": "dns1.test.eu",
"nameserver2": "dns2.test.eu",
"nameserver3": "dns3.test.net",
"nameserver4": null,
"nameserverIp1": "",
"nameserverIp2": "",
"nameserverIp3": "",
"nameserverIp4": null,
"nameserverIpv61": null,
"nameserverIpv62": null,
"nameserverIpv63": null,
"nameserverIpv64": null,
"serial": 2100000001,
"status": "ok",
"handleDns": true,
"type": "ipv4",
"ttl": 1209600,
"minimum": 3600,
"refresh": 3600,
"retry": 3600,
"statusCategory": "green"
},
{
"id": 2,
"name": "6.0.1.8.3.b.c.0.8.1.0.d.5.0.a.2.ip6.arpa",
"nameserver1": "dns1.test.eu",
"nameserver2": "dns2.test.eu",
"nameserver3": "dns3.test.net",
"nameserver4": null,
"nameserverIp1": "",
"nameserverIp2": "",
"nameserverIp3": "",
"nameserverIp4": null,
"nameserverIpv61": null,
"nameserverIpv62": null,
"nameserverIpv63": null,
"nameserverIpv64": null,
"serial": 2100000001,
"status": "ok",
"handleDns": true,
"type": "ipv6",
"ttl": 1209600,
"minimum": 3600,
"refresh": 3600,
"retry": 3600,
"statusCategory": "green"
}
]
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a network or a proper role to access a controller
HTTP status code 404
Response when a network is not found
Get rzonerecords for an rzone
get /networks/{networkId}/rzones/{rzoneId}/records
Get rzonerecords for an rzone
URI Parameters
- networkId: required(string)
The unique identifier of a network
- rzoneId: required(string)
HTTP status code 200
Request was successfully processed
Body
Media type: application/json
Type: object
Example:
{
"total": 1,
"rzonerecords": [
{
"id": 1,
"name": "182.217.20.172.in-addr.arpa",
"content": "automatic-test.test.eu",
"status": "ok",
"systemHasNetworkIp": {
"id": 4099
},
"statusCategory": "green"
}
]
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a network or a proper role to access a controller
HTTP status code 404
Response when a network is not found
Get an available vlan
Check if vlan is available
get /networks/vlans/locate
post /networks/vlans/locate
Check if vlan is available
Body
Media type: application/json
Type: object
Properties- vlan: (integer)
vlan
Example:
{
"vlan": 152
}
/regions
Get available regions
get /regions
Get available regions
Query Parameters
- provider: (string)
provider
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"total": 11,
"regions": [
{
"id": 28,
"name": "ams",
"country": {
"id": "NL",
"name": "Netherlands"
},
"systemprovider": {
"id": 4,
"name": "Digital Ocean",
"api": "digitalocean"
}
},
{
"id": 35,
"name": "be",
"country": {
"id": "BE",
"name": "Belgium"
},
"systemprovider": {
"id": 1,
"name": "Level27",
"api": "level27"
}
},
{
"id": 31,
"name": "blr",
"country": {
"id": "BY",
"name": "Belarus"
},
"systemprovider": {
"id": 4,
"name": "Digital Ocean",
"api": "digitalocean"
}
},
{
"id": 2,
"name": "eu-central-1",
"country": {
"id": "DE",
"name": "Germany"
},
"systemprovider": {
"id": 3,
"name": "Amazon EC2",
"api": "ec2"
}
},
{
"id": 1,
"name": "eu-west-1",
"country": {
"id": "IE",
"name": "Ireland"
},
"systemprovider": {
"id": 3,
"name": "Amazon EC2",
"api": "ec2"
}
},
{
"id": 29,
"name": "fra",
"country": {
"id": "DE",
"name": "Germany"
},
"systemprovider": {
"id": 4,
"name": "Digital Ocean",
"api": "digitalocean"
}
},
{
"id": 33,
"name": "lon",
"country": {
"id": "GB",
"name": "United Kingdom"
},
"systemprovider": {
"id": 4,
"name": "Digital Ocean",
"api": "digitalocean"
}
},
{
"id": 26,
"name": "nyc",
"country": {
"id": "US",
"name": "United States"
},
"systemprovider": {
"id": 4,
"name": "Digital Ocean",
"api": "digitalocean"
}
},
{
"id": 27,
"name": "sfo",
"country": {
"id": "US",
"name": "United States"
},
"systemprovider": {
"id": 4,
"name": "Digital Ocean",
"api": "digitalocean"
}
},
{
"id": 30,
"name": "sgp",
"country": {
"id": "SG",
"name": "Singapore"
},
"systemprovider": {
"id": 4,
"name": "Digital Ocean",
"api": "digitalocean"
}
},
{
"id": 32,
"name": "tor",
"country": {
"id": "CA",
"name": "Canada"
},
"systemprovider": {
"id": 4,
"name": "Digital Ocean",
"api": "digitalocean"
}
}
]
}
HTTP status code 403
Response when a user does not have a proper role to access a controller
Get available zones for a region
get /regions/{regionId}/zones
Get available zones for a region
URI Parameters
- regionId: required(string)
Query Parameters
- onlyDefault: (boolean)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"total": 3,
"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"
}
]
}
HTTP status code 403
Response when a user does not have a proper role to access a controller
Get available hypervisors and storages for given resources
post /regions/{regionId}/zones/{zoneId}/locate
Get available hypervisors and storages for given resources
URI Parameters
- regionId: required(string)
- zoneId: required(string)
Body
Media type: application/json
Type: object
Properties- cpu: (integer)
Cpu (required for Level27 systems)
- memory: (integer)
Memory (required for Level27 systems)
- volumes: (array of any)
Array of Volume's size (default: null)
Example:
{
"memory": "10,",
"cpu": "10,",
"volumes": [
10,
10
]
}
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"systems": {
"hypervisors": [
{
"id": 1697,
"name": "hypervisor1"
}
],
"storages": []
}
}
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 zone is not found
Get available hypervisors and storages in given zone
get /regions/{regionId}/zones/{zoneId}/hypervisorsandstorages
Get available hypervisors and storages in given zone
URI Parameters
- regionId: required(string)
- zoneId: required(string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"systems": {
"hypervisors": [
{
"id": 1697,
"name": "hypervisor1"
}
],
"storages": []
}
}
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 zone is not found
Get resurce info for zone (admin only)
get /regions/{regionId}/zones/{zoneId}/allocatable
Get resurce info for zone (admin only)
URI Parameters
- regionId: required(string)
- zoneId: required(string)
Query Parameters
- formatForGrafana: (boolean)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"zone": {
"id": "20",
"name": "Local Zone 1",
"type": "local"
},
"hypervisors": [
{
"id": 1697,
"name": "hypervisor1",
"resourcesAvailable": {
"cpu": 200,
"memory": 400,
"disk": "5000.0"
},
"resourcesInUse": {
"cpu": 20,
"memory": 15,
"disk": 175
},
"secondaryFailover": {
"cpu": {
"amount": 7,
"system": {
"id": 1589,
"name": "hypervisor2"
}
},
"memory": {
"amount": 8,
"system": {
"id": 1588,
"name": "hypervisor3"
}
},
"disk": {
"amount": 115,
"system": {
"id": 1588,
"name": "hypervisor3"
}
}
}
},
{
"id": 1589,
"name": "hypervisor2",
"resourcesAvailable": {
"cpu": 500,
"memory": 200,
"disk": "300.0"
},
"resourcesInUse": {
"cpu": 9,
"memory": 8,
"disk": 95
},
"secondaryFailover": {
"cpu": {
"amount": 1,
"system": {
"id": 1697,
"name": "hypervisor1"
}
},
"memory": {
"amount": 1,
"system": {
"id": 1697,
"name": "hypervisor1"
}
},
"disk": {
"amount": 40,
"system": {
"id": 1697,
"name": "hypervisor1"
}
}
}
}
],
"storages": []
}
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 zone is not found
Get available system images for a region
get /regions/{regionId}/images
Get available system images for a region
URI Parameters
- regionId: required(string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"total": 18,
"systemimages": [
{
"id": 175,
"name": "ubuntu_1404lts_server",
"operatingsystemVersion": {
"id": 2,
"version": "14.04 LTS",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
}
},
{
"id": 176,
"name": "ubuntu_1604lts_server",
"operatingsystemVersion": {
"id": 3,
"version": "16.04 LTS",
"type": "64",
"operatingsystem": {
"id": 1,
"name": "Ubuntu",
"type": "linux"
}
}
}
]
}
HTTP status code 403
Response when a user does not have a proper role to access a controller
/providers
Get available device names for a system provider
get /providers/{systemproviderId}/devicenames
Get available device names for a system provider
Get available configurations for a system provider
get /providers/{systemproviderId}/configurations
Get available configurations for a system provider
URI Parameters
- systemproviderId: required(string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"total": 4,
"providerConfigurations": [
{
"id": 42,
"minCpu": 1,
"maxCpu": 1,
"minMemory": "2.0",
"maxMemory": "2.0",
"minDisk": 30,
"maxDisk": 30,
"status": 10,
"externalId": "small",
"name": "Level27 Small",
"description": "Level27 Small server for basic workloads",
"systemprovider": {
"id": 1,
"name": "Level27"
}
},
{
"id": 43,
"minCpu": 2,
"maxCpu": 2,
"minMemory": "4.0",
"maxMemory": "4.0",
"minDisk": 60,
"maxDisk": 60,
"status": 10,
"externalId": "medium",
"name": "Level27 Medium",
"description": "Level27 Medium server for general workloads",
"systemprovider": {
"id": 1,
"name": "Level27"
}
},
{
"id": 44,
"minCpu": 4,
"maxCpu": 4,
"minMemory": "8.0",
"maxMemory": "8.0",
"minDisk": 90,
"maxDisk": 90,
"status": 10,
"externalId": "large",
"name": "Level27 Large",
"description": "Level27 Large server for specific & high performance applications",
"systemprovider": {
"id": 1,
"name": "Level27"
}
},
{
"id": 45,
"minCpu": 1,
"maxCpu": 32,
"minMemory": "1.0",
"maxMemory": "256.0",
"minDisk": 30,
"maxDisk": 1000,
"status": 10,
"externalId": "flexible",
"name": "Level27 Flexible",
"description": "Level27 Flexible configuration",
"systemprovider": {
"id": 1,
"name": "Level27"
}
}
]
}
HTTP status code 403
Response when a user does not have a proper role to access a controller
/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,
"locations": 1,
"rootTasks": 1,
"customPackages": 1
},
"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"
}
],
"locations": [
{
"id": 5,
"name": "Test1",
"organisationId": 17,
"organisationName": "test1"
}
],
"rootTasks": [
{
"id": 37,
"package": null,
"template": "system_resources_update",
"organisationId": 2570,
"organisationName": "test1"
}
],
"customPackages": [
{
"id": 2,
"name": "MyPackage",
"organisationId": 5286,
"organisationName": "TestAgency"
}
]
}
/priceproposal
Get a price list by category
get /priceproposal/products/category/{category}/organisations/{organisationId}
Get a price list by category
URI Parameters
- category: required(string)
- organisationId: required(string)
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:
{
"total": 125,
"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
}
],
"defaultAgreementPrices": [
{
"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
}
],
"defaultAgreementPrices": [
{
"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
}
],
"defaultAgreementPrices": [
{
"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 403
Access Denied - when user doesn't have access to organisation
/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
- type: (string)
Type
Examples:
1:
{
"name": "My Agreement",
"entityClass": "Level27\\FinanceBundle\\Entity\\Agreement",
"entityId": 132,
"organisation": 11,
"file": "BASE_64_file",
"type": null
}
2:
{
"name": "My Solr Config",
"entityClass": "Level27\\AppBundle\\Entity\\Appcomponent",
"entityId": null,
"organisation": 11,
"file": "BASE_64_file",
"type": "solr"
}
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",
"type": null
}
}
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
- entityClass: (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:
{
"total": 4,
"attachments": [
{
"id": 1,
"name": "test1",
"entityClass": "Level27\\FinanceBundle\\Entity\\Agreement",
"entityId": 3,
"filename": "document1628761186-6114ec62e5ab6.pdf",
"status": "ok",
"statusCategory": "green",
"type": null
},
{
"id": 2,
"name": "test2",
"entityClass": "Level27\\FinanceBundle\\Entity\\Agreement",
"entityId": 3,
"filename": "attachment1628764379_6114f8db4dbae-6114f8db631d5.pdf",
"status": "ok",
"statusCategory": "green",
"type": null
}
]
}
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",
"type": null
}
}
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
get /jobs/history/{type}/{id}
Get job history
URI Parameters
- type: required(string)
Type (one of all, app, appcomponent, domain, mailbox, mailforwarder, mailgroup, network, sslCertificate, system, userHasTeam, user, volumegroup)
- id: (string)
Id (The unique identifier of an entity or 0)
Query Parameters
- limit: (integer - default: 5)
- offset: (integer - default: 0)
Get job history
get /jobs/history/{type}/{id}/{status}
Get job history
URI Parameters
- type: required(string)
Type (one of all, app, appcomponent, domain, mailbox, mailforwarder, mailgroup, network, sslCertificate, system, userHasTeam, user, volumegroup)
- id: (string)
Id (The unique identifier of an entity or 0)
- status: (string)
Status to filter jobs by (one of 0, 20, 21, 40, 50, 90 or busy).
Query Parameters
- limit: (integer - default: 5)
- offset: (integer - default: 0)
Get job history
get /jobs/history/root/{rootJobId}
Get job history
URI Parameters
- rootJobId: required(string)
Query Parameters
- verbosity: (one of normal, verbose, very_verbose - default: verbose)
verbosity
- showDeleted: (boolean)
showDeleted (enabled only for admins)
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,
"excMsgCode": "system_updateCookbook_1",
"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
Get a list of root jobs
get /jobs/history/roots
Get a list of root jobs
Query Parameters
- showDeleted: (boolean)
showDeleted (enabled only for admins)
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- status: (string)
- dtStamp: (integer)
- type: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
[
{
"id": 510839,
"status": 21,
"conc": 1,
"hoe": 1,
"msg": "Update cookbook",
"dt": "1582712817",
"count": {
"20": 2,
"21": 2
}
},
{
"id": 510829,
"status": 50,
"conc": 1,
"hoe": 1,
"msg": "System creation",
"dt": "1582712683",
"count": {
"50": 4
}
},
{
"id": 510801,
"status": 40,
"conc": 5,
"hoe": 1,
"msg": "Maintenance job: security updates",
"dt": "1582711203",
"count": {
"40": 2,
"50": 2
}
}
]
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)
get /jobs/{jobId}/root
/packages
Get all available packages
get /packages
Get all available packages
Query Parameters
- cms: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"packages": [
{
"name": "drupal_professional",
"displayName": {
"en": "Drupal professional",
"nl": "Drupal professioneel"
},
"description": {
"en": "Drupal professional package with optimized server configuration",
"nl": "Professioneel Drupal pakket met geoptimaliseerde server configuratie"
},
"labels": {
"type": "Application",
"cms": "Drupal"
}
}
]
}
Get a package definition
get /packages/{packageName}
Get a package definition
URI Parameters
- packageName: required(string)
Query Parameters
- organisationId: (integer - default: 0)
- managementType: (string)
- domaintype: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"package": {
"name": "magento_professional",
"displayName": {
"en": "Magento professional",
"nl": "Magento professioneel"
},
"description": {
"en": "Magento professional package with optimized server configuration",
"nl": "Professioneel Magento pakket met geoptimaliseerde server configuratie"
},
"roles": [
"ROLE_SYSTEM",
"ROLE_CUSTADMIN",
"ROLE_ADMIN",
"ROLE_APP"
],
"labels": {
"type": "Application",
"cms": "Magento"
},
"content": {
"features": [
{
"text": {
"en": "Amount of cpu cores",
"nl": "Aantal CPU cores"
},
"icon": "cpu_icon",
"value": 2
},
{
"text": {
"en": "Memory",
"nl": "Geheugen"
},
"icon": "memory_icon",
"value": "4 GB"
},
{
"text": {
"en": "Diskspace",
"nl": "Schijfruimte"
},
"icon": "disk_icon",
"value": "50 GB"
},
{
"text": {
"en": "Magento optimized database and php configuration",
"nl": "Magento geoptimaliseerde databank met php configuratie"
},
"icon": "enabled"
},
{
"text": {
"en": "SLA basic included",
"nl": "SLA basic inbegrepen"
},
"icon": "enabled"
},
{
"text": {
"en": "PHP 5.6 - PHP 8.1",
"nl": "PHP 5.6 - PHP 8.1"
},
"icon": "enabled"
},
{
"text": {
"en": "Redundancy",
"nl": "Redundancy"
},
"icon": "disabled"
},
{
"text": {
"en": "Data transfer",
"nl": "Data transfer"
},
"icon": "free"
}
]
},
"parameters": {
"name": {
"displayName": {
"en": "system and project name",
"nl": "systeem en project naam"
},
"type": "string",
"required": true,
"default": null,
"readOnly": false
},
"disk": {
"displayName": {
"en": "disk space",
"nl": "schijfruimte"
},
"type": "int",
"required": false,
"default": 30,
"readOnly": false
},
"cpu": {
"displayName": {
"en": "cpu",
"nl": "cpu"
},
"type": "int",
"required": false,
"default": 1,
"readOnly": false
},
"memory": {
"displayName": {
"en": "memory",
"nl": "geheugen"
},
"type": "int",
"required": false,
"default": 1,
"readOnly": false
}
},
"templates": [
{
"name": "level27_system_creation",
"displayName": {
"en": "Magento leamp server",
"nl": "Magento leamp server"
},
"type": "system",
"ord": 1
},
{
"name": "php_cookbook_creation",
"displayName": {
"en": "php cookbook",
"nl": "php cookbook"
},
"type": "system",
"ord": 2
},
{
"name": "mysql_cookbook_creation",
"displayName": {
"en": "mysql cookbook",
"nl": "mysql cookbook"
},
"type": "system",
"ord": 3
},
{
"name": "app_creation",
"displayName": {
"en": "Drupal leamp project",
"nl": "Drupal leamp project"
},
"type": "app",
"ord": 4
},
{
"name": "php_component_creation",
"displayName": {
"en": "Drupal php component",
"nl": "Drupal php component"
},
"type": "app",
"ord": 5
},
{
"name": "mysql_component_creation",
"displayName": {
"en": "Drupal mysql component",
"nl": "Drupal mysql component"
},
"type": "app",
"ord": 6
}
],
"products": [
{
"id": "system_level27_instance_flexible_linux",
"description": "Level27 Flexible configuration",
"quantityCalculation": null,
"productPrice": {
"id": 2400,
"period": 1,
"currency": "EUR",
"price": "6500",
"timing": "pre"
}
},
{
"id": "system_level27_instance_disk_2022",
"description": "Level27 instance Disk",
"quantityCalculation": "disk",
"productPrice": {
"id": 12969,
"period": 1,
"currency": "EUR",
"price": "15",
"timing": "pre"
}
},
{
"id": "system_level27_instance_cpu",
"description": "Level27 instance CPU",
"quantityCalculation": "cpu",
"productPrice": {
"id": 2420,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre"
}
},
{
"id": "system_level27_instance_memory_2022",
"description": "Level27 instance Memory",
"quantityCalculation": "memory",
"productPrice": {
"id": 12888,
"period": 1,
"currency": "EUR",
"price": "550",
"timing": "pre"
}
},
{
"id": "system_level27_firewall_and_networking",
"description": "Level27 Networking + standard firewall + WAF",
"quantityCalculation": "",
"productPrice": {
"id": 12883,
"period": 1,
"currency": "EUR",
"price": "1300",
"timing": "pre"
}
},
{
"id": "system_backup_plan_4_weeks",
"description": "Backup plan 4 weeks + license",
"quantityCalculation": "disk",
"productPrice": {
"id": 12884,
"period": 1,
"currency": "EUR",
"price": "39",
"timing": "pre"
}
}
]
}
}
/templates
Get all available templates
get /templates
Get all available templates
Query Parameters
- customPackagePossible: (integer - default: 0)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"templates": [
{
"name": "app_creation",
"displayName": {
"en": "Magento project",
"nl": "Magento project"
},
"description": {
"en": "magento project",
"nl": "magento project"
}
},
{
"name": "level27_system_creation",
"displayName": {
"en": "Level27 system",
"nl": "Level27 systeem"
},
"description": {
"en": "Create a new Level27 system",
"nl": "Maak een nieuw Level27 systeem aan"
}
},
{
"name": "system_resources_update",
"displayName": {
"en": "update cpu, memory, disk",
"nl": "Verhoog cpu, geheugen, schijfruimte"
},
"description": {
"en": "update cpu, memory, disk",
"nl": "Verhoog cpu, geheugen, schijfruimte"
}
}
]
}
Get a template definition
get /templates/{templateName}
Get a template definition
URI Parameters
- templateName: required(string)
Query Parameters
- organisationId: (integer - default: 0)
- managementType: (string)
- domaintype: (string)
- customPackagePossible: (integer - default: 0)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"template": {
"name": "level27_system_creation",
"displayName": {
"en": "Level27 system",
"nl": "Level27 systeem"
},
"description": {
"en": "Create a new Level27 system",
"nl": "Maak een nieuw Level27 systeem aan"
},
"canBeUsedAlone": true,
"roles": [
"ROLE_SYSTEM",
"ROLE_CUSTADMIN",
"ROLE_ADMIN"
],
"parameters": {
"name": {
"displayName": {
"en": "System name",
"nl": "Naam systeem"
},
"type": "string",
"required": true,
"default": null,
"readOnly": false
},
"disk": {
"displayName": {
"en": "disk space",
"nl": "Schijfruimte"
},
"type": "int",
"required": false,
"default": 30,
"readOnly": false
},
"cpu": {
"displayName": {
"en": "cpu",
"nl": "cpu"
},
"type": "int",
"required": false,
"default": 1,
"readOnly": false
},
"memory": {
"displayName": {
"en": "memory",
"nl": "Geheuegen"
},
"type": "int",
"required": false,
"default": 1,
"readOnly": false
},
"managementType": {
"displayName": {
"en": "Management type",
"nl": "Management type"
},
"type": "text",
"required": false,
"default": "professional_level27",
"readOnly": true
},
"systemproviderConfiguration": {
"displayName": {
"en": "Systemprovider configuration id",
"nl": "Systemprovider configuratie id"
},
"type": "parameters.yml",
"required": false,
"default": "template_param_systemproviderConfiguration_1",
"readOnly": true,
"entityClass": "Level27\\SystemBundle\\Entity\\SystemproviderConfiguration"
},
"systemimage": {
"displayName": {
"en": "System image id",
"nl": "Systeem image id"
},
"type": "parameters.yml",
"required": false,
"default": "template_param_systemimage_1",
"readOnly": true,
"entityClass": "Level27\\SystemBundle\\Entity\\Systemimage"
},
"autoNetworks": {
"displayName": {
"en": "Array of network ids",
"nl": "Array van network ids"
},
"type": "parameters.yml_csv",
"required": false,
"default": "template_param_autoNetworks_1",
"readOnly": true,
"entityClass": "Level27\\SystemBundle\\Entity\\Network"
},
"zone": {
"displayName": {
"en": "Zone id",
"nl": "Zone id"
},
"type": "parameters.yml",
"required": false,
"default": "template_param_zone_1",
"readOnly": true,
"entityClass": "Level27\\SystemBundle\\Entity\\Zone"
},
"organisation": {
"displayName": {
"en": "Organisation id",
"nl": "Organisatie id"
},
"type": "organisation",
"required": false,
"default": null,
"readOnly": true
}
},
"products": [
{
"id": "system_level27_instance_flexible_linux",
"description": "Level27 Flexible configuration",
"quantityCalculation": null,
"productPrice": {
"id": 2400,
"period": 1,
"currency": "EUR",
"price": "6500",
"timing": "pre"
}
},
{
"id": "system_level27_instance_disk_2022",
"description": "Level27 instance Disk",
"quantityCalculation": "disk",
"productPrice": {
"id": 12969,
"period": 1,
"currency": "EUR",
"price": "15",
"timing": "pre"
}
},
{
"id": "system_level27_instance_cpu",
"description": "Level27 instance CPU",
"quantityCalculation": "cpu",
"productPrice": {
"id": 2420,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre"
}
},
{
"id": "system_level27_instance_memory_2022",
"description": "Level27 instance Memory",
"quantityCalculation": "memory",
"productPrice": {
"id": 12888,
"period": 1,
"currency": "EUR",
"price": "550",
"timing": "pre"
}
},
{
"id": "system_level27_firewall_and_networking",
"description": "Level27 Networking + standard firewall + WAF",
"quantityCalculation": "",
"productPrice": {
"id": 12883,
"period": 1,
"currency": "EUR",
"price": "1300",
"timing": "pre"
}
},
{
"id": "system_backup_plan_4_weeks",
"description": "Backup plan 4 weeks + license",
"quantityCalculation": "disk",
"productPrice": {
"id": 12884,
"period": 1,
"currency": "EUR",
"price": "39",
"timing": "pre"
}
}
],
"task": "level27_system_creation"
}
}
/custpackages
Get list of available custompackages
get /custpackages
Get list of available custompackages
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"customPackages": [
{
"name": "drupal_fly",
"displayName": {
"en": "Drupal fly",
"nl": "Drupal fly"
},
"description": {
"en": "Drupal fly",
"nl": "Drupal fly"
},
"type": "fly",
"labels": []
},
{
"name": "drupal_run",
"displayName": {
"en": "Drupal run",
"nl": "Drupal run"
},
"description": {
"en": "Drupal run",
"nl": "Drupal run"
},
"type": "run",
"labels": {
"type": "Application",
"cms": "Drupal",
"kickstart": true,
"featured": {
"name": {
"en": "Drupal website",
"nl": "Drupal website"
},
"description": {
"en": "Drupal run",
"nl": "Drupal run"
},
"features": [
{
"text": {
"en": "Drupal run",
"nl": "Drupal run"
}
}
],
"link": "drupal"
},
"order": 1
}
},
{
"name": "drupal_server",
"displayName": {
"en": "Drupal server",
"nl": "Drupal server"
},
"description": {
"en": "Drupal server",
"nl": "Drupal server"
},
"type": "server",
"labels": []
},
{
"name": "drupal_walk",
"displayName": {
"en": "Drupal walk",
"nl": "Drupal walk"
},
"description": {
"en": "Drupal walk",
"nl": "Drupal walk"
},
"type": "walk",
"labels": {
"type": "Application",
"cms": "Drupal",
"kickstart": true,
"featured": {
"name": {
"en": "Drupal website",
"nl": "Drupal website"
},
"description": {
"en": "Drupal walk",
"nl": "Drupal walk"
},
"features": [
{
"text": {
"en": "Drupal walk",
"nl": "Drupal walk"
}
}
],
"link": "drupal"
},
"order": 1
}
}
]
}
Get a customPackage definition
get /custpackages/{packageName}
Get a customPackage definition
URI Parameters
- packageName: required(string)
Query Parameters
- organisationId: (integer - default: 0)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"customPackage": {
"name": "drupal_run",
"displayName": {
"en": "Drupal run",
"nl": "Drupal run"
},
"description": {
"en": "Drupal run",
"nl": "Drupal run"
},
"entity": "drupal",
"type": "run",
"destination": "systemgroup",
"roles": [
"ROLE_CUSTADMIN",
"ROLE_ADMIN"
],
"labels": {
"type": "Application",
"cms": "Drupal",
"kickstart": true,
"featured": {
"name": {
"en": "Drupal website",
"nl": "Drupal website"
},
"description": {
"en": "Drupal run",
"nl": "Drupal run"
},
"features": [
{
"text": {
"en": "Drupal run",
"nl": "Drupal run"
}
}
],
"link": "drupal"
},
"order": 1
},
"content": {
"description": {
"en": "Drupal predefined",
"nl": "Drupal predefined"
},
"recommended": false,
"features": [
{
"text": {
"en": "Drupal predefined item",
"nl": "Drupal predefined item"
},
"value": {
"en": "-",
"nl": "-"
},
"icon": "predefined_item_icon"
}
]
},
"parameters": {
"name": {
"displayName": {
"en": "Project name",
"nl": "Project naam"
},
"type": "string",
"required": true,
"default": null,
"readOnly": false,
"requiredByRootTask": true
},
"option": {
"displayName": {
"en": "Option",
"nl": "Option"
},
"type": "string",
"default": "Drupal",
"required": false,
"readOnly": true,
"requiredByRootTask": false
}
},
"templates": [
{
"name": "app_creation",
"displayName": {
"en": "Drupal leamp project",
"nl": "Drupal leamp project"
},
"type": "app",
"ord": 1,
"limitGroup": null
},
{
"name": "php_component_creation_allocation",
"displayName": {
"en": "Drupal php component",
"nl": "Drupal php component"
},
"type": "app",
"ord": 2,
"limitGroup": "application"
},
{
"name": "mysql_component_creation_allocation",
"displayName": {
"en": "Drupal mysql component",
"nl": "Drupal mysql component"
},
"type": "app",
"ord": 3,
"limitGroup": "database"
},
{
"name": "cms_installation",
"displayName": {
"en": "Drupal installation",
"nl": "Drupal installation"
},
"type": "app",
"ord": 4,
"limitGroup": null
}
],
"allowedUpgradesDowngrades": [
"drupal_walk",
"drupal_fly"
],
"components": {
"database": {
"type": "database",
"description": "database",
"sharedResource": false,
"max": 10,
"uniqueComponentType": true,
"ruleIdentifier": "database",
"resources": [
{
"type": "size",
"displayType": "size",
"description": "size",
"unit": "GB",
"value": 5
}
],
"allowedTemplates": [
{
"componentType": "mysql",
"template": "mysql_component_creation_allocation",
"templateDescription": "mysql appcomponent"
},
{
"componentType": "mongodb",
"template": "mongodb_component_creation_allocation",
"templateDescription": "mongodb appcomponent"
}
],
"allowedUpgrades": [
{
"name": "database_5",
"type": "size",
"description": "Database upgrade 5GB",
"value": 5,
"unit": "GB"
},
{
"name": "database_10",
"type": "size",
"description": "Database upgrade 10GB",
"value": 10,
"unit": "GB"
},
{
"name": "database_extra_component_5",
"type": "extra_component",
"description": "Extra 5 databases",
"value": 5,
"unit": "unit",
"addToMax": true
}
]
},
"application": {
"type": "application",
"description": "application",
"sharedResources": true,
"max": 1,
"uniqueComponentType": true,
"ruleIdentifier": "php_application",
"resources": [
{
"type": "application",
"displayType": "application",
"description": "application",
"unit": "GB",
"value": 1
},
{
"type": "opcache_apcu",
"displayType": "Opcache/APCu",
"description": "Opcache/APCu",
"unit": "MB",
"value": 512
},
{
"type": "total_memory",
"displayType": "total memory",
"description": "total memory",
"unit": "GB",
"value": 1
}
],
"allowedTemplates": [
{
"componentType": "php",
"template": "php_component_creation_allocation",
"templateDescription": "php appcomponent",
"selects": [
"version"
]
}
],
"allowedUpgrades": []
},
"page_cache": {
"type": "page_cache",
"description": "Page caching with varnish",
"sharedResources": true,
"max": 1,
"uniqueComponentType": true,
"ruleIdentifier": "page_cache",
"resources": [
{
"type": "memory",
"displayType": "memory",
"description": "memory",
"unit": "GB",
"value": 1
}
],
"allowedTemplates": [
{
"componentType": "varnish",
"template": "varnish_component_creation_allocation",
"templateDescription": "varnish appcomponent"
}
],
"allowedUpgrades": [
{
"name": "varnish_256",
"type": "memory",
"description": "Varnish upgrade to 256mb",
"value": 256,
"unit": "MB"
},
{
"name": "memory_512",
"type": "memory",
"description": "Varnish upgrade to 512mb",
"value": 512,
"unit": "MB"
}
]
},
"object_cache": {
"type": "object_cache",
"description": "Object cache in redis or memcached",
"sharedResource": true,
"max": 1,
"uniqueComponentType": false,
"ruleIdentifier": "object_cache",
"resources": [
{
"type": "memory",
"displayType": "memory",
"description": "memory",
"unit": "MB",
"value": 512
}
],
"allowedTemplates": [
{
"componentType": "redis",
"template": "redis_component_creation_allocation",
"templateDescription": "redis appcomponent"
},
{
"componentType": "memcached",
"template": "memcached_component_creation_allocation",
"templateDescription": "memcached appcomponent"
}
],
"allowedUpgrades": []
},
"extra_vhosts": {
"type": "extra_vhosts",
"description": "Extra virtual hosts",
"sharedResource": true,
"max": null,
"uniqueComponentType": true,
"ruleIdentifier": "extra_vhosts",
"resources": [],
"allowedTemplates": [
{
"componentType": "phplegacy",
"template": "phplegacy_component_creation_allocation",
"templateDescription": "phplegacy appcomponent"
}
],
"allowedUpgrades": []
},
"optional_component": {
"type": "optional_component",
"description": "Optional component",
"sharedResource": true,
"max": 2,
"uniqueComponentType": false,
"ruleIdentifier": "optional_component",
"resources": [
{
"type": "memory",
"displayType": "memory",
"description": "memory",
"unit": "MB",
"value": 512
}
],
"allowedTemplates": [
{
"componentType": "redis",
"template": "redis_component_creation_allocation",
"templateDescription": "redis appcomponent"
},
{
"componentType": "memcached",
"template": "memcached_component_creation_allocation",
"templateDescription": "memcached appcomponent"
},
{
"componentType": "nodejs",
"template": "nodejs_component_creation_allocation",
"templateDescription": "nodejs appcomponent"
},
{
"componentType": "rabbitmq",
"template": "rabbitmq_component_creation_allocation",
"templateDescription": "rabbitmq appcomponent"
},
{
"componentType": "elasticsearch",
"template": "elasticsearch_component_creation_allocation",
"templateDescription": "elasticsearch appcomponent"
},
{
"componentType": "worker",
"template": "worker_component_creation_allocation",
"templateDescription": "worker appcomponent"
},
{
"componentType": "url",
"template": "url_component_creation_allocation",
"templateDescription": "url appcomponent"
}
],
"allowedUpgrades": [
{
"name": "optional_extra_component_5",
"type": "extra_component",
"description": "Extra 5 components from the list",
"value": 5,
"unit": "unit",
"addToMax": true
}
]
}
},
"extra_templates": [
{
"max": null,
"template": "auto_url_creation",
"templateDescription": "url on php appcomponent"
},
{
"max": 1,
"template": "domain_creation",
"templateDescription": "domain creation"
},
{
"max": null,
"allowedTemplates": null,
"template": "domain_auto_url_creation",
"templateDescription": "url on php appcomponent linked to the newly created domain"
},
{
"max": 1,
"allowedTemplates": null,
"template": "app_creation",
"templateDescription": "project creation"
},
{
"max": 1,
"template": "cms_installation",
"templateDescription": "cms installation"
}
],
"products": [
{
"id": "custompackage_run",
"description": "Custom package run",
"quantityCalculation": null,
"productPrice": {
"id": 16147,
"period": 1,
"currency": "EUR",
"price": "1200",
"timing": "pre"
}
}
]
}
}
/custompackages
Create a new custompackage
List of all available custompackages
post /custompackages
Create a new custompackage
Body
Media type: application/json
Type: object
Properties- name: required(string)
Name
- customPackageName: required(string)
CustomPackageName
- autoUpgrades: (string)
A csv list of upgrades' names
- autoTeams: (string)
A csv list of team ids
- organisation: required(integer)
The unique identifier of an organisation
Example:
{
"name": "myCustomPackage",
"customPackageName": "drupal_run",
"autoUpgrades": "database_5,database_10",
"autoTeams": "12,34",
"organisation": 123
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"customPackage": {
"id": 7,
"name": "MyCustomPackage",
"customPackageName": "drupal_run",
"type": "run",
"status": "ok",
"params": {
"name": {
"displayName": {
"en": "Project name",
"nl": "Project naam"
},
"type": "string",
"required": true,
"default": null,
"readOnly": false,
"requiredByRootTask": true
}
},
"definition": {
"name": "drupal_run",
"displayName": {
"en": "Drupal run",
"nl": "Drupal run"
},
"description": {
"en": "Drupal run",
"nl": "Drupal run"
},
"entity": "drupal",
"type": "run",
"destination": "systemgroup",
"roles": [
"ROLE_CUSTADMIN",
"ROLE_ADMIN"
],
"labels": {
"type": "Application",
"cms": "Drupal",
"kickstart": true,
"featured": {
"name": {
"en": "Drupal website",
"nl": "Drupal website"
},
"description": {
"en": "Drupal run",
"nl": "Drupal run"
},
"features": [
{
"text": {
"en": "Drupal run",
"nl": "Drupal run"
}
}
],
"link": "drupal"
},
"order": 1
},
"content": {
"description": {
"en": "Drupal predefined",
"nl": "Drupal predefined"
},
"recommended": false,
"features": [
{
"text": {
"en": "Drupal predefined item",
"nl": "Drupal predefined item"
},
"value": {
"en": "-",
"nl": "-"
},
"icon": "predefined_item_icon"
}
]
},
"parameters": {
"name": {
"displayName": {
"en": "Project name",
"nl": "Project naam"
},
"type": "string",
"required": true,
"default": null,
"readOnly": false,
"requiredByRootTask": true
},
"option": {
"displayName": {
"en": "Option",
"nl": "Option"
},
"type": "string",
"default": "Drupal",
"required": false,
"readOnly": true,
"requiredByRootTask": false
}
},
"templates": [
{
"name": "app_creation",
"displayName": {
"en": "Drupal leamp project",
"nl": "Drupal leamp project"
},
"type": "app",
"ord": 1,
"limitGroup": null
},
{
"name": "php_component_creation_allocation",
"displayName": {
"en": "Drupal php component",
"nl": "Drupal php component"
},
"type": "app",
"ord": 2,
"limitGroup": "application"
},
{
"name": "mysql_component_creation_allocation",
"displayName": {
"en": "Drupal mysql component",
"nl": "Drupal mysql component"
},
"type": "app",
"ord": 3,
"limitGroup": "database"
},
{
"name": "cms_installation",
"displayName": {
"en": "Drupal installation",
"nl": "Drupal installation"
},
"type": "app",
"ord": 4,
"limitGroup": null
}
],
"allowedUpgradesDowngrades": [
"drupal_walk",
"drupal_fly"
],
"components": {
"database": {
"type": "database",
"description": "database",
"sharedResource": false,
"max": 10,
"uniqueComponentType": true,
"ruleIdentifier": "database",
"resources": [
{
"type": "size",
"displayType": "size",
"description": "size",
"unit": "GB",
"value": 5
}
],
"allowedTemplates": [
{
"componentType": "mysql",
"template": "mysql_component_creation_allocation",
"templateDescription": "mysql appcomponent"
},
{
"componentType": "mongodb",
"template": "mongodb_component_creation_allocation",
"templateDescription": "mongodb appcomponent"
}
],
"allowedUpgrades": [
{
"name": "database_5",
"type": "size",
"description": "Database upgrade 5GB",
"value": 5,
"unit": "GB"
},
{
"name": "database_10",
"type": "size",
"description": "Database upgrade 10GB",
"value": 10,
"unit": "GB"
},
{
"name": "database_extra_component_5",
"type": "extra_component",
"description": "Extra 5 databases",
"value": 5,
"unit": "unit",
"addToMax": true
}
]
},
"application": {
"type": "application",
"description": "application",
"sharedResources": true,
"max": 1,
"uniqueComponentType": true,
"ruleIdentifier": "php_application",
"resources": [
{
"type": "application",
"displayType": "application",
"description": "application",
"unit": "GB",
"value": 1
},
{
"type": "opcache_apcu",
"displayType": "Opcache/APCu",
"description": "Opcache/APCu",
"unit": "MB",
"value": 512
},
{
"type": "total_memory",
"displayType": "total memory",
"description": "total memory",
"unit": "GB",
"value": 1
}
],
"allowedTemplates": [
{
"componentType": "php",
"template": "php_component_creation_allocation",
"templateDescription": "php appcomponent",
"selects": [
"version"
]
}
],
"allowedUpgrades": []
},
"page_cache": {
"type": "page_cache",
"description": "Page caching with varnish",
"sharedResources": true,
"max": 1,
"uniqueComponentType": true,
"ruleIdentifier": "page_cache",
"resources": [
{
"type": "memory",
"displayType": "memory",
"description": "memory",
"unit": "GB",
"value": 1
}
],
"allowedTemplates": [
{
"componentType": "varnish",
"template": "varnish_component_creation_allocation",
"templateDescription": "varnish appcomponent"
}
],
"allowedUpgrades": [
{
"name": "varnish_256",
"type": "memory",
"description": "Varnish upgrade to 256mb",
"value": 256,
"unit": "MB"
},
{
"name": "memory_512",
"type": "memory",
"description": "Varnish upgrade to 512mb",
"value": 512,
"unit": "MB"
}
]
},
"object_cache": {
"type": "object_cache",
"description": "Object cache in redis or memcached",
"sharedResource": true,
"max": 1,
"uniqueComponentType": false,
"ruleIdentifier": "object_cache",
"resources": [
{
"type": "memory",
"displayType": "memory",
"description": "memory",
"unit": "MB",
"value": 512
}
],
"allowedTemplates": [
{
"componentType": "redis",
"template": "redis_component_creation_allocation",
"templateDescription": "redis appcomponent"
},
{
"componentType": "memcached",
"template": "memcached_component_creation_allocation",
"templateDescription": "memcached appcomponent"
}
],
"allowedUpgrades": []
},
"extra_vhosts": {
"type": "extra_vhosts",
"description": "Extra virtual hosts",
"sharedResource": true,
"max": null,
"uniqueComponentType": true,
"ruleIdentifier": "extra_vhosts",
"resources": [],
"allowedTemplates": [
{
"componentType": "phplegacy",
"template": "phplegacy_component_creation_allocation",
"templateDescription": "phplegacy appcomponent"
}
],
"allowedUpgrades": []
},
"optional_component": {
"type": "optional_component",
"description": "Optional component",
"sharedResource": true,
"max": 2,
"uniqueComponentType": false,
"ruleIdentifier": "optional_component",
"resources": [
{
"type": "memory",
"displayType": "memory",
"description": "memory",
"unit": "MB",
"value": 512
}
],
"allowedTemplates": [
{
"componentType": "redis",
"template": "redis_component_creation_allocation",
"templateDescription": "redis appcomponent"
},
{
"componentType": "memcached",
"template": "memcached_component_creation_allocation",
"templateDescription": "memcached appcomponent"
},
{
"componentType": "nodejs",
"template": "nodejs_component_creation_allocation",
"templateDescription": "nodejs appcomponent"
},
{
"componentType": "rabbitmq",
"template": "rabbitmq_component_creation_allocation",
"templateDescription": "rabbitmq appcomponent"
},
{
"componentType": "elasticsearch",
"template": "elasticsearch_component_creation_allocation",
"templateDescription": "elasticsearch appcomponent"
},
{
"componentType": "worker",
"template": "worker_component_creation_allocation",
"templateDescription": "worker appcomponent"
},
{
"componentType": "url",
"template": "url_component_creation_allocation",
"templateDescription": "url appcomponent"
}
],
"allowedUpgrades": [
{
"name": "optional_extra_component_5",
"type": "extra_component",
"description": "Extra 5 components from the list",
"value": 5,
"unit": "unit",
"addToMax": true
}
]
}
},
"extra_templates": [
{
"max": null,
"template": "auto_url_creation",
"templateDescription": "url on php appcomponent"
},
{
"max": 1,
"template": "domain_creation",
"templateDescription": "domain creation"
},
{
"max": null,
"allowedTemplates": null,
"template": "domain_auto_url_creation",
"templateDescription": "url on php appcomponent linked to the newly created domain"
},
{
"max": 1,
"allowedTemplates": null,
"template": "app_creation",
"templateDescription": "project creation"
},
{
"max": 1,
"template": "cms_installation",
"templateDescription": "cms installation"
}
]
},
"limits": {
"database": {
"type": "database",
"description": "database",
"sharedResource": false,
"max": 10,
"uniqueComponentType": true,
"ruleIdentifier": "database",
"resources": [
{
"type": "size",
"displayType": "size",
"description": "size",
"unit": "GB",
"value": 5
}
],
"allowedTemplates": [
{
"componentType": "mysql",
"template": "mysql_component_creation_allocation",
"templateDescription": "mysql appcomponent"
},
{
"componentType": "mongodb",
"template": "mongodb_component_creation_allocation",
"templateDescription": "mongodb appcomponent"
}
],
"allowedUpgrades": [
{
"name": "database_5",
"type": "size",
"description": "Database upgrade 5GB",
"value": 5,
"unit": "GB"
},
{
"name": "database_10",
"type": "size",
"description": "Database upgrade 10GB",
"value": 10,
"unit": "GB"
},
{
"name": "database_extra_component_5",
"type": "extra_component",
"description": "Extra 5 databases",
"value": 5,
"unit": "unit",
"addToMax": true
}
]
},
"application": {
"type": "application",
"description": "application",
"sharedResources": true,
"max": 1,
"uniqueComponentType": true,
"ruleIdentifier": "php_application",
"resources": [
{
"type": "application",
"displayType": "application",
"description": "application",
"unit": "GB",
"value": 1
},
{
"type": "opcache_apcu",
"displayType": "Opcache/APCu",
"description": "Opcache/APCu",
"unit": "MB",
"value": 512
},
{
"type": "total_memory",
"displayType": "total memory",
"description": "total memory",
"unit": "GB",
"value": 1
}
],
"allowedTemplates": [
{
"componentType": "php",
"template": "php_component_creation_allocation",
"templateDescription": "php appcomponent",
"selects": [
"version"
]
}
],
"allowedUpgrades": []
},
"page_cache": {
"type": "page_cache",
"description": "Page caching with varnish",
"sharedResources": true,
"max": 1,
"uniqueComponentType": true,
"ruleIdentifier": "page_cache",
"resources": [
{
"type": "memory",
"displayType": "memory",
"description": "memory",
"unit": "GB",
"value": 1
}
],
"allowedTemplates": [
{
"componentType": "varnish",
"template": "varnish_component_creation_allocation",
"templateDescription": "varnish appcomponent"
}
],
"allowedUpgrades": [
{
"name": "varnish_256",
"type": "memory",
"description": "Varnish upgrade to 256mb",
"value": 256,
"unit": "MB"
},
{
"name": "memory_512",
"type": "memory",
"description": "Varnish upgrade to 512mb",
"value": 512,
"unit": "MB"
}
]
},
"object_cache": {
"type": "object_cache",
"description": "Object cache in redis or memcached",
"sharedResource": true,
"max": 1,
"uniqueComponentType": false,
"ruleIdentifier": "object_cache",
"resources": [
{
"type": "memory",
"displayType": "memory",
"description": "memory",
"unit": "MB",
"value": 512
}
],
"allowedTemplates": [
{
"componentType": "redis",
"template": "redis_component_creation_allocation",
"templateDescription": "redis appcomponent"
},
{
"componentType": "memcached",
"template": "memcached_component_creation_allocation",
"templateDescription": "memcached appcomponent"
}
],
"allowedUpgrades": []
},
"extra_vhosts": {
"type": "extra_vhosts",
"description": "Extra virtual hosts",
"sharedResource": true,
"max": null,
"uniqueComponentType": true,
"ruleIdentifier": "extra_vhosts",
"resources": [],
"allowedTemplates": [
{
"componentType": "phplegacy",
"template": "phplegacy_component_creation_allocation",
"templateDescription": "phplegacy appcomponent"
}
],
"allowedUpgrades": []
},
"optional_component": {
"type": "optional_component",
"description": "Optional component",
"sharedResource": true,
"max": 2,
"uniqueComponentType": false,
"ruleIdentifier": "optional_component",
"resources": [
{
"type": "memory",
"displayType": "memory",
"description": "memory",
"unit": "MB",
"value": 512
}
],
"allowedTemplates": [
{
"componentType": "redis",
"template": "redis_component_creation_allocation",
"templateDescription": "redis appcomponent"
},
{
"componentType": "memcached",
"template": "memcached_component_creation_allocation",
"templateDescription": "memcached appcomponent"
},
{
"componentType": "nodejs",
"template": "nodejs_component_creation_allocation",
"templateDescription": "nodejs appcomponent"
},
{
"componentType": "rabbitmq",
"template": "rabbitmq_component_creation_allocation",
"templateDescription": "rabbitmq appcomponent"
},
{
"componentType": "elasticsearch",
"template": "elasticsearch_component_creation_allocation",
"templateDescription": "elasticsearch appcomponent"
},
{
"componentType": "worker",
"template": "worker_component_creation_allocation",
"templateDescription": "worker appcomponent"
},
{
"componentType": "url",
"template": "url_component_creation_allocation",
"templateDescription": "url appcomponent"
}
],
"allowedUpgrades": [
{
"name": "optional_extra_component_5",
"type": "extra_component",
"description": "Extra 5 components from the list",
"value": 5,
"unit": "unit",
"addToMax": true
}
]
}
},
"upgrades": [],
"customPackageTemplates": [
{
"id": 32,
"template": "app_creation",
"status": "ok",
"params": [],
"definition": {
"name": "app_creation",
"displayName": {
"en": "Project",
"nl": "Project"
},
"description": {
"en": "Project",
"nl": "Project"
},
"canBeUsedAlone": true,
"customPackagePossible": false,
"parentTemplates": [],
"roles": [
"ROLE_APP",
"ROLE_CUSTADMIN",
"ROLE_ADMIN"
],
"parameters": {
"name": {
"displayName": {
"en": "Project name",
"nl": "Projectnaam"
},
"type": "string",
"required": true,
"default": null,
"readOnly": false
},
"organisation": {
"displayName": {
"en": "Organisation id",
"nl": "Organisatie id"
},
"type": "organisation",
"required": false,
"default": null,
"readOnly": true,
"requiredByRootTask": true
}
},
"task": "app_creation",
"products": [],
"paymentPeriods": {
"pre": 1,
"post": null
}
},
"predefined": true,
"ord": 1,
"limitGroup": null,
"statusCategory": "green"
},
{
"id": 33,
"template": "php_component_creation_allocation",
"status": "ok",
"params": {
"path": "/public_html",
"composer_version": 2,
"version": "8.1",
"appcomponenttype": "php"
},
"definition": {
"name": "php_component_creation_allocation",
"displayName": {
"en": "Php component on shared systemgroup or project's server",
"nl": "Php component op gedeeld systemgroup or project's server"
},
"description": {
"en": "Create a php component on a shared systemgroup or project's server",
"nl": "Maak een php component aan op een gedeeld systemgroup or project's server"
},
"canBeUsedAlone": false,
"customPackagePossible": true,
"parentTemplates": {
"all": [
"app_creation"
],
"one_of": []
},
"roles": [
"ROLE_SYSTEM",
"ROLE_APP",
"ROLE_CUSTADMIN",
"ROLE_ADMIN"
],
"parameters": {
"appcomponenttype": {
"displayName": {
"en": "Appcomponent type",
"nl": "Appcomponent type"
},
"type": "string",
"default": "php",
"required": false,
"readOnly": true
},
"path": {
"displayName": {
"en": "Path",
"nl": "Pad"
},
"type": "string",
"default": "/public_html",
"required": false,
"readOnly": false
},
"composer_version": {
"displayName": {
"en": "Composer version",
"nl": "Composer versie"
},
"type": "string",
"default": 2,
"required": false,
"readOnly": false
},
"version": {
"displayName": {
"en": "Php version",
"nl": "Php versie"
},
"type": "choice",
"choices": [
"5.6",
"7.0",
"7.1",
"7.2",
"7.3",
"7.4",
"8.0",
"8.1"
],
"required": false,
"default": "8.1",
"readOnly": false
},
"app": {
"displayName": {
"en": "App id",
"nl": "App id"
},
"type": "rootTaskHasEntityId",
"default": "app_1",
"required": false,
"readOnly": true
}
},
"task": "php_component_creation_allocation",
"products": []
},
"predefined": true,
"ord": 2,
"limitGroup": "application",
"statusCategory": "green"
},
{
"id": 34,
"template": "mysql_component_creation_allocation",
"status": "ok",
"params": {
"appcomponenttype": "mysql"
},
"definition": {
"name": "mysql_component_creation_allocation",
"displayName": {
"en": "MySQL component on shared systemgroup or project's server",
"nl": "MySQL component op gedeeld systemgroup or project's server"
},
"description": {
"en": "Create a mysql component on a shared systemgroup or project's server",
"nl": "Maak een mysql component aan op een gedeeld systemgroup or project's server"
},
"canBeUsedAlone": false,
"customPackagePossible": true,
"parentTemplates": {
"all": [
"app_creation"
],
"one_of": []
},
"roles": [
"ROLE_SYSTEM",
"ROLE_APP",
"ROLE_CUSTADMIN",
"ROLE_ADMIN"
],
"parameters": {
"appcomponenttype": {
"displayName": {
"en": "Appcomponent type",
"nl": "Appcomponent type"
},
"type": "string",
"default": "mysql",
"required": false,
"readOnly": true
},
"app": {
"displayName": {
"en": "App id",
"nl": "App id"
},
"type": "rootTaskHasEntityId",
"default": "app_1",
"required": false,
"readOnly": true
}
},
"task": "basic_component_creation_allocation",
"products": []
},
"predefined": true,
"ord": 3,
"limitGroup": "database",
"statusCategory": "green"
},
{
"id": 35,
"template": "cms_installation",
"status": "ok",
"params": {
"option": "Drupal"
},
"definition": {
"name": "cms_installation",
"displayName": {
"en": "Action component",
"nl": "Action component"
},
"description": {
"en": "Install extra functionalities for component",
"nl": "Install extra functionalities for component"
},
"canBeUsedAlone": false,
"customPackagePossible": true,
"parentTemplates": {
"all": [],
"one_of": [
"php_component_creation",
"php_component_creation_shared"
]
},
"roles": [
"ROLE_SYSTEM",
"ROLE_APP",
"ROLE_CUSTADMIN",
"ROLE_ADMIN"
],
"parameters": {
"appcomponent": {
"displayName": {
"en": "Appcomponent id",
"nl": "Appcomponent id"
},
"type": "rootTaskHasEntityId",
"default": null,
"required": false,
"readOnly": true
},
"option": {
"displayName": {
"en": "Option",
"nl": "Option"
},
"type": "string",
"default": null,
"required": true,
"readOnly": false,
"disableEdit": true
}
},
"task": "cms_installation",
"products": []
},
"predefined": true,
"ord": 4,
"limitGroup": null,
"statusCategory": "green"
}
],
"organisation": {
"id": 1,
"name": "MyOrganisation"
},
"statusCategory": "green",
"teams": [
{
"id": 14,
"name": "MyTeam",
"adminOnly": false,
"organisationId": 1
}
],
"countTeams": 1
}
}
HTTP status code 400
Validation of new custompackage failed
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /custompackages
List of all available custompackages
Query Parameters
- status: (string)
- type: (string)
- organisationId: (integer - default: 0)
- customPackageName: (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": 8,
"customPackages": [
{
"id": 25,
"name": "MyCustomPackage",
"customPackageName": "drupal_walk",
"type": "walk",
"status": "ok",
"upgrades": [],
"organisation": {
"id": 1,
"name": "My organisation"
},
"statusCategory": "green",
"templatesCount": 10,
"templatesCountByLimitGroup": {
"extra_templates": 2,
"application": 1,
"database": 2,
"extra_vhosts": 5
},
"applicationAndDatabase": "php/mysql"
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Update a custompackage
Delete a custompackage
Get a custompackage
put /custompackages/{custompackageId}
Update a custompackage
URI Parameters
- custompackageId: required(string)
The unique identifier of a custompackage
Body
Media type: application/json
Type: object
Properties- name: required(string)
Name
- customPackageName: required(string)
CustomPackageName
- autoUpgrades: (string)
A csv list of upgrades' names
- autoTeams: (string)
A csv list of team ids
- organisation: required(integer)
The unique identifier of an organisation
Example:
{
"name": "myCustomPackage",
"customPackageName": "drupal_run",
"autoUpgrades": "database_5,database_10",
"autoTeams": "12,34",
"organisation": 123
}
HTTP status code 204
Response when update of a custompackage succeeded
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a custompackage
HTTP status code 404
Response when custompackage is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
delete /custompackages/{custompackageId}
Delete a custompackage
URI Parameters
- custompackageId: required(string)
The unique identifier of a custompackage
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 custompackage
HTTP status code 404
Response when custompackage is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /custompackages/{custompackageId}
Get a custompackage
URI Parameters
- custompackageId: required(string)
The unique identifier of a custompackage
HTTP status code 200
Response when custompackage is found
Body
Media type: application/json
Type: object
Example:
{
"customPackage": {
"id": 7,
"name": "MyCustomPackage",
"customPackageName": "drupal_run",
"type": "run",
"status": "ok",
"params": {
"name": {
"displayName": {
"en": "Project name",
"nl": "Project naam"
},
"type": "string",
"required": true,
"default": null,
"readOnly": false,
"requiredByRootTask": true
}
},
"definition": {
"name": "drupal_run",
"displayName": {
"en": "Drupal run",
"nl": "Drupal run"
},
"description": {
"en": "Drupal run",
"nl": "Drupal run"
},
"entity": "drupal",
"type": "run",
"destination": "systemgroup",
"roles": [
"ROLE_CUSTADMIN",
"ROLE_ADMIN"
],
"labels": {
"type": "Application",
"cms": "Drupal",
"kickstart": true,
"featured": {
"name": {
"en": "Drupal website",
"nl": "Drupal website"
},
"description": {
"en": "Drupal run",
"nl": "Drupal run"
},
"features": [
{
"text": {
"en": "Drupal run",
"nl": "Drupal run"
}
}
],
"link": "drupal"
},
"order": 1
},
"content": {
"description": {
"en": "Drupal predefined",
"nl": "Drupal predefined"
},
"recommended": false,
"features": [
{
"text": {
"en": "Drupal predefined item",
"nl": "Drupal predefined item"
},
"value": {
"en": "-",
"nl": "-"
},
"icon": "predefined_item_icon"
}
]
},
"parameters": {
"name": {
"displayName": {
"en": "Project name",
"nl": "Project naam"
},
"type": "string",
"required": true,
"default": null,
"readOnly": false,
"requiredByRootTask": true
},
"option": {
"displayName": {
"en": "Option",
"nl": "Option"
},
"type": "string",
"default": "Drupal",
"required": false,
"readOnly": true,
"requiredByRootTask": false
}
},
"templates": [
{
"name": "app_creation",
"displayName": {
"en": "Drupal leamp project",
"nl": "Drupal leamp project"
},
"type": "app",
"ord": 1,
"limitGroup": null
},
{
"name": "php_component_creation_allocation",
"displayName": {
"en": "Drupal php component",
"nl": "Drupal php component"
},
"type": "app",
"ord": 2,
"limitGroup": "application"
},
{
"name": "mysql_component_creation_allocation",
"displayName": {
"en": "Drupal mysql component",
"nl": "Drupal mysql component"
},
"type": "app",
"ord": 3,
"limitGroup": "database"
},
{
"name": "cms_installation",
"displayName": {
"en": "Drupal installation",
"nl": "Drupal installation"
},
"type": "app",
"ord": 4,
"limitGroup": null
}
],
"allowedUpgradesDowngrades": [
"drupal_walk",
"drupal_fly"
],
"components": {
"database": {
"type": "database",
"description": "database",
"sharedResource": false,
"max": 10,
"uniqueComponentType": true,
"ruleIdentifier": "database",
"resources": [
{
"type": "size",
"displayType": "size",
"description": "size",
"unit": "GB",
"value": 5
}
],
"allowedTemplates": [
{
"componentType": "mysql",
"template": "mysql_component_creation_allocation",
"templateDescription": "mysql appcomponent"
},
{
"componentType": "mongodb",
"template": "mongodb_component_creation_allocation",
"templateDescription": "mongodb appcomponent"
}
],
"allowedUpgrades": [
{
"name": "database_5",
"type": "size",
"description": "Database upgrade 5GB",
"value": 5,
"unit": "GB"
},
{
"name": "database_10",
"type": "size",
"description": "Database upgrade 10GB",
"value": 10,
"unit": "GB"
},
{
"name": "database_extra_component_5",
"type": "extra_component",
"description": "Extra 5 databases",
"value": 5,
"unit": "unit",
"addToMax": true
}
]
},
"application": {
"type": "application",
"description": "application",
"sharedResources": true,
"max": 1,
"uniqueComponentType": true,
"ruleIdentifier": "php_application",
"resources": [
{
"type": "application",
"displayType": "application",
"description": "application",
"unit": "GB",
"value": 1
},
{
"type": "opcache_apcu",
"displayType": "Opcache/APCu",
"description": "Opcache/APCu",
"unit": "MB",
"value": 512
},
{
"type": "total_memory",
"displayType": "total memory",
"description": "total memory",
"unit": "GB",
"value": 1
}
],
"allowedTemplates": [
{
"componentType": "php",
"template": "php_component_creation_allocation",
"templateDescription": "php appcomponent",
"selects": [
"version"
]
}
],
"allowedUpgrades": []
},
"page_cache": {
"type": "page_cache",
"description": "Page caching with varnish",
"sharedResources": true,
"max": 1,
"uniqueComponentType": true,
"ruleIdentifier": "page_cache",
"resources": [
{
"type": "memory",
"displayType": "memory",
"description": "memory",
"unit": "GB",
"value": 1
}
],
"allowedTemplates": [
{
"componentType": "varnish",
"template": "varnish_component_creation_allocation",
"templateDescription": "varnish appcomponent"
}
],
"allowedUpgrades": [
{
"name": "varnish_256",
"type": "memory",
"description": "Varnish upgrade to 256mb",
"value": 256,
"unit": "MB"
},
{
"name": "memory_512",
"type": "memory",
"description": "Varnish upgrade to 512mb",
"value": 512,
"unit": "MB"
}
]
},
"object_cache": {
"type": "object_cache",
"description": "Object cache in redis or memcached",
"sharedResource": true,
"max": 1,
"uniqueComponentType": false,
"ruleIdentifier": "object_cache",
"resources": [
{
"type": "memory",
"displayType": "memory",
"description": "memory",
"unit": "MB",
"value": 512
}
],
"allowedTemplates": [
{
"componentType": "redis",
"template": "redis_component_creation_allocation",
"templateDescription": "redis appcomponent"
},
{
"componentType": "memcached",
"template": "memcached_component_creation_allocation",
"templateDescription": "memcached appcomponent"
}
],
"allowedUpgrades": []
},
"extra_vhosts": {
"type": "extra_vhosts",
"description": "Extra virtual hosts",
"sharedResource": true,
"max": null,
"uniqueComponentType": true,
"ruleIdentifier": "extra_vhosts",
"resources": [],
"allowedTemplates": [
{
"componentType": "phplegacy",
"template": "phplegacy_component_creation_allocation",
"templateDescription": "phplegacy appcomponent"
}
],
"allowedUpgrades": []
},
"optional_component": {
"type": "optional_component",
"description": "Optional component",
"sharedResource": true,
"max": 2,
"uniqueComponentType": false,
"ruleIdentifier": "optional_component",
"resources": [
{
"type": "memory",
"displayType": "memory",
"description": "memory",
"unit": "MB",
"value": 512
}
],
"allowedTemplates": [
{
"componentType": "redis",
"template": "redis_component_creation_allocation",
"templateDescription": "redis appcomponent"
},
{
"componentType": "memcached",
"template": "memcached_component_creation_allocation",
"templateDescription": "memcached appcomponent"
},
{
"componentType": "nodejs",
"template": "nodejs_component_creation_allocation",
"templateDescription": "nodejs appcomponent"
},
{
"componentType": "rabbitmq",
"template": "rabbitmq_component_creation_allocation",
"templateDescription": "rabbitmq appcomponent"
},
{
"componentType": "elasticsearch",
"template": "elasticsearch_component_creation_allocation",
"templateDescription": "elasticsearch appcomponent"
},
{
"componentType": "worker",
"template": "worker_component_creation_allocation",
"templateDescription": "worker appcomponent"
},
{
"componentType": "url",
"template": "url_component_creation_allocation",
"templateDescription": "url appcomponent"
}
],
"allowedUpgrades": [
{
"name": "optional_extra_component_5",
"type": "extra_component",
"description": "Extra 5 components from the list",
"value": 5,
"unit": "unit",
"addToMax": true
}
]
}
},
"extra_templates": [
{
"max": null,
"template": "auto_url_creation",
"templateDescription": "url on php appcomponent"
},
{
"max": 1,
"template": "domain_creation",
"templateDescription": "domain creation"
},
{
"max": null,
"allowedTemplates": null,
"template": "domain_auto_url_creation",
"templateDescription": "url on php appcomponent linked to the newly created domain"
},
{
"max": 1,
"allowedTemplates": null,
"template": "app_creation",
"templateDescription": "project creation"
},
{
"max": 1,
"template": "cms_installation",
"templateDescription": "cms installation"
}
]
},
"limits": {
"database": {
"type": "database",
"description": "database",
"sharedResource": false,
"max": 10,
"uniqueComponentType": true,
"ruleIdentifier": "database",
"resources": [
{
"type": "size",
"displayType": "size",
"description": "size",
"unit": "GB",
"value": 5
}
],
"allowedTemplates": [
{
"componentType": "mysql",
"template": "mysql_component_creation_allocation",
"templateDescription": "mysql appcomponent"
},
{
"componentType": "mongodb",
"template": "mongodb_component_creation_allocation",
"templateDescription": "mongodb appcomponent"
}
],
"allowedUpgrades": [
{
"name": "database_5",
"type": "size",
"description": "Database upgrade 5GB",
"value": 5,
"unit": "GB"
},
{
"name": "database_10",
"type": "size",
"description": "Database upgrade 10GB",
"value": 10,
"unit": "GB"
},
{
"name": "database_extra_component_5",
"type": "extra_component",
"description": "Extra 5 databases",
"value": 5,
"unit": "unit",
"addToMax": true
}
]
},
"application": {
"type": "application",
"description": "application",
"sharedResources": true,
"max": 1,
"uniqueComponentType": true,
"ruleIdentifier": "php_application",
"resources": [
{
"type": "application",
"displayType": "application",
"description": "application",
"unit": "GB",
"value": 1
},
{
"type": "opcache_apcu",
"displayType": "Opcache/APCu",
"description": "Opcache/APCu",
"unit": "MB",
"value": 512
},
{
"type": "total_memory",
"displayType": "total memory",
"description": "total memory",
"unit": "GB",
"value": 1
}
],
"allowedTemplates": [
{
"componentType": "php",
"template": "php_component_creation_allocation",
"templateDescription": "php appcomponent",
"selects": [
"version"
]
}
],
"allowedUpgrades": []
},
"page_cache": {
"type": "page_cache",
"description": "Page caching with varnish",
"sharedResources": true,
"max": 1,
"uniqueComponentType": true,
"ruleIdentifier": "page_cache",
"resources": [
{
"type": "memory",
"displayType": "memory",
"description": "memory",
"unit": "GB",
"value": 1
}
],
"allowedTemplates": [
{
"componentType": "varnish",
"template": "varnish_component_creation_allocation",
"templateDescription": "varnish appcomponent"
}
],
"allowedUpgrades": [
{
"name": "varnish_256",
"type": "memory",
"description": "Varnish upgrade to 256mb",
"value": 256,
"unit": "MB"
},
{
"name": "memory_512",
"type": "memory",
"description": "Varnish upgrade to 512mb",
"value": 512,
"unit": "MB"
}
]
},
"object_cache": {
"type": "object_cache",
"description": "Object cache in redis or memcached",
"sharedResource": true,
"max": 1,
"uniqueComponentType": false,
"ruleIdentifier": "object_cache",
"resources": [
{
"type": "memory",
"displayType": "memory",
"description": "memory",
"unit": "MB",
"value": 512
}
],
"allowedTemplates": [
{
"componentType": "redis",
"template": "redis_component_creation_allocation",
"templateDescription": "redis appcomponent"
},
{
"componentType": "memcached",
"template": "memcached_component_creation_allocation",
"templateDescription": "memcached appcomponent"
}
],
"allowedUpgrades": []
},
"extra_vhosts": {
"type": "extra_vhosts",
"description": "Extra virtual hosts",
"sharedResource": true,
"max": null,
"uniqueComponentType": true,
"ruleIdentifier": "extra_vhosts",
"resources": [],
"allowedTemplates": [
{
"componentType": "phplegacy",
"template": "phplegacy_component_creation_allocation",
"templateDescription": "phplegacy appcomponent"
}
],
"allowedUpgrades": []
},
"optional_component": {
"type": "optional_component",
"description": "Optional component",
"sharedResource": true,
"max": 2,
"uniqueComponentType": false,
"ruleIdentifier": "optional_component",
"resources": [
{
"type": "memory",
"displayType": "memory",
"description": "memory",
"unit": "MB",
"value": 512
}
],
"allowedTemplates": [
{
"componentType": "redis",
"template": "redis_component_creation_allocation",
"templateDescription": "redis appcomponent"
},
{
"componentType": "memcached",
"template": "memcached_component_creation_allocation",
"templateDescription": "memcached appcomponent"
},
{
"componentType": "nodejs",
"template": "nodejs_component_creation_allocation",
"templateDescription": "nodejs appcomponent"
},
{
"componentType": "rabbitmq",
"template": "rabbitmq_component_creation_allocation",
"templateDescription": "rabbitmq appcomponent"
},
{
"componentType": "elasticsearch",
"template": "elasticsearch_component_creation_allocation",
"templateDescription": "elasticsearch appcomponent"
},
{
"componentType": "worker",
"template": "worker_component_creation_allocation",
"templateDescription": "worker appcomponent"
},
{
"componentType": "url",
"template": "url_component_creation_allocation",
"templateDescription": "url appcomponent"
}
],
"allowedUpgrades": [
{
"name": "optional_extra_component_5",
"type": "extra_component",
"description": "Extra 5 components from the list",
"value": 5,
"unit": "unit",
"addToMax": true
}
]
}
},
"upgrades": [],
"customPackageTemplates": [
{
"id": 32,
"template": "app_creation",
"status": "ok",
"params": [],
"definition": {
"name": "app_creation",
"displayName": {
"en": "Project",
"nl": "Project"
},
"description": {
"en": "Project",
"nl": "Project"
},
"canBeUsedAlone": true,
"customPackagePossible": false,
"parentTemplates": [],
"roles": [
"ROLE_APP",
"ROLE_CUSTADMIN",
"ROLE_ADMIN"
],
"parameters": {
"name": {
"displayName": {
"en": "Project name",
"nl": "Projectnaam"
},
"type": "string",
"required": true,
"default": null,
"readOnly": false
},
"organisation": {
"displayName": {
"en": "Organisation id",
"nl": "Organisatie id"
},
"type": "organisation",
"required": false,
"default": null,
"readOnly": true,
"requiredByRootTask": true
}
},
"task": "app_creation",
"products": [],
"paymentPeriods": {
"pre": 1,
"post": null
}
},
"predefined": true,
"ord": 1,
"limitGroup": null,
"statusCategory": "green"
},
{
"id": 33,
"template": "php_component_creation_allocation",
"status": "ok",
"params": {
"path": "/public_html",
"composer_version": 2,
"version": "8.1",
"appcomponenttype": "php"
},
"definition": {
"name": "php_component_creation_allocation",
"displayName": {
"en": "Php component on shared systemgroup or project's server",
"nl": "Php component op gedeeld systemgroup or project's server"
},
"description": {
"en": "Create a php component on a shared systemgroup or project's server",
"nl": "Maak een php component aan op een gedeeld systemgroup or project's server"
},
"canBeUsedAlone": false,
"customPackagePossible": true,
"parentTemplates": {
"all": [
"app_creation"
],
"one_of": []
},
"roles": [
"ROLE_SYSTEM",
"ROLE_APP",
"ROLE_CUSTADMIN",
"ROLE_ADMIN"
],
"parameters": {
"appcomponenttype": {
"displayName": {
"en": "Appcomponent type",
"nl": "Appcomponent type"
},
"type": "string",
"default": "php",
"required": false,
"readOnly": true
},
"path": {
"displayName": {
"en": "Path",
"nl": "Pad"
},
"type": "string",
"default": "/public_html",
"required": false,
"readOnly": false
},
"composer_version": {
"displayName": {
"en": "Composer version",
"nl": "Composer versie"
},
"type": "string",
"default": 2,
"required": false,
"readOnly": false
},
"version": {
"displayName": {
"en": "Php version",
"nl": "Php versie"
},
"type": "choice",
"choices": [
"5.6",
"7.0",
"7.1",
"7.2",
"7.3",
"7.4",
"8.0",
"8.1"
],
"required": false,
"default": "8.1",
"readOnly": false
},
"app": {
"displayName": {
"en": "App id",
"nl": "App id"
},
"type": "rootTaskHasEntityId",
"default": "app_1",
"required": false,
"readOnly": true
}
},
"task": "php_component_creation_allocation",
"products": []
},
"predefined": true,
"ord": 2,
"limitGroup": "application",
"statusCategory": "green"
},
{
"id": 34,
"template": "mysql_component_creation_allocation",
"status": "ok",
"params": {
"appcomponenttype": "mysql"
},
"definition": {
"name": "mysql_component_creation_allocation",
"displayName": {
"en": "MySQL component on shared systemgroup or project's server",
"nl": "MySQL component op gedeeld systemgroup or project's server"
},
"description": {
"en": "Create a mysql component on a shared systemgroup or project's server",
"nl": "Maak een mysql component aan op een gedeeld systemgroup or project's server"
},
"canBeUsedAlone": false,
"customPackagePossible": true,
"parentTemplates": {
"all": [
"app_creation"
],
"one_of": []
},
"roles": [
"ROLE_SYSTEM",
"ROLE_APP",
"ROLE_CUSTADMIN",
"ROLE_ADMIN"
],
"parameters": {
"appcomponenttype": {
"displayName": {
"en": "Appcomponent type",
"nl": "Appcomponent type"
},
"type": "string",
"default": "mysql",
"required": false,
"readOnly": true
},
"app": {
"displayName": {
"en": "App id",
"nl": "App id"
},
"type": "rootTaskHasEntityId",
"default": "app_1",
"required": false,
"readOnly": true
}
},
"task": "basic_component_creation_allocation",
"products": []
},
"predefined": true,
"ord": 3,
"limitGroup": "database",
"statusCategory": "green"
},
{
"id": 35,
"template": "cms_installation",
"status": "ok",
"params": {
"option": "Drupal"
},
"definition": {
"name": "cms_installation",
"displayName": {
"en": "Action component",
"nl": "Action component"
},
"description": {
"en": "Install extra functionalities for component",
"nl": "Install extra functionalities for component"
},
"canBeUsedAlone": false,
"customPackagePossible": true,
"parentTemplates": {
"all": [],
"one_of": [
"php_component_creation",
"php_component_creation_shared"
]
},
"roles": [
"ROLE_SYSTEM",
"ROLE_APP",
"ROLE_CUSTADMIN",
"ROLE_ADMIN"
],
"parameters": {
"appcomponent": {
"displayName": {
"en": "Appcomponent id",
"nl": "Appcomponent id"
},
"type": "rootTaskHasEntityId",
"default": null,
"required": false,
"readOnly": true
},
"option": {
"displayName": {
"en": "Option",
"nl": "Option"
},
"type": "string",
"default": null,
"required": true,
"readOnly": false,
"disableEdit": true
}
},
"task": "cms_installation",
"products": []
},
"predefined": true,
"ord": 4,
"limitGroup": null,
"statusCategory": "green"
}
],
"organisation": {
"id": 1,
"name": "MyOrganisation"
},
"statusCategory": "green",
"teams": [
{
"id": 14,
"name": "MyTeam",
"adminOnly": false,
"organisationId": 1
}
],
"countTeams": 1
}
}
HTTP status code 403
Response when a user does not have access to a custompackage
HTTP status code 404
Response when custompackage is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Get users for customPackage
get /custompackages/{custompackageId}/users
Get users for customPackage
URI Parameters
- custompackageId: required(string)
The unique identifier of a custompackage
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 customPackage
HTTP status code 404
Response when a customPackage is not found
Get organisations with acl access to a customPackage
get /custompackages/{custompackageId}/organisations
Get organisations with acl access to a customPackage
URI Parameters
- custompackageId: required(string)
The unique identifier of a custompackage
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",
"teams": [
{
"id": 14,
"name": "OwnerTeam"
}
]
},
{
"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",
"teams": [
{
"id": 15,
"name": "ResellerTeam"
}
]
},
{
"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",
"teams": []
}
]
}
HTTP status code 403
Response when a user does not have access to a customPackage
HTTP status code 404
Response when a customPackage is not found
Add access to a customPackage
post /custompackages/{custompackageId}/acls
Add access to a customPackage
URI Parameters
- custompackageId: required(string)
The unique identifier of a custompackage
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 customPackage was successfully added
Body
Media type: application/json
Type: object
Example:
{
"acl": {
"id": 3512372,
"object": "Level27\\BaseBundle\\Entity\\CustomPackage",
"objectId": 2,
"permissions": null,
"extra": null,
"type": "manual",
"organisation": {
"id": 123,
"name": "Test"
}
}
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a customPackage
HTTP status code 404
Response when a customPackage is not found
Remove access to a customPackage
delete /custompackages/{custompackageId}/acls/{organisationId}
Remove access to a customPackage
URI Parameters
- custompackageId: required(string)
The unique identifier of a custompackage
- organisationId: required(string)
Create a new template
List of all available templates
post /custompackages/{custompackageId}/templates
Create a new template
URI Parameters
- custompackageId: required(string)
The unique identifier of a custompackage
Body
Media type: application/json
Type: object
Properties- template: (string)
name of template
- limitGroup: (string)
LimitGroup
- optional parameters: (string)
Additional params can be required for specific package or template. See list of available templates: GET /templates?customPackagePossible=1.
Example:
{
"template": "mysql_component_creation_allocation",
"limitGroup": "database",
"customPackage": 123,
"host": "localhost"
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"customPackageTemplate": {
"id": 36,
"template": "mysql_component_creation_allocation",
"params": {
"appcomponenttype": "mysql"
},
"definition": {
"name": "mysql_component_creation_allocation",
"displayName": {
"en": "MySQL component on shared systemgroup or project's server",
"nl": "MySQL component op gedeeld systemgroup or project's server"
},
"description": {
"en": "Create a mysql component on a shared systemgroup or project's server",
"nl": "Maak een mysql component aan op een gedeeld systemgroup or project's server"
},
"canBeUsedAlone": false,
"customPackagePossible": true,
"parentTemplates": {
"all": [
"app_creation"
],
"one_of": []
},
"roles": [
"ROLE_SYSTEM",
"ROLE_APP",
"ROLE_CUSTADMIN",
"ROLE_ADMIN"
],
"parameters": {
"appcomponenttype": {
"displayName": {
"en": "Appcomponent type",
"nl": "Appcomponent type"
},
"type": "string",
"default": "mysql",
"required": false,
"readOnly": true
},
"app": {
"displayName": {
"en": "App id",
"nl": "App id"
},
"type": "rootTaskHasEntityId",
"default": "app_1",
"required": false,
"readOnly": true
}
},
"task": "basic_component_creation_allocation",
"products": []
},
"predefined": false,
"ord": 5,
"limitGroup": "database",
"customPackage": {
"id": 7,
"name": "MyCustomPackage"
}
}
}
HTTP status code 400
Validation of new template failed
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /custompackages/{custompackageId}/templates
List of all available templates
URI Parameters
- custompackageId: required(string)
The unique identifier of a custompackage
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:
{
"total": 5,
"customPackageTemplates": [
{
"id": 32,
"template": "app_creation",
"params": [],
"definition": {
"name": "app_creation",
"displayName": {
"en": "Project",
"nl": "Project"
},
"description": {
"en": "Project",
"nl": "Project"
},
"canBeUsedAlone": true,
"customPackagePossible": false,
"parentTemplates": [],
"roles": [
"ROLE_APP",
"ROLE_CUSTADMIN",
"ROLE_ADMIN"
],
"parameters": {
"name": {
"displayName": {
"en": "Project name",
"nl": "Projectnaam"
},
"type": "string",
"required": true,
"default": null,
"readOnly": false
},
"organisation": {
"displayName": {
"en": "Organisation id",
"nl": "Organisatie id"
},
"type": "organisation",
"required": false,
"default": null,
"readOnly": true,
"requiredByRootTask": true
}
},
"task": "app_creation",
"products": [],
"paymentPeriods": {
"pre": 1,
"post": null
}
},
"predefined": true,
"ord": 1,
"limitGroup": null,
"customPackage": {
"id": 7,
"name": "MyCustomPackage"
}
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Update a template
Delete a template
Get a template
put /custompackages/{custompackageId}/templates/{templateId}
Update a template
URI Parameters
- custompackageId: required(string)
The unique identifier of a custompackage
- templateId: required(string)
The unique identifier of a template
Body
Media type: application/json
Type: object
Properties- template: (string)
name of template
- limitGroup: (string)
LimitGroup
- optional parameters: (string)
Additional params can be required for specific package or template. See list of available templates: GET /templates?customPackagePossible=1.
Example:
{
"template": "mysql_component_creation_allocation",
"limitGroup": "database",
"customPackage": 123,
"host": "localhost"
}
HTTP status code 204
Response when update of a template succeeded
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a template
HTTP status code 404
Response when template is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
delete /custompackages/{custompackageId}/templates/{templateId}
Delete a template
URI Parameters
- custompackageId: required(string)
The unique identifier of a custompackage
- templateId: required(string)
The unique identifier of a template
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 template
HTTP status code 404
Response when template is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /custompackages/{custompackageId}/templates/{templateId}
Get a template
URI Parameters
- custompackageId: required(string)
The unique identifier of a custompackage
- templateId: required(string)
The unique identifier of a template
HTTP status code 200
Response when template is found
Body
Media type: application/json
Type: object
Example:
{
"customPackageTemplate": {
"id": 36,
"template": "mysql_component_creation_allocation",
"params": {
"appcomponenttype": "mysql"
},
"definition": {
"name": "mysql_component_creation_allocation",
"displayName": {
"en": "MySQL component on shared systemgroup or project's server",
"nl": "MySQL component op gedeeld systemgroup or project's server"
},
"description": {
"en": "Create a mysql component on a shared systemgroup or project's server",
"nl": "Maak een mysql component aan op een gedeeld systemgroup or project's server"
},
"canBeUsedAlone": false,
"customPackagePossible": true,
"parentTemplates": {
"all": [
"app_creation"
],
"one_of": []
},
"roles": [
"ROLE_SYSTEM",
"ROLE_APP",
"ROLE_CUSTADMIN",
"ROLE_ADMIN"
],
"parameters": {
"appcomponenttype": {
"displayName": {
"en": "Appcomponent type",
"nl": "Appcomponent type"
},
"type": "string",
"default": "mysql",
"required": false,
"readOnly": true
},
"app": {
"displayName": {
"en": "App id",
"nl": "App id"
},
"type": "rootTaskHasEntityId",
"default": "app_1",
"required": false,
"readOnly": true
}
},
"task": "basic_component_creation_allocation",
"products": []
},
"predefined": false,
"ord": 5,
"limitGroup": "database",
"customPackage": {
"id": 7,
"name": "MyCustomPackage"
}
}
}
HTTP status code 403
Response when a user does not have access to a template
HTTP status code 404
Response when template is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Update templates order
patch /custompackages/{custompackageId}/templates/{templateId}/order
Update templates order
URI Parameters
- custompackageId: required(string)
The unique identifier of a custompackage
- templateId: required(string)
The unique identifier of a template
Body
Media type: application/json
Type: object
Properties- order: required(integer)
Order
Example:
{
"order": 5
}
Get available parent teplates
get /custompackages/{custompackageId}/templates/{templateName}/allowed/parents
Get available parent teplates
URI Parameters
- custompackageId: required(string)
The unique identifier of a custompackage
- templateName: required(string)
HTTP status code 204
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"templates": [
{
"id": 138,
"template": "php_component_creation_allocation",
"params": {
"path": "/public_html",
"composer_version": 2,
"app_memory_limit": "256",
"version": "8.1",
"appcomponenttype": "php",
"identifier": "component_php_1"
}
},
{
"id": 142,
"template": "php_component_creation_allocation",
"params": {
"path": "/test",
"composer_version": 2,
"app_memory_limit": "256",
"version": "8.0",
"appcomponenttype": "php",
"identifier": "component_php_2"
}
}
]
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a customPackage
HTTP status code 404
Response when a customPackage is not found
Create rootTask from CustomPackage
post /custompackages/{custompackageId}/roottasks
Create rootTask from CustomPackage
URI Parameters
- custompackageId: required(string)
The unique identifier of a custompackage
Body
Media type: application/json
Type: any
Media type: type
Type: object
Properties- organisation: required(integer)
The unique identifier of an organisation
- optional parameters: (string)
Additional params can be required for specific customPackage See list of available customPackages: GET /custpackages.
Example:
{
"organisation": 123,
"name": "myNewEntities"
}
HTTP status code 201
Response when a rootTask was successfully created
Body
Media type: application/json
Type: any
Media type: type
Type: object
Example:
{
"rootTask": {
"id": 56,
"template": "level27_system_creation",
"package": null,
"status": "busy",
"paymentStatus": "payment_not_needed",
"params": {
"name": "testPackage",
"disk": 30,
"cpu": 1,
"memory": 1,
"managementType": "pro",
"systemproviderConfiguration": 27,
"systemimage": 85,
"autoNetworks": "1457",
"zone": 25,
"organisation": 28950
},
"dtExecute": "1652458051",
"products": [
{
"id": "system_level27_instance_flexible_linux",
"description": "Level27 Flexible configuration",
"quantityCalculation": null,
"productPrice": {
"id": 2400,
"period": 1,
"currency": "EUR",
"price": "6500",
"timing": "pre"
}
},
{
"id": "system_level27_instance_disk_2022",
"description": "Level27 instance Disk",
"quantityCalculation": "disk",
"productPrice": {
"id": 12969,
"period": 1,
"currency": "EUR",
"price": "15",
"timing": "pre"
}
},
{
"id": "system_level27_instance_cpu",
"description": "Level27 instance CPU",
"quantityCalculation": "cpu",
"productPrice": {
"id": 2420,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre"
}
},
{
"id": "system_level27_instance_memory_2022",
"description": "Level27 instance Memory",
"quantityCalculation": "memory",
"productPrice": {
"id": 12888,
"period": 1,
"currency": "EUR",
"price": "550",
"timing": "pre"
}
},
{
"id": "system_level27_firewall_and_networking",
"description": "Level27 Networking + standard firewall + WAF",
"quantityCalculation": "",
"productPrice": {
"id": 12883,
"period": 1,
"currency": "EUR",
"price": "1300",
"timing": "pre"
}
},
{
"id": "system_backup_plan_4_weeks",
"description": "Backup plan 4 weeks + license",
"quantityCalculation": "disk",
"productPrice": {
"id": 12884,
"period": 1,
"currency": "EUR",
"price": "39",
"timing": "pre"
}
}
],
"tasks": [
{
"id": 228,
"name": "level27_system_creation",
"template": "level27_system_creation",
"templateDefinition": "{\"name\":\"level27_system_creation\",\"displayName\":{\"en\":\"Level27 system\",\"nl\":\"Level27 systeem\"},\"description\":{\"en\":\"Create a new Level27 system\",\"nl\":\"Maak een nieuw Level27 systeem aan\"},\"canBeUsedAlone\":true,\"roles\":[\"ROLE_SYSTEM\",\"ROLE_CUSTADMIN\",\"ROLE_ADMIN\"],\"parameters\":{\"name\":{\"displayName\":{\"en\":\"System name\",\"nl\":\"Naam systeem\"},\"type\":\"string\",\"required\":true,\"default\":null,\"readOnly\":false},\"disk\":{\"displayName\":{\"en\":\"disk space\",\"nl\":\"Schijfruimte\"},\"type\":\"int\",\"required\":false,\"default\":30,\"readOnly\":false},\"cpu\":{\"displayName\":{\"en\":\"cpu\",\"nl\":\"cpu\"},\"type\":\"int\",\"required\":false,\"default\":1,\"readOnly\":false},\"memory\":{\"displayName\":{\"en\":\"memory\",\"nl\":\"Geheuegen\"},\"type\":\"int\",\"required\":false,\"default\":1,\"readOnly\":false},\"managementType\":{\"displayName\":{\"en\":\"Management type\",\"nl\":\"Management type\"},\"type\":\"text\",\"required\":false,\"default\":\"professional_level27\",\"readOnly\":true},\"systemproviderConfiguration\":{\"displayName\":{\"en\":\"Systemprovider configuration id\",\"nl\":\"Systemprovider configuratie id\"},\"type\":\"parameters.yml\",\"required\":false,\"default\":\"template_param_systemproviderConfiguration_1\",\"readOnly\":true,\"entityClass\":\"Level27\\\\SystemBundle\\\\Entity\\\\SystemproviderConfiguration\"},\"systemimage\":{\"displayName\":{\"en\":\"System image id\",\"nl\":\"Systeem image id\"},\"type\":\"parameters.yml\",\"required\":false,\"default\":\"template_param_systemimage_1\",\"readOnly\":true,\"entityClass\":\"Level27\\\\SystemBundle\\\\Entity\\\\Systemimage\"},\"autoNetworks\":{\"displayName\":{\"en\":\"Array of network ids\",\"nl\":\"Array van network ids\"},\"type\":\"parameters.yml_csv\",\"required\":false,\"default\":\"template_param_autoNetworks_1\",\"readOnly\":true,\"entityClass\":\"Level27\\\\SystemBundle\\\\Entity\\\\Network\"},\"zone\":{\"displayName\":{\"en\":\"Zone id\",\"nl\":\"Zone id\"},\"type\":\"parameters.yml\",\"required\":false,\"default\":\"template_param_zone_1\",\"readOnly\":true,\"entityClass\":\"Level27\\\\SystemBundle\\\\Entity\\\\Zone\"},\"organisation\":{\"displayName\":{\"en\":\"Organisation id\",\"nl\":\"Organisatie id\"},\"type\":\"organisation\",\"required\":false,\"default\":null,\"readOnly\":true}},\"products\":[\"system_level27_instance_flexible_linux\",\"system_level27_instance_disk_2022\",\"system_level27_instance_cpu\",\"system_level27_instance_memory_2022\",\"system_level27_firewall_and_networking\",\"system_backup_plan_4_weeks\"],\"task\":\"level27_system_creation\"}",
"params": {
"name": "testPackage",
"disk": 30,
"cpu": 1,
"memory": 1,
"managementType": "pro",
"systemproviderConfiguration": 27,
"systemimage": 85,
"autoNetworks": "1457",
"zone": 25,
"organisation": 28950
},
"status": "busy",
"ord": 1,
"taskSteps": [
{
"id": 384,
"name": "level27_system_insert",
"weight": 20,
"status": "done",
"description": {
"en": "Create a new Level27 system",
"nl": "Maak een nieuwe Level27 systeem"
},
"successMsg": {
"en": "System was successfully allocated",
"nl": "System allocatie is gelukt"
},
"failMsg": {
"en": "System allocation has failed",
"nl": "System allocatie is mislukt"
},
"service": "level27_system.system.handler",
"method": "post",
"params": {
"parameters": {
"type": "array",
"value": {
"name": {
"source": "parameters"
},
"cpu": {
"source": "parameters"
},
"memory": {
"source": "parameters"
},
"disk": {
"source": "parameters"
},
"managementType": {
"source": "parameters"
},
"systemproviderConfiguration": {
"source": "parameters"
},
"systemimage": {
"source": "parameters"
},
"zone": {
"source": "parameters"
},
"organisation": {
"source": "parameters"
},
"autoNetworks": {
"source": "parameters"
}
}
},
"extraParams": {
"type": "array",
"value": {
"job": {
"source": "job"
},
"createNetworks": {
"source": "string",
"value": true
},
"paidForPaymentRequiredOrganisation": {
"source": "string",
"value": true
}
}
}
},
"entityClass": "Level27\\SystemBundle\\Entity\\System",
"entityKey": "system",
"identifier": "level27_system_1",
"onFailureJob": "taskFailureNotification",
"ord": 1,
"statusCategory": "green"
},
{
"id": 385,
"name": "system_auto_install",
"weight": 50,
"status": "done",
"description": {
"en": "auto install",
"nl": "Automatische installatie"
},
"successMsg": {
"en": "System auto install was successful",
"nl": "Automatische installatie van systeem is gelukt"
},
"failMsg": {
"en": "System auto install failed",
"nl": "Automatische installatie van systeem is mislukt"
},
"service": "level27_system.system.handler",
"method": "executeAutoInstallAction",
"params": {
"system": {
"type": "entity",
"source": "rootTaskHasEntity",
"value": "level27_system_1"
},
"job": {
"type": "job"
}
},
"entityClass": null,
"entityKey": null,
"identifier": null,
"onFailureJob": "taskFailureNotification",
"ord": 2,
"statusCategory": "green"
},
{
"id": 386,
"name": "system_post_auto_install",
"weight": 50,
"status": "busy",
"description": {
"en": "create post auto install jobs",
"nl": "Maak post automatische installatie jobs aan"
},
"successMsg": {
"en": "Post auto install jobs suceeded",
"nl": "Post automatische installatie jobs zijn gelukt"
},
"failMsg": {
"en": "Post auto install jobs failed",
"nl": "Post automatische installatie jobs zijn gelukt"
},
"service": "level27_system.system.handler",
"method": "createPostAutoInstallJobs",
"params": {
"system": {
"type": "entity",
"source": "rootTaskHasEntity",
"value": "level27_system_1"
},
"skipSystemReboot": {
"type": "boolean",
"value": false
},
"job": {
"type": "job"
}
},
"entityClass": null,
"entityKey": null,
"identifier": null,
"onFailureJob": "taskFailureNotification",
"ord": 3,
"statusCategory": "yellow"
}
],
"statusCategory": "yellow"
}
],
"rootTaskHasEntities": [
{
"id": 144,
"status": 10,
"entityClass": "Level27\\SystemBundle\\Entity\\System",
"entityId": "3466",
"identifier": "level27_system_1"
}
],
"organisation": {
"id": 28950,
"name": "TestOrganisation"
},
"billableitem": {
"id": 11222,
"dtExpires": null
},
"statusCategory": "yellow",
"paymentStatusCategory": "green",
"maxWeight": 120,
"extraData": {
"system": {
"id": 1,
"name": "My system",
"fqdn": "ccdfwf3.test.eu",
"customerFqdn": "dcewfew.test.eu",
"status": 10,
"runningStatus": 0
}
}
}
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a customPackage
HTTP status code 404
Response when a customPackage is not found
Get allowed templates for customPackage
get /custompackages/{custompackageId}/templates/allowed
Get allowed templates for customPackage
URI Parameters
- custompackageId: required(string)
The unique identifier of a custompackage
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"componentTemplates": {
"database": {
"type": "database",
"description": "database",
"sharedResource": false,
"max": 10,
"uniqueComponentType": true,
"ruleIdentifier": "database",
"resources": [
{
"type": "size",
"displayType": "size",
"description": "size",
"unit": "GB",
"value": 5
}
],
"allowedTemplates": [
{
"componentType": "mysql",
"template": "mysql_component_creation_allocation",
"templateDescription": "mysql appcomponent"
},
{
"componentType": "mongodb",
"template": "mongodb_component_creation_allocation",
"templateDescription": "mongodb appcomponent"
}
],
"allowedUpgrades": [
{
"name": "database_5",
"type": "size",
"description": "Database upgrade 5GB",
"value": 5,
"unit": "GB"
},
{
"name": "database_10",
"type": "size",
"description": "Database upgrade 10GB",
"value": 10,
"unit": "GB"
},
{
"name": "database_extra_component_5",
"type": "extra_component",
"description": "Extra 5 databases",
"value": 5,
"unit": "unit",
"addToMax": true
}
],
"correctlyAddedTemplates": [
{
"id": 34,
"template": "mysql_component_creation_allocation",
"predefined": true
},
{
"id": 36,
"template": "mysql_component_creation_allocation",
"predefined": false
}
],
"invalidTemplates": [],
"maxCount": 10,
"actualCount": 2,
"canBeAddedCount": 8
},
"application": {
"type": "application",
"description": "application",
"sharedResources": true,
"max": 1,
"uniqueComponentType": true,
"ruleIdentifier": "php_application",
"resources": [
{
"type": "application",
"displayType": "application",
"description": "application",
"unit": "GB",
"value": 1
},
{
"type": "opcache_apcu",
"displayType": "Opcache/APCu",
"description": "Opcache/APCu",
"unit": "MB",
"value": 512
},
{
"type": "total_memory",
"displayType": "total memory",
"description": "total memory",
"unit": "GB",
"value": 1
}
],
"allowedTemplates": [
{
"componentType": "php",
"template": "php_component_creation_allocation",
"templateDescription": "php appcomponent",
"selects": [
"version"
]
}
],
"allowedUpgrades": [],
"correctlyAddedTemplates": [
{
"id": 33,
"template": "php_component_creation_allocation",
"predefined": true
}
],
"invalidTemplates": [],
"maxCount": 1,
"actualCount": 1,
"canBeAddedCount": 0
},
"page_cache": {
"type": "page_cache",
"description": "Page caching with varnish",
"sharedResources": true,
"max": 1,
"uniqueComponentType": true,
"ruleIdentifier": "page_cache",
"resources": [
{
"type": "memory",
"displayType": "memory",
"description": "memory",
"unit": "GB",
"value": 1
}
],
"allowedTemplates": [
{
"componentType": "varnish",
"template": "varnish_component_creation_allocation",
"templateDescription": "varnish appcomponent"
}
],
"allowedUpgrades": [
{
"name": "varnish_256",
"type": "memory",
"description": "Varnish upgrade to 256mb",
"value": 256,
"unit": "MB"
},
{
"name": "memory_512",
"type": "memory",
"description": "Varnish upgrade to 512mb",
"value": 512,
"unit": "MB"
}
],
"correctlyAddedTemplates": [],
"invalidTemplates": [],
"maxCount": 1,
"actualCount": 0,
"canBeAddedCount": 1
},
"object_cache": {
"type": "object_cache",
"description": "Object cache in redis or memcached",
"sharedResource": true,
"max": 1,
"uniqueComponentType": false,
"ruleIdentifier": "object_cache",
"resources": [
{
"type": "memory",
"displayType": "memory",
"description": "memory",
"unit": "MB",
"value": 512
}
],
"allowedTemplates": [
{
"componentType": "redis",
"template": "redis_component_creation_allocation",
"templateDescription": "redis appcomponent"
},
{
"componentType": "memcached",
"template": "memcached_component_creation_allocation",
"templateDescription": "memcached appcomponent"
}
],
"allowedUpgrades": [],
"correctlyAddedTemplates": [],
"invalidTemplates": [],
"maxCount": 1,
"actualCount": 0,
"canBeAddedCount": 1
},
"extra_vhosts": {
"type": "extra_vhosts",
"description": "Extra virtual hosts",
"sharedResource": true,
"max": null,
"uniqueComponentType": true,
"ruleIdentifier": "extra_vhosts",
"resources": [],
"allowedTemplates": [
{
"componentType": "phplegacy",
"template": "phplegacy_component_creation_allocation",
"templateDescription": "phplegacy appcomponent"
}
],
"allowedUpgrades": [],
"correctlyAddedTemplates": [],
"invalidTemplates": [],
"maxCount": null,
"actualCount": 0,
"canBeAddedCount": null
},
"optional_component": {
"type": "optional_component",
"description": "Optional component",
"sharedResource": true,
"max": 2,
"uniqueComponentType": false,
"ruleIdentifier": "optional_component",
"resources": [
{
"type": "memory",
"displayType": "memory",
"description": "memory",
"unit": "MB",
"value": 512
}
],
"allowedTemplates": [
{
"componentType": "redis",
"template": "redis_component_creation_allocation",
"templateDescription": "redis appcomponent"
},
{
"componentType": "memcached",
"template": "memcached_component_creation_allocation",
"templateDescription": "memcached appcomponent"
},
{
"componentType": "nodejs",
"template": "nodejs_component_creation_allocation",
"templateDescription": "nodejs appcomponent"
},
{
"componentType": "rabbitmq",
"template": "rabbitmq_component_creation_allocation",
"templateDescription": "rabbitmq appcomponent"
},
{
"componentType": "elasticsearch",
"template": "elasticsearch_component_creation_allocation",
"templateDescription": "elasticsearch appcomponent"
},
{
"componentType": "worker",
"template": "worker_component_creation_allocation",
"templateDescription": "worker appcomponent"
},
{
"componentType": "url",
"template": "url_component_creation_allocation",
"templateDescription": "url appcomponent"
}
],
"allowedUpgrades": [
{
"name": "optional_extra_component_5",
"type": "extra_component",
"description": "Extra 5 components from the list",
"value": 5,
"unit": "unit",
"addToMax": true
}
],
"correctlyAddedTemplates": [],
"invalidTemplates": [],
"maxCount": 2,
"actualCount": 0,
"canBeAddedCount": 2
}
},
"extraTemplates": [
{
"max": null,
"template": "auto_url_creation",
"templateDescription": "url on php appcomponent",
"maxCount": null,
"actualCount": 0,
"canBeAddedCount": null,
"correctlyAddedTemplates": [],
"invalidTemplates": []
},
{
"max": 1,
"template": "domain_creation",
"templateDescription": "domain creation",
"maxCount": 1,
"actualCount": 0,
"canBeAddedCount": 1,
"correctlyAddedTemplates": [],
"invalidTemplates": []
},
{
"max": null,
"allowedTemplates": null,
"template": "domain_auto_url_creation",
"templateDescription": "url on php appcomponent linked to the newly created domain",
"maxCount": null,
"actualCount": 0,
"canBeAddedCount": null,
"correctlyAddedTemplates": [],
"invalidTemplates": []
},
{
"max": 1,
"allowedTemplates": null,
"template": "app_creation",
"templateDescription": "project creation",
"maxCount": 1,
"actualCount": 1,
"canBeAddedCount": 0,
"correctlyAddedTemplates": [
{
"id": 32,
"template": "app_creation",
"predefined": true
}
],
"invalidTemplates": []
},
{
"max": 1,
"template": "cms_installation",
"templateDescription": "cms installation",
"maxCount": 1,
"actualCount": 1,
"canBeAddedCount": 0,
"correctlyAddedTemplates": [
{
"id": 35,
"template": "cms_installation",
"predefined": true
}
],
"invalidTemplates": []
}
]
}
HTTP status code 403
Response when a user does not have access to a customPackage
HTTP status code 404
Response when a customPackage is not found
Get allowed upgrades for customPackage
get /custompackages/{custompackageId}/upgrades/allowed
Get allowed upgrades for customPackage
URI Parameters
- custompackageId: required(string)
The unique identifier of a custompackage
Query Parameters
- organisationId: (integer - default: 0)
- agreementId: (integer)
agreement id
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"total": 6,
"upgrades": [
{
"name": "database_5",
"type": "size",
"description": "Database upgrade 5GB",
"value": 5,
"unit": "GB",
"maxAllowedUpgrades": 5,
"product": {
"id": "custompackage_run_database_5",
"description": "Custompackage run database 5GB",
"prices": [
{
"id": 16156,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"agreementPrices": [],
"defaultAgreementPrices": [
{
"id": 16156,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"allowQuantityChange": null,
"quantityCalculation": null
}
},
{
"name": "database_10",
"type": "size",
"description": "Database upgrade 10GB",
"value": 10,
"unit": "GB",
"maxAllowedUpgrades": 5,
"product": {
"id": "custompackage_run_database_10",
"description": "Custompackage run database 10GB",
"prices": [
{
"id": 16157,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"agreementPrices": [],
"defaultAgreementPrices": [
{
"id": 16157,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"allowQuantityChange": null,
"quantityCalculation": null
}
},
{
"name": "database_extra_component_5",
"type": "extra_component",
"description": "Extra 5 databases",
"value": 5,
"unit": "unit",
"addToMax": true,
"maxAllowedUpgrades": 5,
"product": {
"id": "custompackage_run_database_extra_component_5",
"description": "5 extra databases",
"prices": [
{
"id": 16158,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"agreementPrices": [],
"defaultAgreementPrices": [
{
"id": 16158,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"allowQuantityChange": null,
"quantityCalculation": null
}
},
{
"name": "varnish_256",
"type": "memory",
"description": "Varnish upgrade to 256mb",
"value": 256,
"unit": "MB",
"maxAllowedUpgrades": 5,
"product": {
"id": "custompackage_run_varnish_256",
"description": "Varnish 256MB",
"prices": [
{
"id": 16159,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"agreementPrices": [],
"defaultAgreementPrices": [
{
"id": 16159,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"allowQuantityChange": null,
"quantityCalculation": null
}
},
{
"name": "memory_512",
"type": "memory",
"description": "Varnish upgrade to 512mb",
"value": 512,
"unit": "MB",
"maxAllowedUpgrades": 5,
"product": {
"id": "custompackage_run_memory_512",
"description": "Memory 512MB",
"prices": [
{
"id": 16160,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"agreementPrices": [],
"defaultAgreementPrices": [
{
"id": 16160,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"allowQuantityChange": null,
"quantityCalculation": null
}
},
{
"name": "optional_extra_component_5",
"type": "extra_component",
"description": "Extra 5 components from the list",
"value": 5,
"unit": "unit",
"addToMax": true,
"maxAllowedUpgrades": 5,
"product": {
"id": "custompackage_run_optional_extra_component_5",
"description": "5 extra optional components",
"prices": [
{
"id": 16161,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"agreementPrices": [],
"defaultAgreementPrices": [
{
"id": 16161,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"allowQuantityChange": null,
"quantityCalculation": null
}
}
]
}
HTTP status code 403
Response when a user does not have access to a customPackage
HTTP status code 404
Response when a customPackage is not found
/roottasks
Create a new roottask
List of all available roottasks
post /roottasks
Create a new roottask
Body
Media type: application/json
Type: object
Properties- template: (string)
name of template
- package: (string)
name of package
- dtExecute: (string)
DateTime - timestamp
- organisation: required(integer)
The unique identifier of an organisation
- optional parameters: (string)
Additional params can be required for specific package or template. See list of available packages and templates: /packages and /templates.
Example:
{
"template": null,
"package": "magento_professional",
"dtExpires": null,
"organisation": 123,
"name": "myNewSystem"
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"rootTask": {
"id": 56,
"template": "level27_system_creation",
"package": null,
"status": "busy",
"paymentStatus": "payment_not_needed",
"params": {
"name": "testPackage",
"disk": 30,
"cpu": 1,
"memory": 1,
"managementType": "pro",
"systemproviderConfiguration": 27,
"systemimage": 85,
"autoNetworks": "1457",
"zone": 25,
"organisation": 28950
},
"dtExecute": "1652458051",
"products": [
{
"id": "system_level27_instance_flexible_linux",
"description": "Level27 Flexible configuration",
"quantityCalculation": null,
"productPrice": {
"id": 2400,
"period": 1,
"currency": "EUR",
"price": "6500",
"timing": "pre"
}
},
{
"id": "system_level27_instance_disk_2022",
"description": "Level27 instance Disk",
"quantityCalculation": "disk",
"productPrice": {
"id": 12969,
"period": 1,
"currency": "EUR",
"price": "15",
"timing": "pre"
}
},
{
"id": "system_level27_instance_cpu",
"description": "Level27 instance CPU",
"quantityCalculation": "cpu",
"productPrice": {
"id": 2420,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre"
}
},
{
"id": "system_level27_instance_memory_2022",
"description": "Level27 instance Memory",
"quantityCalculation": "memory",
"productPrice": {
"id": 12888,
"period": 1,
"currency": "EUR",
"price": "550",
"timing": "pre"
}
},
{
"id": "system_level27_firewall_and_networking",
"description": "Level27 Networking + standard firewall + WAF",
"quantityCalculation": "",
"productPrice": {
"id": 12883,
"period": 1,
"currency": "EUR",
"price": "1300",
"timing": "pre"
}
},
{
"id": "system_backup_plan_4_weeks",
"description": "Backup plan 4 weeks + license",
"quantityCalculation": "disk",
"productPrice": {
"id": 12884,
"period": 1,
"currency": "EUR",
"price": "39",
"timing": "pre"
}
}
],
"tasks": [
{
"id": 228,
"name": "level27_system_creation",
"template": "level27_system_creation",
"templateDefinition": "{\"name\":\"level27_system_creation\",\"displayName\":{\"en\":\"Level27 system\",\"nl\":\"Level27 systeem\"},\"description\":{\"en\":\"Create a new Level27 system\",\"nl\":\"Maak een nieuw Level27 systeem aan\"},\"canBeUsedAlone\":true,\"roles\":[\"ROLE_SYSTEM\",\"ROLE_CUSTADMIN\",\"ROLE_ADMIN\"],\"parameters\":{\"name\":{\"displayName\":{\"en\":\"System name\",\"nl\":\"Naam systeem\"},\"type\":\"string\",\"required\":true,\"default\":null,\"readOnly\":false},\"disk\":{\"displayName\":{\"en\":\"disk space\",\"nl\":\"Schijfruimte\"},\"type\":\"int\",\"required\":false,\"default\":30,\"readOnly\":false},\"cpu\":{\"displayName\":{\"en\":\"cpu\",\"nl\":\"cpu\"},\"type\":\"int\",\"required\":false,\"default\":1,\"readOnly\":false},\"memory\":{\"displayName\":{\"en\":\"memory\",\"nl\":\"Geheuegen\"},\"type\":\"int\",\"required\":false,\"default\":1,\"readOnly\":false},\"managementType\":{\"displayName\":{\"en\":\"Management type\",\"nl\":\"Management type\"},\"type\":\"text\",\"required\":false,\"default\":\"professional_level27\",\"readOnly\":true},\"systemproviderConfiguration\":{\"displayName\":{\"en\":\"Systemprovider configuration id\",\"nl\":\"Systemprovider configuratie id\"},\"type\":\"parameters.yml\",\"required\":false,\"default\":\"template_param_systemproviderConfiguration_1\",\"readOnly\":true,\"entityClass\":\"Level27\\\\SystemBundle\\\\Entity\\\\SystemproviderConfiguration\"},\"systemimage\":{\"displayName\":{\"en\":\"System image id\",\"nl\":\"Systeem image id\"},\"type\":\"parameters.yml\",\"required\":false,\"default\":\"template_param_systemimage_1\",\"readOnly\":true,\"entityClass\":\"Level27\\\\SystemBundle\\\\Entity\\\\Systemimage\"},\"autoNetworks\":{\"displayName\":{\"en\":\"Array of network ids\",\"nl\":\"Array van network ids\"},\"type\":\"parameters.yml_csv\",\"required\":false,\"default\":\"template_param_autoNetworks_1\",\"readOnly\":true,\"entityClass\":\"Level27\\\\SystemBundle\\\\Entity\\\\Network\"},\"zone\":{\"displayName\":{\"en\":\"Zone id\",\"nl\":\"Zone id\"},\"type\":\"parameters.yml\",\"required\":false,\"default\":\"template_param_zone_1\",\"readOnly\":true,\"entityClass\":\"Level27\\\\SystemBundle\\\\Entity\\\\Zone\"},\"organisation\":{\"displayName\":{\"en\":\"Organisation id\",\"nl\":\"Organisatie id\"},\"type\":\"organisation\",\"required\":false,\"default\":null,\"readOnly\":true}},\"products\":[\"system_level27_instance_flexible_linux\",\"system_level27_instance_disk_2022\",\"system_level27_instance_cpu\",\"system_level27_instance_memory_2022\",\"system_level27_firewall_and_networking\",\"system_backup_plan_4_weeks\"],\"task\":\"level27_system_creation\"}",
"params": {
"name": "testPackage",
"disk": 30,
"cpu": 1,
"memory": 1,
"managementType": "pro",
"systemproviderConfiguration": 27,
"systemimage": 85,
"autoNetworks": "1457",
"zone": 25,
"organisation": 28950
},
"status": "busy",
"ord": 1,
"taskSteps": [
{
"id": 384,
"name": "level27_system_insert",
"weight": 20,
"status": "done",
"description": {
"en": "Create a new Level27 system",
"nl": "Maak een nieuwe Level27 systeem"
},
"successMsg": {
"en": "System was successfully allocated",
"nl": "System allocatie is gelukt"
},
"failMsg": {
"en": "System allocation has failed",
"nl": "System allocatie is mislukt"
},
"service": "level27_system.system.handler",
"method": "post",
"params": {
"parameters": {
"type": "array",
"value": {
"name": {
"source": "parameters"
},
"cpu": {
"source": "parameters"
},
"memory": {
"source": "parameters"
},
"disk": {
"source": "parameters"
},
"managementType": {
"source": "parameters"
},
"systemproviderConfiguration": {
"source": "parameters"
},
"systemimage": {
"source": "parameters"
},
"zone": {
"source": "parameters"
},
"organisation": {
"source": "parameters"
},
"autoNetworks": {
"source": "parameters"
}
}
},
"extraParams": {
"type": "array",
"value": {
"job": {
"source": "job"
},
"createNetworks": {
"source": "string",
"value": true
},
"paidForPaymentRequiredOrganisation": {
"source": "string",
"value": true
}
}
}
},
"entityClass": "Level27\\SystemBundle\\Entity\\System",
"entityKey": "system",
"identifier": "level27_system_1",
"onFailureJob": "taskFailureNotification",
"ord": 1,
"statusCategory": "green"
},
{
"id": 385,
"name": "system_auto_install",
"weight": 50,
"status": "done",
"description": {
"en": "auto install",
"nl": "Automatische installatie"
},
"successMsg": {
"en": "System auto install was successful",
"nl": "Automatische installatie van systeem is gelukt"
},
"failMsg": {
"en": "System auto install failed",
"nl": "Automatische installatie van systeem is mislukt"
},
"service": "level27_system.system.handler",
"method": "executeAutoInstallAction",
"params": {
"system": {
"type": "entity",
"source": "rootTaskHasEntity",
"value": "level27_system_1"
},
"job": {
"type": "job"
}
},
"entityClass": null,
"entityKey": null,
"identifier": null,
"onFailureJob": "taskFailureNotification",
"ord": 2,
"statusCategory": "green"
},
{
"id": 386,
"name": "system_post_auto_install",
"weight": 50,
"status": "busy",
"description": {
"en": "create post auto install jobs",
"nl": "Maak post automatische installatie jobs aan"
},
"successMsg": {
"en": "Post auto install jobs suceeded",
"nl": "Post automatische installatie jobs zijn gelukt"
},
"failMsg": {
"en": "Post auto install jobs failed",
"nl": "Post automatische installatie jobs zijn gelukt"
},
"service": "level27_system.system.handler",
"method": "createPostAutoInstallJobs",
"params": {
"system": {
"type": "entity",
"source": "rootTaskHasEntity",
"value": "level27_system_1"
},
"skipSystemReboot": {
"type": "boolean",
"value": false
},
"job": {
"type": "job"
}
},
"entityClass": null,
"entityKey": null,
"identifier": null,
"onFailureJob": "taskFailureNotification",
"ord": 3,
"statusCategory": "yellow"
}
],
"statusCategory": "yellow"
}
],
"rootTaskHasEntities": [
{
"id": 144,
"status": 10,
"entityClass": "Level27\\SystemBundle\\Entity\\System",
"entityId": "3466",
"identifier": "level27_system_1"
}
],
"organisation": {
"id": 28950,
"name": "TestOrganisation"
},
"billableitem": {
"id": 11222,
"dtExpires": null
},
"statusCategory": "yellow",
"paymentStatusCategory": "green",
"maxWeight": 120,
"extraData": {
"system": {
"id": 1,
"name": "My system",
"fqdn": "ccdfwf3.test.eu",
"customerFqdn": "dcewfew.test.eu",
"status": 10,
"runningStatus": 0
}
}
}
}
HTTP status code 400
Validation of new roottask failed
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /roottasks
List of all available roottasks
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:
{
"total": 17,
"rootTasks": [
{
"id": 37,
"template": "system_resources_update",
"package": null,
"status": "done",
"paymentStatus": "payment_not_needed",
"params": {
"space": 40,
"cpu": 3,
"memory": 5,
"system": 1,
"volume": 2094
},
"dtExecute": "1651130732",
"products": [
"system_level27_instance_disk_2022",
"system_level27_instance_cpu",
"system_level27_instance_memory_2022",
"system_level27_firewall_and_networking",
"system_backup_plan_4_weeks"
],
"period": null,
"organisation": {
"id": 1,
"name": "My organisation"
},
"statusCategory": "green",
"paymentStatusCategory": "green",
"extraData": {
"system": {
"id": 1,
"name": "My system",
"fqdn": "wyx7ssmnnj222.l27powered.eu",
"customerFqdn": null,
"status": 10,
"runningStatus": 6
}
}
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Delete a roottask
Get a roottask
delete /roottasks/{roottaskId}
Delete a roottask
URI Parameters
- roottaskId: required(string)
The unique identifier of a roottask
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 roottask
HTTP status code 404
Response when roottask is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /roottasks/{roottaskId}
Get a roottask
URI Parameters
- roottaskId: required(string)
The unique identifier of a roottask
HTTP status code 200
Response when roottask is found
Body
Media type: application/json
Type: object
Example:
{
"rootTask": {
"id": 56,
"template": "level27_system_creation",
"package": null,
"status": "busy",
"paymentStatus": "payment_not_needed",
"params": {
"name": "testPackage",
"disk": 30,
"cpu": 1,
"memory": 1,
"managementType": "pro",
"systemproviderConfiguration": 27,
"systemimage": 85,
"autoNetworks": "1457",
"zone": 25,
"organisation": 28950
},
"dtExecute": "1652458051",
"products": [
{
"id": "system_level27_instance_flexible_linux",
"description": "Level27 Flexible configuration",
"quantityCalculation": null,
"productPrice": {
"id": 2400,
"period": 1,
"currency": "EUR",
"price": "6500",
"timing": "pre"
}
},
{
"id": "system_level27_instance_disk_2022",
"description": "Level27 instance Disk",
"quantityCalculation": "disk",
"productPrice": {
"id": 12969,
"period": 1,
"currency": "EUR",
"price": "15",
"timing": "pre"
}
},
{
"id": "system_level27_instance_cpu",
"description": "Level27 instance CPU",
"quantityCalculation": "cpu",
"productPrice": {
"id": 2420,
"period": 1,
"currency": "EUR",
"price": "1000",
"timing": "pre"
}
},
{
"id": "system_level27_instance_memory_2022",
"description": "Level27 instance Memory",
"quantityCalculation": "memory",
"productPrice": {
"id": 12888,
"period": 1,
"currency": "EUR",
"price": "550",
"timing": "pre"
}
},
{
"id": "system_level27_firewall_and_networking",
"description": "Level27 Networking + standard firewall + WAF",
"quantityCalculation": "",
"productPrice": {
"id": 12883,
"period": 1,
"currency": "EUR",
"price": "1300",
"timing": "pre"
}
},
{
"id": "system_backup_plan_4_weeks",
"description": "Backup plan 4 weeks + license",
"quantityCalculation": "disk",
"productPrice": {
"id": 12884,
"period": 1,
"currency": "EUR",
"price": "39",
"timing": "pre"
}
}
],
"tasks": [
{
"id": 228,
"name": "level27_system_creation",
"template": "level27_system_creation",
"templateDefinition": "{\"name\":\"level27_system_creation\",\"displayName\":{\"en\":\"Level27 system\",\"nl\":\"Level27 systeem\"},\"description\":{\"en\":\"Create a new Level27 system\",\"nl\":\"Maak een nieuw Level27 systeem aan\"},\"canBeUsedAlone\":true,\"roles\":[\"ROLE_SYSTEM\",\"ROLE_CUSTADMIN\",\"ROLE_ADMIN\"],\"parameters\":{\"name\":{\"displayName\":{\"en\":\"System name\",\"nl\":\"Naam systeem\"},\"type\":\"string\",\"required\":true,\"default\":null,\"readOnly\":false},\"disk\":{\"displayName\":{\"en\":\"disk space\",\"nl\":\"Schijfruimte\"},\"type\":\"int\",\"required\":false,\"default\":30,\"readOnly\":false},\"cpu\":{\"displayName\":{\"en\":\"cpu\",\"nl\":\"cpu\"},\"type\":\"int\",\"required\":false,\"default\":1,\"readOnly\":false},\"memory\":{\"displayName\":{\"en\":\"memory\",\"nl\":\"Geheuegen\"},\"type\":\"int\",\"required\":false,\"default\":1,\"readOnly\":false},\"managementType\":{\"displayName\":{\"en\":\"Management type\",\"nl\":\"Management type\"},\"type\":\"text\",\"required\":false,\"default\":\"professional_level27\",\"readOnly\":true},\"systemproviderConfiguration\":{\"displayName\":{\"en\":\"Systemprovider configuration id\",\"nl\":\"Systemprovider configuratie id\"},\"type\":\"parameters.yml\",\"required\":false,\"default\":\"template_param_systemproviderConfiguration_1\",\"readOnly\":true,\"entityClass\":\"Level27\\\\SystemBundle\\\\Entity\\\\SystemproviderConfiguration\"},\"systemimage\":{\"displayName\":{\"en\":\"System image id\",\"nl\":\"Systeem image id\"},\"type\":\"parameters.yml\",\"required\":false,\"default\":\"template_param_systemimage_1\",\"readOnly\":true,\"entityClass\":\"Level27\\\\SystemBundle\\\\Entity\\\\Systemimage\"},\"autoNetworks\":{\"displayName\":{\"en\":\"Array of network ids\",\"nl\":\"Array van network ids\"},\"type\":\"parameters.yml_csv\",\"required\":false,\"default\":\"template_param_autoNetworks_1\",\"readOnly\":true,\"entityClass\":\"Level27\\\\SystemBundle\\\\Entity\\\\Network\"},\"zone\":{\"displayName\":{\"en\":\"Zone id\",\"nl\":\"Zone id\"},\"type\":\"parameters.yml\",\"required\":false,\"default\":\"template_param_zone_1\",\"readOnly\":true,\"entityClass\":\"Level27\\\\SystemBundle\\\\Entity\\\\Zone\"},\"organisation\":{\"displayName\":{\"en\":\"Organisation id\",\"nl\":\"Organisatie id\"},\"type\":\"organisation\",\"required\":false,\"default\":null,\"readOnly\":true}},\"products\":[\"system_level27_instance_flexible_linux\",\"system_level27_instance_disk_2022\",\"system_level27_instance_cpu\",\"system_level27_instance_memory_2022\",\"system_level27_firewall_and_networking\",\"system_backup_plan_4_weeks\"],\"task\":\"level27_system_creation\"}",
"params": {
"name": "testPackage",
"disk": 30,
"cpu": 1,
"memory": 1,
"managementType": "pro",
"systemproviderConfiguration": 27,
"systemimage": 85,
"autoNetworks": "1457",
"zone": 25,
"organisation": 28950
},
"status": "busy",
"ord": 1,
"taskSteps": [
{
"id": 384,
"name": "level27_system_insert",
"weight": 20,
"status": "done",
"description": {
"en": "Create a new Level27 system",
"nl": "Maak een nieuwe Level27 systeem"
},
"successMsg": {
"en": "System was successfully allocated",
"nl": "System allocatie is gelukt"
},
"failMsg": {
"en": "System allocation has failed",
"nl": "System allocatie is mislukt"
},
"service": "level27_system.system.handler",
"method": "post",
"params": {
"parameters": {
"type": "array",
"value": {
"name": {
"source": "parameters"
},
"cpu": {
"source": "parameters"
},
"memory": {
"source": "parameters"
},
"disk": {
"source": "parameters"
},
"managementType": {
"source": "parameters"
},
"systemproviderConfiguration": {
"source": "parameters"
},
"systemimage": {
"source": "parameters"
},
"zone": {
"source": "parameters"
},
"organisation": {
"source": "parameters"
},
"autoNetworks": {
"source": "parameters"
}
}
},
"extraParams": {
"type": "array",
"value": {
"job": {
"source": "job"
},
"createNetworks": {
"source": "string",
"value": true
},
"paidForPaymentRequiredOrganisation": {
"source": "string",
"value": true
}
}
}
},
"entityClass": "Level27\\SystemBundle\\Entity\\System",
"entityKey": "system",
"identifier": "level27_system_1",
"onFailureJob": "taskFailureNotification",
"ord": 1,
"statusCategory": "green"
},
{
"id": 385,
"name": "system_auto_install",
"weight": 50,
"status": "done",
"description": {
"en": "auto install",
"nl": "Automatische installatie"
},
"successMsg": {
"en": "System auto install was successful",
"nl": "Automatische installatie van systeem is gelukt"
},
"failMsg": {
"en": "System auto install failed",
"nl": "Automatische installatie van systeem is mislukt"
},
"service": "level27_system.system.handler",
"method": "executeAutoInstallAction",
"params": {
"system": {
"type": "entity",
"source": "rootTaskHasEntity",
"value": "level27_system_1"
},
"job": {
"type": "job"
}
},
"entityClass": null,
"entityKey": null,
"identifier": null,
"onFailureJob": "taskFailureNotification",
"ord": 2,
"statusCategory": "green"
},
{
"id": 386,
"name": "system_post_auto_install",
"weight": 50,
"status": "busy",
"description": {
"en": "create post auto install jobs",
"nl": "Maak post automatische installatie jobs aan"
},
"successMsg": {
"en": "Post auto install jobs suceeded",
"nl": "Post automatische installatie jobs zijn gelukt"
},
"failMsg": {
"en": "Post auto install jobs failed",
"nl": "Post automatische installatie jobs zijn gelukt"
},
"service": "level27_system.system.handler",
"method": "createPostAutoInstallJobs",
"params": {
"system": {
"type": "entity",
"source": "rootTaskHasEntity",
"value": "level27_system_1"
},
"skipSystemReboot": {
"type": "boolean",
"value": false
},
"job": {
"type": "job"
}
},
"entityClass": null,
"entityKey": null,
"identifier": null,
"onFailureJob": "taskFailureNotification",
"ord": 3,
"statusCategory": "yellow"
}
],
"statusCategory": "yellow"
}
],
"rootTaskHasEntities": [
{
"id": 144,
"status": 10,
"entityClass": "Level27\\SystemBundle\\Entity\\System",
"entityId": "3466",
"identifier": "level27_system_1"
}
],
"organisation": {
"id": 28950,
"name": "TestOrganisation"
},
"billableitem": {
"id": 11222,
"dtExpires": null
},
"statusCategory": "yellow",
"paymentStatusCategory": "green",
"maxWeight": 120,
"extraData": {
"system": {
"id": 1,
"name": "My system",
"fqdn": "ccdfwf3.test.eu",
"customerFqdn": "dcewfew.test.eu",
"status": 10,
"runningStatus": 0
}
}
}
}
HTTP status code 403
Response when a user does not have access to a roottask
HTTP status code 404
Response when roottask is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Get users for roottask
get /roottasks/{roottaskId}/users
Get users for roottask
URI Parameters
- roottaskId: required(string)
The unique identifier of a roottask
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 roottask
HTTP status code 404
Response when a roottask 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 roottask
get /roottasks/{roottaskId}/organisations
Get organisations with acl access to a roottask
URI Parameters
- roottaskId: required(string)
The unique identifier of a roottask
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",
"teams": [
{
"id": 14,
"name": "OwnerTeam"
}
]
},
{
"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",
"teams": [
{
"id": 15,
"name": "ResellerTeam"
}
]
},
{
"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",
"teams": []
}
]
}
HTTP status code 403
Response when a user does not have access to a roottask
HTTP status code 404
Response when a roottask 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 roottask
post /roottasks/{roottaskId}/acls
Add access to a roottask
URI Parameters
- roottaskId: required(string)
The unique identifier of a roottask
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 roottask was successfully added
Body
Media type: application/json
Type: object
Example:
{
"acl": {
"id": 3512372,
"object": "Level27\\BaseBundle\\Entity\\RootTask",
"objectId": 2,
"permissions": null,
"extra": null,
"type": "manual",
"organisation": {
"id": 123,
"name": "Test"
}
}
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a roottask
HTTP status code 404
Response when a roottask 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 roottask
delete /roottasks/{roottaskId}/acls/{organisationId}
Remove access to a roottask
URI Parameters
- roottaskId: required(string)
The unique identifier of a roottask
- organisationId: required(string)
HTTP status code 204
Response when access to a roottask was successfully removed
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a roottask
HTTP status code 404
Response when a roottask is not found
HTTP status code 500
Response when a user does not have a proper role to access a control
Retry a roottask job