{"action":"created","comment":{"url":"https://api.github.com/repos/apiaryio/api-blueprint/pulls/comments/25941307","id":25941307,"diff_hunk":"@@ -11,477 +10,251 @@ Gist is a paste. A snippet of text. Not unrelated to [GitHub Gists][].  To set s\n > + [API Blueprint Map][map]\n > + [Tools for API Blueprint][Tooling Section]\n \n-## Gist Fox API\n-Without any further ado our *Gist Fox API* blueprint starts like this:\n+## API Blueprint\n \n-    FORMAT: 1A\n+The first step for creating a blueprint is to specify the API Name and metadata. This step looks as follows:\n \n-    # Gist Fox API\n-    Gist Fox API is a **pastes service** similar to [GitHub's Gist](http://gist.github.com).\n+```markdown\n+FORMAT: 1A\n \n-What have we just done? Let's break it line by line:\n+# Polls\n \n-#### Metadata\n+Polls is a simple API allowing consumers to view polls and vote in them.\n+```\n \n-    FORMAT: 1A\n+## Metadata\n \n-Depending on the tools you will be using with your blueprint you might want to start your blueprint file with a metadata explicitly stating the API Blueprint version you want to use like in this case the version 1A.\n+The blueprint starts wih a metadata section. In this case we have specified that `FORMAT` has the value of `1A`. The format keyword denotes the version of the API Blueprint.\n \n-> **Note:** Should you need a clarification of some terms as used through this document refer to [API Blueprint Glossary of Terms][].\n+## API Name & Description\n \n-#### API Name\n+The first heading in the blueprint serves as the name of your API, which in this case is \"Polls\". Headings start with one or more `#` symbols followed by a title. The API Name here uses one hash to distinguish it as the first level. The number of `#` you use will determine the level of the heading.\n \n-    # Gist Fox API\n+Following the heading is a description of the API. You may use further headings to break up the description section.\n \n-Every good API should have a name. So does ours – *\"Gist Fox API\"*. The first Markdown header in our document represents just that – the API name.\n+## Resource Groups\n \n-#### API Description\n+Now it's time to start documenting the API resources. Using the `Group` keyword at the start of a heading, we've created a group of related resources.\n \n-    Gist Fox API is a **pastes service** similar to [GitHub's Gist][http://gist.github.com].\n+```markdown\n+# Group Questions\n \n-The API Name might be followed by any arbitrary Markdown-formatted discussion. Preferably about your API.\n+Resource related to questions in the API.\n+```\n \n-> **Note:** We will add much richer and more helpful discussion in the final version of this blueprint. Adding details about authentication, used media types and error handling to API description is always a great idea!\n->\n-> **Note:** For the sake of simplicity we will now omit user management and authentication. These features will be discussed in a future instalment of the API Blueprint Tutorial.\n-\n-## Markdown\n-All you really need to write a blueprint is a text editor. A Markdown editor is even better. Anything you like. From Vi to Byword. Online editors are great too! You can even directly edit a blueprint on GitHub in the repository your service is living!\n-\n-If you are completely new to Markdown it is now the best time to learn about it. Just head over to [Markdown Tutorial][] and enjoy the ride. Just don't forget to come back we have some cool stuff too!\n+## Resource\n \n-Should you just need to refresh Markdown syntax you can always check the one and only [Gruber's Original][] documentation.\n+Within the questions resource group, we have a resource called \"Question Collection\". This resource allows you to view a list of questions. The heading specifies the URI used to access the resource inside of square brackets at the end of the heading.\n \n->  **Note:** It is not essentially required to know the Markdown syntax but it will help you a lot. The knowledge of Markdown will make some API Blueprint constructs more intuitive.\n+```markdown\n+## Question Collection [/questions]\n+```\n \n-## First Resource\n-The first resource in our API is its root. The entry point to our API is defined like so:\n+### Actions\n \n-    # Gist Fox API Root [/]\n-    Gist Fox API entry point.\n+API Blueprint allows you to specify each action you may make on a resource. An\n+action is specified with a sub-heading inside of a resource with the name of the\n+action followed by the HTTP method.\n \n-    This resource does not have any attributes. Instead it offers the initial API affordances in the form of the HTTP Link header and HAL links.\n+```markdown\n+### List All Questions [GET]\n+```\n \n-    ## Retrieve Entry Point [GET]\n+An action should include at least one response from the server which must include a status code and may contain a body.\n \n-    + Response 200 (application/hal+json)\n-        + Headers\n+This action returns a `200` status code along with a JSON body.\n \n-                Link: <http:/api.gistfox.com/>;rel=\"self\",<http:/api.gistfox.com/gists>;rel=\"gists\"\n+```markdown\n++ Response 200 (application/json)\n \n-        + Body\n-\n-                {\n-                    \"_links\": {\n-                        \"self\": { \"href\": \"/\" },\n-                        \"gists\": { \"href\": \"/gists?{since}\", \"templated\": true }\n+        [\n+            {\n+                \"question\": \"Favourite programming language?\",\n+                \"published_at\": \"2014-11-11T08:40:51.620Z\",\n+                \"url\": \"/questions/1\",\n+                \"choices\": [\n+                    {\n+                        \"choice\": \"Swift\",\n+                        \"url\": \"/questions/1/choices/1\",\n+                        \"votes\": 2048\n+                    }, {\n+                        \"choice\": \"Python\",\n+                        \"url\": \"/questions/1/choices/2\",\n+                        \"votes\": 1024\n+                    }, {\n+                        \"choice\": \"Objective-C\",\n+                        \"url\": \"/questions/1/choices/3\",\n+                        \"votes\": 512\n+                    }, {\n+                        \"choice\": \"Ruby\",\n+                        \"url\": \"/questions/1/choices/4\",\n+                        \"votes\": 256\n                     }\n-                }\n-\n-What is going on here?\n-\n-#### Resource\n-\n-    # Gist Fox API Root [/]\n-\n-In API Blueprint a resource definition starts with a Markdown header with the resource name followed by its URI enclosed in square brackets. The URI is relative to the API root. So in this case it is just `/`.\n-\n-> **NOTE:** Resource name is an [API Blueprint Identifier][] and as such it can be composed only from a combination of alphanumerical characters, underscores, dashes and a spaces.\n-\n-#### Resource Description\n-\n-    # Gist Fox API Root [/]\n-    Gist Fox API entry point.\n-\n-    This resource does not have any attributes. Instead it offers the initial API affordances in the form of the HTTP Link header and haveL links.\n-\n-As with the API Name the resource name can be followed by an arbitrary Markdown formatted description.\n-\n-#### Action\n-\n-    ## Retrieve Entry Point [GET]\n-\n-Here we have just defined an action named \"Retrieve Entry Point\" utilizing the `GET` [HTTP Request Method][]. As with a resource and API name we can add any arbitrary description here but since the action name is pretty self explanatory we will skip it for now.\n-\n-#### Response\n-\n-    + Response 200\n-\n-In API Blueprint an action **should** always include at least one response representing the HTTP response message sent back in response to a HTTP request. The response should always bear a [status code][] and possibly an additional [payload][]. Here we have defined the most common response \"200\" indicating the request has succeeded.\n-\n-#### Response Payload\n-\n-    + Response 200 (application/hal+json)\n-        + Headers\n-\n-                Link: <http:/api.gistfox.com/>;rel=\"self\",<http:/api.gistfox.com/gists>;rel=\"gists\"\n+                ]\n+            }\n+        ]\n+```\n \n-        + Body\n+> **Note:** Specifying the media type after the response status code generates a `Content-Type` HTTP header. You do not have to explicitly specify the `Content-Type` header.\n \n-                {\n-                    \"_links\": {\n-                        \"self\": { \"href\": \"/\" },\n-                        \"gists\": { \"href\": \"/gists?{since}\", \"templated\": true }\n-                    }\n-                }\n+The polls resource has a second action which allows you to create a new question. This action includes a description showing the structure you would send to the server to perform this action.\n \n-A response usually bears some payload sent to our client. Ideally it details the resource in question. In this case our response representation is of the [`application/hal+json`][] media-type. Also in addition to an HTTP response message-body this response defines an HTTP response [message-headers][] in its payload.\n+```markdown\n+### Create a New Question [POST]\n \n-> **Note:** API Blueprint is **indentation sensitive**. See the [Note on Indentation][] for details.\n->\n-> **Note:** Specifying the media type in parenthesis after the response status codes generates implicit `Content-Type` HTTP header. Therefore you do not have to explicitly specify the `Content-Type` header.\n->\n-> **Note:** If your response does not need to define any additional headers (but `Content-Type`) you can skip the `Headers` section completely and write the `Body` section like so:\n->\n->     + Response 200 (application/hal+json)\n->\n->         {\n->             \"_links\": {\n->                 \"self\": { \"href\": \"/\" },\n->                 \"gists\": { \"href\": \"/gists?{since}\", \"templated\": true }\n->             }\n->         }\n+You may create your own question using this action. It takes a JSON object containing a question and a collection of answers in the form of choices.\n \n-## Complex Resource\n-With the entry point of our API defined we can move forward. Since our API revolves around a Gist let's define its representation and an action to retrieve it:\n++ question (string) - The question\n++ choices (array[string]) - A collection of choices.\n+```\n \n-    # Group Gist\n-    Gist-related resources of *Gist Fox API*.\n+> **Note:** Lists are created by preceding list items with either a `+`, `*` or `-`.\n \n-    ## Gist [/gists/{id}]\n-    A single Gist object. The Gist resource is the central resource in the Gist Fox API. It represents one paste - a single text note.\n+This action takes a JSON payload as part of the request as follows:\n \n-    The Gist resource has the following attributes:\n+```markdown\n++ Request (application/json)\n \n-    - id\n-    - created_at\n-    - description\n-    - content\n-\n-    The states *id* and *created_at* are assigned by the Gist Fox API at the moment of creation.\n-\n-\n-    + Parameters\n-        + id (string) ... ID of the Gist in the form of a hash.\n+            {\n+                \"question\": \"Favourite programming language?\",\n+                \"choices\": [\n+                    \"Swift\",\n+                    \"Python\",\n+                    \"Objective-C\",\n+                    \"Ruby\"\n+                ]\n+            }\n+```\n \n-    + Model (application/hal+json)\n+This example returns a `201` status code, along with HTTP headers and a body.\n \n-        HAL+JSON representation of Gist Resource. In addition to representing its state in the JSON form it offers affordances in the form of the HTTP Link header and HAL links.\n+```markdown\n++ Response 201 (application/json)\n \n-        + Headers\n+    + Headers\n \n-                Link: <http:/api.gistfox.com/gists/42>;rel=\"self\", <http:/api.gistfox.com/gists/42/star>;rel=\"star\"\n+            Location: /questions/1\n \n-        + Body\n+    + Body\n \n                 {\n-                    \"_links\": {\n-                        \"self\": { \"href\": \"/gists/42\" },\n-                        \"star\": { \"href\": \"/gists/42/star\" },\n-                    },\n-                    \"id\": \"42\",\n-                    \"created_at\": \"2014-04-14T02:15:15Z\",\n-                    \"description\": \"Description of Gist\",\n-                    \"content\": \"String contents\"\n+                    \"question\": \"Favourite programming language?\",\n+                    \"published_at\": \"2014-11-11T08:40:51.620Z\",\n+                    \"url\": \"/questions/1\",\n+                    \"choices\": [\n+                        {\n+                            \"choice\": \"Swift\",\n+                            \"url\": \"/questions/1/choices/1\",\n+                            \"votes\": 0\n+                        }, {\n+                            \"choice\": \"Python\",\n+                            \"url\": \"/questions/1/choices/2\",\n+                            \"votes\": 0\n+                        }, {\n+                            \"choice\": \"Objective-C\",\n+                            \"url\": \"/questions/1/choices/3\",\n+                            \"votes\": 0\n+                        }, {\n+                            \"choice\": \"Ruby\",\n+                            \"url\": \"/questions/1/choices/4\",\n+                            \"votes\": 0\n+                        }\n+                    ]\n                 }\n+```\n \n-    ### Retrieve a Single Gist [GET]\n-    + Response 200\n-\n-        [Gist][]\n-\n-Here we have just defined a **Group** of our Gist-related resources. We have also defined a **Gist resource**, its **model representation** and **an action** that retrieves a single Gist.\n-\n-Let's break it down to what's new:\n+The next resource is “Question”, which represents a single question.\n \n-#### Groups of Resources\n+```markdown\n+## Question [/questions/{question_id}]\n+```\n \n-    # Group Gist\n-    Gist-related resources of *Gist Fox API*.\n+### URI Template\n \n-As our API will eventually provide more resources it is a good practice to group related resources together for better orientation. Here we will be grouping all Gist-related resources under a group simply called the *\"Gist\"*. Groups get recognized from a header with **Group** keyword at the beginning of its text.\n-\n-#### URI Template\n-\n-    ## Gist [/gists/{id}]\n-\n-A variable component of a Gist URI expressed in the form of [URI Template][]. In this case an id of Gist is the URI variable expressed as `{id}`.\n+The URI for the “Question” resource uses a variable component, expressed by [URI Template][]. In this case, there is an ID variable called `question_id`, represented in the URI template as `{question_id}`.\n \n <a id=\"uri-parameters\"></a>\n-#### URI Parameters\n-\n-    + Parameters\n-        + id (string) ... ID of the Gist in the form of a hash.\n-\n-The *\"id\"* variable of the URI template is a parameter to every action on this resource. Here defined of an arbitrary type *\"string\"* and followed by its Markdown-formatted discussion.\n-\n-> **Note:** You can specify various attributes of an URI parameter. But in its simple form the URI parameter syntax is just the parameter name followed by ellipsis (three dots) and a Markdown-formatted discussion. For example:\n->\n->     + Parameters\n->         + id ... description\n->\n-> Refer to API Blueprint Specification's [Resource Parameters Section][] for additional examples.\n-\n-<a name=\"resource_model\"></a>\n-#### Resource Model\n-\n-    + Model (application/hal+json)\n-\n-        HAL+JSON representation of Gist Resource. In addition to representing its state in the JSON form it offers affordances in the form of the HTTP Link header and HAL links.\n-\n-        + Headers\n-\n-                Link: <http:/api.gistfox.com/gists/42>;rel=\"self\", <http:/api.gistfox.com/gists/42/star>;rel=\"star\"\n-\n-        + Body\n-\n-                {\n-                    \"_links\": {\n-                        \"self\": { \"href\": \"/gists/42\" },\n-                        \"star\": { \"href\": \"/gists/42/star\" },\n-                    },\n-                    \"id\": \"42\",\n-                    \"created_at\": \"2014-04-14T02:15:15Z\",\n-                    \"description\": \"Description of Gist\",\n-                    \"content\": \"String contents\"\n-                }\n-\n-Resource Model is an example representation of the Gist resource. It can be referenced elsewhere at any point where a response (or request) payload is expected. A resource model has *exactly* the same structure as a response payload. In this case it also includes additional description. A Resource Model may not include a response status code.\n-\n-<a name=\"refer_model\"></a>\n-#### Referring the Resource Model\n-\n-    ### Retrieve a Single Gist [GET]\n-    + Response 200\n-\n-        [Gist][]\n-\n-With Gist Resource Model in place it is super easy to define an action that retrieves a single gist.\n-\n-> **NOTE:** The syntax for referencing a resource model is `[<resource identifier>][]`. The model must be referred as \"whole\" - you can't reuse just a model's body or headers.\n-\n-## Modifying a Resource\n-Let's add an action to our Gist Resource that will allow us to modify its state and another action that deletes a Gist Resource as whole.\n+### URI Parameters\n \n-    ### Edit a Gist [PATCH]\n-    To update a Gist send a JSON with updated value for one or more of the Gist resource attributes. All attributes values (states) from the previous version of this Gist are carried over by default if not included in the hash.\n+URI parameters should describe  the URI using a list of Parameters. For “Question” it would be as follows:\n \n-    + Request (application/json)\n+```markdown\n++ Parameters\n+    + question_id (number) ... ID of the Question in form of an integer\n+```\n \n-            {\n-                \"content\": \"Updated file contents\"\n-            }\n-\n-    + Response 200\n+The `question_id` variable of the URI template is a parameter for every action on this resource. It's defined here using an arbitrary type `number`, followed by a description for the parameter.\n \n-        [Gist][]\n+> Refer to API Blueprint Specification's [Resource Parameters Section][] for more examples.\n \n-    ### Delete a Gist [DELETE]\n-    + Response 204\n+### Actions\n \n-Here are a few new things to learn about payloads:\n+This resource has an action to retrieve the questions detail.\n \n-#### Request and its Payload\n+```markdown\n+### View a Questions Detail [GET]\n \n-    + Request (application/json)\n++ Response 200 (application/json)\n \n             {\n-                \"content\": \"Updated file contents\"\n-            }\n-\n-Our \"Edit a Gist\" action needs to receive some input data to update the state of the Gist resource with it. The data are part of an HTTP request message. This section defines such a Request and an example [payload][] of the request message.\n-\n-> **NOTE:** The Request follows exactly the same structure as a Response or Model. As with the Resource Model a Request may not include a response status code.\n-\n-#### Empty Payload\n-\n-    ### Delete a Gist [DELETE]\n-    + Response 204\n-\n-In the case of the \"Delete a Gist\" action our response bears status code \"204\" indicating the server has successfully fulfilled the request and that there is no additional content to be send in the response payload body.\n-\n-## Collection Resource\n-With single the Gist Resource in place let's define the collection of our Gist Resources:\n-\n-    ## Gists Collection [/gists{?since}]\n-    Collection of all Gists.\n-\n-    The Gist Collection resource has the following attribute:\n-\n-    - total\n-\n-    In addition it **embeds** *Gist Resources* in the Gist Fox API.\n-\n-\n-    + Model (application/hal+json)\n-\n-        HAL+JSON representation of Gist Collection Resource. The Gist resources in collections are embedded. Note the embedded Gists resource are incomplete representations of the Gist in question. Use the respective Gist link to retrieve its full representation.\n-\n-        + Headers\n-\n-                Link: <http:/api.gistfox.com/gists>;rel=\"self\"\n-\n-        + Body\n-\n-                {\n-                    \"_links\": {\n-                        \"self\": { \"href\": \"/gists\" }\n-                    },\n-                    \"_embedded\": {\n-                        \"gists\": [\n-                            {\n-                                \"_links\" : {\n-                                    \"self\": { \"href\": \"/gists/42\" }\n-                                },\n-                                \"id\": \"42\",\n-                                \"created_at\": \"2014-04-14T02:15:15Z\",\n-                                \"description\": \"Description of Gist\"\n-                            }\n-                        ]\n-                    },\n-                    \"total\": 1\n-                }\n-\n-    ### List All Gists [GET]\n-    + Parameters\n-        + since (optional, string) ... Timestamp in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ` Only Gists updated at or after this time are returned.\n-\n-    + Response 200\n-\n-        [Gists Collection][]\n-\n-    ### Create a Gist [POST]\n-    To create a new Gist simply provide a JSON hash of the *description* and *content* attributes for the new Gist.\n-\n-    + Request (application/json)\n-\n-            {\n-                \"description\": \"Description of Gist\",\n-                \"content\": \"String content\"\n+                \"question\": \"Favourite programming language?\",\n+                \"published_at\": \"2014-11-11T08:40:51.620Z\",\n+                \"url\": \"/questions/1\",\n+                \"choices\": [\n+                    {\n+                        \"choice\": \"Swift\",\n+                        \"url\": \"/questions/1/choices/1\",\n+                        \"votes\": 2048\n+                    }, {\n+                        \"choice\": \"Python\",\n+                        \"url\": \"/questions/1/choices/2\",\n+                        \"votes\": 1024\n+                    }, {\n+                        \"choice\": \"Objective-C\",\n+                        \"url\": \"/questions/1/choices/3\",\n+                        \"votes\": 512\n+                    }, {\n+                        \"choice\": \"Ruby\",\n+                        \"url\": \"/questions/1/choices/4\",\n+                        \"votes\": 256\n+                    }\n+                ]\n             }\n+```\n \n-    + Response 201 (application/hal+json)\n-\n-        [Gist][]\n-\n-At this point you should be familiar with everything in this listing except the definition and discussion of the query parameter *\"since\"*:\n+#### Response Without a Body\n \n-<a name=\"query_parameters\"></a>\n-#### Query Parameters\n+This resource has a delete action. The server will return a 204 response without a body.\n \n-    ## Gists Collection [/gists{?since}]\n-\n-As with the URI parameters the Query parameters are defined in the [URI Template][] format. The difference here is that a query parameter name is preceded by the *question mark* and it is always at the end of the URI Template.\n-\n-> **NOTE:** To define multiple query parameters simply comma-separate their names. For example `{?month,year}`.\n-\n-#### Action-specific Query Parameters\n-\n-    ### List All Gists [GET]\n-    + Parameters\n-        + since (optional, string) ... Timestamp in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ` Only Gists updated at or after this time are returned.\n-\n-Often a resource query parameter is specific to just one of the resource actions. In this case you can discuss it in the relevant action only. No matter where you discuss a query parameter it follows exactly the same syntax as with [URI Parameters][].\n-\n-## Subsequent Resource\n-The last missing piece in the expected functionality is the Star Resource and its actions. Utilizing everything we have learned so far the Star Resource and its actions are defined as follows:\n-\n-    ## Star [/gists/{id}/star]\n-    Star resource represents a Gist starred status.\n-\n-    The Star resource has the following attribute:\n-\n-    - starred\n-\n-\n-    + Parameters\n-\n-        + id (string) ... ID of the gist in the form of a hash\n-\n-    + Model (application/hal+json)\n-\n-        HAL+JSON representation of Star Resource.\n-\n-        + Headers\n-\n-                Link: <http:/api.gistfox.com/gists/42/star>;rel=\"self\"\n-\n-        + Body\n-\n-                {\n-                    \"_links\": {\n-                        \"self\": { \"href\": \"/gists/42/star\" },\n-                    },\n-                    \"starred\": true\n-                }\n-\n-    ### Star a Gist [PUT]\n-    + Response 204\n-\n-    ### Unstar a Gist [DELETE]\n-    + Response 204\n-\n-    ### Check if a Gist is Starred [GET]\n-    + Response 200\n-\n-        [Star][]\n+```","path":"Tutorial.md","position":582,"original_position":582,"commit_id":"bde74fe4a5d580456d5282d9da7429e55fdc41b9","original_commit_id":"bde74fe4a5d580456d5282d9da7429e55fdc41b9","user":{"login":"zdne","id":613617,"avatar_url":"https://avatars.githubusercontent.com/u/613617?v=3","gravatar_id":"","url":"https://api.github.com/users/zdne","html_url":"https://github.com/zdne","followers_url":"https://api.github.com/users/zdne/followers","following_url":"https://api.github.com/users/zdne/following{/other_user}","gists_url":"https://api.github.com/users/zdne/gists{/gist_id}","starred_url":"https://api.github.com/users/zdne/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zdne/subscriptions","organizations_url":"https://api.github.com/users/zdne/orgs","repos_url":"https://api.github.com/users/zdne/repos","events_url":"https://api.github.com/users/zdne/events{/privacy}","received_events_url":"https://api.github.com/users/zdne/received_events","type":"User","site_admin":false},"body":"Missing Markdown syntax highlighting ","created_at":"2015-03-06T12:22:09Z","updated_at":"2015-03-06T12:22:09Z","html_url":"https://github.com/apiaryio/api-blueprint/pull/154#discussion_r25941307","pull_request_url":"https://api.github.com/repos/apiaryio/api-blueprint/pulls/154","_links":{"self":{"href":"https://api.github.com/repos/apiaryio/api-blueprint/pulls/comments/25941307"},"html":{"href":"https://github.com/apiaryio/api-blueprint/pull/154#discussion_r25941307"},"pull_request":{"href":"https://api.github.com/repos/apiaryio/api-blueprint/pulls/154"}}},"pull_request":{"url":"https://api.github.com/repos/apiaryio/api-blueprint/pulls/154","id":29605334,"html_url":"https://github.com/apiaryio/api-blueprint/pull/154","diff_url":"https://github.com/apiaryio/api-blueprint/pull/154.diff","patch_url":"https://github.com/apiaryio/api-blueprint/pull/154.patch","issue_url":"https://api.github.com/repos/apiaryio/api-blueprint/issues/154","number":154,"state":"open","locked":false,"title":"Simpler API Blueprint Tutorial","user":{"login":"kylef","id":44164,"avatar_url":"https://avatars.githubusercontent.com/u/44164?v=3","gravatar_id":"","url":"https://api.github.com/users/kylef","html_url":"https://github.com/kylef","followers_url":"https://api.github.com/users/kylef/followers","following_url":"https://api.github.com/users/kylef/following{/other_user}","gists_url":"https://api.github.com/users/kylef/gists{/gist_id}","starred_url":"https://api.github.com/users/kylef/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kylef/subscriptions","organizations_url":"https://api.github.com/users/kylef/orgs","repos_url":"https://api.github.com/users/kylef/repos","events_url":"https://api.github.com/users/kylef/events{/privacy}","received_events_url":"https://api.github.com/users/kylef/received_events","type":"User","site_admin":false},"body":"These changes make the new tutorial shorter, and simpler while requiring less prerequisites. The tutorial has no expectations of the user knowing Markdown.\r\n\r\nWould appreciate any feedback on this one to ensure we get this right.","created_at":"2015-02-19T11:53:41Z","updated_at":"2015-03-06T12:22:09Z","closed_at":null,"merged_at":null,"merge_commit_sha":"21dc8d3996a052f030e4127c1e71c25d31e9526a","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/apiaryio/api-blueprint/pulls/154/commits","review_comments_url":"https://api.github.com/repos/apiaryio/api-blueprint/pulls/154/comments","review_comment_url":"https://api.github.com/repos/apiaryio/api-blueprint/pulls/comments{/number}","comments_url":"https://api.github.com/repos/apiaryio/api-blueprint/issues/154/comments","statuses_url":"https://api.github.com/repos/apiaryio/api-blueprint/statuses/bde74fe4a5d580456d5282d9da7429e55fdc41b9","head":{"label":"apiaryio:kylef/polls-tutorial","ref":"kylef/polls-tutorial","sha":"bde74fe4a5d580456d5282d9da7429e55fdc41b9","user":{"login":"apiaryio","id":765943,"avatar_url":"https://avatars.githubusercontent.com/u/765943?v=3","gravatar_id":"","url":"https://api.github.com/users/apiaryio","html_url":"https://github.com/apiaryio","followers_url":"https://api.github.com/users/apiaryio/followers","following_url":"https://api.github.com/users/apiaryio/following{/other_user}","gists_url":"https://api.github.com/users/apiaryio/gists{/gist_id}","starred_url":"https://api.github.com/users/apiaryio/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/apiaryio/subscriptions","organizations_url":"https://api.github.com/users/apiaryio/orgs","repos_url":"https://api.github.com/users/apiaryio/repos","events_url":"https://api.github.com/users/apiaryio/events{/privacy}","received_events_url":"https://api.github.com/users/apiaryio/received_events","type":"Organization","site_admin":false},"repo":{"id":9711133,"name":"api-blueprint","full_name":"apiaryio/api-blueprint","owner":{"login":"apiaryio","id":765943,"avatar_url":"https://avatars.githubusercontent.com/u/765943?v=3","gravatar_id":"","url":"https://api.github.com/users/apiaryio","html_url":"https://github.com/apiaryio","followers_url":"https://api.github.com/users/apiaryio/followers","following_url":"https://api.github.com/users/apiaryio/following{/other_user}","gists_url":"https://api.github.com/users/apiaryio/gists{/gist_id}","starred_url":"https://api.github.com/users/apiaryio/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/apiaryio/subscriptions","organizations_url":"https://api.github.com/users/apiaryio/orgs","repos_url":"https://api.github.com/users/apiaryio/repos","events_url":"https://api.github.com/users/apiaryio/events{/privacy}","received_events_url":"https://api.github.com/users/apiaryio/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/apiaryio/api-blueprint","description":"API Blueprint","fork":false,"url":"https://api.github.com/repos/apiaryio/api-blueprint","forks_url":"https://api.github.com/repos/apiaryio/api-blueprint/forks","keys_url":"https://api.github.com/repos/apiaryio/api-blueprint/keys{/key_id}","collaborators_url":"https://api.github.com/repos/apiaryio/api-blueprint/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/apiaryio/api-blueprint/teams","hooks_url":"https://api.github.com/repos/apiaryio/api-blueprint/hooks","issue_events_url":"https://api.github.com/repos/apiaryio/api-blueprint/issues/events{/number}","events_url":"https://api.github.com/repos/apiaryio/api-blueprint/events","assignees_url":"https://api.github.com/repos/apiaryio/api-blueprint/assignees{/user}","branches_url":"https://api.github.com/repos/apiaryio/api-blueprint/branches{/branch}","tags_url":"https://api.github.com/repos/apiaryio/api-blueprint/tags","blobs_url":"https://api.github.com/repos/apiaryio/api-blueprint/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/apiaryio/api-blueprint/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/apiaryio/api-blueprint/git/refs{/sha}","trees_url":"https://api.github.com/repos/apiaryio/api-blueprint/git/trees{/sha}","statuses_url":"https://api.github.com/repos/apiaryio/api-blueprint/statuses/{sha}","languages_url":"https://api.github.com/repos/apiaryio/api-blueprint/languages","stargazers_url":"https://api.github.com/repos/apiaryio/api-blueprint/stargazers","contributors_url":"https://api.github.com/repos/apiaryio/api-blueprint/contributors","subscribers_url":"https://api.github.com/repos/apiaryio/api-blueprint/subscribers","subscription_url":"https://api.github.com/repos/apiaryio/api-blueprint/subscription","commits_url":"https://api.github.com/repos/apiaryio/api-blueprint/commits{/sha}","git_commits_url":"https://api.github.com/repos/apiaryio/api-blueprint/git/commits{/sha}","comments_url":"https://api.github.com/repos/apiaryio/api-blueprint/comments{/number}","issue_comment_url":"https://api.github.com/repos/apiaryio/api-blueprint/issues/comments{/number}","contents_url":"https://api.github.com/repos/apiaryio/api-blueprint/contents/{+path}","compare_url":"https://api.github.com/repos/apiaryio/api-blueprint/compare/{base}...{head}","merges_url":"https://api.github.com/repos/apiaryio/api-blueprint/merges","archive_url":"https://api.github.com/repos/apiaryio/api-blueprint/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/apiaryio/api-blueprint/downloads","issues_url":"https://api.github.com/repos/apiaryio/api-blueprint/issues{/number}","pulls_url":"https://api.github.com/repos/apiaryio/api-blueprint/pulls{/number}","milestones_url":"https://api.github.com/repos/apiaryio/api-blueprint/milestones{/number}","notifications_url":"https://api.github.com/repos/apiaryio/api-blueprint/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/apiaryio/api-blueprint/labels{/name}","releases_url":"https://api.github.com/repos/apiaryio/api-blueprint/releases{/id}","created_at":"2013-04-27T07:34:33Z","updated_at":"2015-03-06T10:48:39Z","pushed_at":"2015-03-06T06:27:11Z","git_url":"git://github.com/apiaryio/api-blueprint.git","ssh_url":"git@github.com:apiaryio/api-blueprint.git","clone_url":"https://github.com/apiaryio/api-blueprint.git","svn_url":"https://github.com/apiaryio/api-blueprint","homepage":"http://apiblueprint.org","size":6449,"stargazers_count":1861,"watchers_count":1861,"language":null,"has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":555,"mirror_url":null,"open_issues_count":38,"forks":555,"open_issues":38,"watchers":1861,"default_branch":"master"}},"base":{"label":"apiaryio:master","ref":"master","sha":"28ea61a955a82b0330d6310ba7adf424fb1acd30","user":{"login":"apiaryio","id":765943,"avatar_url":"https://avatars.githubusercontent.com/u/765943?v=3","gravatar_id":"","url":"https://api.github.com/users/apiaryio","html_url":"https://github.com/apiaryio","followers_url":"https://api.github.com/users/apiaryio/followers","following_url":"https://api.github.com/users/apiaryio/following{/other_user}","gists_url":"https://api.github.com/users/apiaryio/gists{/gist_id}","starred_url":"https://api.github.com/users/apiaryio/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/apiaryio/subscriptions","organizations_url":"https://api.github.com/users/apiaryio/orgs","repos_url":"https://api.github.com/users/apiaryio/repos","events_url":"https://api.github.com/users/apiaryio/events{/privacy}","received_events_url":"https://api.github.com/users/apiaryio/received_events","type":"Organization","site_admin":false},"repo":{"id":9711133,"name":"api-blueprint","full_name":"apiaryio/api-blueprint","owner":{"login":"apiaryio","id":765943,"avatar_url":"https://avatars.githubusercontent.com/u/765943?v=3","gravatar_id":"","url":"https://api.github.com/users/apiaryio","html_url":"https://github.com/apiaryio","followers_url":"https://api.github.com/users/apiaryio/followers","following_url":"https://api.github.com/users/apiaryio/following{/other_user}","gists_url":"https://api.github.com/users/apiaryio/gists{/gist_id}","starred_url":"https://api.github.com/users/apiaryio/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/apiaryio/subscriptions","organizations_url":"https://api.github.com/users/apiaryio/orgs","repos_url":"https://api.github.com/users/apiaryio/repos","events_url":"https://api.github.com/users/apiaryio/events{/privacy}","received_events_url":"https://api.github.com/users/apiaryio/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/apiaryio/api-blueprint","description":"API Blueprint","fork":false,"url":"https://api.github.com/repos/apiaryio/api-blueprint","forks_url":"https://api.github.com/repos/apiaryio/api-blueprint/forks","keys_url":"https://api.github.com/repos/apiaryio/api-blueprint/keys{/key_id}","collaborators_url":"https://api.github.com/repos/apiaryio/api-blueprint/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/apiaryio/api-blueprint/teams","hooks_url":"https://api.github.com/repos/apiaryio/api-blueprint/hooks","issue_events_url":"https://api.github.com/repos/apiaryio/api-blueprint/issues/events{/number}","events_url":"https://api.github.com/repos/apiaryio/api-blueprint/events","assignees_url":"https://api.github.com/repos/apiaryio/api-blueprint/assignees{/user}","branches_url":"https://api.github.com/repos/apiaryio/api-blueprint/branches{/branch}","tags_url":"https://api.github.com/repos/apiaryio/api-blueprint/tags","blobs_url":"https://api.github.com/repos/apiaryio/api-blueprint/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/apiaryio/api-blueprint/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/apiaryio/api-blueprint/git/refs{/sha}","trees_url":"https://api.github.com/repos/apiaryio/api-blueprint/git/trees{/sha}","statuses_url":"https://api.github.com/repos/apiaryio/api-blueprint/statuses/{sha}","languages_url":"https://api.github.com/repos/apiaryio/api-blueprint/languages","stargazers_url":"https://api.github.com/repos/apiaryio/api-blueprint/stargazers","contributors_url":"https://api.github.com/repos/apiaryio/api-blueprint/contributors","subscribers_url":"https://api.github.com/repos/apiaryio/api-blueprint/subscribers","subscription_url":"https://api.github.com/repos/apiaryio/api-blueprint/subscription","commits_url":"https://api.github.com/repos/apiaryio/api-blueprint/commits{/sha}","git_commits_url":"https://api.github.com/repos/apiaryio/api-blueprint/git/commits{/sha}","comments_url":"https://api.github.com/repos/apiaryio/api-blueprint/comments{/number}","issue_comment_url":"https://api.github.com/repos/apiaryio/api-blueprint/issues/comments{/number}","contents_url":"https://api.github.com/repos/apiaryio/api-blueprint/contents/{+path}","compare_url":"https://api.github.com/repos/apiaryio/api-blueprint/compare/{base}...{head}","merges_url":"https://api.github.com/repos/apiaryio/api-blueprint/merges","archive_url":"https://api.github.com/repos/apiaryio/api-blueprint/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/apiaryio/api-blueprint/downloads","issues_url":"https://api.github.com/repos/apiaryio/api-blueprint/issues{/number}","pulls_url":"https://api.github.com/repos/apiaryio/api-blueprint/pulls{/number}","milestones_url":"https://api.github.com/repos/apiaryio/api-blueprint/milestones{/number}","notifications_url":"https://api.github.com/repos/apiaryio/api-blueprint/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/apiaryio/api-blueprint/labels{/name}","releases_url":"https://api.github.com/repos/apiaryio/api-blueprint/releases{/id}","created_at":"2013-04-27T07:34:33Z","updated_at":"2015-03-06T10:48:39Z","pushed_at":"2015-03-06T06:27:11Z","git_url":"git://github.com/apiaryio/api-blueprint.git","ssh_url":"git@github.com:apiaryio/api-blueprint.git","clone_url":"https://github.com/apiaryio/api-blueprint.git","svn_url":"https://github.com/apiaryio/api-blueprint","homepage":"http://apiblueprint.org","size":6449,"stargazers_count":1861,"watchers_count":1861,"language":null,"has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":555,"mirror_url":null,"open_issues_count":38,"forks":555,"open_issues":38,"watchers":1861,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/apiaryio/api-blueprint/pulls/154"},"html":{"href":"https://github.com/apiaryio/api-blueprint/pull/154"},"issue":{"href":"https://api.github.com/repos/apiaryio/api-blueprint/issues/154"},"comments":{"href":"https://api.github.com/repos/apiaryio/api-blueprint/issues/154/comments"},"review_comments":{"href":"https://api.github.com/repos/apiaryio/api-blueprint/pulls/154/comments"},"review_comment":{"href":"https://api.github.com/repos/apiaryio/api-blueprint/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/apiaryio/api-blueprint/pulls/154/commits"},"statuses":{"href":"https://api.github.com/repos/apiaryio/api-blueprint/statuses/bde74fe4a5d580456d5282d9da7429e55fdc41b9"}}}}