# Servers API ## Get servers list [GET /v3/servers] > Get servers list ### Request * Policy: read_servers * Method: GET * Headers: * Accept: application/json * Params: ### Response **Status: 200** * Headers: * Content-Type: application/json * Body: ```json [ { "id" : "server id", "name" : "server name", "cm_name" : "server configuration manager name", "remote_user" : "ssh remote user", "project": "project id", "environment": "environment id", "category": "category id", "private_ip": "private IP address", "public_ip": "public IP address", "created_by": "server owner", "reserved_by": "server reserved by", "stack": "server stack name", "ssh_key": "ssh key id", "run_list": "server run list" } ] ``` ## Get cm servers list [GET /v3/servers/cm_tool/:cm_tool] > Get servers list for configuration tool :cm_tool ### Request * Policy: read_servers * Method: GET * Headers: * Accept: application/json * Params: ### Response **Status: 200** * Headers: * Content-Type: application/json * Body: ```json [ { } ] ``` ## Get provider servers list [GET /v3/servers/provider/:provider/:account] > Get servers list for provider :provider and account :account ### Request * Policy: read_servers * Method: GET * Headers: * Accept: application/json * Params: ### Response **Status: 200** * Headers: * Content-Type: application/json * Body: ```json [ { } ] ``` ## Get server id by name [GET /v3/server/id/:name] > Get server id by name :name ### Request * Policy: read_servers * Method: GET * Headers: * Accept: application/json * Params: ### Response **Status: 200** * Headers: * Content-Type: application/json * Body: ```json { "id": "server id" } ``` **Status: 404** * Headers: * Content-Type: application/json * Body: ```json { "message": "" } ``` ## Get server [GET /v3/server/:id] > Get server by id ### Request * Policy: read_servers * Method: GET * Headers: * Accept: application/json * Params: ### Response **Status: 200** * Headers: * Content-Type: application/json * Body: ```json { } ``` **Status: 404** * Headers: * Content-Type: application/json * Body: ```json {} ``` ## Create server [POST /v3/server] > Create new server ### Request * Policy: create_server * Method: POST * Headers: * Accept: application/json * Content-Type: application/json * X-Stream: true -> return output in text stream * Body: ```json { "project": "project name", -> mandatory parameter "environment": "env", -> mandatory parameter "category": "env", -> mandatory parameter "name": "server_name", -> if null, name will be generated "without_bootstrap": null, -> do not install chef on instance if true "force": null -> do not delete server on error } ``` ### Response **Status: 201** * Headers: * Content-Type: application/json * Body: ```json { "id": "server_id" "message" : "Created" } ``` ## Delete server [DELETE /v3/server/:id] > Delete server with id ':id' ### Request * Policy: delete_servers * Method: DELETE * Headers: * Accept: application/json ### Response **Status: 200** * Headers: * Content-Type: application/json * Body: ```json { } ``` **Status: 404** * Headers: * Content-Type: application/json * Body: ```json {} ``` ## Pause server [POST /v3/server/:id/pause] > pause cloud server with identifier ':id' ### Request * Policy: pause_server * Method: POST * Headers: * Accept: application/json * Content-Type: application/json ### Response **Status: 200** * Headers: * Content-Type: application/json * Body: ```json { "id": "server_id" "message" : "Paused" } ``` **Status: 404** * Headers: * Content-Type: application/json * Body: ```json { "message": "" } ``` ## Unpause server [POST /v3/server/:id/unpause] > unpause cloud server with identifier ':id' ### Request * Policy: pause_server * Method: POST * Headers: * Accept: application/json * Content-Type: application/json ### Response **Status: 200** * Headers: * Content-Type: application/json * Body: ```json { "id": "server_id" "message" : "Unpaused" } ``` **Status: 404** * Headers: * Content-Type: application/json * Body: ```json { "message": "" } ``` ## Reserve server [POST /v3/server/:id/reserve] > Reserve server with identifier ':id' ### Request * Policy: reserve_server * Method: POST * Headers: * Accept: application/json * Content-Type: application/json ### Response **Status: 200** * Headers: * Content-Type: application/json * Body: ```json { "id": "server_id" "message" : "Reserved" } ``` **Status: 404** * Headers: * Content-Type: application/json * Body: ```json { "message": "" } ``` ## Unreserve server [POST /v3/server/:id/unreserve] > Unreserve server with identifier ':id' ### Request * Policy: reserve_server * Method: POST * Headers: * Accept: application/json * Content-Type: application/json ### Response **Status: 200** * Headers: * Content-Type: application/json * Body: ```json { "id": "server_id" "message" : "Unreserved" } ``` **Status: 404** * Headers: * Content-Type: application/json * Body: ```json { "message": "" } ``` ## Bootstrap server [POST /v3/server/:id/bootstrap] > Bootstrap server with identifier ':id' ### Request * Policy: deploy_server * Method: POST * Headers: * Accept: application/json * Content-Type: application/json * X-Stream: true -> return output in text stream ### Response **Status: 200** * Headers: * Content-Type: application/json * Body: ```json { "id": "server_id", "cm_name": "server cm name", "message" : "Bootstraped" } ``` **Status: 404** * Headers: * Content-Type: application/json * Body: ```json { "message": "" } ``` ## Unbootstrap server [POST /v3/server/:id/unbootstrap] > Unbootstrap server with identifier ':id' ### Request * Policy: deploy_server * Method: POST * Headers: * Accept: application/json * Content-Type: application/json ### Response **Status: 200** * Headers: * Content-Type: application/json * Body: ```json { "id": "server_id", "message" : "Unbootstraped" } ``` **Status: 404** * Headers: * Content-Type: application/json * Body: ```json { "message": "" } ``` ## Deploy server [POST /v3/server/:id/deploy] > Deploy server with identifier ':id' ### Request * Policy: deploy_server * Method: POST * Headers: * Accept: application/json * Content-Type: application/json * X-Stream: true -> return output in text stream * Body: ```json { "tags": [], -> array of tags to apply on each server before running chef-client "build_number": "", -> string, build number to deploy "run_list": [], -> array of strings to set run_list for chef-client } ``` ### Response **Status: 200** * Headers: * Content-Type: application/json * Body: ```json { "id": "server id", "message": "" } ``` **Status: 404** * Headers: * Content-Type: application/json * Body: ```json { "message": "" } ``` ## Add server [POST /v3/server/add] > Add external server ### Request * Policy: create_server * Method: POST * Headers: * Accept: application/json * Content-Type: application/json * Body: ```json { "project": "project id", -> mandatory parameter "environment": "env id", -> mandatory parameter "category": "category id", -> mandatory parameter "key": "ssh key", -> mandatory parameter "remote_user": "ssh user", -> mandatory parameter "private_ip": "ip", -> mandatory parameter "public_ip": "ip" } ``` ### Response **Status: 200** * Headers: * Content-Type: application/json * Body: ```json { "id": "server_id", "message" : "Added" } ``` **Status: 404** * Headers: * Content-Type: application/json * Body: ```json { "message": "" } ``` ## Add server tags [POST /v3/server/:id/tags/add] > Add cloud server tags ### Request * Policy: create_server * Method: POST * Headers: * Accept: application/json * Content-Type: application/json * Body: ```json { "tags": [ {"tag name": "tag value"} ] } ``` ### Response **Status: 200** * Headers: * Content-Type: application/json * Body: ```json { "id": "server_id", "message" : "Added" } ``` **Status: 404** * Headers: * Content-Type: application/json * Body: ```json { "message": "" } ``` ## Delete server tags [POST /v3/server/:id/tags/delete] > Delete cloud server tags ### Request * Policy: create_server * Method: POST * Headers: * Accept: application/json * Content-Type: application/json * Body: ```json { "tags": [ {"tag name": "tag value"} ] } ``` ### Response **Status: 200** * Headers: * Content-Type: application/json * Body: ```json { "id": "server_id", "message" : "Deleted" } ``` **Status: 404** * Headers: * Content-Type: application/json * Body: ```json { "message": "" } ``` ## Set server run list [POST /v3/server/:id/run_list] > Set server run list ### Request * Policy: create_server * Method: POST * Headers: * Accept: application/json * Content-Type: application/json * Body: ```json { "run_list": [ ] } ``` ### Response **Status: 200** * Headers: * Content-Type: application/json * Body: ```json { "id": "server_id", "message" : "Deleted" } ``` **Status: 404** * Headers: * Content-Type: application/json * Body: ```json { "message": "" } ```