moonrope 1.4.1 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (95) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +9 -0
  3. data/Gemfile.lock +47 -0
  4. data/MIT-LICENCE +20 -0
  5. data/README.md +24 -0
  6. data/bin/moonrope +28 -0
  7. data/docs/authentication.md +114 -0
  8. data/docs/controllers.md +106 -0
  9. data/docs/exceptions.md +27 -0
  10. data/docs/introduction.md +29 -0
  11. data/docs/structures.md +214 -0
  12. data/example/authentication.rb +50 -0
  13. data/example/controllers/meta_controller.rb +14 -0
  14. data/example/controllers/users_controller.rb +92 -0
  15. data/example/structures/pet_structure.rb +12 -0
  16. data/example/structures/user_structure.rb +35 -0
  17. data/html/assets/lock.svg +3 -0
  18. data/html/assets/reset.css +101 -0
  19. data/html/assets/style.css +348 -0
  20. data/html/assets/tool.svg +4 -0
  21. data/html/assets/try.js +151 -0
  22. data/html/authenticators/default.html +191 -0
  23. data/html/controllers/meta/version.html +144 -0
  24. data/html/controllers/meta.html +73 -0
  25. data/html/controllers/users/create.html +341 -0
  26. data/html/controllers/users/list.html +348 -0
  27. data/html/controllers/users/show.html +261 -0
  28. data/html/controllers/users/update.html +387 -0
  29. data/html/controllers/users.html +93 -0
  30. data/html/index.html +166 -0
  31. data/html/moonrope.txt +0 -0
  32. data/html/structures/pet.html +176 -0
  33. data/html/structures/user.html +338 -0
  34. data/lib/moonrope/action.rb +165 -37
  35. data/lib/moonrope/authenticator.rb +39 -0
  36. data/lib/moonrope/base.rb +24 -6
  37. data/lib/moonrope/controller.rb +4 -2
  38. data/lib/moonrope/doc_context.rb +94 -0
  39. data/lib/moonrope/doc_server.rb +123 -0
  40. data/lib/moonrope/dsl/action_dsl.rb +159 -9
  41. data/lib/moonrope/dsl/authenticator_dsl.rb +31 -0
  42. data/lib/moonrope/dsl/base_dsl.rb +21 -18
  43. data/lib/moonrope/dsl/controller_dsl.rb +60 -9
  44. data/lib/moonrope/dsl/filterable_dsl.rb +27 -0
  45. data/lib/moonrope/dsl/structure_dsl.rb +27 -2
  46. data/lib/moonrope/errors.rb +3 -0
  47. data/lib/moonrope/eval_environment.rb +82 -3
  48. data/lib/moonrope/eval_helpers/filter_helper.rb +82 -0
  49. data/lib/moonrope/eval_helpers.rb +28 -5
  50. data/lib/moonrope/guard.rb +35 -0
  51. data/lib/moonrope/html_generator.rb +65 -0
  52. data/lib/moonrope/param_set.rb +11 -1
  53. data/lib/moonrope/rack_middleware.rb +1 -1
  54. data/lib/moonrope/railtie.rb +31 -14
  55. data/lib/moonrope/request.rb +25 -14
  56. data/lib/moonrope/structure.rb +74 -11
  57. data/lib/moonrope/structure_attribute.rb +15 -0
  58. data/lib/moonrope/version.rb +1 -1
  59. data/lib/moonrope.rb +5 -4
  60. data/moonrope.gemspec +21 -0
  61. data/spec/spec_helper.rb +32 -0
  62. data/spec/specs/action_spec.rb +455 -0
  63. data/spec/specs/base_spec.rb +29 -0
  64. data/spec/specs/controller_spec.rb +31 -0
  65. data/spec/specs/param_set_spec.rb +31 -0
  66. data/templates/basic/_action_form.erb +77 -0
  67. data/templates/basic/_errors_table.erb +32 -0
  68. data/templates/basic/_structure_attributes_list.erb +55 -0
  69. data/templates/basic/action.erb +168 -0
  70. data/templates/basic/assets/lock.svg +3 -0
  71. data/templates/basic/assets/reset.css +101 -0
  72. data/templates/basic/assets/style.css +348 -0
  73. data/templates/basic/assets/tool.svg +4 -0
  74. data/templates/basic/assets/try.js +151 -0
  75. data/templates/basic/authenticator.erb +51 -0
  76. data/templates/basic/controller.erb +20 -0
  77. data/templates/basic/index.erb +114 -0
  78. data/templates/basic/layout.erb +46 -0
  79. data/templates/basic/structure.erb +23 -0
  80. data/test/test_helper.rb +81 -0
  81. data/test/tests/action_access_test.rb +63 -0
  82. data/test/tests/actions_test.rb +524 -0
  83. data/test/tests/authenticators_test.rb +87 -0
  84. data/test/tests/base_test.rb +35 -0
  85. data/test/tests/controllers_test.rb +49 -0
  86. data/test/tests/eval_environment_test.rb +136 -0
  87. data/test/tests/evel_helpers_test.rb +60 -0
  88. data/test/tests/examples_test.rb +11 -0
  89. data/test/tests/helpers_test.rb +97 -0
  90. data/test/tests/param_set_test.rb +44 -0
  91. data/test/tests/rack_middleware_test.rb +109 -0
  92. data/test/tests/request_test.rb +232 -0
  93. data/test/tests/structures_param_extensions_test.rb +159 -0
  94. data/test/tests/structures_test.rb +335 -0
  95. metadata +82 -48
