Statistics
| Branch: | Tag: | Revision:

root / docs / project-api-guide.rst @ a1d0bacb

History | View | Annotate | Download (12 kB)

1 2556cf45 Giorgos Korfiatis
Projects
2 2556cf45 Giorgos Korfiatis
--------
3 2556cf45 Giorgos Korfiatis
4 2556cf45 Giorgos Korfiatis
Astakos allows users to create *projects*. Through a project, one can ask for
5 2556cf45 Giorgos Korfiatis
additional resources on the virtual infrastructure for a certain amount of
6 2556cf45 Giorgos Korfiatis
time. All users admitted to the project gain access to these resources.
7 2556cf45 Giorgos Korfiatis
8 2556cf45 Giorgos Korfiatis
9 2556cf45 Giorgos Korfiatis
Retrieve List of Projects
10 2556cf45 Giorgos Korfiatis
.........................
11 2556cf45 Giorgos Korfiatis
12 2556cf45 Giorgos Korfiatis
**GET** /account/v1.0/projects
13 2556cf45 Giorgos Korfiatis
14 2556cf45 Giorgos Korfiatis
Returns all accessible projects. See below.
15 2556cf45 Giorgos Korfiatis
16 2556cf45 Giorgos Korfiatis
====================  =========================
17 2556cf45 Giorgos Korfiatis
Request Header Name   Value
18 2556cf45 Giorgos Korfiatis
====================  =========================
19 2556cf45 Giorgos Korfiatis
X-Auth-Token          User authentication token
20 2556cf45 Giorgos Korfiatis
====================  =========================
21 2556cf45 Giorgos Korfiatis
22 2556cf45 Giorgos Korfiatis
Request can specify a filter.
23 2556cf45 Giorgos Korfiatis
24 2556cf45 Giorgos Korfiatis
**Example Request**:
25 2556cf45 Giorgos Korfiatis
26 2556cf45 Giorgos Korfiatis
.. code-block:: javascript
27 2556cf45 Giorgos Korfiatis
28 2556cf45 Giorgos Korfiatis
  {
29 2556cf45 Giorgos Korfiatis
      "filter": {
30 2556cf45 Giorgos Korfiatis
          "state": ["active", "suspended"],
31 2556cf45 Giorgos Korfiatis
          "owner": [uuid]
32 2556cf45 Giorgos Korfiatis
      }
33 2556cf45 Giorgos Korfiatis
  }
