{"action":"created","comment":{"url":"https://api.github.com/repos/airbrake/slate/pulls/comments/26293305","id":26293305,"diff_hunk":"@@ -143,6 +143,210 @@ collectionName | `projects` | Each API has different collection name. Some APIs\n start | abcdefg | Position of the first element in the result set.\n end | abcdefg | Position of the last element in the result set.\n \n+# Error Notification v3\n+\n+## Create Notice v3\n+\n+Notifies Airbrake that a new error has occurred in your application.\n+\n+### HTTP Request\n+\n+`POST https://airbrake.io/api/v3/projects/PROJECT_ID/notices?key=PROJECT_KEY`\n+\n+```shell\n+curl -X POST -H \"Content-Type: application/json\" -d '{ ... }' \"https://airbrake.io/api/v3/projects/PROJECT_ID/notices?key=PROJECT_KEY\"\n+```\n+\n+### POST data\n+\n+The API expects JSON data.\n+\n+See [POST Data Fields](#post-data-fields-v3),\n+[POST Data Example](#post-data-example-v3) &\n+[POST Data Schema](#post-data-schema-v3).\n+\n+## POST Data Fields v3\n+\n+Field | Required | Description\n+------|----------|------------\n+notifier | true | An object describing the notifier client library\n+notifier/name | true | The name of the notifier client submitting the request, e.g. \"airbrake-js\"\n+notifier/version | true | The version number of the notifier client submitting the request, e.g. \"1.2.3\"\n+notifier/url | true | A URL at which more information can be obtained concerning the notifier client\n+errors | true | An array of objects describing the error that occurred\n+errors/{i}/type | true | The class name or type of error that occurred\n+errors/{i}/message | false | A short message describing the error that occurred\n+errors/{i}/backtrace | true | An array of objects describing each line of the error's backtrace\n+errors/{i}/backtrace/{i}/file | true | The full path of the file in this entry of the backtrace\n+errors/{i}/backtrace/{i}/line | false | The file's line number in this entry of the backtrace\n+errors/{i}/backtrace/{i}/column | false | The line's column number in this entry of the backtrace\n+errors/{i}/backtrace/{i}/function | false | When available, the function or method name in this entry of the backtrace\n+context | false | An object describing additional context for this error\n+context/environment | false | The name of the server environment in which the error occurred, e.g. \"staging\", \"production\", etc\n+context/component | false | The component or module in which the error occurred. In MVC frameworks like Rails, this should be set to the controller. Otherwise, this can be set to a route or other request category\n+context/action | false | The action in which the error occurred. If each request is routed to a controller action, this should be set here. Otherwise, this can be set to a method or other request subcategory\n+context/os | false | Details of the operating system on which the error occurred\n+context/language | false | Describe the language on which the error occurred, e.g. \"Ruby 2.1.1\"\n+context/version | false | Describe the application version, e.g. \"v1.2.3\"\n+context/url | false | The application's URL\n+context/userAgent | false | The requesting browser's full user-agent string\n+context/rootDirectory | false | The application's root directory path\n+context/userId | false | If applicable, the current user's ID\n+context/userName | false | If applicable, the current user's username\n+context/userEmail | false | If applicable, the current user's email address\n+environment | false | An object containing the current environment variables. Where the key is the variable name, e.g. `{ \"PORT\": \"443\", \"CODE_NAME\": \"gorilla\" }`\n+session | false | An object containing the current session variables. Where the key is the variable name, e.g. `{ \"basket_total\": \"1234\", \"user_id\": \"123\" }`\n+params | false | An object containing the request parameters. Where the key is the parameter name, e.g. `{ \"page\": \"3\", \"sort\": \"desc\" }`\n+\n+## POST Data Example v3\n+\n+An example of JSON POST data for the v3 notifier API.\n+\n+```json\n+{\n+  \"notifier\": {\n+    \"name\": \"notifier name\",\n+    \"version\": \"notifier version\",\n+    \"url\": \"notifier url\"\n+  },\n+  \"errors\": [\n+    {\n+      \"type\": \"error1\",\n+      \"message\": \"message1\",\n+      \"backtrace\": [\n+        {\n+          \"file\": \"backtrace file\",\n+          \"line\": 10,\n+          \"function\": \"backtrace function\"\n+        }\n+      ]\n+    },\n+    {\n+      \"type\": \"error2\",\n+      \"message\": \"message2\",\n+      \"backtrace\": [\n+        {\n+          \"file\": \"backtrace file\",\n+          \"line\": 10,\n+          \"function\": \"backtrace function\"\n+        }\n+      ]\n+    }\n+  ],\n+  \"context\": {\n+    \"os\": \"Linux 3.5.0-21-generic #32-Ubuntu SMP Tue Dec 11 18:51:59 UTC 2012 x86_64\",\n+    \"language\": \"Ruby 2.1.1\",\n+    \"environment\": \"production\",\n+ \n+    \"version\": \"1.1.1\",\n+    \"url:\": \"http://some-site.com/example\",\n+    \"rootDirectory\": \"/home/app-root-directory\",\n+ \n+    \"userId\": \"12345\",\n+    \"userName\": \"root\",\n+    \"userEmail\": \"root@root.com\"\n+  },\n+  \"environment\": {\n+    \"PORT\": \"443\",\n+    \"CODE_NAME\": \"gorilla\"\n+  },\n+  \"session\": {\n+    \"basketId\": \"123\",\n+    \"userId\": \"456\"\n+  },\n+  \"params\": {\n+    \"page\": \"3\",\n+    \"sort\": \"name\",\n+    \"direction\": \"asc\"\n+  }\n+}\n+```\n+\n+## POST Data Schema v3\n+\n+The JSON POST data schema for the v3 notifier API.\n+\n+```json\n+{\n+  \"type\": \"object\",\n+  \"additionalProperties\": false,\n+  \"properties\": {\n+    \"notifier\": {\n+      \"type\": \"object\",\n+      \"required\": true,\n+      \"additionalProperties\": false,\n+      \"properties\": {\n+        \"name\": {\"type\": \"string\", \"required\": true},\n+        \"version\": {\"type\": \"string\", \"required\": true},\n+        \"url\": {\"type\": \"string\", \"required\": true}\n+      }\n+    },\n+    \"errors\": {\n+      \"type\": \"array\",\n+      \"required\": true,\n+      \"items\": {\n+        \"type\": \"object\",\n+        \"additionalProperties\": false,\n+        \"properties\": {\n+          \"type\": {\"type\": \"string\", \"required\": true},\n+          \"message\": {\"type\": \"string\", \"required\": true},\n+          \"backtrace\": {\n+            \"type\": \"array\",\n+            \"required\": true,\n+            \"items\": {\n+              \"type\": \"object\",\n+              \"additionalProperties\": false,\n+              \"properties\": {\n+                \"file\": {\"type\": \"string\", \"required\": true},\n+                \"function\": {\"type\": \"string\", \"required\": true},\n+                \"line\": {\"type\": \"number\", \"required\": true},\n+                \"column\": {\"type\": \"number\", \"required\": true}\n+              }\n+            }\n+          }\n+        }\n+      }\n+    },\n+    \"context\": {\n+      \"type\": \"object\",\n+      \"additionalProperties\": false,\n+      \"properties\": {\n+        \"environment\": {\"type\": \"string\"},\n+        \"component\": {\"type\": \"string\"},\n+        \"action\": {\"type\": \"string\"},\n+        \"os\": {\"type\": \"string\"},\n+        \"language\": {\"type\": \"string\"},\n+        \"version\": {\"type\": \"string\"},\n+        \"url\": {\"type\": \"string\"},\n+        \"userAgent\": {\"type\": \"string\"},\n+        \"rootDirectory\": {\"type\": \"string\"},\n+        \"userId\": {\"type\": \"string\"},\n+        \"userUsername\": {\"type\": \"string\"},\n+        \"userName\": {\"type\": \"string\"},\n+        \"userEmail\": {\"type\": \"string\"}\n+      }\n+    },\n+    \"environment\": {\"type\": \"object\"},\n+    \"session\": {\"type\": \"object\"},\n+    \"params\": {\"type\": \"object\"}\n+  }\n+}\n+```\n+\n+## Response\n+\n+On Success, the API returns a `201 Created` status with the following JSON data.","path":"source/index.md","position":196,"original_position":196,"commit_id":"7eaa0f3c6af6ddf010fdd1be50e3ad270c17eff6","original_commit_id":"7eaa0f3c6af6ddf010fdd1be50e3ad270c17eff6","user":{"login":"vmihailenco","id":290976,"avatar_url":"https://avatars.githubusercontent.com/u/290976?v=3","gravatar_id":"","url":"https://api.github.com/users/vmihailenco","html_url":"https://github.com/vmihailenco","followers_url":"https://api.github.com/users/vmihailenco/followers","following_url":"https://api.github.com/users/vmihailenco/following{/other_user}","gists_url":"https://api.github.com/users/vmihailenco/gists{/gist_id}","starred_url":"https://api.github.com/users/vmihailenco/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vmihailenco/subscriptions","organizations_url":"https://api.github.com/users/vmihailenco/orgs","repos_url":"https://api.github.com/users/vmihailenco/repos","events_url":"https://api.github.com/users/vmihailenco/events{/privacy}","received_events_url":"https://api.github.com/users/vmihailenco/received_events","type":"User","site_admin":false},"body":"Downcase Success?","created_at":"2015-03-12T11:11:46Z","updated_at":"2015-03-12T11:11:46Z","html_url":"https://github.com/airbrake/slate/pull/19#discussion_r26293305","pull_request_url":"https://api.github.com/repos/airbrake/slate/pulls/19","_links":{"self":{"href":"https://api.github.com/repos/airbrake/slate/pulls/comments/26293305"},"html":{"href":"https://github.com/airbrake/slate/pull/19#discussion_r26293305"},"pull_request":{"href":"https://api.github.com/repos/airbrake/slate/pulls/19"}}},"pull_request":{"url":"https://api.github.com/repos/airbrake/slate/pulls/19","id":30966519,"html_url":"https://github.com/airbrake/slate/pull/19","diff_url":"https://github.com/airbrake/slate/pull/19.diff","patch_url":"https://github.com/airbrake/slate/pull/19.patch","issue_url":"https://api.github.com/repos/airbrake/slate/issues/19","number":19,"state":"open","locked":false,"title":"Document the v3 notifier endpoint","user":{"login":"zefer","id":101193,"avatar_url":"https://avatars.githubusercontent.com/u/101193?v=3","gravatar_id":"","url":"https://api.github.com/users/zefer","html_url":"https://github.com/zefer","followers_url":"https://api.github.com/users/zefer/followers","following_url":"https://api.github.com/users/zefer/following{/other_user}","gists_url":"https://api.github.com/users/zefer/gists{/gist_id}","starred_url":"https://api.github.com/users/zefer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zefer/subscriptions","organizations_url":"https://api.github.com/users/zefer/orgs","repos_url":"https://api.github.com/users/zefer/repos","events_url":"https://api.github.com/users/zefer/events{/privacy}","received_events_url":"https://api.github.com/users/zefer/received_events","type":"User","site_admin":false},"body":"I noticed that we have some contradictions and inconsistencies in our\r\nexisting documentation for our notifier endpoints. This attempts to fix\r\nthat.\r\n\r\nReviewers: please pay particular attention to the accuracy of the POST\r\nData Fields section.","created_at":"2015-03-11T17:36:41Z","updated_at":"2015-03-12T11:11:46Z","closed_at":null,"merged_at":null,"merge_commit_sha":"25891189b1076262cfc581c65aa573b960b05b64","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/airbrake/slate/pulls/19/commits","review_comments_url":"https://api.github.com/repos/airbrake/slate/pulls/19/comments","review_comment_url":"https://api.github.com/repos/airbrake/slate/pulls/comments{/number}","comments_url":"https://api.github.com/repos/airbrake/slate/issues/19/comments","statuses_url":"https://api.github.com/repos/airbrake/slate/statuses/7eaa0f3c6af6ddf010fdd1be50e3ad270c17eff6","head":{"label":"airbrake:doc/notifier-v3","ref":"doc/notifier-v3","sha":"7eaa0f3c6af6ddf010fdd1be50e3ad270c17eff6","user":{"login":"airbrake","id":1015434,"avatar_url":"https://avatars.githubusercontent.com/u/1015434?v=3","gravatar_id":"","url":"https://api.github.com/users/airbrake","html_url":"https://github.com/airbrake","followers_url":"https://api.github.com/users/airbrake/followers","following_url":"https://api.github.com/users/airbrake/following{/other_user}","gists_url":"https://api.github.com/users/airbrake/gists{/gist_id}","starred_url":"https://api.github.com/users/airbrake/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/airbrake/subscriptions","organizations_url":"https://api.github.com/users/airbrake/orgs","repos_url":"https://api.github.com/users/airbrake/repos","events_url":"https://api.github.com/users/airbrake/events{/privacy}","received_events_url":"https://api.github.com/users/airbrake/received_events","type":"Organization","site_admin":false},"repo":{"id":20977216,"name":"slate","full_name":"airbrake/slate","owner":{"login":"airbrake","id":1015434,"avatar_url":"https://avatars.githubusercontent.com/u/1015434?v=3","gravatar_id":"","url":"https://api.github.com/users/airbrake","html_url":"https://github.com/airbrake","followers_url":"https://api.github.com/users/airbrake/followers","following_url":"https://api.github.com/users/airbrake/following{/other_user}","gists_url":"https://api.github.com/users/airbrake/gists{/gist_id}","starred_url":"https://api.github.com/users/airbrake/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/airbrake/subscriptions","organizations_url":"https://api.github.com/users/airbrake/orgs","repos_url":"https://api.github.com/users/airbrake/repos","events_url":"https://api.github.com/users/airbrake/events{/privacy}","received_events_url":"https://api.github.com/users/airbrake/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/airbrake/slate","description":"Beautiful static documentation for your API","fork":true,"url":"https://api.github.com/repos/airbrake/slate","forks_url":"https://api.github.com/repos/airbrake/slate/forks","keys_url":"https://api.github.com/repos/airbrake/slate/keys{/key_id}","collaborators_url":"https://api.github.com/repos/airbrake/slate/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/airbrake/slate/teams","hooks_url":"https://api.github.com/repos/airbrake/slate/hooks","issue_events_url":"https://api.github.com/repos/airbrake/slate/issues/events{/number}","events_url":"https://api.github.com/repos/airbrake/slate/events","assignees_url":"https://api.github.com/repos/airbrake/slate/assignees{/user}","branches_url":"https://api.github.com/repos/airbrake/slate/branches{/branch}","tags_url":"https://api.github.com/repos/airbrake/slate/tags","blobs_url":"https://api.github.com/repos/airbrake/slate/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/airbrake/slate/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/airbrake/slate/git/refs{/sha}","trees_url":"https://api.github.com/repos/airbrake/slate/git/trees{/sha}","statuses_url":"https://api.github.com/repos/airbrake/slate/statuses/{sha}","languages_url":"https://api.github.com/repos/airbrake/slate/languages","stargazers_url":"https://api.github.com/repos/airbrake/slate/stargazers","contributors_url":"https://api.github.com/repos/airbrake/slate/contributors","subscribers_url":"https://api.github.com/repos/airbrake/slate/subscribers","subscription_url":"https://api.github.com/repos/airbrake/slate/subscription","commits_url":"https://api.github.com/repos/airbrake/slate/commits{/sha}","git_commits_url":"https://api.github.com/repos/airbrake/slate/git/commits{/sha}","comments_url":"https://api.github.com/repos/airbrake/slate/comments{/number}","issue_comment_url":"https://api.github.com/repos/airbrake/slate/issues/comments{/number}","contents_url":"https://api.github.com/repos/airbrake/slate/contents/{+path}","compare_url":"https://api.github.com/repos/airbrake/slate/compare/{base}...{head}","merges_url":"https://api.github.com/repos/airbrake/slate/merges","archive_url":"https://api.github.com/repos/airbrake/slate/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/airbrake/slate/downloads","issues_url":"https://api.github.com/repos/airbrake/slate/issues{/number}","pulls_url":"https://api.github.com/repos/airbrake/slate/pulls{/number}","milestones_url":"https://api.github.com/repos/airbrake/slate/milestones{/number}","notifications_url":"https://api.github.com/repos/airbrake/slate/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/airbrake/slate/labels{/name}","releases_url":"https://api.github.com/repos/airbrake/slate/releases{/id}","created_at":"2014-06-18T20:37:02Z","updated_at":"2015-02-18T10:15:12Z","pushed_at":"2015-03-12T10:46:33Z","git_url":"git://github.com/airbrake/slate.git","ssh_url":"git@github.com:airbrake/slate.git","clone_url":"https://github.com/airbrake/slate.git","svn_url":"https://github.com/airbrake/slate","homepage":"","size":830,"stargazers_count":6,"watchers_count":6,"language":"JavaScript","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":0,"mirror_url":null,"open_issues_count":1,"forks":0,"open_issues":1,"watchers":6,"default_branch":"master"}},"base":{"label":"airbrake:master","ref":"master","sha":"8bd9e06409bb7029ed79eb40129f893cf2206d6a","user":{"login":"airbrake","id":1015434,"avatar_url":"https://avatars.githubusercontent.com/u/1015434?v=3","gravatar_id":"","url":"https://api.github.com/users/airbrake","html_url":"https://github.com/airbrake","followers_url":"https://api.github.com/users/airbrake/followers","following_url":"https://api.github.com/users/airbrake/following{/other_user}","gists_url":"https://api.github.com/users/airbrake/gists{/gist_id}","starred_url":"https://api.github.com/users/airbrake/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/airbrake/subscriptions","organizations_url":"https://api.github.com/users/airbrake/orgs","repos_url":"https://api.github.com/users/airbrake/repos","events_url":"https://api.github.com/users/airbrake/events{/privacy}","received_events_url":"https://api.github.com/users/airbrake/received_events","type":"Organization","site_admin":false},"repo":{"id":20977216,"name":"slate","full_name":"airbrake/slate","owner":{"login":"airbrake","id":1015434,"avatar_url":"https://avatars.githubusercontent.com/u/1015434?v=3","gravatar_id":"","url":"https://api.github.com/users/airbrake","html_url":"https://github.com/airbrake","followers_url":"https://api.github.com/users/airbrake/followers","following_url":"https://api.github.com/users/airbrake/following{/other_user}","gists_url":"https://api.github.com/users/airbrake/gists{/gist_id}","starred_url":"https://api.github.com/users/airbrake/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/airbrake/subscriptions","organizations_url":"https://api.github.com/users/airbrake/orgs","repos_url":"https://api.github.com/users/airbrake/repos","events_url":"https://api.github.com/users/airbrake/events{/privacy}","received_events_url":"https://api.github.com/users/airbrake/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/airbrake/slate","description":"Beautiful static documentation for your API","fork":true,"url":"https://api.github.com/repos/airbrake/slate","forks_url":"https://api.github.com/repos/airbrake/slate/forks","keys_url":"https://api.github.com/repos/airbrake/slate/keys{/key_id}","collaborators_url":"https://api.github.com/repos/airbrake/slate/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/airbrake/slate/teams","hooks_url":"https://api.github.com/repos/airbrake/slate/hooks","issue_events_url":"https://api.github.com/repos/airbrake/slate/issues/events{/number}","events_url":"https://api.github.com/repos/airbrake/slate/events","assignees_url":"https://api.github.com/repos/airbrake/slate/assignees{/user}","branches_url":"https://api.github.com/repos/airbrake/slate/branches{/branch}","tags_url":"https://api.github.com/repos/airbrake/slate/tags","blobs_url":"https://api.github.com/repos/airbrake/slate/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/airbrake/slate/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/airbrake/slate/git/refs{/sha}","trees_url":"https://api.github.com/repos/airbrake/slate/git/trees{/sha}","statuses_url":"https://api.github.com/repos/airbrake/slate/statuses/{sha}","languages_url":"https://api.github.com/repos/airbrake/slate/languages","stargazers_url":"https://api.github.com/repos/airbrake/slate/stargazers","contributors_url":"https://api.github.com/repos/airbrake/slate/contributors","subscribers_url":"https://api.github.com/repos/airbrake/slate/subscribers","subscription_url":"https://api.github.com/repos/airbrake/slate/subscription","commits_url":"https://api.github.com/repos/airbrake/slate/commits{/sha}","git_commits_url":"https://api.github.com/repos/airbrake/slate/git/commits{/sha}","comments_url":"https://api.github.com/repos/airbrake/slate/comments{/number}","issue_comment_url":"https://api.github.com/repos/airbrake/slate/issues/comments{/number}","contents_url":"https://api.github.com/repos/airbrake/slate/contents/{+path}","compare_url":"https://api.github.com/repos/airbrake/slate/compare/{base}...{head}","merges_url":"https://api.github.com/repos/airbrake/slate/merges","archive_url":"https://api.github.com/repos/airbrake/slate/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/airbrake/slate/downloads","issues_url":"https://api.github.com/repos/airbrake/slate/issues{/number}","pulls_url":"https://api.github.com/repos/airbrake/slate/pulls{/number}","milestones_url":"https://api.github.com/repos/airbrake/slate/milestones{/number}","notifications_url":"https://api.github.com/repos/airbrake/slate/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/airbrake/slate/labels{/name}","releases_url":"https://api.github.com/repos/airbrake/slate/releases{/id}","created_at":"2014-06-18T20:37:02Z","updated_at":"2015-02-18T10:15:12Z","pushed_at":"2015-03-12T10:46:33Z","git_url":"git://github.com/airbrake/slate.git","ssh_url":"git@github.com:airbrake/slate.git","clone_url":"https://github.com/airbrake/slate.git","svn_url":"https://github.com/airbrake/slate","homepage":"","size":830,"stargazers_count":6,"watchers_count":6,"language":"JavaScript","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":0,"mirror_url":null,"open_issues_count":1,"forks":0,"open_issues":1,"watchers":6,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/airbrake/slate/pulls/19"},"html":{"href":"https://github.com/airbrake/slate/pull/19"},"issue":{"href":"https://api.github.com/repos/airbrake/slate/issues/19"},"comments":{"href":"https://api.github.com/repos/airbrake/slate/issues/19/comments"},"review_comments":{"href":"https://api.github.com/repos/airbrake/slate/pulls/19/comments"},"review_comment":{"href":"https://api.github.com/repos/airbrake/slate/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/airbrake/slate/pulls/19/commits"},"statuses":{"href":"https://api.github.com/repos/airbrake/slate/statuses/7eaa0f3c6af6ddf010fdd1be50e3ad270c17eff6"}}}}