Skip to content

Commit fba98f0

Browse files
committed
Merge pull request #76 from ms-ati/patch-2
Move bullets from Requests to Responses
2 parents 4391418 + 53c5425 commit fba98f0

File tree

1 file changed

+67
-67
lines changed

1 file changed

+67
-67
lines changed

README.md

Lines changed: 67 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -29,14 +29,14 @@ We welcome [contributions](CONTRIBUTING.md) to this guide.
2929
* [Provide Request-Ids for Introspection](#provide-request-ids-for-introspection)
3030
* [Divide Large Responses Across Requests with Ranges](#divide-large-responses-across-requests-with-ranges)
3131
* [Requests](#requests)
32-
* [Return appropriate status codes](#return-appropriate-status-codes)
33-
* [Provide full resources where available](#provide-full-resources-where-available)
3432
* [Accept serialized JSON in request bodies](#accept-serialized-json-in-request-bodies)
3533
* [Use consistent path formats](#use-consistent-path-formats)
3634
* [Downcase paths and attributes](#downcase-paths-and-attributes)
3735
* [Support non-id dereferencing for convenience](#support-non-id-dereferencing-for-convenience)
3836
* [Minimize path nesting](#minimize-path-nesting)
3937
* [Responses](#responses)
38+
* [Return appropriate status codes](#return-appropriate-status-codes)
39+
* [Provide full resources where available](#provide-full-resources-where-available)
4040
* [Provide resource (UU)IDs](#provide-resource-uuids)
4141
* [Provide standard timestamps](#provide-standard-timestamps)
4242
* [Use UTC times formatted in ISO8601](#use-utc-times-formatted-in-iso8601)
@@ -120,71 +120,6 @@ ordering, and iteration.
120120

121121
### Requests
122122

123-
#### Return appropriate status codes
124-
125-
Return appropriate HTTP status codes with each response. Successful
126-
responses should be coded according to this guide:
127-
128-
* `200`: Request succeeded for a `GET` call, for a `DELETE` or
129-
`PATCH` call that completed synchronously, or for a `PUT` call that
130-
synchronously updated an existing resource
131-
* `201`: Request succeeded for a `POST` call that completed
132-
synchronously, or for a `PUT` call that synchronously created a new
133-
resource
134-
* `202`: Request accepted for a `POST`, `PUT`, `DELETE`, or `PATCH` call that
135-
will be processed asynchronously
136-
* `206`: Request succeeded on `GET`, but only a partial response
137-
returned: see [above on ranges](#divide-large-responses-across-requests-with-ranges)
138-
139-
Pay attention to the use of authentication and authorization error codes:
140-
141-
* `401 Unauthorized`: Request failed because user is not authenticated
142-
* `403 Forbidden`: Request failed because user does not have authorization to access a specific resource
143-
144-
Return suitable codes to provide additional information when there are errors:
145-
146-
* `422 Unprocessable Entity`: Your request was understood, but contained invalid parameters
147-
* `429 Too Many Requests`: You have been rate-limited, retry later
148-
* `500 Internal Server Error`: Something went wrong on the server, check status site and/or report the issue
149-
150-
Refer to the [HTTP response code spec](https://tools.ietf.org/html/rfc7231#section-6)
151-
for guidance on status codes for user error and server error cases.
152-
153-
#### Provide full resources where available
154-
155-
Provide the full resource representation (i.e. the object with all
156-
attributes) whenever possible in the response. Always provide the full
157-
resource on 200 and 201 responses, including `PUT`/`PATCH` and `DELETE`
158-
requests, e.g.:
159-
160-
```bash
161-
$ curl -X DELETE \
162-
https://service.com/apps/1f9b/domains/0fd4
163-
164-
HTTP/1.1 200 OK
165-
Content-Type: application/json;charset=utf-8
166-
...
167-
{
168-
"created_at": "2012-01-01T12:00:00Z",
169-
"hostname": "subdomain.example.com",
170-
"id": "01234567-89ab-cdef-0123-456789abcdef",
171-
"updated_at": "2012-01-01T12:00:00Z"
172-
}
173-
```
174-
175-
202 responses will not include the full resource representation,
176-
e.g.:
177-
178-
```bash
179-
$ curl -X DELETE \
180-
https://service.com/apps/1f9b/dynos/05bd
181-
182-
HTTP/1.1 202 Accepted
183-
Content-Type: application/json;charset=utf-8
184-
...
185-
{}
186-
```
187-
188123
#### Accept serialized JSON in request bodies
189124

190125
Accept serialized JSON on `PUT`/`PATCH`/`POST` request bodies, either
@@ -284,6 +219,71 @@ case above where a dyno belongs to an app belongs to an org:
284219

285220
### Responses
286221

222+
#### Return appropriate status codes
223+
224+
Return appropriate HTTP status codes with each response. Successful
225+
responses should be coded according to this guide:
226+
227+
* `200`: Request succeeded for a `GET` call, for a `DELETE` or
228+
`PATCH` call that completed synchronously, or for a `PUT` call that
229+
synchronously updated an existing resource
230+
* `201`: Request succeeded for a `POST` call that completed
231+
synchronously, or for a `PUT` call that synchronously created a new
232+
resource
233+
* `202`: Request accepted for a `POST`, `PUT`, `DELETE`, or `PATCH` call that
234+
will be processed asynchronously
235+
* `206`: Request succeeded on `GET`, but only a partial response
236+
returned: see [above on ranges](#divide-large-responses-across-requests-with-ranges)
237+
238+
Pay attention to the use of authentication and authorization error codes:
239+
240+
* `401 Unauthorized`: Request failed because user is not authenticated
241+
* `403 Forbidden`: Request failed because user does not have authorization to access a specific resource
242+
243+
Return suitable codes to provide additional information when there are errors:
244+
245+
* `422 Unprocessable Entity`: Your request was understood, but contained invalid parameters
246+
* `429 Too Many Requests`: You have been rate-limited, retry later
247+
* `500 Internal Server Error`: Something went wrong on the server, check status site and/or report the issue
248+
249+
Refer to the [HTTP response code spec](https://tools.ietf.org/html/rfc7231#section-6)
250+
for guidance on status codes for user error and server error cases.
251+
252+
#### Provide full resources where available
253+
254+
Provide the full resource representation (i.e. the object with all
255+
attributes) whenever possible in the response. Always provide the full
256+
resource on 200 and 201 responses, including `PUT`/`PATCH` and `DELETE`
257+
requests, e.g.:
258+
259+
```bash
260+
$ curl -X DELETE \
261+
https://service.com/apps/1f9b/domains/0fd4
262+
263+
HTTP/1.1 200 OK
264+
Content-Type: application/json;charset=utf-8
265+
...
266+
{
267+
"created_at": "2012-01-01T12:00:00Z",
268+
"hostname": "subdomain.example.com",
269+
"id": "01234567-89ab-cdef-0123-456789abcdef",
270+
"updated_at": "2012-01-01T12:00:00Z"
271+
}
272+
```
273+
274+
202 responses will not include the full resource representation,
275+
e.g.:
276+
277+
```bash
278+
$ curl -X DELETE \
279+
https://service.com/apps/1f9b/dynos/05bd
280+
281+
HTTP/1.1 202 Accepted
282+
Content-Type: application/json;charset=utf-8
283+
...
284+
{}
285+
```
286+
287287
#### Provide resource (UU)IDs
288288

289289
Give each resource an `id` attribute by default. Use UUIDs unless you

0 commit comments

Comments
 (0)