34 2556cf45 Giorgos Korfiatis
35 2556cf45 Giorgos Korfiatis
**Response Codes**:
36 2556cf45 Giorgos Korfiatis
37 2556cf45 Giorgos Korfiatis
======  =====================
38 2556cf45 Giorgos Korfiatis
Status  Description
39 2556cf45 Giorgos Korfiatis
======  =====================
40 2556cf45 Giorgos Korfiatis
200     Success
41 2556cf45 Giorgos Korfiatis
400     Bad Request
42 2556cf45 Giorgos Korfiatis
401     Unauthorized (Missing token)
43 2556cf45 Giorgos Korfiatis
500     Internal Server Error
44 2556cf45 Giorgos Korfiatis
======  =====================
45 2556cf45 Giorgos Korfiatis
46 2556cf45 Giorgos Korfiatis
**Example Successful Response**:
47 2556cf45 Giorgos Korfiatis
48 2556cf45 Giorgos Korfiatis
List of project details. See below.
49 2556cf45 Giorgos Korfiatis
50 2556cf45 Giorgos Korfiatis
Retrieve a Project
51 2556cf45 Giorgos Korfiatis
..................
52 2556cf45 Giorgos Korfiatis
53 2556cf45 Giorgos Korfiatis
**GET** /account/v1.0/projects/<proj_id>
54 2556cf45 Giorgos Korfiatis
55 2556cf45 Giorgos Korfiatis
====================  =========================
56 2556cf45 Giorgos Korfiatis
Request Header Name   Value
57 2556cf45 Giorgos Korfiatis
====================  =========================
58 2556cf45 Giorgos Korfiatis
X-Auth-Token          User authentication token
59 2556cf45 Giorgos Korfiatis
====================  =========================
60 2556cf45 Giorgos Korfiatis
61 2556cf45 Giorgos Korfiatis
A project is accessible when the request user is admin, project owner,
62 2556cf45 Giorgos Korfiatis
applicant or member, or the project is active.
63 2556cf45 Giorgos Korfiatis
64 2556cf45 Giorgos Korfiatis
**Response Codes**:
65 2556cf45 Giorgos Korfiatis
66 2556cf45 Giorgos Korfiatis
======  ============================
67 2556cf45 Giorgos Korfiatis
Status  Description
68 2556cf45 Giorgos Korfiatis
======  ============================
69 2556cf45 Giorgos Korfiatis
200     Success
70 2556cf45 Giorgos Korfiatis
401     Unauthorized (Missing token)
71 2556cf45 Giorgos Korfiatis
403     Forbidden
72 2556cf45 Giorgos Korfiatis
404     Not Found
73 2556cf45 Giorgos Korfiatis
500     Internal Server Error
74 2556cf45 Giorgos Korfiatis
======  ============================
75 2556cf45 Giorgos Korfiatis
76 2556cf45 Giorgos Korfiatis
**Example Successful Response**:
77 2556cf45 Giorgos Korfiatis
78 2556cf45 Giorgos Korfiatis
.. code-block:: javascript
79 2556cf45 Giorgos Korfiatis
80 2556cf45 Giorgos Korfiatis
  {
81 2556cf45 Giorgos Korfiatis
      "id": proj_id,
82 2556cf45 Giorgos Korfiatis
      "application": app_id,
83 2556cf45 Giorgos Korfiatis
      "state": "pending" | "active" | "denied" | "dismissed" | "cancelled" | "suspended" | "terminated",
84 2556cf45 Giorgos Korfiatis
      "creation_date": "2013-06-26T11:48:06.579100+00:00",
85 2556cf45 Giorgos Korfiatis
      "name": "name",
86 2556cf45 Giorgos Korfiatis
      "owner": uuid,
87 2556cf45 Giorgos Korfiatis
      "homepage": homepage or null,
88 2556cf45 Giorgos Korfiatis
      "description": description or null,
89 2556cf45 Giorgos Korfiatis
      "start_date": date,
90 2556cf45 Giorgos Korfiatis
      "end_date": date,
91 2556cf45 Giorgos Korfiatis
      "join_policy": "auto" | "moderated" | "closed",
92 2556cf45 Giorgos Korfiatis
      "leave_policy": "auto" | "moderated" | "closed",
93 e98239db Giorgos Korfiatis
      "max_members": natural number
94 2556cf45 Giorgos Korfiatis
      "resources": {"cyclades.vm": {"project_capacity": int or null,
95 2556cf45 Giorgos Korfiatis
                                    "member_capacity": int
96 2556cf45 Giorgos Korfiatis
                                   }
97 2556cf45 Giorgos Korfiatis
                   }
98 2556cf45 Giorgos Korfiatis
      # only if request user is admin or project owner:
99 2556cf45 Giorgos Korfiatis
      "comments": comments,
100 2556cf45 Giorgos Korfiatis
      "pending_application": last pending app id or null,
101 2556cf45 Giorgos Korfiatis
      "deactivation_date": date  # if applicable
102 2556cf45 Giorgos Korfiatis
  }
103 2556cf45 Giorgos Korfiatis
104 2556cf45 Giorgos Korfiatis
Create a Project
105 2556cf45 Giorgos Korfiatis
................
106 2556cf45 Giorgos Korfiatis
107 2556cf45 Giorgos Korfiatis
**POST** /account/v1.0/projects
108 2556cf45 Giorgos Korfiatis
109 2556cf45 Giorgos Korfiatis
====================  =========================
110 2556cf45 Giorgos Korfiatis
Request Header Name   Value
111 2556cf45 Giorgos Korfiatis
====================  =========================
112 2556cf45 Giorgos Korfiatis
X-Auth-Token          User authentication token
113 2556cf45 Giorgos Korfiatis
====================  =========================
114 2556cf45 Giorgos Korfiatis
115 2556cf45 Giorgos Korfiatis
**Example Request**:
116 2556cf45 Giorgos Korfiatis
117 2556cf45 Giorgos Korfiatis
.. code-block:: javascript
118 2556cf45 Giorgos Korfiatis
119 2556cf45 Giorgos Korfiatis
  {
120 2556cf45 Giorgos Korfiatis
      "name": name,
121 2556cf45 Giorgos Korfiatis
      "owner": uuid,  # if omitted, request user assumed
122 2556cf45 Giorgos Korfiatis
      "homepage": homepage,  # optional
123 2556cf45 Giorgos Korfiatis
      "description": description,  # optional
124 2556cf45 Giorgos Korfiatis
      "comments": comments,  # optional
125 2556cf45 Giorgos Korfiatis
      "start_date": date,  # optional
126 2556cf45 Giorgos Korfiatis
      "end_date": date,
127 2556cf45 Giorgos Korfiatis
      "join_policy": "auto" | "moderated" | "closed",  # default: "moderated"
128 2556cf45 Giorgos Korfiatis
      "leave_policy": "auto" | "moderated" | "closed",  # default: "auto"
129 2556cf45 Giorgos Korfiatis
      "resources": {"cyclades.vm": {"project_capacity": int or null,
130 2556cf45 Giorgos Korfiatis
                                    "member_capacity": int
131 2556cf45 Giorgos Korfiatis
                                   }
132 2556cf45 Giorgos Korfiatis
                   }
133 2556cf45 Giorgos Korfiatis
  }
