Advanced Challenge

You are an old hand at REST and designing beautiful solutions around visualized data is second nature to you?

Then go for our advanced challenge! All participants who send us a working solution will receive a free T-Shirt and have a chance to win a Nintendo Switch and Mario Kart 8 Deluxe!

 

This challenge is about retrieving data from our ADOIT REST service and visualizing it in a way of your choice. Create a dynamic website, write an app – you name it! Your solution has to contain fetching of data from our ADOIT REST service endpoints. It also has to contain some kind of map or a comparable way of representing location data in an app or on a web page.

 

You can find a very simple reference implementation that might give you an idea what we are looking for at wad-challenge-2018-ref.boc-cloud.com – but we rest assured that you can do something much much nicer than this! This reference solution is a very simple HTML page (using JQuery) which communicates with a Java servlet that serves as REST client.

 

To start fetching data, you have to register your account and activate it via email. By doing this, you will receive a developer ID that you can then use to retrieve data from our service. You can also reuse your developer ID from the basic challenge if you are doing that as well.

Authentication

As in the basic challenge, the REST endpoints that you have to access in this challenge are protected via BASIC Authentication. To access the endpoints, you will have to send a BASIC authentication token as "authorization" header with your REST requests.

If you don't know how to create a BASIC authentication token and how the header should look like: Search for hints on the Internet.

 

The token should be created based on

username: WeAreDevelopers

password: YesWeAre

1

Register your account

Just as for the basic challenge, the first step you have to do is to register your account here.

If you have already registered for the basic challenge and received a developer ID, you can reuse this ID also for the advanced challenge.

Otherwise, you need to provide your first name, last name, email address and the address to which we should ship your T-Shirt or the Nintendo Switch, in case you win. If your registration is successful, you will be sent an email with an activation link.

2

Activate your account

If you have successfully registered your account, you will receive an email containing an activation link.

To activate your account, you have to click on this link and you will be forwarded to an HTML page stating whether the activation was successful. After that, another mail will be sent to you containing your developer ID, that is needed on all subsequent calls.

3

ADOIT REST services

There are six ADOIT REST services that you need to use to retrieve data from ADOIT.

Three of these services are used to retrieve a list of available Locations, Servers or Applications.

The other three are used retrieve detailed data about one specific Location, Server or Application.

Each Application is deployed on a Server, each Server is located at a Location. A Location knows which Servers are located in it, each Server knows which Applications are deployed on it. For each of these services you have to pass the developer ID as a header parameter.

4

Fetch list of Locations

This will retrieve an Array of Locations (e.g. data centers) at which Servers are operated.

 

HTTP Method

GET

URL Path

→https://wad-challenge-2018.boc-cloud.com/rest/dev/locations/

Parameters  

developerID

String 

Header Parameter 

Your developer ID that you received after your account activation via email

authorization

String

Header Parameter

The BASIC authentication header token 

Response    

A String which can be converted to a JSON object. This JSON object consists of three members:

 

  • error: a boolean property that is only true if an error occurred during the request
  • errString: A String property that contains details about an error in case the error property is true. Otherwise, this is null.
  • payload: An Array of Location objects if no error occurred. Otherwise, this is null. Each Location object contains the following properties:

    • id: The ID of the Location
    • name: The name of the Location
    • description: A short textual description of the Location
    • servers: An Array of Servers that are located in this Location. Each Server entry consists of an ID and a name
    • latitude: The geographical latitude at which the Location can be found
    • longitude: The geographical longitude at which the Location can be found

 

The following HTTP status codes are possible:

  • 200 (OK) - successful request
  • 400 (Bad Request) - A general error occurred

 

5

Fetch list of Servers

This will retrieve an Array of Servers on which Applications are deployed. Each Server is located in a certain Location.

 

HTTP Method

GET

URL Path

→https://wad-challenge-2018.boc-cloud.com/rest/dev/servers/

Parameters  

developerID

String 

Header Parameter 

Your developer ID that you received after your account activation via email

authorization

String

Header Parameter

The BASIC authentication header token 

Response    

A string which can be converted to a JSON object. This JSON object consists of three members:

 

  • error: a boolean property that is only true if an error occurred during the request
  • errString: A String property that contains details about an error in case the error property is true. Otherwise, this is null.
  • payload: An Array of Server objects if no error occurred. Otherwise, this is null.
    Each Server object contains the following properties:

    • id: The ID of the Server
    • name: The name of the Server
    • description: A short textual description of the Server
    • applications: An Array of Applications that are deployed on this Server. Each Application entry consists of an ID and a name

 

The following HTTP status codes are possible:

  • 200 (OK) - successful request
  • 400 (Bad Request) - A general error occurred

 

6

Fetch list of Applications

This will retrieve an Array of Applications. Each Application is deployed on a certain Server.

 

HTTP Method

GET

URL Path

→https://wad-challenge-2018.boc-cloud.com/rest/dev/applications/

Parameters  

developerID

String 

Header Parameter 

Your developer ID that you received after your account activation via email

authorization

String

Header Parameter

The BASIC authentication header token 

Response    

