1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
//! # Monitor core API
//!
//! Monitor core exposes an HTTP api using standard JSON serialization.
//!
//! All calls share some common HTTP params:
//! - Method: `POST`
//! - Path: `/auth`, `/user`, `/read`, `/write`, `/execute`
//! - Headers:
//! - Content-Type: `application/json`
//! - Authorication: `your_jwt`
//! - X-Api-Key: `your_api_key`
//! - X-Api-Secret: `your_api_secret`
//! - Use either Authorization *or* X-Api-Key and X-Api-Secret to authenticate requests.
//! - Body: JSON specifying the request type (`type`) and the parameters (`params`).
//!
//! To call the api, construct JSON bodies following
//! the schemas given in [read], [mod@write], [execute], and so on.
//!
//! For example, this is an example body for [read::GetDeployment]:
//! ```
//! {
//! "type": "GetDeployment",
//! "params": {
//! "deployment": "66113df3abe32960b87018dd"
//! }
//! }
//! ```
//!
//! The request's parent module (eg. [read], [mod@write]) determines the http path which
//! must be used for the requests. For example, requests under [read] are made using http path `/read`.
//!
//! ## Modules
//!
//! - [auth]: Requests relating to logging in / obtaining authentication tokens.
//! - [user]: User self-management actions (manage api keys, etc.)
//! - [read]: Read only requests which retrieve data from Monitor.
//! - [execute]: Run actions on monitor resources, eg [execute::RunBuild].
//! - [mod@write]: Requests which alter data, like create / update / delete resources.
//!
//! ## Errors
//!
//! Request errors will be returned with a JSON body containing information about the error.
//! They will have the following common format:
//! ```
//! {
//! "error": "top level error message",
//! "trace": [
//! "first traceback message",
//! "second traceback message"
//! ]
//! }
//! ```