134 2556cf45 Giorgos Korfiatis
135 2556cf45 Giorgos Korfiatis
**Response Codes**:
136 2556cf45 Giorgos Korfiatis
137 2556cf45 Giorgos Korfiatis
======  ============================
138 2556cf45 Giorgos Korfiatis
Status  Description
139 2556cf45 Giorgos Korfiatis
======  ============================
140 2556cf45 Giorgos Korfiatis
201     Created
141 2556cf45 Giorgos Korfiatis
400     Bad Request
142 2556cf45 Giorgos Korfiatis
401     Unauthorized (Missing token)
143 2556cf45 Giorgos Korfiatis
403     Forbidden
144 2556cf45 Giorgos Korfiatis
409     Conflict
145 2556cf45 Giorgos Korfiatis
500     Internal Server Error
146 2556cf45 Giorgos Korfiatis
======  ============================
147 2556cf45 Giorgos Korfiatis
148 2556cf45 Giorgos Korfiatis
**Example Successful Response**:
149 2556cf45 Giorgos Korfiatis
150 2556cf45 Giorgos Korfiatis
.. code-block:: javascript
151 2556cf45 Giorgos Korfiatis
152 2556cf45 Giorgos Korfiatis
  {
153 2556cf45 Giorgos Korfiatis
      "id": project_id,
154 2556cf45 Giorgos Korfiatis
      "application": application_id
155 2556cf45 Giorgos Korfiatis
  }
156 2556cf45 Giorgos Korfiatis
157 2556cf45 Giorgos Korfiatis
158 2556cf45 Giorgos Korfiatis
Modify a Project
159 2556cf45 Giorgos Korfiatis
................
160 2556cf45 Giorgos Korfiatis
161 2556cf45 Giorgos Korfiatis
**POST** /account/v1.0/projects/<proj_id>
162 2556cf45 Giorgos Korfiatis
163 2556cf45 Giorgos Korfiatis
====================  =========================
164 2556cf45 Giorgos Korfiatis
Request Header Name   Value
165 2556cf45 Giorgos Korfiatis
====================  =========================
166 2556cf45 Giorgos Korfiatis
X-Auth-Token          User authentication token
167 2556cf45 Giorgos Korfiatis
====================  =========================
168 2556cf45 Giorgos Korfiatis
169 2556cf45 Giorgos Korfiatis
170 2556cf45 Giorgos Korfiatis
**Example Request**:
171 2556cf45 Giorgos Korfiatis
172 2556cf45 Giorgos Korfiatis
As above.
173 2556cf45 Giorgos Korfiatis
174 2556cf45 Giorgos Korfiatis
**Response Codes**:
175 2556cf45 Giorgos Korfiatis
176 2556cf45 Giorgos Korfiatis
======  ============================
177 2556cf45 Giorgos Korfiatis
Status  Description
178 2556cf45 Giorgos Korfiatis
======  ============================
179 2556cf45 Giorgos Korfiatis
201     Created
180 2556cf45 Giorgos Korfiatis
400     Bad Request
181 2556cf45 Giorgos Korfiatis
401     Unauthorized (Missing token)
182 2556cf45 Giorgos Korfiatis
403     Forbidden
183 2556cf45 Giorgos Korfiatis
404     Not Found
184 2556cf45 Giorgos Korfiatis
409     Conflict
185 2556cf45 Giorgos Korfiatis
500     Internal Server Error
186 2556cf45 Giorgos Korfiatis
======  ============================
187 2556cf45 Giorgos Korfiatis
188 2556cf45 Giorgos Korfiatis
**Example Successful Response**:
189 2556cf45 Giorgos Korfiatis
190 2556cf45 Giorgos Korfiatis
As above.
191 2556cf45 Giorgos Korfiatis
192 2556cf45 Giorgos Korfiatis
Take Action on a Project
193 2556cf45 Giorgos Korfiatis
........................
194 2556cf45 Giorgos Korfiatis
195 2556cf45 Giorgos Korfiatis
**POST** /account/v1.0/projects/<proj_id>/action
196 2556cf45 Giorgos Korfiatis
197 2556cf45 Giorgos Korfiatis
====================  =========================
198 2556cf45 Giorgos Korfiatis
Request Header Name   Value
199 2556cf45 Giorgos Korfiatis
====================  =========================
200 2556cf45 Giorgos Korfiatis
X-Auth-Token          User authentication token
201 2556cf45 Giorgos Korfiatis
====================  =========================
202 2556cf45 Giorgos Korfiatis
203 2556cf45 Giorgos Korfiatis
**Example Request**:
204 2556cf45 Giorgos Korfiatis
205 2556cf45 Giorgos Korfiatis
.. code-block:: javascript
206 2556cf45 Giorgos Korfiatis
207 2556cf45 Giorgos Korfiatis
  {
208 2556cf45 Giorgos Korfiatis
      <action>: "reason"
209 2556cf45 Giorgos Korfiatis
  }
