CP4 API documentation version 1.0
https://api.level27.eu/v1/
This is the API documentation of the Level27 controlpanel.
- Media types: (string)
Available response types:
- json
- csv (available for GET requests)
- Headers: (string)
Authorization: Authorization hash (returned by the /login endpoint or by generating a permanent API-token using /organisations/{organisationId}/users/{userId}/apikeys)
- 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}
- Statuses: (string)
- ALLOCATED
- AUTO_INSTALLING, AUTO_INSTALLING_FAILED
- BUSY
- TO_CREATE, CREATING, CREATING_FAILED
- CRITICAL, WARNING, CLOSED
- TO_DEACTIVATE, DEACTIVATING, DEACTIVATED, DEACTIVATION_FAILED
- TO_DELETE, DELETING, DELETED, DELETING_FAILED
- DEPRECATED
- TO_DO, DONE
- DRAINING, DRAINED
- ERROR
- FAILED, FAILING_OVER, FAILED_OVER, FAILING_BACK,
- FIXING
- TO_IMPORT, IMPORTING, IMPORTED, IMPORTING_FAILED
- OK
- TO_PAY, PAYING, PARTIAL_PAYMENT, PAYMENT_PARTIALLY_PROCESSED, PAYMENT_PROCESSED, CREDITED
- PROCESSED
- QUARANTINED
- TO_TRANSFER, TRANSFERRING, TRANSFER_FAILED
- UNLINKED
- TO_UPDATE, UPDATING, UPDATE_FAILED
- INVESTIGATING, INVESTIGATED, INVESTIGATING_FAILED, INVESTIGATING_OK
- TO_MIGRATE, MIGRATING, MIGRATING_OK, MIGRATED, MIGRATING_FAILED, MIGRATION_DENIED
- ABORTING_MIGRATION, ABORTING_MIGRATION_FAILED
- POSTMIGRATING, POSTMIGRATED, POSTMIGRATING_OK, POSTMIGRATING_FAILED, POSTMIGRATION_CONFIRMED, POSTMIGRATION_DENIED
- DENYING_MIGRATION, DENYING_MIGRATION_FAILED
- DENYING_POSTMIGRATION, DENYING_POSTMIGRATION_FAILED
- PREPARING, PREPARED, PREPARING_OK, PREPARING_FAILED
- PRESYNCING, PRESYNCED, PRESYNCING_OK, PRESYNCING_FAILED
- WAITING_ON_DNS
/login
Login to the controlpanel. The response of this endpoint contains a hash which can be used as authentication for any further API calls.
post /login
Login to the controlpanel. The response of this endpoint contains a hash which can be used as authentication for any further API calls.
Body
Media type: application/json
Type: object
Properties- username: required(string)
Username (Email-address)
- password: required(string)
Valid password:
- should be longer than 7 characters
- should be shorter than 30 characters
- should contain at least 1 number
- should contain at least 1 special character
- cannot contain spaces, : , " or '
- 6digitCode: (string)
Time-based one-time password.
- trustThisDevice: (boolean)
Can be set to true to remember the user agent and ip that's currenly being used for 30 days. TOTP won't be asked again during this period while making requests from the same device. (default: false)
- 2faToken: (string)
2FA hash. This is returned by the /login endpoint when providing a TOTP. This hash can be saved in local storage and provided when executing the /login endpoint to skip the TOTP prompt.
Examples:
Using email:
{
"username": "username@level27.be",
"password": "Test123password"
}
with 2fa, device is not yet trusted:
{
"username": "testlogin@test.be",
"password": "Test123password",
"6digitCode": "012345",
"trustThisDevice": true
}
with 2fa, device is trusted:
{
"username": "testlogin@test.be",
"password": "Test123password",
"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": "username@level27.be",
"email": "username@level27.be",
"firstName": "Test",
"lastName": "User",
"roles": [
"ROLE_SYSTEM",
"ROLE_DOMAIN",
"ROLE_MAIL",
"ROLE_APP"
],
"status": "ok",
"status2fa": "enabled",
"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,
"organisationType": {
"identifier": 4
}
},
"fullname": "Test User",
"statusCategory": "green",
"teams": [
{
"id": 1,
"name": "Test",
"status": "ok",
"autoAddSshkey": false,
"statusCategory": "green"
}
]
},
"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)
Username (Email-address)
- 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": "username@level27.be",
"email": "username@level27.be",
"firstName": "Test",
"lastName": "User",
"roles": [
"ROLE_SYSTEM",
"ROLE_DOMAIN",
"ROLE_MAIL",
"ROLE_APP"
],
"status": "ok",
"status2fa": "enabled",
"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,
"organisationType": {
"identifier": 4
}
},
"fullname": "Test User",
"statusCategory": "green",
"teams": [
{
"id": 1,
"name": "Test",
"status": "ok",
"autoAddSshkey": false,
"statusCategory": "green"
}
]
},
"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)
Username (Email-address)
- password: required(string)
Valid password:
- should be longer than 7 characters
- should be shorter than 30 characters
- should contain at least 1 number
- should contain at least 1 special character
- 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)
Username (Email-address)
- password: required(string)
Valid password:
- should be longer than 7 characters
- should be shorter than 30 characters
- should contain at least 1 number
- should contain at least 1 special character
- cannot contain spaces, : , " or '
- 6digitCode: (string)
Time-based one-time password.
- trustThisDevice: (boolean)
Can be set to true to remember the user agent and ip that's currenly being used for 30 days. TOTP won't be asked again during this period while making requests from the same 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": "username@level27.be",
"email": "username@level27.be",
"firstName": "Test",
"lastName": "User",
"roles": [
"ROLE_SYSTEM",
"ROLE_DOMAIN",
"ROLE_MAIL",
"ROLE_APP"
],
"status": "ok",
"status2fa": "enabled",
"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,
"organisationType": {
"identifier": 4
}
},
"fullname": "Test User",
"statusCategory": "green",
"teams": [
{
"id": 1,
"name": "Test",
"status": "ok",
"autoAddSshkey": false,
"statusCategory": "green"
}
]
},
"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)
Username (Email-address)
- password: required(string)
Valid password:
- should be longer than 7 characters
- should be shorter than 30 characters
- should contain at least 1 number
- should contain at least 1 special character
- 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 7 characters
- should be shorter than 30 characters
- should contain at least 1 number
- should contain at least 1 special character
- 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 7 characters
- should be shorter than 30 characters
- should contain at least 1 number
- should contain at least 1 special character
- 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,
"organisationType": {
"identifier": 4
}
},
"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)
Username (Email-address)
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 7 characters
- should be shorter than 30 characters
- should contain at least 1 number
- should contain at least 1 special character
- 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,
"organisationType": {
"identifier": 4
}
},
"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)
- organisationType: (integer)
The unique identifier of an organisation type
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": {
"identifier": 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": {
"identifier": 2
}
}
}
admin:
{
"organisation": {
"id": 3,
"name": "Admin Organisation",
"taxNumber": "TAX_NUMBER_HERE",
"mustPayTax": true,
"remarksToPrintInvoice": null,
"externalId": null,
"updateEntitiesOnly": false,
"preventDeactivation": false,
"parentOrganisation": "level27",
"externalInfoRequired": 0,
"nextInvoiceRun": "1728597600",
"required2fa": null,
"agencyMode": 2,
"bundleProRata": false,
"testAccount": null,
"street": "STREET",
"houseNumber": 1,
"zip": 12345,
"city": "CITY",
"paymentperiod": 30,
"source1": null,
"source2": null,
"resellerKickback": null,
"defaultResellerKickback": null,
"pdfInvoice": false,
"peppolInvoicing": true,
"discount": "0",
"isSoft": null,
"prePaymentRequired": null,
"defaultAgreements": null,
"information": "information for admins",
"country": null,
"resellerOrganisation": null,
"users": [
{
"id": 5995,
"username": "user1@level27.com",
"email": "user1@level27.com",
"firstName": "User1",
"lastName": "LastName",
"roles": [
"ROLE_CUSTADMIN",
"ROLE_SYSTEM",
"ROLE_APP",
"ROLE_DOMAIN",
"ROLE_FINANCE",
"ROLE_MAIL",
"ROLE_CONNECT"
]
}
],
"pricegroup": {
"id": "default",
"description": "List prices"
},
"organisationType": {
"id": "it_agency_2",
"description": "IT agency 2",
"identifier": 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)
- tag: (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,
"preventDeactivation": false,
"parentOrganisation": "level27",
"externalInfoRequired": 0,
"nextInvoiceRun": "1704236400",
"required2fa": false,
"agencyMode": 1,
"bundleProRata": false,
"testAccount": null,
"street": "Test-Street",
"houseNumber": "23",
"zip": "123",
"city": "Test City",
"country": {
"id": "BE",
"name": "Belgium"
},
"resellerOrganisation": null,
"source1": null,
"source2": null,
"resellerKickback": null,
"defaultResellerKickback": null,
"pdfInvoice": false,
"discount": "0",
"isSoft": null,
"prePaymentRequired": false,
"defaultAgreements": {
"Level27\\AppBundle\\Entity\\App": "5",
"Level27\\DomainBundle\\Entity\\Domain": 5,
"Level27\\FinanceBundle\\Entity\\GenericItem": 5,
"Level27\\ConnectBundle\\Entity\\Location": 5,
"Level27\\MailBundle\\Entity\\Mailgroup": 5,
"Level27\\SystemBundle\\Entity\\System": 5
},
"users": [
{
"id": 1,
"username": "test@email.be",
"email": "test@email.be",
"firstName": "Test",
"lastName": "User",
"roles": [
"ROLE_CUSTADMIN"
]
}
],
"pricegroup": {
"id": "silver",
"description": "Silver"
},
"organisationType": null
}
]
}
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)
- information: (string)
Information
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,
"information": "extra information for admins"
}
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)
- information: (string)
Information
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,
"information": "extra information for admins"
}
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"
},
"resellerKickback": null,
"defaultResellerKickback": null,
"pdfInvoice": false,
"peppolInvoicing": true,
"discount": "0",
"isSoft": null,
"prePaymentRequired": null,
"information": null,
"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
},
"organisationType": {
"identifier": 2
}
}
}
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)
- tag: (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)
- tag: (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)
- tag: (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)
Username (Email-address)
- 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,
"organisationType": {
"identifier": 4
}
},
"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 7 characters
- should be shorter than 30 characters
- should contain at least 1 number
- should contain at least 1 special character
- 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,
"organisationType": {
"identifier": 4
}
},
"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,
"organisationType": {
"identifier": 4
}
},
"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)
- tag: (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)
- tag: (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)
- tag: (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)
Username (Email-address)
- 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,
"organisationType": {
"identifier": 4
}
},
"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)
- tag: (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
- tag: (string)
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)
- tag: (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)
- tag: (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)
- tag: (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)
- tag: (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)
- tag: (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)
- tag: (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)
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)
- tag: (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: (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
Create a multiple rootTasks and a document type order if needed
post /organisations/{organisationId}/multiroottasks
Create a multiple rootTasks and a document type order if needed
URI Parameters
- organisationId: required(string)
The unique identifier of a organisation
Body
Media type: application/json
Type: object
Properties- order: required(string)
json (various parameters)
Example:
[
{
"template": null,
"package": "domain_domaincontact",
"dtExecute": null,
"organisation": 3,
"name": "multiroottaskdomain1",
"domaintype": "be",
"firstName": "Test",
"lastName": "Test",
"street": "Test",
"houseNumber": 12,
"zip": 12345,
"city": "Test",
"phone": "+32.123456789",
"email": "test1@level27.be",
"country": "BE"
},
{
"template": null,
"package": "domain_domaincontact",
"dtExecute": null,
"organisation": 3,
"name": "multiroottaskdomain2",
"domaintype": "be",
"firstName": "Test",
"lastName": "Test",
"street": "Test",
"houseNumber": 12,
"zip": 12345,
"city": "Test",
"phone": "+32.123456789",
"email": "test2@level27.be",
"country": "BE"
},
{
"name": "test",
"customPackage": 79
}
]
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"rootTasks": [
1,
2
],
"billableitems": [
1,
2
],
"order": {
"id": 1,
"type": "order",
"organisation": {
"id": 1,
"name": "My organisation",
"status": "ok",
"statusCategory": "green",
"paymentperiod": 30
},
"number": "O0000001",
"date": "2024-12-04",
"status": "to_pay",
"statusCategory": "red",
"paymentStatus": "unpaid",
"paymentStatusCategory": "red",
"reminderStatus": "ok",
"reminderStatusCategory": "green",
"paymentperiod": 30,
"organisationTaxNumber": null,
"taxrate": 21,
"onlinePaymentAttempts": null,
"from": {
"name": "Level27",
"street": "Genutstraat 35",
"zipCity": "3740 Bilzen"
},
"to": {
"name": "My Organisation",
"street": "My Street 123",
"zipCity": "123 Test City"
},
"remarksToPrint": null,
"items": [],
"source": null,
"parentOrganisation": "level27",
"price": 0,
"tax": 0,
"priceWithTax": 0,
"priceToPay": 0,
"contactId": 1,
"hash": "b12eb44725c97973r25d",
"entityHash": "d6adc1e1322a3sdfew04509029636e"
}
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to an organisation
/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)
- phone: required(string)
Phone (format: +32.12345678)
Example:
{
"email": "testemail@testemail.com",
"language": "nl",
"phone": 32.123456789
}
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 7 characters
- should be shorter than 30 characters
- should contain at least 1 number
- should contain at least 1 special character
- 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"
}
}
Resend 6digit code
patch /softorganisations/{organisationId}/users/{userId}/contacts/{contactId}/resend
/websiteorganisations
Create a soft organisation, a user and 2 contacts
post /websiteorganisations
Create a soft organisation, a user and 2 contacts
Body
Media type: application/json
Type: object
Properties- order: required(string)
json (various parameters)
Example:
{
"organisation": {
"name": "website-test1",
"taxNumber": "BE12345689",
"street": "Test",
"houseNumber": "23",
"zip": "12345",
"city": "Hasselt",
"country": "BE",
"organisationType": "website"
},
"user": {
"username": "test1soft@level27.be",
"firstName": "Test1",
"lastName": "Soft",
"password": "CorrectPassword123",
"language": "nl"
},
"contact": {
"type": "phone",
"name": "+32.123456789"
}
}
/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"
}
]
},
{
"id": 446,
"limitGroup": "mailbox",
"status": "ok",
"uniqueComponentType": false,
"allowedUpgrades": [
{
"name": "optional_extra_mailboxes_5",
"type": "extra_mailbox",
"description": "Extra 5 mailboxes",
"value": 5,
"unit": "unit",
"addToMax": true,
"maxAllowedUpgrades": 5
}
],
"max": 5,
"upgradeMax": 0,
"ruleResources": []
}
],
"allowedUpgradesDowngrades": [
"drupal_walk",
"drupal_fly"
],
"mailgroup": {
"id": 1,
"name": "My Mailgroup"
}
}
}
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)
- billingStatus: (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
},
"billingStatus": "ok"
},
{
"id": 3,
"name": "MyApp",
"type": "walk",
"status": "ok",
"statusCategory": "green",
"organisation": {
"id": 123,
"name": "Test Company"
},
"count": [],
"billingStatus\"": "ok"
}
]
}
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"
}
]
},
{
"id": 446,
"limitGroup": "mailbox",
"status": "ok",
"uniqueComponentType": false,
"allowedUpgrades": [
{
"name": "optional_extra_mailboxes_5",
"type": "extra_mailbox",
"description": "Extra 5 mailboxes",
"value": 5,
"unit": "unit",
"addToMax": true,
"maxAllowedUpgrades": 5
}
],
"max": 5,
"upgradeMax": 0,
"ruleResources": []
}
],
"allowedUpgradesDowngrades": [
"drupal_walk",
"drupal_fly"
],
"mailgroup": {
"id": 1,
"name": "My Mailgroup"
}
}
}
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
- externalInfo: (string)
ExternalInfo (required when billableitemInfo entities for an Organisation exist in db)
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
Execute an action on an app/project
post /apps/{appId}/actions
Execute an action on an app/project
URI Parameters
- appId: required(string)
Body
Media type: application/json
Type: object
Properties- type: required(one of deactivate, activate, startMaintenance, stopMaintenance)
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:
{
"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"
}
]
},
{
"id": 446,
"limitGroup": "mailbox",
"status": "ok",
"uniqueComponentType": false,
"allowedUpgrades": [
{
"name": "optional_extra_mailboxes_5",
"type": "extra_mailbox",
"description": "Extra 5 mailboxes",
"value": 5,
"unit": "unit",
"addToMax": true,
"maxAllowedUpgrades": 5
}
],
"max": 5,
"upgradeMax": 0,
"ruleResources": []
}
],
"allowedUpgradesDowngrades": [
"drupal_walk",
"drupal_fly"
],
"mailgroup": {
"id": 1,
"name": "My Mailgroup"
}
}
}
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",
"installSecurityUpdates": 8
},
{
"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",
"installSecurityUpdates": 2
},
{
"id": 3,
"name": "test3.level27.eu",
"fqdn": "333333.level27.eu",
"customerFqdn": "test3.level27.eu",
"ipv4": "127.3.2.1",
"ipv6": null,
"systemgroupFunction": "web",
"installSecurityUpdates": 8
}
]
}
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 mysql, php, keyvalue_redis, sftp, asp, mssql, solr, memcached, elasticsearch, redis, ruby, url, mongodb, nodejs, python, postgresql, dotnet, rabbitmq, varnish, java, mail, wasp, wmssql, mailpit, meilisearch)
Component type (non-editable) For a full and up-to-date list of the available componenttypes, please refer to the /appcomponenttypes endpoint.
- 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)
- tag: (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
All checks of all the urls in the project
get /apps/{appId}/components/urls/checks
All checks of all the urls in the project
URI Parameters
- appId: required(string)
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": 20707,
"checktype": "url_latency",
"status": "ok",
"statusInformation": null,
"dtLastMonitoringEnabled": 1725637646,
"dtLastStatusChange": null,
"dtLastCheck": null,
"dtNextCheck": null,
"checkparameters": {
"w": {
"value": 1000,
"default": false
},
"c": {
"value": 1500,
"default": false
}
},
"checkparameterDescriptions": {
"w": "Warning threshold. Time in milliseconds.",
"c": "Critical threshold. Time in milliseconds."
},
"checktypeLocation": "remote",
"system": null,
"location": null,
"url": {
"id": 45344,
"content": "testurl.level27.be",
"monitoringEnabled": true,
"monitoringStatus": "enabled"
},
"statusCategory": "green"
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
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 mysql, php, keyvalue_redis, sftp, asp, mssql, solr, memcached, elasticsearch, redis, ruby, url, mongodb, nodejs, python, postgresql, dotnet, rabbitmq, varnish, java, mail, wasp, wmssql, mailpit, meilisearch)
Component type (non-editable) For a full and up-to-date list of the available componenttypes, please refer to the /appcomponenttypes endpoint.
- 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 mysql, php, keyvalue_redis, sftp, asp, mssql, solr, memcached, elasticsearch, redis, ruby, url, mongodb, nodejs, python, postgresql, dotnet, rabbitmq, varnish, java, mail, wasp, wmssql, mailpit, meilisearch)
Component type (non-editable) For a full and up-to-date list of the available componenttypes, please refer to the /appcomponenttypes endpoint.
- 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)
- tag: (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
Execute an action on a url
post /apps/{appId}/components/{componentId}/urls/{urlId}/actions
Execute an action on 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- type: required(one of enable_monitoring, disable_monitoring)
Action type
Examples:
1:
{
"type": "enable_monitoring"
}
2:
{
"type": "disable_monitoring"
}
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"url": {
"id": 1,
"content": "testurl.be",
"https": true,
"status": "ok",
"sslForce": true,
"appcomponent": {
"id": 3,
"name": "Test component",
"appcomponenttype": "php",
"status": "ok"
},
"sslCertificate": {
"id": 123,
"name": "TestCert1",
"sslStatus": "ok",
"status": "ok"
},
"matchingCertificates": [
{
"id": 123,
"name": "TestCert1"
},
{
"id": 321,
"name": "TestCert2"
}
],
"type": "linked",
"caching": false,
"authentication": false
}
}
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 url is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Get statistics for a url
get /apps/{appId}/components/{componentId}/urls/{urlId}/getstats/{statistic}/{bucket}
Get statistics for 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
- statistic: required(string)
- bucket: required(string)
Create a new check
List of all available checks
post /apps/{appId}/components/{componentId}/urls/{urlId}/checks
Create a new check
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- 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": "url_latency"
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"check": {
"id": 20707,
"checktype": "url_latency",
"status": "ok",
"statusInformation": null,
"dtLastMonitoringEnabled": 1725637646,
"dtLastStatusChange": null,
"dtLastCheck": null,
"dtNextCheck": null,
"checkparameters": {
"w": {
"value": 1000,
"default": false
},
"c": {
"value": 1500,
"default": false
}
},
"checkparameterDescriptions": {
"w": "Warning threshold. Time in milliseconds.",
"c": "Critical threshold. Time in milliseconds."
},
"checktypeLocation": "remote",
"system": null,
"location": null,
"url": {
"id": 45344,
"content": "testurl.level27.be"
},
"monitoringSystem": null,
"statusCategory": "green",
"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 /apps/{appId}/components/{componentId}/urls/{urlId}/checks
List of all available checks
URI Parameters
- appId: required(string)
- componentId: required(string)
The unique identifier of a component
- urlId: required(string)
The unique identifier of a url
Query Parameters
- status: (string)
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- orderBy: (string)
- orderType: (string)
ASC or DESC
- filter: (string)
- tag: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"total": 4,
"checks": [
{
"id": 20707,
"checktype": "url_latency",
"status": "ok",
"statusInformation": null,
"dtLastMonitoringEnabled": 1725637646,
"dtLastStatusChange": null,
"dtLastCheck": null,
"dtNextCheck": null,
"checkparameters": {
"w": {
"value": 1000,
"default": false
},
"c": {
"value": 1500,
"default": false
}
},
"checkparameterDescriptions": {
"w": "Warning threshold. Time in milliseconds.",
"c": "Critical threshold. Time in milliseconds."
},
"checktypeLocation": "remote",
"system": null,
"location": null,
"url": {
"id": 45344,
"content": "testurl.level27.be",
"monitoringEnabled": true,
"monitoringStatus": "enabled"
},
"statusCategory": "green"
}
]
}
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 /apps/{appId}/components/{componentId}/urls/{urlId}/checks/{checkId}
Update a check
URI Parameters
- appId: required(string)
- componentId: required(string)
The unique identifier of a component
- urlId: required(string)
The unique identifier of a url
- checkId: required(string)
- urlCheckId: 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": "url_latency"
}
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 /apps/{appId}/components/{componentId}/urls/{urlId}/checks/{checkId}
Delete a check
URI Parameters
- appId: required(string)
- componentId: required(string)
The unique identifier of a component
- urlId: required(string)
The unique identifier of a url
- checkId: required(string)
- urlCheckId: required(string)
The unique identifier of a check
get /apps/{appId}/components/{componentId}/urls/{urlId}/checks/{checkId}
Get a check
URI Parameters
- appId: required(string)
- componentId: required(string)
The unique identifier of a component
- urlId: required(string)
The unique identifier of a url
- checkId: required(string)
- urlCheckId: 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": 20707,
"checktype": "url_latency",
"status": "ok",
"statusInformation": null,
"dtLastMonitoringEnabled": 1725637646,
"dtLastStatusChange": null,
"dtLastCheck": null,
"dtNextCheck": null,
"checkparameters": {
"w": {
"value": 1000,
"default": false
},
"c": {
"value": 1500,
"default": false
}
},
"checkparameterDescriptions": {
"w": "Warning threshold. Time in milliseconds.",
"c": "Critical threshold. Time in milliseconds."
},
"checktypeLocation": "remote",
"system": null,
"location": null,
"url": {
"id": 45344,
"content": "testurl.level27.be"
},
"monitoringSystem": null,
"statusCategory": "green",
"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 /apps/{appId}/components/{componentId}/urls/{urlId}/checks/{checkId}/alerts
Get all checkalerts for the check
URI Parameters
- appId: required(string)
- componentId: required(string)
The unique identifier of a component
- urlId: required(string)
The unique identifier of a url
- checkId: required(string)
- urlCheckId: 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": 8,
"checkalerts": [
{
"id": 1,
"dtStarted": "1685606608",
"dtClosed": "1687166521",
"status": "critical",
"statusInformation": "Critical latency",
"check": {
"id": 1,
"checktype": "url_latency",
"url": {
"id": 1,
"content": "testurl.level27.be"
}
},
"checkalertEvents": [
{
"id": 1,
"status": 10,
"statusInformation": null,
"dtReceived": "1725883536",
"isArchived": false,
"system": {
"id": 1,
"name": "monitor.level27.be"
}
}
],
"statusCategory": "red"
}
]
}
HTTP status code 401
Response when a user does not have a proper role to access a controller
Get all checkalerts for a url
get /apps/{appId}/components/{componentId}/urls/{urlId}/checkalerts
Get all checkalerts for 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
Query Parameters
- status: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"total": 8,
"checkalerts": [
{
"id": 1,
"dtStarted": "1685606608",
"dtClosed": "1687166521",
"status": "critical",
"statusInformation": "Critical latency",
"check": {
"id": 1,
"checktype": "url_latency",
"url": {
"id": 1,
"content": "testurl.level27.be"
}
},
"checkalertEvents": [
{
"id": 1,
"status": 10,
"statusInformation": null,
"dtReceived": "1725883536",
"isArchived": false,
"system": {
"id": 1,
"name": "monitor.level27.be"
}
}
],
"statusCategory": "red"
}
]
}
All checks of all the urls for the component
get /apps/{appId}/components/{componentId}/urls/checks
All checks of all the urls for the component
URI Parameters
- appId: required(string)
- componentId: required(string)
The unique identifier of a component
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": 20707,
"checktype": "url_latency",
"status": "ok",
"statusInformation": null,
"dtLastMonitoringEnabled": 1725637646,
"dtLastStatusChange": null,
"dtLastCheck": null,
"dtNextCheck": null,
"checkparameters": {
"w": {
"value": 1000,
"default": false
},
"c": {
"value": 1500,
"default": false
}
},
"checkparameterDescriptions": {
"w": "Warning threshold. Time in milliseconds.",
"c": "Critical threshold. Time in milliseconds."
},
"checktypeLocation": "remote",
"system": null,
"location": null,
"url": {
"id": 45344,
"content": "testurl.level27.be",
"monitoringEnabled": true,
"monitoringStatus": "enabled"
},
"statusCategory": "green"
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Get all checkalerts for a component
get /apps/{appId}/components/{componentId}/urls/checkalerts
Get all checkalerts for a component
URI Parameters
- appId: required(string)
- componentId: required(string)
The unique identifier of a component
Query Parameters
- status: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"total": 8,
"checkalerts": [
{
"id": 1,
"dtStarted": "1685606608",
"dtClosed": "1687166521",
"status": "critical",
"statusInformation": "Critical latency",
"check": {
"id": 1,
"checktype": "url_latency",
"url": {
"id": 1,
"content": "testurl.level27.be"
}
},
"checkalertEvents": [
{
"id": 1,
"status": 10,
"statusInformation": null,
"dtReceived": "1725883536",
"isArchived": false,
"system": {
"id": 1,
"name": "monitor.level27.be"
}
}
],
"statusCategory": "red"
}
]
}
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
- type: (one of automatic, manual)
Restore type
Examples:
automatic:
{
"appcomponent": 123,
"availableBackup": 321
}
manual:
{
"appcomponent": "123,",
"type": "manual"
}
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",
"type": "automatic",
"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)
- tag: (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",
"type": "automatic",
"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"
}
}
},
{
"id": 1,
"filename": "webwhjdbwh3.rar",
"size": 1024,
"dtExpires": 1607731200,
"status": "to_create",
"type": "manual",
"appcomponent": {
"id": 17171,
"name": "test",
"appcomponenttype": "php",
"appcomponentparameters": {
"username": "vd12344",
"pass": "*****"
},
"status": "ok",
"app": {
"id": 7341
}
},
"availableBackup": null
}
]
}
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
- type: (one of automatic, manual)
Restore type
Examples:
automatic:
{
"appcomponent": 123,
"availableBackup": 321
}
manual:
{
"appcomponent": "123,",
"type": "manual"
}
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",
"type": "automatic",
"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)
Restore manual restore for component
post /apps/{appId}/components/{componentId}/restores/{restoreId}/restore
Restore manual restore for component
URI Parameters
- appId: required(string)
- componentId: required(string)
The unique identifier of a component
- restoreId: required(string)
The unique identifier of a restore
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
- content: (string)
Content
- handleDns: (boolean)
Should dns be handled by us? (default: true)
- dkim: (boolean)
dkim
Examples:
1:
{
"domain": 1,
"content": null,
"handleDns": true,
"dkim": true
}
2:
{
"domain": null,
"content": "level27.be",
"handleDns": false,
"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,
"content": null,
"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)
- tag: (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,
"content": null,
"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/{appcomponentHasDomainId}
Update a domainHasAppcomponent
URI Parameters
- appId: required(string)
- componentId: required(string)
The unique identifier of a component
- 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
- content: (string)
Content
- handleDns: (boolean)
Should dns be handled by us? (default: true)
- dkim: (boolean)
dkim
Examples:
1:
{
"domain": 1,
"content": null,
"handleDns": true,
"dkim": true
}
2:
{
"domain": null,
"content": "level27.be",
"handleDns": false,
"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/{appcomponentHasDomainId}
Unlink a domain from an appcomponent
URI Parameters
- appId: required(string)
- componentId: required(string)
The unique identifier of a component
- appcomponentHasDomainId: required(string)
The unique identifier of a domain
get /apps/{appId}/components/{componentId}/domains/{appcomponentHasDomainId}
Get a appcomponent's domain
URI Parameters
- appId: required(string)
- componentId: required(string)
The unique identifier of a component
- 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,
"content": null,
"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)
- tag: (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,
"section": "components"
},
"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,
"section": "components"
},
"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,
"section": "components"
},
"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,
"section": "components"
},
"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,
"section": "components"
},
"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,
"section": "components"
},
"mailbox": {
"id": 446,
"limitGroup": "mailbox",
"description": "Mailboxes",
"status": "ok",
"uniqueComponentType": false,
"sharedResource": false,
"allowedTemplates": [
{
"template": "mailbox_creation_allocation",
"templateDescription": "Mailbox creation"
}
],
"allowedUpgrades": [
{
"name": "optional_extra_mailboxes_5",
"type": "extra_mailbox",
"description": "Extra 5 mailboxes",
"value": 5,
"unit": "unit",
"addToMax": true,
"maxAllowedUpgrades": 5
}
],
"upgrades": [
{
"name": "optional_extra_mailboxes_5",
"type": "extra_mailbox",
"description": "Extra 5 mailboxes",
"value": 5,
"unit": "unit",
"addToMax": true,
"maxAllowedUpgrades": 5
}
],
"max": 5,
"upgradeMax": 5,
"ruleIdentifier": "mailbox",
"ruleResources": [],
"maxCount": 15,
"actualCount": 2,
"canBeAddedCount": 13,
"section": "mailgroups",
"correctlyAddedMailboxes": [
{
"id": 1,
"name": "first",
"username": "mb053xd"
},
{
"id": 2,
"name": "second",
"username": "mb053xe"
}
],
"invalidMailboxes": []
},
"restore": {
"id": 521,
"limitGroup": "restore",
"description": "Restores",
"status": "ok",
"uniqueComponentType": false,
"sharedResource": false,
"allowedTemplates": [],
"allowedUpgrades": [
{
"name": "optional_extra_restores_5",
"type": "extra_restore",
"description": "Extra 5 restores",
"value": 5,
"unit": "unit",
"addToMax": true,
"maxAllowedUpgrades": 5
}
],
"upgrades": [],
"max": 5,
"upgradeMax": 0,
"ruleIdentifier": "restore",
"ruleResources": [],
"maxCount": 5,
"actualCount": 0,
"canBeAddedCount": 5,
"section": "apps",
"correctlyAddedRestores": [],
"invalidRestores": []
}
}
}
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": 7,
"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
}
},
{
"name": "optional_extra_mailboxes_5",
"type": "extra_mailbox",
"description": "Extra 5 mailboxes",
"value": 5,
"unit": "unit",
"addToMax": true,
"maxAllowedUpgrades": 5,
"rule": {
"id": 446,
"limitGroup": "mailbox"
},
"product": {
"id": "custompackage_fly_optional_extra_mailboxes_5",
"description": "Extra 5 mailboxes",
"prices": [
{
"id": 16173,
"period": 1,
"currency": "EUR",
"price": "400",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"agreementPrices": [],
"defaultAgreementPrices": [
{
"id": 16173,
"period": 1,
"currency": "EUR",
"price": "400",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"allowQuantityChange": false,
"quantityCalculation": null
}
},
{
"name": "optional_extra_restores_5",
"type": "extra_restore",
"description": "Extra 5 restores",
"value": 5,
"unit": "unit",
"addToMax": true,
"maxAllowedUpgrades": 5,
"rule": {
"id": 521,
"limitGroup": "restore"
},
"product": {
"id": "custompackage_fly_optional_extra_restores_5",
"description": "Extra 5 restores",
"prices": [
{
"id": 16177,
"period": 1,
"currency": "EUR",
"price": "400",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"agreementPrices": [],
"defaultAgreementPrices": [],
"allowQuantityChange": false,
"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)
- tag: (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)
- monitoringEnabled: (boolean)
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
Get all checkalerts for an app/project
get /apps/{appId}/urls/checkalerts
Get all checkalerts for an app/project
URI Parameters
- appId: required(string)
Query Parameters
- status: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"total": 8,
"checkalerts": [
{
"id": 1,
"dtStarted": "1685606608",
"dtClosed": "1687166521",
"status": "critical",
"statusInformation": "Critical latency",
"check": {
"id": 1,
"checktype": "url_latency",
"url": {
"id": 1,
"content": "testurl.level27.be"
}
},
"checkalertEvents": [
{
"id": 1,
"status": 10,
"statusInformation": null,
"dtReceived": "1725883536",
"isArchived": false,
"system": {
"id": 1,
"name": "monitor.level27.be"
}
}
],
"statusCategory": "red"
}
]
}
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)
- tag: (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
- type: (one of automatic, manual)
Restore type
Examples:
automatic:
{
"appcomponent": 123,
"availableBackup": 321
}
manual:
{
"appcomponent": "123,",
"type": "manual"
}
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",
"type": "automatic",
"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)
- tag: (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",
"type": "automatic",
"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"
}
}
},
{
"id": 1,
"filename": "webwhjdbwh3.rar",
"size": 1024,
"dtExpires": 1607731200,
"status": "to_create",
"type": "manual",
"appcomponent": {
"id": 17171,
"name": "test",
"appcomponenttype": "php",
"appcomponentparameters": {
"username": "vd12344",
"pass": "*****"
},
"status": "ok",
"app": {
"id": 7341
}
},
"availableBackup": null
}
]
}
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
- type: (one of automatic, manual)
Restore type
Examples:
automatic:
{
"appcomponent": 123,
"availableBackup": 321
}
manual:
{
"appcomponent": "123,",
"type": "manual"
}
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",
"type": "automatic",
"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",
"runningStatus": "running",
"runningStatusCategory": "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
- sshkeys: (array of any)
Array of sshkey ids
Examples:
1:
{
"sshkey": 1
}
2:
{
"sshkeys": [
1,
2,
3
]
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Examples:
1:
{
"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"
}
}
}
2:
{
"sshkeys": [
46,
340
]
}
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)
- tag: (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
Get available url statistics
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
All checks of all the urls a user has access to
get /urls/checks
All checks of all the urls 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": 20707,
"checktype": "url_latency",
"status": "ok",
"statusInformation": null,
"dtLastMonitoringEnabled": 1725637646,
"dtLastStatusChange": null,
"dtLastCheck": null,
"dtNextCheck": null,
"checkparameters": {
"w": {
"value": 1000,
"default": false
},
"c": {
"value": 1500,
"default": false
}
},
"checkparameterDescriptions": {
"w": "Warning threshold. Time in milliseconds.",
"c": "Critical threshold. Time in milliseconds."
},
"checktypeLocation": "remote",
"system": null,
"location": null,
"url": {
"id": 45344,
"content": "testurl.level27.be",
"monitoringEnabled": true,
"monitoringStatus": "enabled"
},
"statusCategory": "green"
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Get all checkalerts for all urls
get /urls/checkalerts
Get all checkalerts for all urls
Query Parameters
- status: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"total": 8,
"checkalerts": [
{
"id": 1,
"dtStarted": "1685606608",
"dtClosed": "1687166521",
"status": "critical",
"statusInformation": "Critical latency",
"check": {
"id": 1,
"checktype": "url_latency",
"url": {
"id": 1,
"content": "testurl.level27.be"
}
},
"checkalertEvents": [
{
"id": 1,
"status": 10,
"statusInformation": null,
"dtReceived": "1725883536",
"isArchived": false,
"system": {
"id": 1,
"name": "monitor.level27.be"
}
}
],
"statusCategory": "red"
}
]
}
/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: 1200)
- 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": 1200,
"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)
- exactSearch: (one of 0, 1, )
- billingStatus: (string)
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- orderBy: (string)
- orderType: (string)
ASC or DESC
- filter: (string)
- tag: (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": 1200,
"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,
"dtExternalExpires": "1818095975",
"billingStatus": "ok"
}
]
}
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: 1200)
- action: required(one of none, create, transfer, transferFromQuarantine)
Action type
- eppCode: (string)
EppCode (required when action = transfer)
- handleDns: (boolean)
Should dns be handled by us? (default: true)
- extraFields: (string)
Extra fields (json, non-editable)
- domaintype: required(integer)
The unique identifier of a domaintype (non-editable)
- domaincontactLicensee: required(integer)
The unique identifier of a domaincontact with type licensee
- domaincontactOnsite: (integer)
The unique identifier of a domaincontact with type onsite
- organisation: required(integer)
The unique identifier of an organisation
- autorecordTemplate: (string)
AutorecordTemplate
- autorecordTemplateReplace: (boolean)
(default: null)
- domainprovider: (integer)
The unique identifier of a domain provider (admin only)
- dtExternalCreated: (string)
Creation timestamp (admin only)
- dtExternalExpires: (string)
Expire date timestamp (admin only)
- convertDomainrecords: (string)
Domainrecords json (admin only)
- autoTeams: (string)
A csv list of team ids
- externalInfo: (string)
ExternalInfo (required when billableitemInfo entities for an Organisation exist in db)
Examples:
none:
{
"name": "testdomain123",
"domaintype": 1,
"handleDns": true,
"domaincontactLicensee": 1,
"action": "none",
"autoTeams": null
}
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: 1200)
- 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": 1200,
"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": 1200,
"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: 1200)
- 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: 1200)
- 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: 1200)
- 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)
- tag: (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
Get multi records
Delete multi records
post /domains/{domainId}/multirecords
Create multi records
get /domains/{domainId}/multirecords
Get multi records
URI Parameters
- domainId: required(string)
The unique identifier of a domain
HTTP status code 204
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"total": 1,
"multiRecords": [
{
"id": 11,
"status": "busy",
"params": {
"records": [
{
"type": "A",
"content": "193.104.8.1",
"name": "test1",
"indentifier": 1
},
{
"type": "URLFW1",
"content": "https://test4.level27.be",
"name": "test2",
"indentifier": 1
}
]
},
"response": [],
"domain": {
"id": 16523,
"name": "testlevel27",
"domaintype": {
"id": 364,
"extension": "be"
}
},
"statusCategory": "blue"
}
]
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a domain
delete /domains/{domainId}/multirecords
Delete multi records
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- params: required(string)
json (various parameters)
Example:
{
"params": {
"records": [
{
"type": "A",
"content": "193.104.8.1",
"name": "test1",
"indentifier": 1
},
{
"type": "URLFW1",
"content": "https://test4.level27.be",
"name": "test2",
"indentifier": 1
}
]
}
}
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"multiRecord": {
"id": 1,
"status": "error",
"params": {
"records": [
{
"type": "A",
"content": "193.104.8",
"name": "bl bla"
},
{
"type": "CNAME",
"content": "193.104.8.2",
"name": "bl bla"
}
]
},
"response": [
{
"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"
]
}
],
"domain": {
"id": 16523,
"name": "mytestdomainlevel27",
"domaintype": {
"id": 364,
"extension": "be"
}
},
"statusCategory": "red"
}
}
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
Get multi records
get /domains/{domainId}/multirecords/{id}
Get multi records
URI Parameters
- domainId: required(string)
The unique identifier of a domain
- id: required(string)
HTTP status code 204
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"multiRecord": {
"id": 1,
"status": "error",
"params": {
"records": [
{
"type": "A",
"content": "193.104.8",
"name": "bl bla"
},
{
"type": "CNAME",
"content": "193.104.8.2",
"name": "bl bla"
}
]
},
"response": [
{
"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"
]
}
],
"domain": {
"id": 16523,
"name": "mytestdomainlevel27",
"domaintype": {
"id": 364,
"extension": "be"
}
},
"statusCategory": "red"
}
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a domain
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": 1200,
"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": 1200,
"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": 1200,
"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_be_registration",
"description": ".be domain registration",
"account": "701001",
"category": "domains",
"prices": [
{
"id": 4422,
"period": 12,
"currency": "EUR",
"price": "750",
"timing": "pre",
"default": true,
"pricegroupId": "silver"
},
{
"id": 4423,
"period": 24,
"currency": "EUR",
"price": "1500",
"timing": "pre",
"default": false,
"pricegroupId": "silver"
}
],
"agreementPrices": [
{
"id": 1455,
"period": 12,
"currency": "EUR",
"price": "750",
"timing": "pre",
"default": true,
"pricegroupId": "gold"
},
{
"id": 1456,
"period": 24,
"currency": "EUR",
"price": "1500",
"timing": "pre",
"default": true,
"pricegroupId": "gold"
}
],
"defaultAgreementPrices": [
{
"id": 1453,
"period": 12,
"currency": "EUR",
"price": "2400",
"timing": "pre",
"default": true,
"pricegroupId": "default"
},
{
"id": 1454,
"period": 24,
"currency": "EUR",
"price": "4800",
"timing": "pre",
"default": false,
"pricegroupId": "default"
}
]
}
]
}
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)
- tag: (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)
- tag: (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)
- tag: (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
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)
- tag: (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)
- billingStatus: (string)
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- orderBy: (string)
- orderType: (string)
ASC or DESC
- filter: (string)
- tag: (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",
"billingStatus": "ok"
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Update a genericitem
Delete a genericitem
Get a genericitem
put /genericitems/{genericitemId}
Update a genericitem
URI Parameters
- genericitemId: required(string)
The unique identifier of a genericitem
Body
Media type: application/json
Type: object
Properties- description: (string)
Description
- organisation: required(integer)
The unique identifier of an organisation
- product: required(string)
The unique identifier of a Product
- externalInfo: (string)
ExternalInfo (required when billableitemInfo entities for an Organisation exist in db)
- 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
- app: required(integer)
The unique identifier of an app
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
}
],
"app": {
"id": 1,
"name": "My App"
},
"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)
- billingStatus: (string)
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- orderBy: (string)
- orderType: (string)
ASC or DESC
- filter: (string)
- tag: (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,
"billingStatus": "ok"
},
{
"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,
"billingStatus": "ok"
}
]
}
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
- externalInfo: (string)
ExternalInfo (required when billableitemInfo entities for an Organisation exist in db)
- app: required(integer)
The unique identifier of an app
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
}
],
"app": {
"id": 1,
"name": "My App"
},
"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
}
],
"app": {
"id": 1,
"name": "My App"
},
"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
}
],
"app": {
"id": 1,
"name": "My App"
},
"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)
- tag: (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)
- tag: (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)
- tag: (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 7 characters
- should be shorter than 30 characters
- should contain at least 1 number
- should contain at least 1 special character
- 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)
- billingStatus: (string)
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- orderBy: (string)
- orderType: (string)
ASC or DESC
- filter: (string)
- tag: (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,
"billingStatus": "ok"
}
]
}
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
- externalInfo: (string)
ExternalInfo (required when billableitemInfo entities for an Organisation exist in db)
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)
Username (Email-address)
- password: required(string)
Valid password:
- should be longer than 7 characters
- should be shorter than 30 characters
- should contain at least 1 number
- should contain at least 1 special character
- 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)
- tag: (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)
Username (Email-address)
- password: required(string)
Valid password:
- should be longer than 7 characters
- should be shorter than 30 characters
- should contain at least 1 number
- should contain at least 1 special character
- 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)
- tag: (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)
- tag: (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",
"chefEnvironment": "_default",
"dtLastPong": 1684926727,
"dtCreated": "1739800939",
"dtUpdated": "1739802508",
"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)
- billingStatus: (string)
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- orderBy: (string)
- orderType: (string)
ASC or DESC
- filter: (string)
- tag: (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,
"billingStatus": "ok"
}
]
}
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
- externalInfo: (string)
ExternalInfo (required when billableitemInfo entities for an Organisation exist in db)
- chefEnvironment: (one of _default, 12, 14, 16, 18, 20, 22, 24)
chefEnvironment
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",
"chefEnvironment": "_default",
"dtLastPong": 1684926727,
"dtCreated": "1739800939",
"dtUpdated": "1739802508",
"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)
- tag: (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)
- tag: (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, resetPassword)
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",
"chefEnvironment": "_default",
"dtLastPong": 1684926727,
"dtCreated": "1739800939",
"dtUpdated": "1739802508",
"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",
"chefEnvironment": "_default",
"dtLastPong": 1684926727,
"dtCreated": "1739800939",
"dtUpdated": "1739802508",
"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
- sshkeys: (array of any)
Array of sshkey ids
Examples:
1:
{
"sshkey": 1
}
2:
{
"sshkeys": [
1,
2,
3
]
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Examples:
1:
{
"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"
}
}
}
2:
{
"sshkeys": [
46,
340
]
}
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)
- tag: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"total": 1,
"sshkeys": [
{
"id": 1,
"description": "My key",
"status": "ok",
"fingerprint": "FINGER_PRINT",
"organisation": {
"id": 1,
"name": "level27"
},
"user": {
"id": 1,
"firstName": "Admin",
"lastName": "User",
"status": "ok",
"statusCategory": "green"
},
"statusCategory": "green",
"shsId": 11,
"shsStatusCategory": "green",
"shsStatus": "ok"
}
]
}
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
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"sshkey": {
"id": 1,
"description": "My key",
"status": "ok",
"fingerprint": "FINGER_PRINT",
"organisation": {
"id": 1,
"name": "level27"
},
"user": {
"id": 1,
"firstName": "Admin",
"lastName": "Test"
},
"statusCategory": "green",
"shsId": 11,
"shsStatusCategory": "green",
"shsStatus": "ok"
}
}
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
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)
- tag: (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"
},
"zones": [
{
"id": 12,
"name": "ams2",
"shortName": "2",
"minCpu": 1,
"maxCpu": 8,
"minMemory": "1.0",
"maxMemory": "20.0",
"minDisk": 10,
"maxDisk": 70
}
]
}
]
}
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 system names
get /systems/names
Get system names
Query Parameters
- systemIds: required(string)
csv of system ids
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"systems": [
{
"id": 1,
"fqdn": "e7239224d.level27.be",
"customerFqdn": null,
"name": "My system 1"
},
{
"id": 7,
"fqdn": "dsfde6ssd.test.be",
"customerFqdn": "mysystem2.level27.be",
"name": "My system 2"
}
]
}
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
get /systems/securityupdates
Get available security updates
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"total": 18,
"securityUpdates": [
{
"id": 1,
"wave": 0,
"description": "No security updates",
"autoAssign": false,
"operatingsystemType": null
},
{
"id": 2,
"wave": 1,
"description": "1st Tuesday of the month (22:00-0:00)",
"autoAssign": true,
"operatingsystemType": "linux"
},
{
"id": 3,
"wave": 2,
"description": "1st Tuesday of the month (22:00-0:00)",
"autoAssign": true,
"operatingsystemType": "windows"
},
{
"id": 4,
"wave": 3,
"description": "1st Tuesday of the month (22:00-0:00)",
"autoAssign": true,
"operatingsystemType": "linux"
},
{
"id": 5,
"wave": 4,
"description": "1st Tuesday of the month (22:00-0:00)",
"autoAssign": true,
"operatingsystemType": "windows"
},
{
"id": 6,
"wave": 5,
"description": "2nd Tuesday of the month (22:00-0:00)",
"autoAssign": true,
"operatingsystemType": "linux"
},
{
"id": 7,
"wave": 6,
"description": "2nd Tuesday of the month (22:00-0:00)",
"autoAssign": true,
"operatingsystemType": "windows"
},
{
"id": 8,
"wave": 7,
"description": "2nd Tuesday of the month (22:00-0:00)",
"autoAssign": true,
"operatingsystemType": "linux"
},
{
"id": 9,
"wave": 8,
"description": "2nd Tuesday of the month (22:00-0:00)",
"autoAssign": true,
"operatingsystemType": "windows"
},
{
"id": 10,
"wave": 9,
"description": "Manual: 4th Tuesday of the month (22:00-0:00)",
"autoAssign": false,
"operatingsystemType": null
},
{
"id": 11,
"wave": 10,
"description": "Manual: 4th Thursday of the month (8:00-10:00)",
"autoAssign": false,
"operatingsystemType": null
},
{
"id": 12,
"wave": 11,
"description": "3rd Tuesday of the month - Windows (22:00-0:00)",
"autoAssign": false,
"operatingsystemType": "windows"
},
{
"id": 13,
"wave": 12,
"description": "Manual: 3rd Tuesday of the month (22:00-0:00)",
"autoAssign": false,
"operatingsystemType": "windows"
},
{
"id": 14,
"wave": 13,
"description": "4rd Tuesday of the month - Windows (22:00-0:00)",
"autoAssign": true,
"operatingsystemType": "windows"
},
{
"id": 15,
"wave": 14,
"description": "3rd Tuesday of the month (22:00-0:00)",
"autoAssign": true,
"operatingsystemType": null
},
{
"id": 16,
"wave": 15,
"description": "Operating system version deprecated.",
"autoAssign": false,
"operatingsystemType": null
},
{
"id": 17,
"wave": 16,
"description": "Manual: Veam and backup systems - Linux",
"autoAssign": false,
"operatingsystemType": "linux"
},
{
"id": 18,
"wave": 17,
"description": "Manual: Veam and backup systems - Windows",
"autoAssign": false,
"operatingsystemType": "windows"
}
]
}
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)
Create a Checkalert for Url's Check
post /systems/{uid}/{password}/urls/checkalerts
Create a Checkalert for Url's Check
URI Parameters
- uid: required(string)
- password: required(string)
Body
Media type: application/json
Type: object
Properties- data: required(json)
Example:
{
"status": "firing",
"alerts": [
{
"status": "firing",
"labels": {
"alertgroup": "AHapp.1",
"alertname": "App 1 rule 1 resource 1",
"app": "1",
"component": "1",
"url": 1,
"check": 1,
"host": "my-host",
"instance": "3r332.myapp.be:9101",
"job": "agency",
"monitoringServer": "prometheus.level27.be",
"monitoringServerId": "1",
"organisationid": "1",
"severity": "critical",
"systemid": "1",
"systemuid": "system_uid",
"user": "hb44333"
},
"annotations": {
"message": "Check critical"
},
"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",
"app": "1",
"component": "1",
"url": 1,
"check": 1,
"host": "my-host",
"instance": "22222.earthcontrol.be:9101",
"job": "agency",
"monitoringServer": "prometheus.level27.be",
"monitoringServerId": "1",
"organisationid": "1",
"severity": "critical",
"systemid": "1",
"systemuid": "system_uid"
}
}
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
Get maintenance systems
get /systems/maintenance
Get maintenance systems
Query Parameters
- systemIds: required(string)
csv of system ids
- systemgroupIds: required(string)
csv of operating systemgroup ids
- status: (string)
- runningStatus: (string)
- cookbooks: required(string)
csv of cookbooktypes
- managementTypes: required(string)
csv of managementTypes
- installSecurityUpdates: required(string)
csv of installSecurityUpdates
- osTypes: required(string)
csv of operating system types
- osNames: required(string)
csv of operating system names
- osVersions: required(string)
csv of operating system versions
- types: required(string)
csv of system types
- zoneIds: required(string)
csv of zone ids
- monitoringEnabled: (boolean)
/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:
{
"total": 38,
"cookbooktypes": {
"cp4": {
"cookbooktype": {
"name": "cp4",
"displayName": "Base linux cookbook",
"description": "cp4",
"disabledOnProduction": false,
"invisibleOnProduction": false,
"category": "Internal",
"adminOnly": false,
"deletable": false,
"hideFromCookbookList": true,
"operatingSystem": "linux",
"parameters": [
{
"name": "sftp_detailed_logging",
"description": "Detailed SFTP logging",
"type": "boolean",
"defaultValue": false
},
{
"name": "fail2ban:enabled",
"description": "Fail2ban",
"type": "boolean",
"defaultValue": true
},
{
"name": "pci_compliant",
"description": "Create a PCI compliant configuration",
"type": "boolean",
"defaultValue": false
},
{
"name": "apm",
"description": "Enable elastic apm",
"type": "boolean",
"defaultValue": false
},
{
"name": "agency_hosting",
"description": "Configure system for agency hosting (resource control & monitoring)",
"type": "boolean",
"defaultValue": false
},
{
"name": "firewall",
"description": "Use Level27 firewall configuration",
"type": "boolean",
"defaultValue": false
},
{
"name": "enable_newrelic",
"description": "Enable new relic configuration",
"type": "boolean",
"defaultValue": false
},
{
"name": "limit_cron",
"description": "Limit the cron service with a systemd slice",
"type": "boolean",
"defaultValue": false
},
{
"name": "clear_swap",
"description": "Clear swap at night",
"type": "boolean",
"defaultValue": true
}
]
}
},
"cp4_nagios": {
"cookbooktype": {
"name": "cp4_nagios",
"displayName": "Nagios",
"description": "monitoring tool",
"disabledOnProduction": false,
"invisibleOnProduction": false,
"category": "Internal",
"adminOnly": true,
"deletable": true,
"hideFromCookbookList": false,
"operatingSystem": "linux",
"parameters": [
{
"name": "normal_check_interval",
"description": "Check the service every X minutes under normal conditions",
"type": "integer",
"defaultValue": 5
},
{
"name": "retry_check_interval",
"description": "Re-check the service every X minutes until a hard state can be determined",
"type": "integer",
"defaultValue": 2
},
{
"name": "service_check_timeout",
"description": "Check the service every X minutes under normal conditions",
"type": "integer",
"defaultValue": 90
},
{
"name": "host_check_timeout",
"description": "Check the service every X minutes under normal conditions",
"type": "integer",
"defaultValue": 30
}
]
}
},
"dns_bind": {
"cookbooktype": {
"name": "dns_bind",
"displayName": "dns_bind",
"description": "DNS Bind (only infrastructure)",
"disabledOnProduction": false,
"invisibleOnProduction": false,
"category": "Internal",
"adminOnly": true,
"deletable": true,
"hideFromCookbookList": false,
"operatingSystem": "linux",
"parameters": [
{
"name": "role",
"description": "Set it to master or slave",
"type": "string",
"defaultValue": "slave"
},
{
"name": "masterip",
"description": "IP of the master server",
"type": "string",
"defaultValue": ""
},
{
"name": "masteripv6",
"description": "Ipv6 of the master server",
"type": "string",
"defaultValue": ""
},
{
"name": "slaveips",
"description": "Comma seperated ip list of the dns slaves",
"type": "string",
"defaultValue": ""
},
{
"name": "dnsforwarders",
"description": "Comma seperated ip list of the dns forwarders",
"type": "string",
"defaultValue": ""
}
]
}
},
"docker": {
"cookbooktype": {
"name": "docker",
"displayName": "Docker",
"description": "container software",
"disabledOnProduction": false,
"invisibleOnProduction": false,
"category": "Applications",
"adminOnly": false,
"deletable": true,
"hideFromCookbookList": false,
"operatingSystem": "linux",
"parameters": [
{
"name": "monitoring_cache",
"description": "Docker monitoring check cache age",
"type": "integer",
"defaultValue": 7200
}
]
}
},
"dotnet": {
"cookbooktype": {
"name": "dotnet",
"displayName": ".NET",
"description": ".NET",
"disabledOnProduction": false,
"invisibleOnProduction": false,
"category": "Applications",
"adminOnly": false,
"deletable": true,
"hideFromCookbookList": false,
"operatingSystem": "linux",
"parameters": [
{
"name": "versions",
"description": ".NET versions",
"type": "select",
"defaultValue": null,
"componentParamName": "version"
}
],
"parameterOptions": {
"versions": {
"3.1": {
"name": "dotnet core 3.1",
"exclusive": false,
"value": "3.1",
"operatingsystem_versions": [
{
"name": "Ubuntu 18.04 LTS",
"default": false
},
{
"name": "Ubuntu 20.04 LTS",
"default": false
}
]
},
"5.0": {
"name": "dotnet 5.0",
"exclusive": false,
"value": "5.0",
"operatingsystem_versions": [
{
"name": "Ubuntu 18.04 LTS",
"default": false
},
{
"name": "Ubuntu 20.04 LTS",
"default": false
}
]
},
"6.0": {
"name": "dotnet 6.0",
"exclusive": false,
"value": "6.0",
"operatingsystem_versions": [
{
"name": "Ubuntu 18.04 LTS",
"default": true
},
{
"name": "Ubuntu 20.04 LTS",
"default": false
},
{
"name": "Ubuntu 22.04 LTS",
"default": false
},
{
"name": "Ubuntu 24.04 LTS",
"default": false
}
]
},
"7.0": {
"name": "dotnet 7.0",
"exclusive": false,
"value": "7.0",
"operatingsystem_versions": [
{
"name": "Ubuntu 18.04 LTS",
"default": false
},
{
"name": "Ubuntu 20.04 LTS",
"default": false
},
{
"name": "Ubuntu 22.04 LTS",
"default": false
},
{
"name": "Ubuntu 24.04 LTS",
"default": false
}
]
},
"8.0": {
"name": "dotnet 8.0",
"exclusive": false,
"value": "8.0",
"operatingsystem_versions": [
{
"name": "Ubuntu 20.04 LTS",
"default": true
},
{
"name": "Ubuntu 22.04 LTS",
"default": true
},
{
"name": "Ubuntu 24.04 LTS",
"default": true
}
]
}
}
}
}
},
"haproxy": {
"cookbooktype": {
"name": "haproxy",
"displayName": "Haproxy",
"description": "Loadbalancing software",
"disabledOnProduction": false,
"invisibleOnProduction": false,
"category": "Applications",
"adminOnly": false,
"deletable": true,
"hideFromCookbookList": false,
"operatingSystem": "linux",
"parameters": [
{
"name": "haip:ipv4",
"description": "High available ipv4 address",
"type": "string",
"defaultValue": "nil"
},
{
"name": "haip:ipv6",
"description": "High available ipv6 address",
"type": "string",
"defaultValue": "nil"
},
{
"name": "haip:routerid",
"description": "Router id of the high available ip addresses",
"type": "string",
"defaultValue": "nil"
},
{
"name": "backend:port",
"description": "Port of the backend the loadbalancer should proxy to",
"type": "string",
"defaultValue": "8080"
},
{
"name": "backend:ip",
"description": "Ip of the backend the loadbalancer should proxy to",
"type": "string",
"defaultValue": "172.0.0.1"
},
{
"name": "port",
"description": "Port the loadbalancer should bind to",
"type": "string",
"defaultValue": "80"
},
{
"name": "primary",
"description": "Is the loadbalancer the primary one",
"type": "boolean",
"defaultValue": true
},
{
"name": "varnish",
"description": "Is varnish present on the webservers",
"type": "boolean",
"defaultValue": false
},
{
"name": "expected_traffic",
"description": "The amount of traffic that should be expected",
"type": "string",
"defaultValue": "false"
},
{
"name": "server_id_samesite",
"description": "Restrict cookie to a first-party or same-site context (Only for Ubuntu 20.04 LTS)",
"type": "string",
"defaultValue": "nil"
},
{
"name": "config:service",
"description": "What service are we loadbalancing to",
"type": "string",
"defaultValue": "web"
}
]
}
},
"hypervisor": {
"cookbooktype": {
"name": "hypervisor",
"displayName": "Hypervisor",
"description": "Hypervisor",
"disabledOnProduction": false,
"invisibleOnProduction": false,
"category": "Internal",
"adminOnly": true,
"deletable": true,
"hideFromCookbookList": false,
"operatingSystem": "linux",
"hostileCookbooks": [
"storage"
],
"parameters": [
{
"name": "hw_model",
"description": "Hardware model of the hypervisor",
"type": "string",
"defaultValue": "default"
},
{
"name": "allow_nested_vm",
"description": "Allow nested VMs",
"type": "boolean",
"defaultValue": false
}
]
}
},
"java": {
"cookbooktype": {
"name": "java",
"displayName": "Java",
"description": "Java",
"disabledOnProduction": false,
"invisibleOnProduction": false,
"category": "Applications",
"adminOnly": false,
"deletable": true,
"hideFromCookbookList": false,
"operatingSystem": "linux",
"parameters": [
{
"name": "versions",
"description": "JRE versions",
"type": "select",
"defaultValue": null,
"componentParamName": "version"
}
],
"parameterOptions": {
"versions": {
"8": {
"name": "Java 8",
"exclusive": false,
"value": "8",
"operatingsystem_versions": [
{
"name": "Ubuntu 18.04 LTS",
"default": false
},
{
"name": "Ubuntu 20.04 LTS",
"default": false
},
{
"name": "Ubuntu 22.04 LTS",
"default": false
},
{
"name": "Ubuntu 24.04 LTS",
"default": false
}
]
},
"11": {
"name": "Java 11",
"exclusive": false,
"value": "11",
"operatingsystem_versions": [
{
"name": "Ubuntu 18.04 LTS",
"default": false
},
{
"name": "Ubuntu 20.04 LTS",
"default": false
},
{
"name": "Ubuntu 22.04 LTS",
"default": false
},
{
"name": "Ubuntu 24.04 LTS",
"default": false
}
]
},
"13": {
"name": "Java 13",
"exclusive": false,
"value": "13",
"operatingsystem_versions": [
{
"name": "Ubuntu 20.04 LTS",
"default": false
}
]
},
"16": {
"name": "Java 16",
"exclusive": false,
"value": "16",
"operatingsystem_versions": [
{
"name": "Ubuntu 20.04 LTS",
"default": false
}
]
},
"17": {
"name": "Java 17",
"exclusive": false,
"value": "17",
"operatingsystem_versions": [
{
"name": "Ubuntu 18.04 LTS",
"default": true
},
{
"name": "Ubuntu 20.04 LTS",
"default": true
},
{
"name": "Ubuntu 22.04 LTS",
"default": true
},
{
"name": "Ubuntu 24.04 LTS",
"default": true
}
]
},
"18": {
"name": "Java 18",
"exclusive": false,
"value": "18",
"operatingsystem_versions": [
{
"name": "Ubuntu 22.04 LTS",
"default": false
}
]
},
"19": {
"name": "Java 19",
"exclusive": false,
"value": "19",
"operatingsystem_versions": [
{
"name": "Ubuntu 22.04 LTS",
"default": false
}
]
},
"21": {
"name": "Java 21",
"exclusive": false,
"value": "21",
"operatingsystem_versions": [
{
"name": "Ubuntu 22.04 LTS",
"default": false
},
{
"name": "Ubuntu 24.04 LTS",
"default": false
}
]
}
}
}
}
},
"k8s_worker": {
"cookbooktype": {
"name": "k8s_worker",
"displayName": "k8sworker",
"description": "Kubernetes worker",
"disabledOnProduction": false,
"invisibleOnProduction": false,
"category": "Kubernetes",
"adminOnly": false,
"deletable": true,
"hideFromCookbookList": false,
"operatingSystem": "linux",
"parameters": [
{
"name": "master_service_host",
"description": "Kubernetes master host",
"type": "string",
"defaultValue": "nil"
},
{
"name": "master_service_port",
"description": "Kubernetes master port",
"type": "string",
"defaultValue": 6443
},
{
"name": "advertise_cluster_range",
"description": "CLuster ip range",
"type": "string",
"defaultValue": "nil"
}
]
}
},
"mail_box": {
"cookbooktype": {
"name": "mail_box",
"displayName": "Mailbox",
"description": "Mailbox",
"disabledOnProduction": false,
"invisibleOnProduction": false,
"category": "Mail",
"adminOnly": true,
"deletable": true,
"hideFromCookbookList": false,
"operatingSystem": "linux",
"parameters": [
{
"name": "relay_host",
"description": "System to relay outgoing email to.",
"type": "string",
"defaultValue": ""
}
]
}
},
"mail_lb": {
"cookbooktype": {
"name": "mail_lb",
"displayName": "mail_lb",
"description": "mail_lb",
"disabledOnProduction": false,
"invisibleOnProduction": false,
"category": "Mail",
"adminOnly": true,
"deletable": true,
"hideFromCookbookList": false,
"operatingSystem": "linux",
"parameters": [
{
"name": "relay_host",
"description": "System to relay outgoing email to.",
"type": "string",
"defaultValue": ""
}
]
}
},
"mail_smtpin": {
"cookbooktype": {
"name": "mail_smtpin",
"displayName": "Mail smtpin",
"description": "Mail smtpin",
"disabledOnProduction": false,
"invisibleOnProduction": false,
"category": "Mail",
"adminOnly": true,
"deletable": true,
"hideFromCookbookList": false,
"operatingSystem": "linux",
"parameters": []
}
},
"mail_smtpout": {
"cookbooktype": {
"name": "mail_smtpout",
"displayName": "Mail smtpout",
"description": "Mail smtpout",
"disabledOnProduction": false,
"invisibleOnProduction": false,
"category": "Mail",
"adminOnly": true,
"deletable": true,
"hideFromCookbookList": false,
"operatingSystem": "linux",
"parameters": [
{
"name": "bind",
"description": "Postfix bind address",
"type": "string",
"defaultValue": "0.0.0.0"
},
{
"name": "smtp_destination_rate_delay",
"description": "Postfix outgoing smtp_destination_rate_delay",
"type": "string",
"defaultValue": "1s"
},
{
"name": "smtp_destination_concurrency_limit",
"description": "Postfix outgoing smtp_destination_concurrency_limit",
"type": "integer",
"defaultValue": 5
},
{
"name": "maximal_queue_lifetime",
"description": "Postfix outgoing maximal_queue_lifetime",
"type": "string",
"defaultValue": "5d"
},
{
"name": "bounce_queue_lifetime",
"description": "Postfix outgoing bounce_queue_lifetime",
"type": "string",
"defaultValue": "5d"
},
{
"name": "dkim_selector",
"description": "DKIM selector to distinguish DKIM keys",
"type": "string",
"defaultValue": "level27-cp4"
},
{
"name": "block_outgoing_spam",
"description": "Block outgoing mails that are marked as spam.",
"type": "boolean",
"defaultValue": false
}
]
}
},
"memcached": {
"cookbooktype": {
"name": "memcached",
"displayName": "Memcached",
"description": "Memcached",
"disabledOnProduction": false,
"invisibleOnProduction": true,
"category": "Applications",
"adminOnly": false,
"deletable": true,
"hideFromCookbookList": false,
"operatingSystem": "linux",
"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
}
]
}
},
"mongodb": {
"cookbooktype": {
"name": "mongodb",
"displayName": "Mongodb",
"description": "Mongodb\\n================\\nMongoDB is a free and open-source cross-platform document-oriented database program",
"disabledOnProduction": false,
"invisibleOnProduction": false,
"category": "Databases",
"adminOnly": false,
"deletable": true,
"hideFromCookbookList": false,
"operatingSystem": "linux",
"parameters": [
{
"name": "port",
"description": "Port",
"type": "string",
"defaultValue": "27017"
},
{
"name": "listen",
"description": "Listen",
"type": "string",
"defaultValue": "127.0.0.1"
},
{
"name": "backups:retention",
"description": "Backup retention",
"type": "string",
"defaultValue": "3"
},
{
"name": "authorization",
"description": "Allow only authorized users",
"type": "boolean",
"defaultValue": false
}
]
}
},
"mssql": {
"cookbooktype": {
"name": "mssql",
"displayName": "MSSQL",
"description": "Microsof SQL Server",
"disabledOnProduction": true,
"invisibleOnProduction": true,
"category": "Databases",
"adminOnly": false,
"deletable": true,
"hideFromCookbookList": false,
"operatingSystem": "linux",
"parameters": [
{
"name": "port",
"description": "Port",
"type": "string",
"defaultValue": "1433"
},
{
"name": "bind_address",
"description": "Bind address",
"type": "string",
"defaultValue": "localhost"
},
{
"name": "version",
"description": "MSSQL version",
"type": "string",
"defaultValue": "2017"
},
{
"name": "edition",
"description": "MSSQL edition",
"type": "choice",
"defaultValue": "web",
"possibleValues": [
"web",
"standard",
"enterprise"
]
},
{
"name": "backup_drive",
"description": "Backup drive",
"type": "string",
"defaultValue": ""
}
],
"products": [
{
"produtNamePrefix": "system_license_microsoft_sql_",
"produtNameSuffix": "4vcpu",
"dependentParameter": "edition"
},
{
"produtNamePrefix": "system_license_microsoft_sql_",
"produtNameSuffix": "2vcpu",
"dependentParameter": "edition"
}
]
}
},
"mysql": {
"cookbooktype": {
"name": "mysql",
"displayName": "Mysql",
"description": "MySQL is an open-source relational database management system (RDBMS)",
"disabledOnProduction": false,
"invisibleOnProduction": false,
"category": "Databases",
"adminOnly": false,
"deletable": true,
"hideFromCookbookList": false,
"operatingSystem": "linux",
"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": "read_rnd_buffer_size",
"description": "Read rnd buffer size",
"type": "integer",
"defaultValue": 2
},
{
"name": "sort_buffer_size",
"description": "Sort buffer size",
"type": "integer",
"defaultValue": 2
},
{
"name": "join_buffer_size",
"description": "Join Buffer Size",
"type": "integer",
"defaultValue": 8
},
{
"name": "key_buffer_size",
"description": "Key Buffer Size",
"type": "integer",
"defaultValue": 8
},
{
"name": "max_allowed_packet",
"description": "Max Allowed Packet",
"type": "integer",
"defaultValue": 16
},
{
"name": "table_cache",
"description": "Table cache",
"type": "integer",
"defaultValue": 400
},
{
"name": "thread_stack",
"description": "Table cache",
"type": "integer",
"defaultValue": 128
},
{
"name": "port",
"description": "Port",
"type": "string",
"defaultValue": "3306"
},
{
"name": "bind_address",
"description": "Bind address",
"type": "string",
"defaultValue": "localhost"
},
{
"name": "timeout",
"description": "Timeout",
"type": "integer",
"defaultValue": 180
},
{
"name": "optimize",
"description": "Optimize mysql based on current resources",
"type": "boolean",
"defaultValue": false
},
{
"name": "version",
"description": "MySQL version",
"type": "select",
"defaultValue": null
},
{
"name": "backups:type",
"description": "type of backup that should be used",
"type": "string",
"defaultValue": "mysqldump"
},
{
"name": "backups:delay",
"description": "how many seconds after 10 pm belgian time should the backups start",
"type": "integer",
"defaultValue": 0
},
{
"name": "backups:enable",
"description": "enable or disable the backups",
"type": "boolean",
"defaultValue": true
},
{
"name": "backups:tablefiles",
"description": "create separate sql files for each table",
"type": "boolean",
"defaultValue": false
},
{
"name": "slowlog:enable",
"description": "Create slow log file",
"type": "boolean",
"defaultValue": true
},
{
"name": "slowlog:time",
"description": "Query time of slow log entries",
"type": "integer",
"defaultValue": 1
},
{
"name": "binlog:enable",
"description": "Create binary log",
"type": "boolean",
"defaultValue": false
},
{
"name": "binlog:expire",
"description": "Binary log expire days",
"type": "integer",
"defaultValue": 3
},
{
"name": "replication:enable",
"description": "Enable replication",
"type": "boolean",
"defaultValue": false
},
{
"name": "replication:increment",
"description": "Auto increment",
"type": "integer",
"defaultValue": 1
},
{
"name": "replication:offset",
"description": "Auto increment offset",
"type": "integer",
"defaultValue": 1
},
{
"name": "tmpdir",
"description": "Save temporary dirs to seperate disk",
"type": "boolean",
"defaultValue": false
},
{
"name": "storage",
"description": "On what storage is the database running",
"type": "string",
"defaultValue": "disk"
},
{
"name": "xinetd",
"description": "Create xinetd check for failover",
"type": "boolean",
"defaultValue": false
},
{
"name": "skip_name_resolve",
"description": "Enable skip name resolve",
"type": "boolean",
"defaultValue": false
}
],
"parameterOptions": {
"version": {
"5.5": {
"name": "MySQL 5.5",
"value": "5.5",
"exclusive": true,
"operatingsystem_versions": [
{
"name": "Ubuntu 12.04 LTS",
"default": true
},
{
"name": "Ubuntu 14.04 LTS",
"default": true
},
{
"name": "Debian 7",
"default": true
},
{
"name": "Debian 8.10",
"default": true
}
]
},
"5.7": {
"name": "MySQL 5.7",
"value": "5.7",
"exclusive": true,
"operatingsystem_versions": [
{
"name": "Ubuntu 16.04 LTS",
"default": true
},
{
"name": "Ubuntu 18.04 LTS",
"default": true
},
{
"name": "Ubuntu 20.04 LTS",
"default": false
},
{
"name": "Debian 9",
"default": true
},
{
"name": "Debian 9.3",
"default": true
},
{
"name": "CentOS 6.5",
"default": true
},
{
"name": "CentOS 7.4",
"default": true
}
]
},
"8.0": {
"name": "MySQL 8.0",
"value": "8.0",
"exclusive": true,
"operatingsystem_versions": [
{
"name": "Ubuntu 16.04 LTS",
"default": false
},
{
"name": "Ubuntu 18.04 LTS",
"default": false
},
{
"name": "Ubuntu 20.04 LTS",
"default": true
},
{
"name": "Ubuntu 22.04 LTS",
"default": true
},
{
"name": "Ubuntu 24.04 LTS",
"default": false
},
{
"name": "Debian 9",
"default": false
},
{
"name": "CentOS 6.5",
"default": false
},
{
"name": "CentOS 7.4",
"default": false
}
]
},
"8.4": {
"name": "MySQL 8.4",
"value": "8.4",
"exclusive": true,
"operatingsystem_versions": [
{
"name": "Ubuntu 24.04 LTS",
"default": true
}
]
}
}
}
}
},
"nodejs": {
"cookbooktype": {
"name": "nodejs",
"displayName": "NodeJs",
"description": "NodeJs",
"disabledOnProduction": false,
"invisibleOnProduction": false,
"category": "Applications",
"adminOnly": false,
"deletable": true,
"hideFromCookbookList": false,
"operatingSystem": "linux",
"parameters": []
}
},
"php": {
"cookbooktype": {
"name": "php",
"displayName": "PHP-FPM",
"description": "PHP-FPM",
"disabledOnProduction": false,
"invisibleOnProduction": false,
"category": "Applications",
"adminOnly": false,
"deletable": true,
"hideFromCookbookList": false,
"operatingSystem": "linux",
"apmSupported": true,
"parameters": [
{
"name": "apache:port",
"description": "apache listening port",
"type": "string",
"defaultValue": 8080
},
{
"name": "apache:bind",
"description": "apache listening address",
"type": "string",
"defaultValue": "127.0.0.1"
},
{
"name": "apache:ssl",
"description": "ssl",
"type": "boolean",
"defaultValue": false
},
{
"name": "apache:blockbots",
"description": "BLock bots",
"type": "boolean",
"defaultValue": false
},
{
"name": "memory_limit",
"description": "Memory limit",
"type": "integer",
"defaultValue": 256
},
{
"name": "cli_memory_limit",
"description": "CLI memory limit (MB)",
"type": "string",
"defaultValue": -1
},
{
"name": "max_execution_time",
"description": "Max execution time",
"type": "integer",
"defaultValue": 120
},
{
"name": "upload_max_filesize",
"description": "Max upload filesize",
"type": "integer",
"defaultValue": 20
},
{
"name": "versions",
"description": "PHP versions",
"type": "select",
"defaultValue": null,
"componentParamName": "version"
},
{
"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"
},
{
"name": "max_session_lifetime",
"description": "Max php session lifetime",
"type": "integer",
"defaultValue": 1440
},
{
"name": "short_open_tag",
"description": "Allow short open tag",
"type": "boolean",
"defaultValue": true
},
{
"name": "phpmyadmin:enable",
"description": "Enable phpmyadmin",
"type": "boolean",
"defaultValue": true
},
{
"name": "phpmyadmin:database_host",
"description": "IP address of the database (specify multiple with comma)",
"type": "string",
"defaultValue": "localhost"
},
{
"name": "process_manager",
"description": "PHP process manager",
"type": "string",
"defaultValue": "ondemand"
},
{
"name": "display_errors",
"description": "show display errors",
"type": "string",
"defaultValue": "no"
},
{
"name": "mcrypt_enabled",
"description": "Enable mcrypt",
"type": "boolean",
"defaultValue": false
},
{
"name": "remoteip",
"description": "Enable remote ip module",
"type": "boolean",
"defaultValue": false
},
{
"name": "default_socket_timeout",
"description": "Socket timeout",
"type": "integer",
"defaultValue": 60
},
{
"name": "timezone",
"description": "Time zone configured in PHP",
"type": "string",
"defaultValue": "Europe/Brussels"
}
],
"parameterOptions": {
"versions": {
"5.3": {
"name": "PHP 5.3",
"exclusive": false,
"value": "5.3",
"operatingsystem_versions": [
{
"name": "Ubuntu 14.04 LTS",
"default": false
},
{
"name": "Ubuntu 18.04 LTS",
"default": false
}
]
},
"5.5": {
"name": "PHP 5.5",
"exclusive": true,
"value": "5.5",
"operatingsystem_versions": [
{
"name": "Ubuntu 14.04 LTS",
"default": false
}
]
},
"5.6": {
"name": "PHP 5.6",
"value": "5.6",
"exclusive": false,
"operatingsystem_versions": [
{
"name": "Ubuntu 24.04 LTS",
"default": false
},
{
"name": "Ubuntu 22.04 LTS",
"default": false
},
{
"name": "Ubuntu 20.04 LTS",
"default": false
},
{
"name": "Ubuntu 14.04 LTS",
"default": true
},
{
"name": "Ubuntu 16.04 LTS",
"default": false
},
{
"name": "Ubuntu 18.04 LTS",
"default": false
},
{
"name": "Debian 8",
"default": false
},
{
"name": "Debian 8.10",
"default": false
},
{
"name": "Debian 9",
"default": false
}
]
},
"7.0": {
"name": "PHP 7.0",
"value": "7.0",
"exclusive": false,
"operatingsystem_versions": [
{
"name": "Ubuntu 24.04 LTS",
"default": false
},
{
"name": "Ubuntu 22.04 LTS",
"default": false
},
{
"name": "Ubuntu 20.04 LTS",
"default": false
},
{
"name": "Ubuntu 14.04 LTS",
"default": false
},
{
"name": "Ubuntu 16.04 LTS",
"default": true
},
{
"name": "Ubuntu 18.04 LTS",
"default": false
},
{
"name": "Debian 8",
"default": true
},
{
"name": "Debian 9",
"default": true
}
]
},
"7.1": {
"name": "PHP 7.1",
"value": "7.1",
"exclusive": false,
"operatingsystem_versions": [
{
"name": "Ubuntu 24.04 LTS",
"default": false
},
{
"name": "Ubuntu 22.04 LTS",
"default": false
},
{
"name": "Ubuntu 20.04 LTS",
"default": false
},
{
"name": "Ubuntu 14.04 LTS",
"default": false
},
{
"name": "Ubuntu 16.04 LTS",
"default": false
},
{
"name": "Ubuntu 18.04 LTS",
"default": false
},
{
"name": "Debian 8",
"default": false
},
{
"name": "Debian 9",
"default": false
}
]
},
"7.2": {
"name": "PHP 7.2",
"value": "7.2",
"exclusive": false,
"operatingsystem_versions": [
{
"name": "Ubuntu 24.04 LTS",
"default": false
},
{
"name": "Ubuntu 22.04 LTS",
"default": false
},
{
"name": "Ubuntu 20.04 LTS",
"default": false
},
{
"name": "Ubuntu 14.04 LTS",
"default": false
},
{
"name": "Ubuntu 16.04 LTS",
"default": false
},
{
"name": "Ubuntu 18.04 LTS",
"default": true
},
{
"name": "Debian 8",
"default": false
},
{
"name": "Debian 9",
"default": false
}
]
},
"7.3": {
"name": "PHP 7.3",
"value": "7.3",
"exclusive": false,
"operatingsystem_versions": [
{
"name": "Ubuntu 24.04 LTS",
"default": false
},
{
"name": "Ubuntu 22.04 LTS",
"default": false
},
{
"name": "Ubuntu 20.04 LTS",
"default": false
},
{
"name": "Ubuntu 14.04 LTS",
"default": false
},
{
"name": "Ubuntu 16.04 LTS",
"default": false
},
{
"name": "Ubuntu 18.04 LTS",
"default": false
},
{
"name": "Debian 8",
"default": false
},
{
"name": "Debian 9",
"default": false
}
]
},
"7.4": {
"name": "PHP 7.4",
"value": "7.4",
"exclusive": false,
"operatingsystem_versions": [
{
"name": "Ubuntu 24.04 LTS",
"default": false
},
{
"name": "Ubuntu 22.04 LTS",
"default": false
},
{
"name": "Ubuntu 20.04 LTS",
"default": true
},
{
"name": "Ubuntu 16.04 LTS",
"default": false
},
{
"name": "Ubuntu 18.04 LTS",
"default": false
},
{
"name": "Debian 8",
"default": false
},
{
"name": "Debian 9",
"default": false
}
]
},
"8.0": {
"name": "PHP 8.0",
"value": "8.0",
"exclusive": false,
"operatingsystem_versions": [
{
"name": "Ubuntu 24.04 LTS",
"default": false
},
{
"name": "Ubuntu 22.04 LTS",
"default": false
},
{
"name": "Ubuntu 20.04 LTS",
"default": false
},
{
"name": "Ubuntu 16.04 LTS",
"default": false
},
{
"name": "Ubuntu 18.04 LTS",
"default": false
},
{
"name": "Debian 8",
"default": false
},
{
"name": "Debian 9",
"default": false
}
]
},
"8.1": {
"name": "PHP 8.1",
"value": "8.1",
"exclusive": false,
"operatingsystem_versions": [
{
"name": "Ubuntu 24.04 LTS",
"default": false
},
{
"name": "Ubuntu 22.04 LTS",
"default": true
},
{
"name": "Ubuntu 20.04 LTS",
"default": false
},
{
"name": "Ubuntu 18.04 LTS",
"default": false
}
]
},
"8.2": {
"name": "PHP 8.2",
"value": "8.2",
"exclusive": false,
"operatingsystem_versions": [
{
"name": "Ubuntu 24.04 LTS",
"default": false
},
{
"name": "Ubuntu 22.04 LTS",
"default": false
},
{
"name": "Ubuntu 20.04 LTS",
"default": false
},
{
"name": "Ubuntu 18.04 LTS",
"default": false
}
]
},
"8.3": {
"name": "PHP 8.3",
"value": "8.3",
"exclusive": false,
"operatingsystem_versions": [
{
"name": "Ubuntu 24.04 LTS",
"default": false
},
{
"name": "Ubuntu 22.04 LTS",
"default": false
},
{
"name": "Ubuntu 20.04 LTS",
"default": false
}
]
},
"8.4": {
"name": "PHP 8.4",
"value": "8.4",
"exclusive": false,
"operatingsystem_versions": [
{
"name": "Ubuntu 24.04 LTS",
"default": true
},
{
"name": "Ubuntu 22.04 LTS",
"default": false
},
{
"name": "Ubuntu 20.04 LTS",
"default": false
}
]
}
}
}
}
},
"postfix": {
"cookbooktype": {
"name": "postfix",
"displayName": "Postfix",
"description": "Mail server",
"disabledOnProduction": false,
"invisibleOnProduction": false,
"category": "Mail",
"adminOnly": false,
"deletable": true,
"hideFromCookbookList": false,
"operatingSystem": "linux",
"parameters": [
{
"name": "listening_address",
"description": "Listening address of the mail server",
"type": "string",
"defaultValue": "127.0.0.1"
},
{
"name": "contentfilter",
"description": "Content filter",
"type": "boolean",
"defaultValue": true
},
{
"name": "authentication",
"description": "Enable SASL authentication",
"type": "choice",
"defaultValue": "ignore",
"possibleValues": [
"ignore",
"may",
"force"
]
},
{
"name": "tls",
"description": "Enable TLS for outgoing mail",
"type": "boolean",
"defaultValue": true
},
{
"name": "dkim",
"description": "Enable DKIM",
"type": "boolean",
"defaultValue": false
},
{
"name": "message_size_limit",
"description": "Message size limit (MB)",
"type": "integer",
"defaultValue": 10
}
]
}
},
"postgresql": {
"cookbooktype": {
"name": "postgresql",
"displayName": "PostgreSQL",
"description": "PostgreSQL\\n================\\nPostgreSQL, also known as Postgres, is a free and open-source relational database management system emphasizing extensibility and SQL compliance.",
"disabledOnProduction": false,
"invisibleOnProduction": false,
"category": "Databases",
"adminOnly": false,
"deletable": true,
"hideFromCookbookList": false,
"operatingSystem": "linux",
"parameters": [
{
"name": "version",
"description": "PostgreSQL version",
"type": "select",
"defaultValue": null
},
{
"name": "max_wal_size",
"description": "Maximum amount of Write-Ahead-Logging",
"type": "string",
"defaultValue": "4GB"
},
{
"name": "min_wal_size",
"description": "Minimum amount of Write-Ahead-Logging",
"type": "string",
"defaultValue": "1GB"
},
{
"name": "effective_io_concurrency",
"description": "Number of simultaneous requests that can be handled efficiently by the disk subsystem",
"type": "integer",
"defaultValue": 200
},
{
"name": "max_number_connections",
"description": "Maximum number of concurrent connections to the database server",
"type": "integer",
"defaultValue": 100
},
{
"name": "listen_addresses",
"description": "Address(es) that postgres will listen on for TCP connections",
"type": "string",
"defaultValue": "localhost"
},
{
"name": "port",
"description": "Port that postgres will listen on for TCP connections",
"type": "integer",
"defaultValue": 5432
}
],
"parameterOptions": {
"version": {
"12": {
"name": "PostgreSQL 12",
"value": "12",
"exclusive": true,
"operatingsystem_versions": [
{
"name": "Ubuntu 18.04 LTS",
"default": false
},
{
"name": "Ubuntu 20.04 LTS",
"default": false
},
{
"name": "Ubuntu 16.04 LTS",
"default": false
},
{
"name": "Ubuntu 22.04 LTS",
"default": false
},
{
"name": "Ubuntu 24.04 LTS",
"default": false
}
]
},
"13": {
"name": "PostgreSQL 13",
"value": "13",
"exclusive": true,
"operatingsystem_versions": [
{
"name": "Ubuntu 18.04 LTS",
"default": false
},
{
"name": "Ubuntu 20.04 LTS",
"default": false
},
{
"name": "Ubuntu 22.04 LTS",
"default": false
},
{
"name": "Ubuntu 24.04 LTS",
"default": false
},
{
"name": "Ubuntu 16.04 LTS",
"default": true
}
]
},
"14": {
"name": "PostgreSQL 14",
"value": "14",
"exclusive": true,
"operatingsystem_versions": [
{
"name": "Ubuntu 18.04 LTS",
"default": true
},
{
"name": "Ubuntu 20.04 LTS",
"default": true
},
{
"name": "Ubuntu 22.04 LTS",
"default": true
},
{
"name": "Ubuntu 24.04 LTS",
"default": true
}
]
}
}
}
}
},
"prometheus": {
"cookbooktype": {
"name": "prometheus",
"displayName": "Prometheus",
"description": "Prometheus Monitoring Service",
"disabledOnProduction": true,
"invisibleOnProduction": true,
"category": "Applications",
"adminOnly": true,
"deletable": true,
"hideFromCookbookList": false,
"operatingSystem": "linux",
"parameters": [
{
"name": "remotewrite",
"description": "Prometheus remote write destinations (comma separated)",
"type": "string",
"defaultValue": "http://127.0.0.1:8428/api/v1/write"
},
{
"name": "blackbox_exporter_endpoint",
"description": "Endpoint for blackbox exporter",
"type": "string",
"defaultValue": "127.0.0.1:9115"
}
]
}
},
"python": {
"cookbooktype": {
"name": "python",
"displayName": "Python",
"description": "Python",
"disabledOnProduction": false,
"invisibleOnProduction": false,
"category": "Applications",
"adminOnly": false,
"deletable": true,
"hideFromCookbookList": false,
"operatingSystem": "linux",
"parameters": [
{
"name": "apache:port",
"description": "apache listening port",
"type": "string",
"defaultValue": 8080
},
{
"name": "apache:bind",
"description": "apache listening address",
"type": "string",
"defaultValue": "127.0.0.1"
}
]
}
},
"restore": {
"cookbooktype": {
"name": "restore",
"displayName": "Restore server",
"description": "Restore configuration",
"disabledOnProduction": false,
"invisibleOnProduction": false,
"category": "Internal",
"adminOnly": true,
"deletable": true,
"hideFromCookbookList": false,
"operatingSystem": "linux",
"parameters": [
{
"name": "cp4:user",
"description": "cp4 user",
"type": "string",
"defaultValue": "restores"
},
{
"name": "cp4:host",
"description": "cp4 ip",
"type": "string",
"defaultValue": ""
},
{
"name": "cp4:path",
"description": "Remote path for restores",
"type": "string",
"defaultValue": "/var/sftp/restores/storage"
},
{
"name": "loglevel",
"description": "Restore script log level",
"type": "string",
"defaultValue": "info"
}
]
}
},
"storage": {
"cookbooktype": {
"name": "storage",
"displayName": "storage_nfs",
"description": "storage_nfs",
"disabledOnProduction": false,
"invisibleOnProduction": false,
"category": "Internal",
"adminOnly": true,
"deletable": true,
"hideFromCookbookList": false,
"operatingSystem": "linux",
"hostileCookbooks": [
"hypervisor"
],
"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",
"disabledOnProduction": true,
"invisibleOnProduction": true,
"category": "Internal",
"adminOnly": true,
"deletable": true,
"hideFromCookbookList": false,
"operatingSystem": "linux",
"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
},
{
"name": "fail_create_compile",
"description": "create job will fail with compiling error if true",
"type": "boolean",
"defaultValue": false
}
]
}
},
"tools.yaml": [],
"tools": {
"cookbooktype": {
"name": "tools",
"displayName": "tools",
"description": "tools",
"disabledOnProduction": false,
"invisibleOnProduction": false,
"category": "Internal",
"adminOnly": false,
"deletable": true,
"hideFromCookbookList": false,
"operatingSystem": "linux",
"parameters": [
{
"name": "packages",
"description": "packages to install",
"type": "string",
"defaultValue": ""
}
]
}
},
"url": {
"cookbooktype": {
"name": "url",
"displayName": "Url",
"description": "Url",
"disabledOnProduction": false,
"invisibleOnProduction": false,
"category": "Applications",
"adminOnly": false,
"deletable": true,
"hideFromCookbookList": false,
"operatingSystem": "linux",
"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"
},
{
"name": "default_vhost",
"description": "Create default nginx vhost",
"type": "boolean",
"defaultValue": true
},
{
"name": "max_upload_filesize",
"description": "Max upload filesize",
"type": "integer",
"defaultValue": 20
},
{
"name": "timeout",
"description": "Request timeout",
"type": "integer",
"defaultValue": 120
},
{
"name": "geoip",
"description": "GeoIP headers",
"type": "boolean",
"defaultValue": false
},
{
"name": "waf",
"description": "Web Application Firewall",
"type": "boolean",
"defaultValue": false
},
{
"name": "blocker:ratelimit",
"description": "WAF rate limiting",
"type": "boolean",
"defaultValue": true
},
{
"name": "blocker:ratelimit_type",
"description": "WAF rate limiting type",
"type": "choice",
"defaultValue": "1",
"possibleValues": [
"1",
"2"
]
},
{
"name": "blocker:ratelimit_get",
"description": "WAF limiting get requests per second",
"type": "integer",
"defaultValue": 5
},
{
"name": "blocker:ratelimit_post",
"description": "WAF limiting post requests per second",
"type": "integer",
"defaultValue": 2
},
{
"name": "blocker:ratelimit_get_bot",
"description": "WAF limiting get requests per second for bots",
"type": "integer",
"defaultValue": 5
},
{
"name": "blocker:ratelimit_post_bot",
"description": "WAF limiting post requests per second for bots",
"type": "integer",
"defaultValue": 2
},
{
"name": "blocker:ratelimit_imposter",
"description": "WAF limiting requests per second for imposters",
"type": "integer",
"defaultValue": 20
},
{
"name": "blocker:ratelimit_get_burst",
"description": "WAF limiting GET burst",
"type": "integer",
"defaultValue": 10
},
{
"name": "blocker:ratelimit_post_burst",
"description": "WAF limiting POST burst",
"type": "integer",
"defaultValue": 4
},
{
"name": "blocker:ratelimit_get_burst_bot",
"description": "WAF limiting GET burst for bots",
"type": "integer",
"defaultValue": 10
},
{
"name": "blocker:ratelimit_post_burst_bot",
"description": "WAF limiting POST burst for bots",
"type": "integer",
"defaultValue": 4
},
{
"name": "blocker:ratelimit_imposter_burst",
"description": "WAF limiting burst for imposters",
"type": "integer",
"defaultValue": 10
},
{
"name": "blocker:app_block",
"description": "WAF enable app blocking",
"type": "boolean",
"defaultValue": true
},
{
"name": "ssl_level",
"description": "Ssl level",
"type": "select",
"defaultValue": null
}
],
"parameterOptions": {
"ssl_level": {
"A+": {
"name": "SSL A+",
"value": "A+",
"exclusive": true,
"operatingsystem_versions": [
{
"name": "Ubuntu 18.04 LTS",
"default": false
},
{
"name": "Ubuntu 20.04 LTS",
"default": false
},
{
"name": "Ubuntu 22.04 LTS",
"default": false
},
{
"name": "Debian 9",
"default": false
}
]
},
"A": {
"name": "SSL A",
"value": "A",
"exclusive": true,
"operatingsystem_versions": [
{
"name": "Ubuntu 14.04 LTS",
"default": true
},
{
"name": "Ubuntu 16.04 LTS",
"default": true
},
{
"name": "Ubuntu 18.04 LTS",
"default": true
},
{
"name": "Ubuntu 22.04 LTS",
"default": true
},
{
"name": "Ubuntu 20.04 LTS",
"default": true
},
{
"name": "Debian 8",
"default": true
},
{
"name": "Debian 9",
"default": true
}
]
},
"B": {
"name": "SSL B",
"value": "B",
"exclusive": true,
"operatingsystem_versions": [
{
"name": "Ubuntu 14.04 LTS",
"default": false
},
{
"name": "Ubuntu 16.04 LTS",
"default": false
},
{
"name": "Ubuntu 18.04 LTS",
"default": false
},
{
"name": "Ubuntu 20.04 LTS",
"default": false
},
{
"name": "Debian 8",
"default": false
},
{
"name": "Debian 9",
"default": false
}
]
},
"C": {
"name": "SSL C",
"value": "C",
"exclusive": true,
"operatingsystem_versions": [
{
"name": "Ubuntu 14.04 LTS",
"default": false
},
{
"name": "Ubuntu 16.04 LTS",
"default": false
},
{
"name": "Ubuntu 18.04 LTS",
"default": false
},
{
"name": "Debian 8",
"default": false
},
{
"name": "Debian 9",
"default": false
}
]
}
}
}
}
},
"urlfw": {
"cookbooktype": {
"name": "urlfw",
"displayName": "url forwarder",
"description": "url forwarder",
"disabledOnProduction": false,
"invisibleOnProduction": false,
"category": "Internal",
"adminOnly": true,
"deletable": true,
"hideFromCookbookList": false,
"operatingSystem": "linux",
"parameters": [
{
"name": "apache_port",
"description": "Apache port",
"type": "string",
"defaultValue": "80"
}
]
}
},
"victoriametrics": {
"cookbooktype": {
"name": "victoriametrics",
"displayName": "VictoriaMetrics",
"description": "TSDB for monitoring",
"disabledOnProduction": false,
"invisibleOnProduction": false,
"category": "Databases",
"adminOnly": true,
"deletable": true,
"hideFromCookbookList": false,
"operatingSystem": "linux",
"parameters": [
{
"name": "bind",
"description": "Victoria Metrics listening address",
"type": "string",
"defaultValue": "127.0.0.1"
},
{
"name": "retention",
"description": "Victoria Metrics retention period",
"type": "string",
"defaultValue": "3"
},
{
"name": "cluster",
"description": "Install clustered version",
"type": "boolean",
"defaultValue": false
},
{
"name": "peers",
"description": "Cluster peers",
"type": "string",
"defaultValue": ""
},
{
"name": "replication",
"description": "Replication factor",
"type": "string",
"defaultValue": "2"
},
{
"name": "services",
"description": "VictoriaMetrics services",
"type": "select",
"defaultValue": null,
"componentParamName": "service"
}
],
"parameterOptions": {
"services": {
"vminsert": {
"name": "vminsert",
"exclusive": false,
"value": "vminsert",
"operatingsystem_versions": [
{
"name": "Ubuntu 18.04 LTS",
"default": false
},
{
"name": "Ubuntu 20.04 LTS",
"default": false
},
{
"name": "Ubuntu 22.04 LTS",
"default": false
}
]
},
"vmstorage": {
"name": "vmstorage",
"exclusive": false,
"value": "vmstorage",
"operatingsystem_versions": [
{
"name": "Ubuntu 18.04 LTS",
"default": false
},
{
"name": "Ubuntu 20.04 LTS",
"default": false
},
{
"name": "Ubuntu 22.04 LTS",
"default": false
}
]
},
"vmselect": {
"name": "vmselect",
"exclusive": false,
"value": "vmselect",
"operatingsystem_versions": [
{
"name": "Ubuntu 18.04 LTS",
"default": false
},
{
"name": "Ubuntu 20.04 LTS",
"default": false
},
{
"name": "Ubuntu 22.04 LTS",
"default": false
}
]
}
}
}
}
},
"wasp": {
"cookbooktype": {
"name": "wasp",
"displayName": "ASP.NET",
"description": "ASP.NET",
"disabledOnProduction": false,
"invisibleOnProduction": true,
"category": "Applications",
"adminOnly": false,
"deletable": true,
"hideFromCookbookList": false,
"operatingSystem": "windows",
"parameters": [
{
"name": "iis:port",
"description": "iis listening port",
"type": "string",
"defaultValue": 80
},
{
"name": "iis:bind",
"description": "iis listening address",
"type": "string",
"defaultValue": "127.0.0.1"
},
{
"name": "versions",
"description": "versions",
"type": "select",
"defaultValue": null,
"componentParamName": "version"
}
],
"parameterOptions": {
"versions": {
"1.1": {
"name": "ASP.NET 1.1 (DEPRICATED)",
"exclusive": false,
"value": "1.1",
"operatingsystem_versions": [
{
"name": "Windows 2012",
"default": false
},
{
"name": "Windows 2016",
"default": false
}
]
},
"2.0": {
"name": "ASP.NET 2.0/3.0 (DEPRICATED)",
"exclusive": false,
"value": "2.0",
"operatingsystem_versions": [
{
"name": "Windows 2012",
"default": false
},
{
"name": "Windows 2016",
"default": false
},
{
"name": "Windows 2019",
"default": false
}
]
},
"4.5": {
"name": "ASP.NET 4.5",
"exclusive": false,
"value": "4.5",
"operatingsystem_versions": [
{
"name": "Windows 2012",
"default": true
},
{
"name": "Windows 2016",
"default": false
},
{
"name": "Windows 2019",
"default": false
},
{
"name": "Windows 2022",
"default": false
}
]
},
"core": {
"name": "ASP.NET Core (DEPRICATED)",
"exclusive": false,
"value": "core",
"operatingsystem_versions": [
{
"name": "Windows 2016",
"default": false
},
{
"name": "Windows 2019",
"default": false
},
{
"name": "Windows 2022",
"default": false
}
]
},
"core-3": {
"name": ".NET Core 3.1",
"exclusive": false,
"value": "core-3",
"operatingsystem_versions": [
{
"name": "Windows 2016",
"default": false
},
{
"name": "Windows 2019",
"default": false
},
{
"name": "Windows 2022",
"default": false
}
]
},
"core-5": {
"name": ".NET 5.0",
"exclusive": false,
"value": "core-5",
"operatingsystem_versions": [
{
"name": "Windows 2016",
"default": false
},
{
"name": "Windows 2019",
"default": false
},
{
"name": "Windows 2022",
"default": false
}
]
},
"core-6": {
"name": ".NET 6.0",
"exclusive": false,
"value": "core-6",
"operatingsystem_versions": [
{
"name": "Windows 2016",
"default": false
},
{
"name": "Windows 2019",
"default": false
},
{
"name": "Windows 2022",
"default": false
}
]
},
"core-7": {
"name": ".NET 7.0",
"exclusive": false,
"value": "core-7",
"operatingsystem_versions": [
{
"name": "Windows 2016",
"default": false
},
{
"name": "Windows 2019",
"default": false
},
{
"name": "Windows 2022",
"default": false
}
]
},
"core-8": {
"name": ".NET 8.0",
"exclusive": false,
"value": "core-8",
"operatingsystem_versions": [
{
"name": "Windows 2016",
"default": true
},
{
"name": "Windows 2019",
"default": true
},
{
"name": "Windows 2022",
"default": true
}
]
}
}
}
}
},
"wcp4": {
"cookbooktype": {
"name": "wcp4",
"displayName": "Base windows cookbook",
"description": "cp4",
"disabledOnProduction": false,
"invisibleOnProduction": false,
"category": "Internal",
"adminOnly": false,
"deletable": false,
"hideFromCookbookList": true,
"operatingSystem": "windows",
"parameters": []
}
},
"web_varnish": {
"cookbooktype": {
"name": "web_varnish",
"displayName": "varnish",
"description": "varnish",
"disabledOnProduction": false,
"invisibleOnProduction": false,
"category": "Applications",
"adminOnly": false,
"deletable": true,
"hideFromCookbookList": false,
"operatingSystem": "linux",
"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": "8181"
},
{
"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"
},
{
"name": "workspace_client",
"description": "Workspace client size in kilobytes",
"type": "integer",
"defaultValue": 128
},
{
"name": "nuke_limit",
"description": "Amount of objects than can be removed at the same time",
"type": "integer",
"defaultValue": 50
},
{
"name": "max_hdr",
"description": "Maximum number of HTTP header lines that are allowed",
"type": "integer",
"defaultValue": 128
},
{
"name": "static",
"description": "Cache static files",
"type": "boolean",
"defaultValue": false
},
{
"name": "global_varnish",
"description": "Enable global varnish service",
"type": "boolean",
"defaultValue": true
},
{
"name": "version",
"description": "Major version of Varnish to install",
"type": "select",
"defaultValue": null
},
{
"name": "global_varnish",
"description": "Run system-global varnish instance",
"type": "boolean",
"defaultValue": true
}
],
"parameterOptions": {
"version": {
"4": {
"name": "4",
"value": "4",
"exclusive": true,
"operatingsystem_versions": [
{
"name": "Ubuntu 16.04 LTS",
"default": true
}
]
},
"5": {
"name": "5",
"value": "5",
"exclusive": true,
"operatingsystem_versions": [
{
"name": "Ubuntu 18.04 LTS",
"default": true
}
]
},
"6": {
"name": "6",
"value": "6",
"exclusive": true,
"operatingsystem_versions": [
{
"name": "Ubuntu 18.04 LTS",
"default": false
},
{
"name": "Ubuntu 20.04 LTS",
"default": true
},
{
"name": "Ubuntu 22.04 LTS",
"default": true
},
{
"name": "Ubuntu 24.04 LTS",
"default": false
}
]
},
"7": {
"name": "7",
"value": "7",
"exclusive": true,
"operatingsystem_versions": [
{
"name": "Ubuntu 18.04 LTS",
"default": false
},
{
"name": "Ubuntu 20.04 LTS",
"default": false
},
{
"name": "Ubuntu 22.04 LTS",
"default": false
},
{
"name": "Ubuntu 24.04 LTS",
"default": true
}
]
}
}
}
}
},
"wmssql": {
"cookbooktype": {
"name": "wmssql",
"displayName": "MSSQL",
"description": "Microsof SQL Server",
"disabledOnProduction": true,
"invisibleOnProduction": true,
"category": "Databases",
"adminOnly": false,
"deletable": true,
"hideFromCookbookList": false,
"operatingSystem": "windows",
"parameters": [
{
"name": "port",
"description": "Port",
"type": "string",
"defaultValue": "1433"
},
{
"name": "bind_address",
"description": "Bind address",
"type": "string",
"defaultValue": "localhost"
},
{
"name": "version",
"description": "MSSQL version",
"type": "string",
"defaultValue": "2017"
},
{
"name": "edition",
"description": "MSSQL edition",
"type": "choice",
"defaultValue": "web",
"possibleValues": [
"web",
"standard",
"enterprise"
]
},
{
"name": "backup_drive",
"description": "Backup drive",
"type": "string",
"defaultValue": "C"
}
],
"products": [
{
"produtNamePrefix": "system_license_microsoft_sql_",
"produtNameSuffix": "4vcpu",
"dependentParameter": "edition"
},
{
"produtNamePrefix": "system_license_microsoft_sql_",
"produtNameSuffix": "2vcpu",
"dependentParameter": "edition"
}
]
}
},
"wsmtp": {
"cookbooktype": {
"name": "wsmtp",
"displayName": "Windows SMTP Server",
"description": "SMTP Server",
"disabledOnProduction": false,
"invisibleOnProduction": false,
"category": "Mail",
"adminOnly": true,
"deletable": true,
"hideFromCookbookList": false,
"operatingSystem": "windows",
"parameters": []
}
},
"wtestbook": {
"cookbooktype": {
"name": "wtestbook",
"displayName": "testbook for testing cookbook jobs",
"description": "testbook for testing cookbook jobs",
"disabledOnProduction": true,
"invisibleOnProduction": true,
"category": "Internal",
"adminOnly": true,
"deletable": true,
"hideFromCookbookList": false,
"operatingSystem": "windows",
"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
},
{
"name": "fail_create_compile",
"description": "create job will fail with compiling error if true",
"type": "boolean",
"defaultValue": false
}
]
}
},
"wurl": {
"cookbooktype": {
"name": "wurl",
"displayName": "Url",
"description": "Url",
"disabledOnProduction": false,
"invisibleOnProduction": false,
"category": "Applications",
"adminOnly": false,
"deletable": true,
"hideFromCookbookList": false,
"operatingSystem": "windows",
"parameters": [
{
"name": "proxy_service",
"description": "Proxy service",
"type": "string",
"defaultValue": "nginx"
},
{
"name": "backend:port",
"description": "Backend port",
"type": "string",
"defaultValue": "8080"
},
{
"name": "backend:ip",
"description": "Backend ip",
"type": "string",
"defaultValue": "127.0.0.1"
},
{
"name": "default_vhost",
"description": "Create default nginx vhost",
"type": "boolean",
"defaultValue": true
},
{
"name": "ssl_level",
"description": "Ssl level",
"type": "select",
"defaultValue": null
}
],
"parameterOptions": {
"ssl_level": {
"A+": {
"name": "SSL A+",
"value": "A+",
"exclusive": true,
"operatingsystem_versions": [
{
"name": "Windows 2022",
"default": false
}
]
},
"A": {
"name": "SSL A",
"value": "A",
"exclusive": true,
"operatingsystem_versions": [
{
"name": "Windows 2022",
"default": true
},
{
"name": "Windows 2019",
"default": true
},
{
"name": "Windows 2016",
"default": true
},
{
"name": "Windows 2012",
"default": true
}
]
},
"B": {
"name": "SSL B",
"value": "B",
"exclusive": true,
"operatingsystem_versions": [
{
"name": "Windows 2022",
"default": false
},
{
"name": "Windows 2019",
"default": false
},
{
"name": "Windows 2016",
"default": false
},
{
"name": "Windows 2012",
"default": false
}
]
},
"C": {
"name": "SSL C",
"value": "C",
"exclusive": true,
"operatingsystem_versions": [
{
"name": "Windows 2022",
"default": false
},
{
"name": "Windows 2019",
"default": false
},
{
"name": "Windows 2016",
"default": false
},
{
"name": "Windows 2012",
"default": false
}
]
}
}
}
}
}
}
}
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)
csv of locations
- operatingSystem: (string)
- name: (string)
- entityType: (one of system, location, url)
filters by checktypes by entityType
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)
- tag: (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",
"full": false,
"type": "agency_hosting",
"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",
"full": false,
"type": "agency_hosting",
"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",
"full": false,
"type": "agency_hosting",
"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)
- tag: (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)
- tag: (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
- tag: (string)
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"
},
"zones": [
{
"id": 12,
"name": "ams2",
"shortName": "2",
"minCpu": 1,
"maxCpu": 8,
"minMemory": "1.0",
"maxMemory": "20.0",
"minDisk": 10,
"maxDisk": 70
}
]
}
]
}
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)
- 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:
{
"total": 3,
"zones": [
{
"id": 1,
"name": "eu-west-1a",
"shortName": "a",
"minCpu": 1,
"maxCpu": 8,
"minMemory": "1.0",
"maxMemory": "20.0",
"minDisk": 10,
"maxDisk": 70
},
{
"id": 2,
"name": "eu-west-1b",
"shortName": "b",
"minCpu": 1,
"maxCpu": 8,
"minMemory": "2.0",
"maxMemory": "20.0",
"minDisk": 20,
"maxDisk": 70
},
{
"id": 3,
"name": "eu-west-1c",
"shortName": "c",
"minCpu": 1,
"maxCpu": 8,
"minMemory": "1.0",
"maxMemory": "20.0",
"minDisk": 30,
"maxDisk": 70
}
]
}
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)
- agreementId: (integer)
agreement id
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"total": 125,
"products": [
{
"id": "domain_be_registration",
"description": ".be domain registration",
"account": "701001",
"category": "domains",
"prices": [
{
"id": 4422,
"period": 12,
"currency": "EUR",
"price": "750",
"timing": "pre",
"default": true,
"pricegroupId": "silver"
},
{
"id": 4423,
"period": 24,
"currency": "EUR",
"price": "1500",
"timing": "pre",
"default": false,
"pricegroupId": "silver"
}
],
"agreementPrices": [
{
"id": 1455,
"period": 12,
"currency": "EUR",
"price": "750",
"timing": "pre",
"default": true,
"pricegroupId": "gold"
},
{
"id": 1456,
"period": 24,
"currency": "EUR",
"price": "1500",
"timing": "pre",
"default": true,
"pricegroupId": "gold"
}
],
"defaultAgreementPrices": [
{
"id": 1453,
"period": 12,
"currency": "EUR",
"price": "2400",
"timing": "pre",
"default": true,
"pricegroupId": "default"
},
{
"id": 1454,
"period": 24,
"currency": "EUR",
"price": "4800",
"timing": "pre",
"default": false,
"pricegroupId": "default"
}
]
}
]
}
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)
- tag: (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)
- status: (one of 0, 20, 21, 30, 40, 50, 90, busy)
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:
{
"limits": {
"database": {
"id": 440,
"limitGroup": "database",
"description": "database",
"status": "ok",
"uniqueComponentType": true,
"sharedResource": false,
"allowedTemplates": [
{
"componentType": "mysql",
"template": "mysql_component_creation_allocation",
"templateDescription": "mysql appcomponent"
},
{
"componentType": "mongodb",
"template": "mongodb_component_creation_allocation",
"templateDescription": "mongodb appcomponent"
},
{
"componentType": "postgresql",
"template": "postgresql_component_creation_allocation",
"templateDescription": "postgresql appcomponent"
}
],
"allowedUpgrades": [],
"upgrades": [],
"max": 10,
"upgradeMax": 0,
"ruleIdentifier": "database",
"ruleResources": [
{
"id": 514,
"type": "size",
"value": 25600,
"upgradeValue": 0,
"operator": "<",
"status": 10,
"displayName": {
"en": "Size",
"nl": "Grootte"
},
"criticalComponents": [],
"incidentComponents": null,
"dtLastNotificationSent": null,
"incident": null
}
],
"maxCount": 10,
"actualCount": 0,
"canBeAddedCount": 10,
"section": "components",
"correctlyAddedComponents": [],
"invalidComponents": []
},
"application": {
"id": 441,
"limitGroup": "application",
"description": "application",
"status": "ok",
"uniqueComponentType": true,
"sharedResource": false,
"allowedTemplates": [
{
"componentType": "php",
"template": "php_component_creation_allocation",
"templateDescription": "php appcomponent",
"selects": [
"version"
]
}
],
"allowedUpgrades": [
{
"name": "application_memory_1",
"type": "memory",
"description": "Application memory 1GB",
"value": 1,
"unit": "GB"
}
],
"upgrades": [],
"max": 2,
"upgradeMax": 0,
"ruleIdentifier": "php_application",
"ruleResources": [
{
"id": 515,
"type": "application",
"value": 1024,
"upgradeValue": 0,
"operator": "<",
"status": 10,
"displayName": {
"en": "Process memory",
"nl": "Proces geheugen"
},
"criticalComponents": [],
"incidentComponents": null,
"dtLastNotificationSent": null,
"incident": null
},
{
"id": 516,
"type": "opcache",
"value": 64,
"upgradeValue": 0,
"operator": "<",
"status": 10,
"displayName": {
"en": "OPcache",
"nl": "OPcache"
},
"criticalComponents": [],
"incidentComponents": null,
"dtLastNotificationSent": null,
"incident": null
},
{
"id": 517,
"type": "apcu",
"value": 64,
"upgradeValue": 0,
"operator": "<",
"status": 10,
"displayName": {
"en": "APCu",
"nl": "APCu"
},
"criticalComponents": [],
"incidentComponents": null,
"dtLastNotificationSent": null,
"incident": null
},
{
"id": 518,
"type": "memory",
"value": 2048,
"upgradeValue": 0,
"operator": "<",
"status": 10,
"displayName": {
"en": "Total memory",
"nl": "Totaal geheugen"
},
"criticalComponents": [],
"incidentComponents": null,
"dtLastNotificationSent": null,
"incident": null
}
],
"maxCount": 2,
"actualCount": 0,
"canBeAddedCount": 2,
"section": "components",
"correctlyAddedComponents": [],
"invalidComponents": []
},
"page_cache": {
"id": 442,
"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": [],
"upgrades": [],
"max": 2,
"upgradeMax": 0,
"ruleIdentifier": "page_cache",
"ruleResources": [
{
"id": 519,
"type": "memory",
"value": 512,
"upgradeValue": 0,
"operator": "<",
"status": 10,
"displayName": {
"en": "Memory",
"nl": "Geheugen"
},
"criticalComponents": [],
"incidentComponents": null,
"dtLastNotificationSent": null,
"incident": null
}
],
"maxCount": 2,
"actualCount": 0,
"canBeAddedCount": 2,
"section": "components",
"correctlyAddedComponents": [],
"invalidComponents": []
},
"object_cache": {
"id": 443,
"limitGroup": "object_cache",
"description": "Object cache in redis or memcached",
"status": "ok",
"uniqueComponentType": false,
"sharedResource": false,
"allowedTemplates": [
{
"componentType": "redis",
"template": "redis_component_creation_allocation",
"templateDescription": "redis appcomponent"
},
{
"componentType": "memcached",
"template": "memcached_component_creation_allocation",
"templateDescription": "memcached appcomponent"
}
],
"allowedUpgrades": [],
"upgrades": [],
"max": 2,
"upgradeMax": 0,
"ruleIdentifier": "object_cache",
"ruleResources": [
{
"id": 520,
"type": "memory",
"value": 512,
"upgradeValue": 0,
"operator": "<",
"status": 10,
"displayName": {
"en": "Memory",
"nl": "Geheugen"
},
"criticalComponents": [],
"incidentComponents": null,
"dtLastNotificationSent": null,
"incident": null
}
],
"maxCount": 2,
"actualCount": 0,
"canBeAddedCount": 2,
"section": "components",
"correctlyAddedComponents": [],
"invalidComponents": []
},
"extension": {
"id": 444,
"limitGroup": "extension",
"description": "Extensions",
"status": "ok",
"uniqueComponentType": true,
"sharedResource": false,
"allowedTemplates": [
{
"componentType": "phplegacy",
"template": "phplegacy_component_creation_allocation",
"templateDescription": "phplegacy appcomponent",
"description": {
"en": "Extra virtual host",
"nl": "Extra virtual host"
}
},
{
"componentType": "nodejs_extension",
"template": "nodejs_extension_component_creation_allocation",
"templateDescription": "Node.js extension appcomponent",
"description": {
"en": "Node.js install",
"nl": "Node.js installatie"
}
}
],
"allowedUpgrades": [],
"upgrades": [],
"max": null,
"upgradeMax": 0,
"ruleIdentifier": "extension",
"ruleResources": [],
"maxCount": null,
"actualCount": 0,
"canBeAddedCount": null,
"section": "components",
"correctlyAddedComponents": [],
"invalidComponents": []
},
"optional_component": {
"id": 445,
"limitGroup": "optional_component",
"description": "Optional component",
"status": "ok",
"uniqueComponentType": false,
"sharedResource": false,
"allowedTemplates": [
{
"componentType": "solr",
"template": "solr_component_creation_allocation",
"templateDescription": "solr appcomponent"
},
{
"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": "sftp",
"template": "sftp_component_creation_allocation",
"templateDescription": "sftp appcomponent"
}
],
"allowedUpgrades": [
{
"name": "optional_extra_component_1",
"type": "extra_component",
"description": "1 extra optional component",
"value": 1,
"unit": "unit",
"addToMax": true
}
],
"upgrades": [],
"max": 2,
"upgradeMax": 0,
"ruleIdentifier": "optional_component",
"ruleResources": [
{
"id": 521,
"type": "memory",
"value": 1024,
"upgradeValue": 0,
"operator": "<",
"status": 10,
"displayName": {
"en": "Memory",
"nl": "Geheugen"
},
"criticalComponents": [],
"incidentComponents": null,
"dtLastNotificationSent": null,
"incident": null
}
],
"maxCount": 2,
"actualCount": 0,
"canBeAddedCount": 2,
"section": "components",
"correctlyAddedComponents": [],
"invalidComponents": []
},
"mailbox": {
"id": 446,
"limitGroup": "mailbox",
"description": "Mailboxes",
"status": "ok",
"uniqueComponentType": false,
"sharedResource": false,
"allowedTemplates": [
{
"template": "mailbox_creation_allocation",
"templateDescription": "Mailbox creation"
}
],
"allowedUpgrades": [
{
"name": "optional_extra_mailboxes_5",
"type": "extra_mailbox",
"description": "Extra 5 mailboxes",
"value": 5,
"unit": "unit",
"addToMax": true,
"maxAllowedUpgrades": 5
}
],
"upgrades": [
{
"name": "optional_extra_mailboxes_5",
"type": "extra_mailbox",
"description": "Extra 5 mailboxes",
"value": 5,
"unit": "unit",
"addToMax": true,
"maxAllowedUpgrades": 5
},
{
"name": "optional_extra_mailboxes_5",
"type": "extra_mailbox",
"description": "Extra 5 mailboxes",
"value": 5,
"unit": "unit",
"addToMax": true,
"maxAllowedUpgrades": 5
}
],
"max": 5,
"upgradeMax": 10,
"ruleIdentifier": "mailbox",
"ruleResources": [],
"maxCount": 15,
"actualCount": 2,
"canBeAddedCount": 13,
"section": "mailgroups",
"correctlyAddedMailboxes": [
{
"id": 8648,
"name": "first",
"username": "mb05303"
},
{
"id": 8649,
"name": "second",
"username": "mb05304"
}
],
"invalidMailboxes": []
}
}
}
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)
- tag: (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:
{
"limits": {
"database": {
"id": 440,
"limitGroup": "database",
"description": "database",
"status": "ok",
"uniqueComponentType": true,
"sharedResource": false,
"allowedTemplates": [
{
"componentType": "mysql",
"template": "mysql_component_creation_allocation",
"templateDescription": "mysql appcomponent"
},
{
"componentType": "mongodb",
"template": "mongodb_component_creation_allocation",
"templateDescription": "mongodb appcomponent"
},
{
"componentType": "postgresql",
"template": "postgresql_component_creation_allocation",
"templateDescription": "postgresql appcomponent"
}
],
"allowedUpgrades": [],
"upgrades": [],
"max": 10,
"upgradeMax": 0,
"ruleIdentifier": "database",
"ruleResources": [
{
"id": 514,
"type": "size",
"value": 25600,
"upgradeValue": 0,
"operator": "<",
"status": 10,
"displayName": {
"en": "Size",
"nl": "Grootte"
},
"criticalComponents": [],
"incidentComponents": null,
"dtLastNotificationSent": null,
"incident": null
}
],
"maxCount": 10,
"actualCount": 0,
"canBeAddedCount": 10,
"section": "components",
"correctlyAddedComponents": [],
"invalidComponents": []
},
"application": {
"id": 441,
"limitGroup": "application",
"description": "application",
"status": "ok",
"uniqueComponentType": true,
"sharedResource": false,
"allowedTemplates": [
{
"componentType": "php",
"template": "php_component_creation_allocation",
"templateDescription": "php appcomponent",
"selects": [
"version"
]
}
],
"allowedUpgrades": [
{
"name": "application_memory_1",
"type": "memory",
"description": "Application memory 1GB",
"value": 1,
"unit": "GB"
}
],
"upgrades": [],
"max": 2,
"upgradeMax": 0,
"ruleIdentifier": "php_application",
"ruleResources": [
{
"id": 515,
"type": "application",
"value": 1024,
"upgradeValue": 0,
"operator": "<",
"status": 10,
"displayName": {
"en": "Process memory",
"nl": "Proces geheugen"
},
"criticalComponents": [],
"incidentComponents": null,
"dtLastNotificationSent": null,
"incident": null
},
{
"id": 516,
"type": "opcache",
"value": 64,
"upgradeValue": 0,
"operator": "<",
"status": 10,
"displayName": {
"en": "OPcache",
"nl": "OPcache"
},
"criticalComponents": [],
"incidentComponents": null,
"dtLastNotificationSent": null,
"incident": null
},
{
"id": 517,
"type": "apcu",
"value": 64,
"upgradeValue": 0,
"operator": "<",
"status": 10,
"displayName": {
"en": "APCu",
"nl": "APCu"
},
"criticalComponents": [],
"incidentComponents": null,
"dtLastNotificationSent": null,
"incident": null
},
{
"id": 518,
"type": "memory",
"value": 2048,
"upgradeValue": 0,
"operator": "<",
"status": 10,
"displayName": {
"en": "Total memory",
"nl": "Totaal geheugen"
},
"criticalComponents": [],
"incidentComponents": null,
"dtLastNotificationSent": null,
"incident": null
}
],
"maxCount": 2,
"actualCount": 0,
"canBeAddedCount": 2,
"section": "components",
"correctlyAddedComponents": [],
"invalidComponents": []
},
"page_cache": {
"id": 442,
"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": [],
"upgrades": [],
"max": 2,
"upgradeMax": 0,
"ruleIdentifier": "page_cache",
"ruleResources": [
{
"id": 519,
"type": "memory",
"value": 512,
"upgradeValue": 0,
"operator": "<",
"status": 10,
"displayName": {
"en": "Memory",
"nl": "Geheugen"
},
"criticalComponents": [],
"incidentComponents": null,
"dtLastNotificationSent": null,
"incident": null
}
],
"maxCount": 2,
"actualCount": 0,
"canBeAddedCount": 2,
"section": "components",
"correctlyAddedComponents": [],
"invalidComponents": []
},
"object_cache": {
"id": 443,
"limitGroup": "object_cache",
"description": "Object cache in redis or memcached",
"status": "ok",
"uniqueComponentType": false,
"sharedResource": false,
"allowedTemplates": [
{
"componentType": "redis",
"template": "redis_component_creation_allocation",
"templateDescription": "redis appcomponent"
},
{
"componentType": "memcached",
"template": "memcached_component_creation_allocation",
"templateDescription": "memcached appcomponent"
}
],
"allowedUpgrades": [],
"upgrades": [],
"max": 2,
"upgradeMax": 0,
"ruleIdentifier": "object_cache",
"ruleResources": [
{
"id": 520,
"type": "memory",
"value": 512,
"upgradeValue": 0,
"operator": "<",
"status": 10,
"displayName": {
"en": "Memory",
"nl": "Geheugen"
},
"criticalComponents": [],
"incidentComponents": null,
"dtLastNotificationSent": null,
"incident": null
}
],
"maxCount": 2,
"actualCount": 0,
"canBeAddedCount": 2,
"section": "components",
"correctlyAddedComponents": [],
"invalidComponents": []
},
"extension": {
"id": 444,
"limitGroup": "extension",
"description": "Extensions",
"status": "ok",
"uniqueComponentType": true,
"sharedResource": false,
"allowedTemplates": [
{
"componentType": "phplegacy",
"template": "phplegacy_component_creation_allocation",
"templateDescription": "phplegacy appcomponent",
"description": {
"en": "Extra virtual host",
"nl": "Extra virtual host"
}
},
{
"componentType": "nodejs_extension",
"template": "nodejs_extension_component_creation_allocation",
"templateDescription": "Node.js extension appcomponent",
"description": {
"en": "Node.js install",
"nl": "Node.js installatie"
}
}
],
"allowedUpgrades": [],
"upgrades": [],
"max": null,
"upgradeMax": 0,
"ruleIdentifier": "extension",
"ruleResources": [],
"maxCount": null,
"actualCount": 0,
"canBeAddedCount": null,
"section": "components",
"correctlyAddedComponents": [],
"invalidComponents": []
},
"optional_component": {
"id": 445,
"limitGroup": "optional_component",
"description": "Optional component",
"status": "ok",
"uniqueComponentType": false,
"sharedResource": false,
"allowedTemplates": [
{
"componentType": "solr",
"template": "solr_component_creation_allocation",
"templateDescription": "solr appcomponent"
},
{
"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": "sftp",
"template": "sftp_component_creation_allocation",
"templateDescription": "sftp appcomponent"
}
],
"allowedUpgrades": [
{
"name": "optional_extra_component_1",
"type": "extra_component",
"description": "1 extra optional component",
"value": 1,
"unit": "unit",
"addToMax": true
}
],
"upgrades": [],
"max": 2,
"upgradeMax": 0,
"ruleIdentifier": "optional_component",
"ruleResources": [
{
"id": 521,
"type": "memory",
"value": 1024,
"upgradeValue": 0,
"operator": "<",
"status": 10,
"displayName": {
"en": "Memory",
"nl": "Geheugen"
},
"criticalComponents": [],
"incidentComponents": null,
"dtLastNotificationSent": null,
"incident": null
}
],
"maxCount": 2,
"actualCount": 0,
"canBeAddedCount": 2,
"section": "components",
"correctlyAddedComponents": [],
"invalidComponents": []
},
"mailbox": {
"id": 446,
"limitGroup": "mailbox",
"description": "Mailboxes",
"status": "ok",
"uniqueComponentType": false,
"sharedResource": false,
"allowedTemplates": [
{
"template": "mailbox_creation_allocation",
"templateDescription": "Mailbox creation"
}
],
"allowedUpgrades": [
{
"name": "optional_extra_mailboxes_5",
"type": "extra_mailbox",
"description": "Extra 5 mailboxes",
"value": 5,
"unit": "unit",
"addToMax": true,
"maxAllowedUpgrades": 5
}
],
"upgrades": [
{
"name": "optional_extra_mailboxes_5",
"type": "extra_mailbox",
"description": "Extra 5 mailboxes",
"value": 5,
"unit": "unit",
"addToMax": true,
"maxAllowedUpgrades": 5
},
{
"name": "optional_extra_mailboxes_5",
"type": "extra_mailbox",
"description": "Extra 5 mailboxes",
"value": 5,
"unit": "unit",
"addToMax": true,
"maxAllowedUpgrades": 5
}
],
"max": 5,
"upgradeMax": 10,
"ruleIdentifier": "mailbox",
"ruleResources": [],
"maxCount": 15,
"actualCount": 2,
"canBeAddedCount": 13,
"section": "mailgroups",
"correctlyAddedMailboxes": [
{
"id": 8648,
"name": "first",
"username": "mb05303"
},
{
"id": 8649,
"name": "second",
"username": "mb05304"
}
],
"invalidMailboxes": []
}
}
}
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)
- tag: (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 templates
get /custompackages/{custompackageId}/templates/{templateName}/allowed/parents
Get available parent templates
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
}
},
"mailgroupTemplates": {
"mailbox": {
"type": "mailbox",
"description": "Mailboxes",
"sharedResource": false,
"max": 5,
"ruleIdentifier": "mailbox",
"resources": [],
"allowedTemplates": [
{
"template": "mailbox_creation_allocation",
"templateDescription": "Mailbox creation"
}
],
"allowedUpgrades": [
{
"name": "optional_extra_mailboxes_5",
"type": "extra_mailbox",
"description": "Extra 5 mailboxes",
"value": 5,
"unit": "unit",
"addToMax": true,
"maxAllowedUpgrades": 5
}
],
"correctlyAddedTemplates": [
{
"id": 338,
"template": "mailbox_creation_allocation",
"predefined": false
}
],
"invalidTemplates": [],
"maxCount": 15,
"actualCount": 5,
"canBeAddedCount": 0
}
},
"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": 7,
"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
}
},
{
"name": "optional_extra_mailboxes_5",
"type": "extra_mailbox",
"description": "Extra 5 mailboxes",
"value": 5,
"unit": "unit",
"addToMax": true,
"maxAllowedUpgrades": 5,
"product": {
"id": "custompackage_fly_optional_extra_mailboxes_5",
"description": "Extra 5 mailboxes",
"prices": [
{
"id": 16173,
"period": 1,
"currency": "EUR",
"price": "400",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"agreementPrices": [],
"defaultAgreementPrices": [
{
"id": 16173,
"period": 1,
"currency": "EUR",
"price": "400",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"allowQuantityChange": false,
"quantityCalculation": null
}
},
{
"name": "optional_extra_restores_5",
"type": "extra_restore",
"description": "Extra 5 restores",
"value": 5,
"unit": "unit",
"addToMax": true,
"maxAllowedUpgrades": 5,
"product": {
"id": "custompackage_fly_optional_extra_restores_5",
"description": "Extra 5 restores",
"prices": [
{
"id": 16177,
"period": 1,
"currency": "EUR",
"price": "400",
"timing": "pre",
"default": true,
"status": 10,
"pricegroup": {
"id": "default"
}
}
],
"agreementPrices": [],
"defaultAgreementPrices": [],
"allowQuantityChange": false,
"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)
- tag: (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 jobs for taskStep
get /roottasks/{roottaskId}/tasks/{taskId}/steps/{stepId}/jobs
Get jobs for taskStep
URI Parameters
- roottaskId: required(string)
The unique identifier of a roottask
- taskId: required(string)
- stepId: required(string)
HTTP status code 200
Response when users are found
Body
Media type: application/json
Type: object
Example:
[
{
"id": 69999,
"hoe": 1,
"conc": 5,
"status": 30,
"msg": "Maintenance jobs: ",
"action": null,
"dt": 1715770199,
"dtStart": null,
"dtEnd": null,
"service": null,
"system": null,
"excCode": null,
"excMsg": null,
"excTrace": [],
"logs": [],
"jobs": [
[
{
"id": 70000,
"hoe": null,
"conc": null,
"status": 30,
"msg": "Maintenance job",
"action": "sendPong",
"dt": 1715770199,
"dtStart": null,
"dtEnd": null,
"service": "level27_system.systemjob",
"system": 612,
"eClass": "Level27\\SystemBundle\\Entity\\System",
"eId": 612,
"rClass": null,
"rId": null,
"eString": "hv953",
"excCode": null,
"excMsg": null,
"excTrace": [],
"logs": []
},
{
"id": 70001,
"hoe": null,
"conc": null,
"status": 21,
"msg": "Maintenance job",
"action": "sendPong",
"dt": 1715770199,
"dtStart": null,
"dtEnd": null,
"service": "level27_system.systemjob",
"system": 613,
"eClass": "Level27\\SystemBundle\\Entity\\System",
"eId": 613,
"rClass": null,
"rId": null,
"eString": "hv954",
"excCode": null,
"excMsg": null,
"excTrace": [],
"logs": []
}
]
]
}
]
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
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
get /roottasks/{roottaskId}/retry
/tags
Create a new tag
List of all available tags
post /tags
Create a new tag
Body
Media type: application/json
Type: object
Properties- description: (string)
Description
- color: required(string)
Color
- organisation: required(integer)
The unique identifier of an organisation
Example:
{
"description": "my_tag",
"color": "yellow",
"organisation": 1
}
HTTP status code 201
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"tag": {
"id": 2,
"description": "my tag",
"color": "yellow",
"organisation": {
"id": 1,
"name": "level27"
},
"entityHasTags": [
{
"id": 1,
"entityClass": "Level27\\AppBundle\\Entity\\SslCertificate",
"entityId": 1,
"extraData": {
"name": "level27.be"
}
},
{
"id": 1,
"entityClass": "Level27\\MailBundle\\Entity\\Mailgroup",
"entityId": 5,
"extraData": {
"name": "my_mailgroup"
}
}
]
}
}
HTTP status code 400
Validation of new tag failed
HTTP status code 500
Response when a user does not have a proper role to access a controller
get /tags
List of all available tags
Query Parameters
- status: (string)
- type: (string)
- entityClass: (string)
- organisationId: (integer - default: 0)
- limit: (integer - default: 5)
- offset: (integer - default: 0)
- orderBy: (string)
- orderType: (string)
ASC or DESC
- filter: (string)
- tag: (string)
HTTP status code 200
Request successfully processed
Body
Media type: application/json
Type: object
Example:
{
"total": 1,
"tags": [
{
"id": 1,
"description": "my_tag",
"color": "yellow",
"organisation": {
"id": 1,
"name": "level27"
},
"entityHasTags": [
{
"id": 1,
"entityClass": "Level27\\AppBundle\\Entity\\SslCertificate",
"entityId": 1,
"extraData": {
"name": "level27.be"
}
},
{
"id": 1,
"entityClass": "Level27\\MailBundle\\Entity\\Mailgroup",
"entityId": 5,
"extraData": {
"name": "my_mailgroup"
}
}
]
}
]
}
HTTP status code 500
Response when a user does not have a proper role to access a controller
Update a tag
Update part of the tag
Delete a tag
Get a tag
put /tags/{tagId}
Update a tag
URI Parameters
- tagId: required(string)
The unique identifier of a tag
Body
Media type: application/json
Type: object
Properties- description: (string)
Description
- color: required(string)
Color
- organisation: required(integer)
The unique identifier of an organisation
Example:
{
"description": "my_tag",
"color": "yellow",
"organisation": 1
}
HTTP status code 204
Response when update of a tag succeeded
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a tag
HTTP status code 404
Response when tag is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
patch /tags/{tagId}
Update part of the tag
URI Parameters
- tagId: required(string)
The unique identifier of a tag
Body
Media type: application/json
Type: object
Properties- description: (string)
Description
- color: required(string)
Color
- organisation: required(integer)
The unique identifier of an organisation
Example:
{
"description": "my_tag",
"color": "yellow",
"organisation": 1
}
HTTP status code 204
Response when update of a tag succeeded
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a tag
HTTP status code 404
Response when tag is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
delete /tags/{tagId}
Delete a tag
URI Parameters
- tagId: required(string)
The unique identifier of a tag
get /tags/{tagId}
Get a tag
URI Parameters
- tagId: required(string)
The unique identifier of a tag
HTTP status code 200
Response when tag is found
Body
Media type: application/json
Type: object
Example:
{
"tag": {
"id": 2,
"description": "my tag",
"color": "yellow",
"organisation": {
"id": 1,
"name": "level27"
},
"entityHasTags": [
{
"id": 1,
"entityClass": "Level27\\AppBundle\\Entity\\SslCertificate",
"entityId": 1,
"extraData": {
"name": "level27.be"
}
},
{
"id": 1,
"entityClass": "Level27\\MailBundle\\Entity\\Mailgroup",
"entityId": 5,
"extraData": {
"name": "my_mailgroup"
}
}
]
}
}
HTTP status code 403
Response when a user does not have access to a tag
HTTP status code 404
Response when tag is not found
HTTP status code 500
Response when a user does not have a proper role to access a controller
Add a Tag to an entity
post /tags/{tagId}/entities
Add a Tag to an entity
URI Parameters
- tagId: required(string)
The unique identifier of a tag
Body
Media type: application/json
Type: any
Media type: type
Type: object
Properties- entityClass: required(string)
Entity class
- entityId: required(Can not resolve ../../properties/entityId.raml)
Example:
{
"entityClass": "Level27\\AppBundle\\Entity\\App",
"entityId": 1
}
HTTP status code 201
Response was successfully processed
Body
Media type: application/json
Type: any
Media type: type
Type: object
Example:
{
"entityHasTag": {
"id": 1,
"entityClass": "Level27\\AppBundle\\Entity\\App",
"entityId": 1
}
}
HTTP status code 400
Bad request
HTTP status code 403
Response when a user does not have access to a Tag
HTTP status code 404
Response when a Tag is not found
Remove access to an entityHasTag
delete /tags/{tagId}/entities/{entityHasTagId}
Remove access to an entityHasTag
URI Parameters
- tagId: required(string)
The unique identifier of a tag
- entityHasTagId: required(string)