diff --git a/spec/README.md b/spec/README.md
index 6fc69ec..783aeaa 100644
--- a/spec/README.md
+++ b/spec/README.md
@@ -98,7 +98,8 @@ TODO: Intro to Architecture
### Core Concepts
-In this section we are going to define several concepts that will be used frequently throughout the spec.
+In this section we are going to define several concepts that will be used
+frequently throughout the spec.
#### `entrypoint`
@@ -126,15 +127,18 @@ whole lifetime of the server.
## Design Principles
+* Kapow! implementations should follow a general principle of robustness: be
+ conservative in what you do, be liberal in what you accept from others.
* We reuse conventions of well-established software projects, such as Docker.
* All requests and responses will leverage JSON as the data encoding method.
-* The API calls responses will have two distinct parts:
+* The API calls responses have several parts:
* The HTTP status code (e.g., `400`, which is a bad request). The target
audience of this information is the client code. The client can thus use
this information to control the program flow.
* The HTTP reason phrase. The target audience in this case is the human
operating the client. The human can use this information to make a
decision on how to proceed.
+ * The body is optional
* All successful API calls will return a representation of the *final* state
attained by the objects which have been addressed (either requested, set or
deleted).
@@ -176,7 +180,8 @@ respond to an external event (e.g. an incoming HTTP request).
#### List routes
-Returns JSON data about the current routes.
+Returns JSON with all the data about the current routes. Be aware that the command
+field must be a json scaped string.
* **URL**: `/routes`
* **Method**: `GET`
@@ -204,12 +209,14 @@ Returns JSON data about the current routes.
]
```
* **Sample Call**: `$ curl $KAPOW_URL/routes`
-* **Notes**: Currently all routes are returned; in the future, a filter may be accepted.
+* **Notes**: Currently all routes are returned; in the future, a filter may be
+ accepted.
#### Append route
-Accepts JSON data that defines a new route to be appended to the current routes. A new id is created for the appended route so it can be referenced later.
+Accepts JSON data that defines a new route to be appended to the current routes.
+A new id is created for the appended route so it can be referenced later.
* **URL**: `/routes`
* **Method**: `POST`
@@ -239,19 +246,7 @@ Accepts JSON data that defines a new route to be appended to the current routes.
```
* **Error Responses**:
* **Code**: `400 Malformed JSON`
- * **Code**: `422 Invalid Data Type`
- * **Code**: `422 Invalid Route Spec`
- * **Code**: `422 Missing Mandatory Field`
- **Header**: `Content-Type: application/json`
- **Content**:
- ```json
- {
- "missing_mandatory_fields": [
- "url_pattern",
- "command"
- ]
- }
- ```
+ * **Code**: `422 Invalid Route`
* **Sample Call**:
```sh
$ curl -X POST --data-binary @- $KAPOW_URL/routes <
- **Content**:
- ```json
- {
- "missing_mandatory_fields": [
- "url_pattern",
- "command"
- ]
- }
- ```
- * **Code**: `422 Invalid Index Type`
+ * **Code**: `422 Invalid Route`
* **Sample Call**:
```sh
$ curl -X PUT --data-binary @- $KAPOW_URL/routes <
**Header**: `Content-Type: application/octet-stream`
@@ -517,22 +507,18 @@ Returns the value of the requested resource path, or an error if the resource pa
* **URL**: `/handlers/{:handler_id}{:resource_path}`
* **Method**: `PUT`
-* **URL Params**: FIXME: We think that here should be options to cook the value in some way, or pass it raw.
+* **URL Params**: FIXME: We think that here should be options to cook the value
+ in some way, or pass it raw.
* **Data Params**: Binary payload.
* **Success Responses**:
* **Code**: `200 OK`
* **Error Responses**:
- * **Code**: `400 Invalid Payload`
- * **Code**: `400 Invalid Resource Path`
- **Notes**: Check the list of valid resource paths at the top of this section.
- * **Code**: `404 Handler Not Found`
- * **Code**: `404 Name Not Found`
- **Notes**: Although the resource path is correct, no such name is present in the request. For instance, `/request/headers/Foo`, when no `Foo` header is not present in the request.
+ * **Code**: `400 Invalid Resource`
+ * **Code**: `404 Not Found`
* **Sample Call**:
```sh
$ curl -X --data-binary '