210 2556cf45 Giorgos Korfiatis
211 2556cf45 Giorgos Korfiatis
<action> can be: "suspend", "unsuspend", "terminate", "reinstate"
212 2556cf45 Giorgos Korfiatis
213 2556cf45 Giorgos Korfiatis
**Response Codes**:
214 2556cf45 Giorgos Korfiatis
215 2556cf45 Giorgos Korfiatis
======  ============================
216 2556cf45 Giorgos Korfiatis
Status  Description
217 2556cf45 Giorgos Korfiatis
======  ============================
218 2556cf45 Giorgos Korfiatis
200     Success
219 2556cf45 Giorgos Korfiatis
400     Bad Request
220 2556cf45 Giorgos Korfiatis
401     Unauthorized (Missing token)
221 2556cf45 Giorgos Korfiatis
403     Forbidden
222 2556cf45 Giorgos Korfiatis
404     Not Found
223 2556cf45 Giorgos Korfiatis
409     Conflict
224 2556cf45 Giorgos Korfiatis
500     Internal Server Error
225 2556cf45 Giorgos Korfiatis
======  ============================
226 2556cf45 Giorgos Korfiatis
227 2556cf45 Giorgos Korfiatis
Retrieve List of Applications
228 2556cf45 Giorgos Korfiatis
.............................
229 2556cf45 Giorgos Korfiatis
230 2556cf45 Giorgos Korfiatis
**GET** /account/v1.0/projects/apps
231 2556cf45 Giorgos Korfiatis
232 2556cf45 Giorgos Korfiatis
====================  =========================
233 2556cf45 Giorgos Korfiatis
Request Header Name   Value
234 2556cf45 Giorgos Korfiatis
====================  =========================
235 2556cf45 Giorgos Korfiatis
X-Auth-Token          User authentication token
236 2556cf45 Giorgos Korfiatis
====================  =========================
237 2556cf45 Giorgos Korfiatis
238 2556cf45 Giorgos Korfiatis
Get all accessible applications. See below.
239 2556cf45 Giorgos Korfiatis
240 2556cf45 Giorgos Korfiatis
**Example optional request**
241 2556cf45 Giorgos Korfiatis
242 2556cf45 Giorgos Korfiatis
.. code-block:: javascript
243 2556cf45 Giorgos Korfiatis
244 2556cf45 Giorgos Korfiatis
  {
245 2556cf45 Giorgos Korfiatis
      "project": <project_id>
246 2556cf45 Giorgos Korfiatis
  }