@@ -0,0 +1,341 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>Create a new user - Users API - API Documentation</title>
5
+ <link href='https://fonts.googleapis.com/css?family=Lato:400,700,900' rel='stylesheet' type='text/css'>
6
+ <link href='https://fonts.googleapis.com/css?family=Droid+Sans+Mono' rel='stylesheet' type='text/css'>
7
+ <link rel="stylesheet" href="../../assets/reset.css">
8
+ <link rel="stylesheet" href="../../assets/style.css">
9
+ </head>
10
+ <body>
11
+ <section class='sidebarBackground'></section>
12
+ <section class="sidebar">
13
+ <nav>
14
+ <ul>
15
+ <li>
16
+ <a href='../../index.html' class="">
17
+ Home
18
+ </a>
19
+ </li>
20
+
21
+ <li>
22
+ <a href='../../authenticators/default.html' class="">
23
+ Authentication
24
+ </a>
25
+ </li>
26
+
27
+
28
+ <li>
29
+ <a href='../../controllers/meta.html' class="">
30
+ Meta API
31
+ </a>
32
+ </li>
33
+
34
+ <li>
35
+ <a href='../../controllers/users.html' class="active">
36
+ Users API
37
+ </a>
38
+ </li>
39
+
40
+ </ul>
41
+ </nav>
42
+ </section>
43
+ <section class='content'>
44
+
45
+
46
+
47
+ <h1>Create a new user</h1>
48
+
49
+ <p class='text'> This action will create a new user with the properties which have been provided.
50
+ </p>
51
+
52
+
53
+ <p class='tryFormActivate'><a class='tryFormActivate__button' href='#'>Try this request in your browser</a></p>
54
+ <form class='tryForm'>
55
+ <input type='hidden' name='controller' value='users'>
56
+ <input type='hidden' name='action' value='create'>
57
+ <div class='tryForm__header'>
58
+ <input type='text' id='host' name='host' value=''>
59
+ /api/
60
+ <input type='text' id='version' name='version' value='v1' class='v'>
61
+ /users/create
62
+ </div>
63
+
64
+
65
+ <p class='tryForm__heading'>Headers</p>
66
+ <table class='tryForm__table'>
67
+
68
+ <tr>
69
+ <td width="50%"><code>X-Auth-Application</code></td>
70
+ <td width="50%"><input type='text' class='tryForm__tableField headerField' name='X-Auth-Application'></td>
71
+ </tr>
72
+
73
+ <tr>
74
+ <td width="50%"><code>X-Auth-Token</code></td>
75
+ <td width="50%"><input type='text' class='tryForm__tableField headerField' name='X-Auth-Token'></td>
76
+ </tr>
77
+
78
+ </table>
79
+
80
+
81
+
82
+ <p class='tryForm__heading'>Parameters</p>
83
+ <table class='tryForm__table'>
84
+
85
+ <tr>
86
+ <td width="30%"><code>username</code></td>
87
+ <td width="20%">String</td>
88
+ <td width="50%"><input type='text' class='tryForm__tableField paramField' name='username' placeholder='' data-type='String'></td>
89
+ </tr>
90
+
91
+ <tr>
92
+ <td width="30%"><code>first_name</code></td>
93
+ <td width="20%">String</td>
94
+ <td width="50%"><input type='text' class='tryForm__tableField paramField' name='first_name' placeholder='' data-type='String'></td>
95
+ </tr>
96
+
97
+ <tr>
98
+ <td width="30%"><code>last_name</code></td>
99
+ <td width="20%">String</td>
100
+ <td width="50%"><input type='text' class='tryForm__tableField paramField' name='last_name' placeholder='' data-type='String'></td>
101
+ </tr>
102
+
103
+ <tr>
104
+ <td width="30%"><code>email_address</code></td>
105
+ <td width="20%">String</td>
106
+ <td width="50%"><input type='text' class='tryForm__tableField paramField' name='email_address' placeholder='' data-type='String'></td>
107
+ </tr>
108
+
109
+ <tr>
110
+ <td width="30%"><code>password</code></td>
111
+ <td width="20%">String</td>
112
+ <td width="50%"><input type='text' class='tryForm__tableField paramField' name='password' placeholder='' data-type='String'></td>
113
+ </tr>
114
+
115
+ <tr>
116
+ <td width="30%"><code>admin</code></td>
117
+ <td width="20%">Boolean</td>
118
+ <td width="50%"><input type='text' class='tryForm__tableField paramField' name='admin' placeholder='' data-type='boolean'></td>
119
+ </tr>
120
+
121
+ </table>
122
+
123
+
124
+
125
+
126
+ <p class='tryForm__button'>
127
+ <button class='tryForm__buttonLink' type='submit'>Make this request</button>
128
+ <button class='tryForm__buttonLink tryFormCancel' type='button'>Cancel</button>
129
+ </p>
130
+
131
+ <pre class='tryForm__output'>The request output will be shown here...</pre>
132
+ </form>
133
+
134
+
135
+
136
+
137
+ <h2>URL</h2>
138
+ <p class='apiURLFull'><span>/api/v1/</span>users/create</p>
139
+
140
+
141
+
142
+
143
+ <h2>Access</h2>
144
+ <p class='text'>
145
+ Must be authenticated with a valid user API token.
146
+
147
+ If not authorised, a <code>NotAuthenticated</code> error will be returned.
148
+
149
+ </p>
150
+
151
+
152
+
153
+
154
+ <h2>Parameters</h2>
155
+
156
+ <table class='table paramTable'>
157
+ <thead>
158
+ <tr>
159
+ <th width="60%">Parameter</th>
160
+ <th width="20%">Type</th>
161
+ <th width="20%">Default</th>
162
+ </tr>
163
+ </thead>
164
+
165
+ <tr>
166
+ <td>
167
+ <p>
168
+ <span class='paramTable__name'>username</span>
169
+
170
+ </p>
171
+
172
+ <p class='paramTable__description'>The user's username</p>
173
+
174
+ </td>
175
+ <td>String</td>
176
+ <td>
177
+
178
+ <span class='paramTable__nil'>null</span>
179
+
180
+ </td>
181
+ </tr>
182
+
183
+ <tr>
184
+ <td>
185
+ <p>
186
+ <span class='paramTable__name'>first_name</span>
187
+
188
+ </p>
189
+
190
+ <p class='paramTable__description'>The user's first name</p>
191
+
192
+ </td>
193
+ <td>String</td>
194
+ <td>
195
+
196
+ <span class='paramTable__nil'>null</span>
197
+
198
+ </td>
199
+ </tr>
200
+
201
+ <tr>
202
+ <td>
203
+ <p>
204
+ <span class='paramTable__name'>last_name</span>
205
+
206
+ </p>
207
+
208
+ <p class='paramTable__description'>The user's last name</p>
209
+
210
+ </td>
211
+ <td>String</td>
212
+ <td>
213
+
214
+ <span class='paramTable__nil'>null</span>
215
+
216
+ </td>
217
+ </tr>
218
+
219
+ <tr>
220
+ <td>
221
+ <p>
222
+ <span class='paramTable__name'>email_address</span>
223
+
224
+ </p>
225
+
226
+ <p class='paramTable__description'>The user's e-mail address</p>
227
+
228
+ </td>
229
+ <td>String</td>
230
+ <td>
231
+
232
+ <span class='paramTable__nil'>null</span>
233
+
234
+ </td>
235
+ </tr>
236
+
237
+ <tr>
238
+ <td>
239
+ <p>
240
+ <span class='paramTable__name'>password</span>
241
+
242
+ </p>
243
+
244
+ <p class='paramTable__description'>The user's password</p>
245
+
246
+ </td>
247
+ <td>String</td>
248
+ <td>
249
+
250
+ <span class='paramTable__nil'>null</span>
251
+
252
+ </td>
253
+ </tr>
254
+
255
+ <tr>
256
+ <td>
257
+ <p>
258
+ <span class='paramTable__name'>admin</span>
259
+
260
+ </p>
261
+
262
+ <p class='paramTable__description'>Should this user be an admin?</p>
263
+
264
+ </td>
265
+ <td>Boolean</td>
266
+ <td>
267
+
268
+ <span class='paramTable__nil'>null</span>
269
+
270
+ </td>
271
+ </tr>
272
+
273
+ </table>
274
+
275
+
276
+
277
+
278
+ <h2>Errors</h2>
279
+
280
+
281
+ <table class='table errorsTable'>
282
+ <thead>
283
+ <tr>
284
+ <th width="60%">Error</th>
285
+ <th width="40%">Attributes</th>
286
+ </tr>
287
+ </thead>
288
+
289
+ <tr>
290
+ <td>
291
+ <p>
292
+ <span class='paramTable__name'>ValidationError</span>
293
+
294
+ <p class='paramTable__description'>The details provided were not sufficient to save the user</p>
295
+
296
+ </p>
297
+ </td>
298
+ <td>
299
+
300
+ <ul class='errorAttributeList'>
301
+
302
+ <li>
303
+ <p class='errorAttributeList__name'>errors</p>
304
+ <p class='errorAttributeList__desc'>An array of errors for each field</p>
305
+ </li>
306
+
307
+ </ul>
308
+
309
+ </td>
310
+ </tr>
311
+
312
+ </table>
313
+
314
+
315
+
316
+
317
+ <h2>Response Data</h2>
318
+
319
+
320
+ <p class='text'>This action will return a <a class='link' href='../../structures/user.html'>user structure</a>.</p>
321
+
322
+
323
+
324
+
325
+
326
+ You'll receive all attributes for this structure (basic and extended attributes).
327
+
328
+
329
+
330
+
331
+
332
+
333
+
334
+ </section>
335
+ <footer class='footer'>
336
+ <p>Generated by Moonrope at 12:43 on Monday 22 February 2016 for d3c499</p>
337
+ </footer>
338
+ <script src='https://code.jquery.com/jquery-1.12.0.min.js'></script>
339
+ <script src='../../assets/try.js'></script>
340
+ </body>
341
+ </html>
@@ -0,0 +1,348 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>List all users - Users API - API Documentation</title>
5
+ <link href='https://fonts.googleapis.com/css?family=Lato:400,700,900' rel='stylesheet' type='text/css'>
6
+ <link href='https://fonts.googleapis.com/css?family=Droid+Sans+Mono' rel='stylesheet' type='text/css'>
7
+ <link rel="stylesheet" href="../../assets/reset.css">
8
+ <link rel="stylesheet" href="../../assets/style.css">
9
+ </head>
10
+ <body>
11
+ <section class='sidebarBackground'></section>
12
+ <section class="sidebar">
13
+ <nav>
14
+ <ul>
15
+ <li>
16
+ <a href='../../index.html' class="">
17
+ Home
18
+ </a>
19
+ </li>
20
+
21
+ <li>
22
+ <a href='../../authenticators/default.html' class="">
23
+ Authentication
24
+ </a>
25
+ </li>
26
+
27
+
28
+ <li>
29
+ <a href='../../controllers/meta.html' class="">
30
+ Meta API
31
+ </a>
32
+ </li>
33
+
34
+ <li>
35
+ <a href='../../controllers/users.html' class="active">
36
+ Users API
37
+ </a>
38
+ </li>
39
+
40
+ </ul>
41
+ </nav>
42
+ </section>
43
+ <section class='content'>
44
+
45
+
46
+
47
+ <h1>List all users</h1>
48
+
49
+ <p class='text'>This action will return a list of all users which the authenticated user has access to.</p>
50
+
51
+
52
+ <p class='tryFormActivate'><a class='tryFormActivate__button' href='#'>Try this request in your browser</a></p>
53
+ <form class='tryForm'>
54
+ <input type='hidden' name='controller' value='users'>
55
+ <input type='hidden' name='action' value='list'>
56
+ <div class='tryForm__header'>
57
+ <input type='text' id='host' name='host' value=''>
58
+ /api/
59
+ <input type='text' id='version' name='version' value='v1' class='v'>
60
+ /users/list
61
+ </div>
62
+
63
+
64
+ <p class='tryForm__heading'>Headers</p>
65
+ <table class='tryForm__table'>
66
+
67
+ <tr>
68
+ <td width="50%"><code>X-Auth-Application</code></td>
69
+ <td width="50%"><input type='text' class='tryForm__tableField headerField' name='X-Auth-Application'></td>
70
+ </tr>
71
+
72
+ <tr>
73
+ <td width="50%"><code>X-Auth-Token</code></td>
74
+ <td width="50%"><input type='text' class='tryForm__tableField headerField' name='X-Auth-Token'></td>
75
+ </tr>
76
+
77
+ </table>
78
+
79
+
80
+
81
+ <p class='tryForm__heading'>Parameters</p>
82
+ <table class='tryForm__table'>
83
+
84
+ <tr>
85
+ <td width="30%"><code>page</code></td>
86
+ <td width="20%">Integer</td>
87
+ <td width="50%"><input type='text' class='tryForm__tableField paramField' name='page' placeholder='1' data-type='Integer'></td>
88
+ </tr>
89
+
90
+ <tr>
91
+ <td width="30%"><code>per_page</code></td>
92
+ <td width="20%">Integer</td>
93
+ <td width="50%"><input type='text' class='tryForm__tableField paramField' name='per_page' placeholder='30' data-type='Integer'></td>
94
+ </tr>
95
+
96
+ <tr>
97
+ <td width="30%"><code>sort_by</code></td>
98
+ <td width="20%">String</td>
99
+ <td width="50%"><input type='text' class='tryForm__tableField paramField' name='sort_by' placeholder='username' data-type='String'></td>
100
+ </tr>
101
+
102
+ <tr>
103
+ <td width="30%"><code>order</code></td>
104
+ <td width="20%">String</td>
105
+ <td width="50%"><input type='text' class='tryForm__tableField paramField' name='order' placeholder='asc' data-type='String'></td>
106
+ </tr>
107
+
108
+ <tr>
109
+ <td width="30%"><code>filters</code></td>
110
+ <td width="20%">Hash</td>
111
+ <td width="50%"><input type='text' class='tryForm__tableField paramField' name='filters' placeholder='{}' data-type='Hash'></td>
112
+ </tr>
113
+
114
+ </table>
115
+
116
+
117
+
118
+
119
+ <p class='tryForm__button'>
120
+ <button class='tryForm__buttonLink' type='submit'>Make this request</button>
121
+ <button class='tryForm__buttonLink tryFormCancel' type='button'>Cancel</button>
122
+ </p>
123
+
124
+ <pre class='tryForm__output'>The request output will be shown here...</pre>
125
+ </form>
126
+
127
+
128
+
129
+
130
+ <h2>URL</h2>
131
+ <p class='apiURLFull'><span>/api/v1/</span>users/list</p>
132
+
133
+
134
+
135
+
136
+ <h2>Access</h2>
137
+ <p class='text'>
138
+ Must be authenticated with a valid user API token.
139
+
140
+ If not authorised, a <code>NotAuthenticated</code> error will be returned.
141
+
142
+ </p>
143
+
144
+
145
+
146
+
147
+ <h2>Parameters</h2>
148
+
149
+ <table class='table paramTable'>
150
+ <thead>
151
+ <tr>
152
+ <th width="60%">Parameter</th>
153
+ <th width="20%">Type</th>
154
+ <th width="20%">Default</th>
155
+ </tr>
156
+ </thead>
157
+
158
+ <tr>
159
+ <td>
160
+ <p>
161
+ <span class='paramTable__name'>page</span>
162
+
163
+ </p>
164
+
165
+ <p class='paramTable__description'>The page number</p>
166
+
167
+ </td>
168
+ <td>Integer</td>
169
+ <td>
170
+
171
+ 1
172
+
173
+ </td>
174
+ </tr>
175
+
176
+ <tr>
177
+ <td>
178
+ <p>
179
+ <span class='paramTable__name'>per_page</span>
180
+
181
+ </p>
182
+
183
+ <p class='paramTable__description'>The number of items to return per page</p>
184
+
185
+ </td>
186
+ <td>Integer</td>
187
+ <td>
188
+
189
+ 30
190
+
191
+ </td>
192
+ </tr>
193
+
194
+ <tr>
195
+ <td>
196
+ <p>
197
+ <span class='paramTable__name'>sort_by</span>
198
+
199
+ </p>
200
+
201
+ <p class='paramTable__description'>The field to sort by</p>
202
+
203
+ </td>
204
+ <td>String</td>
205
+ <td>
206
+
207
+ username
208
+
209
+ </td>
210
+ </tr>
211
+
212
+ <tr>
213
+ <td>
214
+ <p>
215
+ <span class='paramTable__name'>order</span>
216
+
217
+ </p>
218
+
219
+ <p class='paramTable__description'>The direction to order units by</p>
220
+
221
+ </td>
222
+ <td>String</td>
223
+ <td>
224
+
225
+ asc
226
+
227
+ </td>
228
+ </tr>
229
+
230
+ <tr>
231
+ <td>
232
+ <p>
233
+ <span class='paramTable__name'>filters</span>
234
+
235
+ </p>
236
+
237
+ <p class='paramTable__description'>A hash of filters to apply to results</p>
238
+
239
+ </td>
240
+ <td>Hash</td>
241
+ <td>
242
+
243
+ {}
244
+
245
+ </td>
246
+ </tr>
247
+
248
+ </table>
249
+
250
+
251
+
252
+ <h2>Filtering</h2>
253
+ <p class='text'>
254
+ This action supports filtering. You can filter the results which you receive by
255
+ providing filters in the <code>filters</code> parameter. The following attributes
256
+ are supported for filtering.
257
+ </p>
258
+ <table class='table paramTable'>
259
+ <thead>
260
+ <tr>
261
+ <th width="40%">Attribute</th>
262
+ <th width="60%">Supported Operators</th>
263
+ </tr>
264
+ </thead>
265
+
266
+ <tr>
267
+ <td><span class='paramTable__name'>username</span></td>
268
+ <td>eq, not_eq, starts_with, ends_with, in, not_in</td>
269
+ </tr>
270
+
271
+ <tr>
272
+ <td><span class='paramTable__name'>age</span></td>
273
+ <td>eq, not_eq, gt, gte, lt, lte, in, not_in</td>
274
+ </tr>
275
+
276
+ <tr>
277
+ <td><span class='paramTable__name'>admin</span></td>
278
+ <td>eq, not_eq</td>
279
+ </tr>
280
+
281
+ </table>
282
+
283
+
284
+
285
+ <h2>Errors</h2>
286
+
287
+
288
+ <table class='table errorsTable'>
289
+ <thead>
290
+ <tr>
291
+ <th width="60%">Error</th>
292
+ <th width="40%">Attributes</th>
293
+ </tr>
294
+ </thead>
295
+
296
+ <tr>
297
+ <td>
298
+ <p>
299
+ <span class='paramTable__name'>FilterError</span>
300
+
301
+ <p class='paramTable__description'>An error has occurred while processing filters for this action</p>
302
+
303
+ </p>
304
+ </td>
305
+ <td>
306
+
307
+ <ul class='errorAttributeList'>
308
+
309
+ <li>
310
+ <p class='errorAttributeList__name'>issue_code</p>
311
+ <p class='errorAttributeList__desc'>A more specific issue code</p>
312
+ </li>
313
+
314
+ <li>
315
+ <p class='errorAttributeList__name'>issue_message</p>
316
+ <p class='errorAttributeList__desc'>A more specific message about the issue</p>
317
+ </li>
318
+
319
+ </ul>
320
+
321
+ </td>
322
+ </tr>
323
+
324
+ </table>
325
+
326
+
327
+
328
+
329
+ <h2>Response Data</h2>
330
+
331
+
332
+ <p class='text'>This action will return an array of <a class='link' href='../../structures/user.html'>user structures</a>.</p>
333
+
334
+
335
+
336
+ You'll receive just the basic attributes for this structure. No expansions are provided.
337
+
338
+
339
+
340
+
341
+ </section>
342
+ <footer class='footer'>
343
+ <p>Generated by Moonrope at 12:43 on Monday 22 February 2016 for d3c499</p>
344
+ </footer>
345
+ <script src='https://code.jquery.com/jquery-1.12.0.min.js'></script>
346
+ <script src='../../assets/try.js'></script>
347
+ </body>
348
+ </html>