A string which can be converted to a JSON object. This JSON object consists of three members:

 

  • error: a boolean property that is only true if an error occurred during the request
  • errString: A String property that contains details about an error in case the error property is true. Otherwise, this is null.
  • payload: An Array of Application objects if no error occurred. Otherwise, this is null.
    Each Application object contains the following properties:

    • id: The ID of the Appliation
    • name: The name of the Application
    • description: A short textual description of the Application

 

The following HTTP status codes are possible

  • 200 (OK) - successful request
  • 400 (Bad Request) - A general error occurred

 

7

Fetch Location details

This will retrieve details about a specific Location, identified by a location ID. 

 

HTTP Method

GET

URL Path

→https://wad-challenge-2018.boc-cloud.com/rest/dev/locations/{locationID}/

Parameters  

locationID

String

Path Parameter

The ID of the Location for which details should be retrieved

developerID

String 

Header Parameter 

Your developer ID that you received after your account activation via email

authorization

String

Header Parameter

The BASIC authentication header token 

Response    

A string which can be converted to a JSON object. This JSON object consists of three members:

 

  • error: a boolean property that is only true if an error occurred during the request
  • errString: A String property that contains details about an error in case the error property is true. Otherwise, this is null.
  • payload: An object containing the details for the Location with the passed ID if no error occurred. Otherwise, this is null.
    The object contains the following properties:

    • id: The ID of the Location
    • name: The name of the Location
    • description: A short textual description of the Location
    • need for action: A boolean flag indicating whether or not there is a need for action regarding this Location
    • servers: An Array of Servers that are located in this Location. Each Server entry consists of an ID and a name
    • latitude: The geographical latitude at which the Location can be found
    • longitude: The geographical longitude at which the Location can be found

 

The following HTTP status codes are possible:

  • 200 (OK) - successful request
  • 400 (Bad Request) - A general error occurred

 

8

Fetch Server details

This will retrieve details about a specific Server, identified by a server ID.

 

HTTP Method

GET

URL Path

→https://wad-challenge-2018.boc-cloud.com/rest/dev/servers/{serverID}/

Parameters  

locationID

String

Path Parameter

The ID of the Location for which details should be retrieved

developerID

String 

Header Parameter 

Your developer ID that you received after your account activation via email

authorization

String

Header Parameter

The BASIC authentication header token 

Response    

A string which can be converted to a JSON object. This JSON object consists of three members:

 

  • error: a boolean property that is only true if an error occurred during the request
  • errString: A String property that contains details about an error in case the error property is true. Otherwise, this is null.
  • payload: An object containing the details for the Location with the passed ID if no error occurred. Otherwise, this is null.
    The object contains the following properties:

    • id: The ID of the Location
    • name: The name of the Location
    • description: A short textual description of the Location
    • need for action: A boolean flag indicating whether or not there is a need for action regarding this Location
    • servers: An Array of Servers that are located in this Location. Each Server entry consists of an ID and a name
    • latitude: The geographical latitude at which the Location can be found
    • longitude: The geographical longitude at which the Location can be found

 

The following HTTP status codes are possible:

  • 200 (OK) - successful request
  • 400 (Bad Request) - A general error occurred

 

9

Fetch Application details

This will retrieve details about a specific Application, identified by an application ID.

 

HTTP Method

GET

URL Path

→https://wad-challenge-2018.boc-cloud.com/rest/dev/applications/{applicationID}/

Parameters  

applicationID

String

Path Parameter

The ID of the Application for which details should be retrieved

developerID

String 

Header Parameter 

Your developer ID that you received after your account activation via email

authorization

String

Header Parameter

The BASIC authentication header token 

Response    

A string which can be converted to a JSON object. This JSON object consists of three members:

 

  • error: a boolean property that is only true if an error occurred during the request
  • errString: A String property that contains details about an error in case the error property is true. Otherwise, this is null.
  • payload: An object containing the details for the Application with the passed ID if no error occurred. Otherwise, this is null. The object contains the following properties:
    • id: The ID of the Application
    • name: The name of the Application
    • description: A short textual description of the Application
    • need for action: A boolean flag indicating whether or not there is need for action regarding this Application
    • investment cost: A number containing the investment cost for this Application
    • operating cost: A number containing the operating cost for this Application

    • category: A String attribute which can have one of the following values:

      • "No Entry"
      • "Custom Software"
      • "Standard Software"
      • "Miscellaneous"

     

The following HTTP status codes are possible:

  • 200 (OK) - successful request
  • 400 (Bad Request) - A general error occurred

 

Upload your solution

When you are finished with your solution, you can optionally upload it to srv.boc-group.com/wad-upload after you completed the challenge.

When you first enter this page, you have to enter your e-mail address. After that, an e-mail containing your personalized upload link will be sent to you. Follow this link and upload your solution.

 

Your upload has to be a single zip file named ADVANCED-{developerID}.zip (where {developerID} is your developerID that you received after you activated your account). The zip file has to contain your project/solution/all relevant source files and documentation that describes your solution and describes how to make it run.

 

If you have a link to a working version of your solution - even better.

It's also ok if your zip file just contains a link from where we can download all relevant parts of your solution. The better and clearer the documentation is, the easier it is for us to set up or test your solution, which of course increases your chances of winning.