247 2556cf45 Giorgos Korfiatis
248 2556cf45 Giorgos Korfiatis
**Response Codes**:
249 2556cf45 Giorgos Korfiatis
250 2556cf45 Giorgos Korfiatis
======  ============================
251 2556cf45 Giorgos Korfiatis
Status  Description
252 2556cf45 Giorgos Korfiatis
======  ============================
253 2556cf45 Giorgos Korfiatis
200     Success
254 2556cf45 Giorgos Korfiatis
400     Bad Request
255 2556cf45 Giorgos Korfiatis
401     Unauthorized (Missing token)
256 2556cf45 Giorgos Korfiatis
500     Internal Server Error
257 2556cf45 Giorgos Korfiatis
======  ============================
258 2556cf45 Giorgos Korfiatis
259 2556cf45 Giorgos Korfiatis
**Example Successful Response**:
260 2556cf45 Giorgos Korfiatis
261 2556cf45 Giorgos Korfiatis
List of application details. See below.
262 2556cf45 Giorgos Korfiatis
263 2556cf45 Giorgos Korfiatis
Retrieve an Application
264 2556cf45 Giorgos Korfiatis
.......................
265 2556cf45 Giorgos Korfiatis
266 2556cf45 Giorgos Korfiatis
**GET** /account/v1.0/projects/apps/<app_id>
267 2556cf45 Giorgos Korfiatis
268 2556cf45 Giorgos Korfiatis
====================  =========================
269 2556cf45 Giorgos Korfiatis
Request Header Name   Value
270 2556cf45 Giorgos Korfiatis
====================  =========================
271 2556cf45 Giorgos Korfiatis
X-Auth-Token          User authentication token
272 2556cf45 Giorgos Korfiatis
====================  =========================
273 2556cf45 Giorgos Korfiatis
274 2556cf45 Giorgos Korfiatis
An application is accessible when the request user is admin or the
275 2556cf45 Giorgos Korfiatis
application owner/applicant.
276 2556cf45 Giorgos Korfiatis
277 2556cf45 Giorgos Korfiatis
**Response Codes**:
278 2556cf45 Giorgos Korfiatis
279 2556cf45 Giorgos Korfiatis
======  ============================
280 2556cf45 Giorgos Korfiatis
Status  Description
281 2556cf45 Giorgos Korfiatis
======  ============================
282 2556cf45 Giorgos Korfiatis
200     Success
283 2556cf45 Giorgos Korfiatis
401     Unauthorized (Missing token)
284 2556cf45 Giorgos Korfiatis
403     Forbidden
285 2556cf45 Giorgos Korfiatis
404     Not Found
286 2556cf45 Giorgos Korfiatis
500     Internal Server Error
287 2556cf45 Giorgos Korfiatis
======  ============================
288 2556cf45 Giorgos Korfiatis
289 2556cf45 Giorgos Korfiatis
**Example Successful Response**
290 2556cf45 Giorgos Korfiatis
291 2556cf45 Giorgos Korfiatis
.. code-block:: javascript
292 2556cf45 Giorgos Korfiatis
293 2556cf45 Giorgos Korfiatis
  {
294 2556cf45 Giorgos Korfiatis
      "id": app_id,
295 2556cf45 Giorgos Korfiatis
      "project": project_id,
296 2556cf45 Giorgos Korfiatis
      "state": "pending" | "approved" | "replaced" | "denied" | "dismissed" | "cancelled",
297 2556cf45 Giorgos Korfiatis
      "name": "name",
298 2556cf45 Giorgos Korfiatis
      "owner": uuid,
299 2556cf45 Giorgos Korfiatis
      "applicant": uuid,
300 2556cf45 Giorgos Korfiatis
      "homepage": homepage or null,
301 2556cf45 Giorgos Korfiatis
      "description": description or null,
302 2556cf45 Giorgos Korfiatis
      "start_date": date,
303 2556cf45 Giorgos Korfiatis
      "end_date": date,
304 2556cf45 Giorgos Korfiatis
      "join_policy": "auto" | "moderated" | "closed",
305 2556cf45 Giorgos Korfiatis
      "leave_policy": "auto" | "moderated" | "closed",
306 2556cf45 Giorgos Korfiatis
      "max_members": int or null
307 2556cf45 Giorgos Korfiatis
      "comments": comments,
308 2556cf45 Giorgos Korfiatis
      "resources": {"cyclades.vm": {"project_capacity": int or null,
309 2556cf45 Giorgos Korfiatis
                                    "member_capacity": int
310 2556cf45 Giorgos Korfiatis
                                   }
311 2556cf45 Giorgos Korfiatis
                   }
312 2556cf45 Giorgos Korfiatis
  }
313 2556cf45 Giorgos Korfiatis
314 2556cf45 Giorgos Korfiatis
Take Action on an Application
315 2556cf45 Giorgos Korfiatis
.............................
316 2556cf45 Giorgos Korfiatis
317 2556cf45 Giorgos Korfiatis
**POST** /account/v1.0/projects/apps/<app_id>/action
318 2556cf45 Giorgos Korfiatis
319 2556cf45 Giorgos Korfiatis
====================  ============================
320 2556cf45 Giorgos Korfiatis
Request Header Name   Value
321 2556cf45 Giorgos Korfiatis
====================  ============================
322 2556cf45 Giorgos Korfiatis
X-Auth-Token          User authentication token
323 2556cf45 Giorgos Korfiatis
====================  ============================
324 2556cf45 Giorgos Korfiatis
325 2556cf45 Giorgos Korfiatis
**Example Request**:
326 2556cf45 Giorgos Korfiatis
327 2556cf45 Giorgos Korfiatis
.. code-block:: javascript
328 2556cf45 Giorgos Korfiatis
329 2556cf45 Giorgos Korfiatis
  {
330 2556cf45 Giorgos Korfiatis
      <action>: "reason"
331 2556cf45 Giorgos Korfiatis
  }
332 2556cf45 Giorgos Korfiatis
333 2556cf45 Giorgos Korfiatis
<action> can be one of "approve", "deny", "dismiss", "cancel".
334 2556cf45 Giorgos Korfiatis
335 2556cf45 Giorgos Korfiatis
**Response Codes**:
336 2556cf45 Giorgos Korfiatis
337 2556cf45 Giorgos Korfiatis
======  ============================
338 2556cf45 Giorgos Korfiatis
Status  Description
339 2556cf45 Giorgos Korfiatis
======  ============================
340 2556cf45 Giorgos Korfiatis
200     Success
341 2556cf45 Giorgos Korfiatis
400     Bad Request
342 2556cf45 Giorgos Korfiatis
401     Unauthorized (Missing token)
343 2556cf45 Giorgos Korfiatis
403     Forbidden
344 2556cf45 Giorgos Korfiatis
404     Not Found
345 2556cf45 Giorgos Korfiatis
409     Conflict
346 2556cf45 Giorgos Korfiatis
500     Internal Server Error
347 2556cf45 Giorgos Korfiatis
======  ============================
348 2556cf45 Giorgos Korfiatis
349 2556cf45 Giorgos Korfiatis
Retrieve List of Memberships
350 2556cf45 Giorgos Korfiatis
............................
351 2556cf45 Giorgos Korfiatis
352 2556cf45 Giorgos Korfiatis
**GET** /account/v1.0/projects/memberships
353 2556cf45 Giorgos Korfiatis
354 2556cf45 Giorgos Korfiatis
====================  ============================
355 2556cf45 Giorgos Korfiatis
Request Header Name   Value
356 2556cf45 Giorgos Korfiatis
====================  ============================
357 2556cf45 Giorgos Korfiatis
X-Auth-Token          User authentication token
358 2556cf45 Giorgos Korfiatis
====================  ============================
359 2556cf45 Giorgos Korfiatis
360 2556cf45 Giorgos Korfiatis
Get all accessible memberships. See below.
361 2556cf45 Giorgos Korfiatis
362 2556cf45 Giorgos Korfiatis
**Example Optional Request**
363 2556cf45 Giorgos Korfiatis
364 2556cf45 Giorgos Korfiatis
.. code-block:: javascript
365 2556cf45 Giorgos Korfiatis
366 2556cf45 Giorgos Korfiatis
  {
367 2556cf45 Giorgos Korfiatis
      "project": <proj_id>
368 2556cf45 Giorgos Korfiatis
  }
369 2556cf45 Giorgos Korfiatis
370 2556cf45 Giorgos Korfiatis
**Response Codes**:
371 2556cf45 Giorgos Korfiatis
372 2556cf45 Giorgos Korfiatis
======  ============================
373 2556cf45 Giorgos Korfiatis
Status  Description
374 2556cf45 Giorgos Korfiatis
======  ============================
375 2556cf45 Giorgos Korfiatis
200     Success
376 2556cf45 Giorgos Korfiatis
400     Bad Request
377 2556cf45 Giorgos Korfiatis
401     Unauthorized (Missing token)
378 2556cf45 Giorgos Korfiatis
500     Internal Server Error
379 2556cf45 Giorgos Korfiatis
======  ============================
380 2556cf45 Giorgos Korfiatis
381 2556cf45 Giorgos Korfiatis
**Example Successful Response**
382 2556cf45 Giorgos Korfiatis
383 2556cf45 Giorgos Korfiatis
List of memberships. See below.
384 2556cf45 Giorgos Korfiatis
385 2556cf45 Giorgos Korfiatis
Retrieve a Membership
386 2556cf45 Giorgos Korfiatis
.....................
387 2556cf45 Giorgos Korfiatis
388 2556cf45 Giorgos Korfiatis
**GET** /account/v1.0/projects/memberships/<memb_id>
389 2556cf45 Giorgos Korfiatis
390 2556cf45 Giorgos Korfiatis
====================  ============================
391 2556cf45 Giorgos Korfiatis
Request Header Name   Value
392 2556cf45 Giorgos Korfiatis
====================  ============================
393 2556cf45 Giorgos Korfiatis
X-Auth-Token          User authentication token
394 2556cf45 Giorgos Korfiatis
====================  ============================
395 2556cf45 Giorgos Korfiatis
396 2556cf45 Giorgos Korfiatis
A membership is accessible if the request user is admin, project owner or
397 2556cf45 Giorgos Korfiatis
the member.
398 2556cf45 Giorgos Korfiatis
399 2556cf45 Giorgos Korfiatis
**Response Codes**:
400 2556cf45 Giorgos Korfiatis
401 2556cf45 Giorgos Korfiatis
======  ============================
402 2556cf45 Giorgos Korfiatis
Status  Description
403 2556cf45 Giorgos Korfiatis
======  ============================
404 2556cf45 Giorgos Korfiatis
200     Success
405 2556cf45 Giorgos Korfiatis
401     Unauthorized (Missing token)
406 2556cf45 Giorgos Korfiatis
403     Forbidden
407 2556cf45 Giorgos Korfiatis
404     Not Found
408 2556cf45 Giorgos Korfiatis
500     Internal Server Error
409 2556cf45 Giorgos Korfiatis
======  ============================
410 2556cf45 Giorgos Korfiatis
411 2556cf45 Giorgos Korfiatis
**Example Successful Response**
412 2556cf45 Giorgos Korfiatis
413 2556cf45 Giorgos Korfiatis
.. code-block:: javascript
414 2556cf45 Giorgos Korfiatis
415 2556cf45 Giorgos Korfiatis
  {
416 2556cf45 Giorgos Korfiatis
      "id": id,
417 2556cf45 Giorgos Korfiatis
      "user": uuid,
418 2556cf45 Giorgos Korfiatis
      "project": project_id,
419 2556cf45 Giorgos Korfiatis
      "state": "requested" | "accepted" | "leave_requested" | "suspended" | "rejected" | "cancelled" | "removed",
420 2556cf45 Giorgos Korfiatis
      "requested": last_request_date,
421 2556cf45 Giorgos Korfiatis
      "accepted": last_acceptance_date,
422 2556cf45 Giorgos Korfiatis
      "removed": last_removal_date,
423 2556cf45 Giorgos Korfiatis
      "allowed_actions": ["leave", "cancel", "accept", "reject", "remove"],
424 2556cf45 Giorgos Korfiatis
  }
425 2556cf45 Giorgos Korfiatis
426 2556cf45 Giorgos Korfiatis
Take Action on a Membership
427 2556cf45 Giorgos Korfiatis
...........................
428 2556cf45 Giorgos Korfiatis
429 2556cf45 Giorgos Korfiatis
**POST** /account/v1.0/projects/memberships/<memb_id>/action
430 2556cf45 Giorgos Korfiatis
431 2556cf45 Giorgos Korfiatis
====================  ============================
432 2556cf45 Giorgos Korfiatis
Request Header Name   Value
433 2556cf45 Giorgos Korfiatis
====================  ============================
434 2556cf45 Giorgos Korfiatis
X-Auth-Token          User authentication token
435 2556cf45 Giorgos Korfiatis
====================  ============================
436 2556cf45 Giorgos Korfiatis
437 2556cf45 Giorgos Korfiatis
**Example Request**
438 2556cf45 Giorgos Korfiatis
439 2556cf45 Giorgos Korfiatis
.. code-block:: javascript
440 2556cf45 Giorgos Korfiatis
441 2556cf45 Giorgos Korfiatis
  {
442 2556cf45 Giorgos Korfiatis
      <action>: "reason"
443 2556cf45 Giorgos Korfiatis
  }
444 2556cf45 Giorgos Korfiatis
445 2556cf45 Giorgos Korfiatis
<action> can be one of: "leave", "cancel", "accept", "reject", "remove"
446 2556cf45 Giorgos Korfiatis
447 2556cf45 Giorgos Korfiatis
**Response Codes**:
448 2556cf45 Giorgos Korfiatis
449 2556cf45 Giorgos Korfiatis
======  ============================
450 2556cf45 Giorgos Korfiatis
Status  Description
451 2556cf45 Giorgos Korfiatis
======  ============================
452 2556cf45 Giorgos Korfiatis
200     Success
453 2556cf45 Giorgos Korfiatis
400     Bad Request
454 2556cf45 Giorgos Korfiatis
401     Unauthorized (Missing token)
455 2556cf45 Giorgos Korfiatis
403     Forbidden
456 2556cf45 Giorgos Korfiatis
404     Not Found
457 2556cf45 Giorgos Korfiatis
409     Conflict
458 2556cf45 Giorgos Korfiatis
500     Internal Server Error
459 2556cf45 Giorgos Korfiatis
======  ============================
460 2556cf45 Giorgos Korfiatis
461 2556cf45 Giorgos Korfiatis
Create a Membership
462 2556cf45 Giorgos Korfiatis
...................
463 2556cf45 Giorgos Korfiatis
464 2556cf45 Giorgos Korfiatis
**POST** /account/v1.0/projects/memberships
465 2556cf45 Giorgos Korfiatis
466 2556cf45 Giorgos Korfiatis
====================  ============================
467 2556cf45 Giorgos Korfiatis
Request Header Name   Value
468 2556cf45 Giorgos Korfiatis
====================  ============================
469 2556cf45 Giorgos Korfiatis
X-Auth-Token          User authentication token
470 2556cf45 Giorgos Korfiatis
====================  ============================
471 2556cf45 Giorgos Korfiatis
472 2556cf45 Giorgos Korfiatis
**Example Requests**
473 2556cf45 Giorgos Korfiatis
474 2556cf45 Giorgos Korfiatis
.. code-block:: javascript
475 2556cf45 Giorgos Korfiatis
476 2556cf45 Giorgos Korfiatis
  {
477 2556cf45 Giorgos Korfiatis
      "join": {
478 2556cf45 Giorgos Korfiatis
          "project": proj_id
479 2556cf45 Giorgos Korfiatis
      }
480 2556cf45 Giorgos Korfiatis
  }
481 2556cf45 Giorgos Korfiatis
482 2556cf45 Giorgos Korfiatis
.. code-block:: javascript
483 2556cf45 Giorgos Korfiatis
484 2556cf45 Giorgos Korfiatis
  {
485 2556cf45 Giorgos Korfiatis
      "enroll": {
486 2556cf45 Giorgos Korfiatis
          "project": proj_id,
487 2556cf45 Giorgos Korfiatis
          "user": "user@example.org"
488 2556cf45 Giorgos Korfiatis
      }
489 2556cf45 Giorgos Korfiatis
  }
490 2556cf45 Giorgos Korfiatis
491 2556cf45 Giorgos Korfiatis
**Response Codes**:
492 2556cf45 Giorgos Korfiatis
493 2556cf45 Giorgos Korfiatis
======  ============================
494 2556cf45 Giorgos Korfiatis
Status  Description
495 2556cf45 Giorgos Korfiatis
======  ============================
496 2556cf45 Giorgos Korfiatis
200     Success
497 2556cf45 Giorgos Korfiatis
400     Bad Request
498 2556cf45 Giorgos Korfiatis
401     Unauthorized (Missing token)
499 2556cf45 Giorgos Korfiatis
403     Forbidden
500 2556cf45 Giorgos Korfiatis
409     Conflict
501 2556cf45 Giorgos Korfiatis
500     Internal Server Error
502 2556cf45 Giorgos Korfiatis
======  ============================
503 2556cf45 Giorgos Korfiatis
504 2556cf45 Giorgos Korfiatis
**Example Response**
505 2556cf45 Giorgos Korfiatis
506 2556cf45 Giorgos Korfiatis
.. code-block:: javascript
507 2556cf45 Giorgos Korfiatis
508 2556cf45 Giorgos Korfiatis
  {
509 2556cf45 Giorgos Korfiatis
      "id": membership_id
510 2556cf45 Giorgos Korfiatis
  }