{"action":"created","issue":{"url":"https://api.github.com/repos/NyxStudios/Orion/issues/6","repository_url":"https://api.github.com/repos/NyxStudios/Orion","labels_url":"https://api.github.com/repos/NyxStudios/Orion/issues/6/labels{/name}","comments_url":"https://api.github.com/repos/NyxStudios/Orion/issues/6/comments","events_url":"https://api.github.com/repos/NyxStudios/Orion/issues/6/events","html_url":"https://github.com/NyxStudios/Orion/issues/6","id":101046937,"number":6,"title":"REST API v3","user":{"login":"pedzed","id":8146593,"avatar_url":"https://avatars.githubusercontent.com/u/8146593?v=3","gravatar_id":"","url":"https://api.github.com/users/pedzed","html_url":"https://github.com/pedzed","followers_url":"https://api.github.com/users/pedzed/followers","following_url":"https://api.github.com/users/pedzed/following{/other_user}","gists_url":"https://api.github.com/users/pedzed/gists{/gist_id}","starred_url":"https://api.github.com/users/pedzed/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pedzed/subscriptions","organizations_url":"https://api.github.com/users/pedzed/orgs","repos_url":"https://api.github.com/users/pedzed/repos","events_url":"https://api.github.com/users/pedzed/events{/privacy}","received_events_url":"https://api.github.com/users/pedzed/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":{"login":"Ijwu","id":1393017,"avatar_url":"https://avatars.githubusercontent.com/u/1393017?v=3","gravatar_id":"","url":"https://api.github.com/users/Ijwu","html_url":"https://github.com/Ijwu","followers_url":"https://api.github.com/users/Ijwu/followers","following_url":"https://api.github.com/users/Ijwu/following{/other_user}","gists_url":"https://api.github.com/users/Ijwu/gists{/gist_id}","starred_url":"https://api.github.com/users/Ijwu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Ijwu/subscriptions","organizations_url":"https://api.github.com/users/Ijwu/orgs","repos_url":"https://api.github.com/users/Ijwu/repos","events_url":"https://api.github.com/users/Ijwu/events{/privacy}","received_events_url":"https://api.github.com/users/Ijwu/received_events","type":"User","site_admin":false},"assignees":[{"login":"Ijwu","id":1393017,"avatar_url":"https://avatars.githubusercontent.com/u/1393017?v=3","gravatar_id":"","url":"https://api.github.com/users/Ijwu","html_url":"https://github.com/Ijwu","followers_url":"https://api.github.com/users/Ijwu/followers","following_url":"https://api.github.com/users/Ijwu/following{/other_user}","gists_url":"https://api.github.com/users/Ijwu/gists{/gist_id}","starred_url":"https://api.github.com/users/Ijwu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Ijwu/subscriptions","organizations_url":"https://api.github.com/users/Ijwu/orgs","repos_url":"https://api.github.com/users/Ijwu/repos","events_url":"https://api.github.com/users/Ijwu/events{/privacy}","received_events_url":"https://api.github.com/users/Ijwu/received_events","type":"User","site_admin":false}],"milestone":null,"comments":14,"created_at":"2015-08-14T16:27:44Z","updated_at":"2016-10-11T23:19:04Z","closed_at":null,"body":"TShock's REST API v2 is out for quite some time now and it would be nice to have a next version. This gives room to fix some inconsistencies, remove duplication, fix issues and add features.\r\n\r\nFor example purposes, I will use `127.0.0.1` for the host and `7878` for the REST port. Also, because JSON does not officially support comments, I \"faked\" the comments.\r\n\r\n## Consistency\r\n### Base URL\r\nOne issue we currently face is that you have to use v1 for some endpoints and for some other endpoints v2. In v3 everything should be called from http://127.0.0.1:7878/v3/.\r\n\r\n### Keys\r\nKeys MUST be `lower_under`.\r\n\r\n### Values\r\nA value SHOULD NOT contain multiple values. `buffs` from REST v2 is a good example of how it should not be done.\r\n```json\r\n{\r\n    \"//\": \"...\",\r\n    \"buffs\": \"147, 86, 158, 146, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0\"\r\n}\r\n```\r\n\r\n### Dates \r\nAll dates SHOULD be available as specified in ISO 8601. \r\n\r\n> Complete date plus hours and minutes:\r\n> YYYY-MM-DDThh:mmTZD (eg 1997-07-16T19:20+01:00)\r\n>\r\n>  &mdash; http://www.w3.org/TR/NOTE-datetime\r\n\r\n\r\n\r\n## Security\r\n\r\nGET can expose sensitive data. And besides,\r\n\r\n> the convention has been established that the GET and HEAD methods SHOULD NOT have the significance of taking an action other than retrieval. These methods ought to be considered \"safe\".\r\n> \r\n> &mdash; http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.1.1\r\n\r\nLike in v1 and v2, the token should not be in the URL.\r\n\r\n> Usernames, passwords, session tokens, and API keys should not appear in the URL, as this can be captured in web server logs, which makes them intrinsically valuable.\r\n>\r\n> &mdash; https://www.owasp.org/index.php/REST_Security_Cheat_Sheet\r\n\r\n\r\n\r\n\r\n## Endpoints\r\n### Tokens\r\n#### Generating a token\r\nDeprecates: `/token/create`\r\nhttp://127.0.0.1:7878/v3/token/generate\r\ndata:\r\n```\r\nusername = 'restuser'\r\npassword = 'restpass'\r\n```\r\n\r\nExample response:\r\n```json\r\n{\r\n    \"status\": 201,\r\n    \"response\": \"Successfully generated token.\",\r\n    \"data\": {\r\n        \"token\": \"5C58D5332D5A51DCC5CFFEBD3813014ECF0248BA104CF12ADE0F93E192E77347\",\r\n        \"expiration_date\": \"2015-7-24T13:39Z\"\r\n    }\r\n}\r\n```\r\n\r\n\r\n#### Validating a token\r\nDeprecates: `/tokentest`\r\nhttp://127.0.0.1:7878/v3/token/validate\r\ndata:\r\n```\r\ntoken = '5C58D5332D5A51DCC5CFFEBD3813014ECF0248BA104CF12ADE0F93E192E77347'\r\n```\r\n\r\nExample response:\r\n```json\r\n{\r\n    \"status\": 200,\r\n    \"response\": \"Token is valid.\",\r\n    \"data\": {\r\n        \"token\": \"5C58D5332D5A51DCC5CFFEBD3813014ECF0248BA104CF12ADE0F93E192E77347\",\r\n        \"expiration_date\": \"2015-7-24T13:39Z\"\r\n    }\r\n}\r\n```\r\n\r\n\r\n### Server\r\n#### Information\r\nDeprecates: `/v2/status`, `/v2/server/status`\r\nhttp://127.0.0.1:7878/v3/server/info\r\ndata:\r\n```\r\ntoken = '5C58D5332D5A51DCC5CFFEBD3813014ECF0248BA104CF12ADE0F93E192E77347'\r\n```\r\n\r\nExample response:\r\n```json\r\n{\r\n    \"status\": 200,\r\n    \"data\": {\r\n        \"name\": \"TerraServer\",\r\n        \"host\": \"127.0.0.1\",\r\n        \"port\": \"7777\",\r\n        \"software\": {\r\n            \"name\": \"tshock\",\r\n            \"version\": \"4.4.0\"\r\n        }\r\n    }\r\n}\r\n```\r\n\r\n#### Executing a command\r\nDeprecates: `/v2/server/rawcmd`, `/v2/world/butcher`, `/world/meteor`, `/world/bloodmoon/{bool}`, `/v2/players/kick`, `/v2/players/kill`, `/v2/players/mute`, `/v2/players/unmute`, `/v2/world/save`, `/v2/server/broadcast`\r\nhttp://127.0.0.1:7878/v3/server/execute-command\r\ndata:\r\n```\r\ntoken = '5C58D5332D5A51DCC5CFFEBD3813014ECF0248BA104CF12ADE0F93E192E77347'\r\ncommand = 'time noon'\r\n```\r\n\r\nExample response:\r\n```json\r\n{\r\n    \"status\": 200,\r\n    \"response\": \"Server set the time to 12:00.\"\r\n}\r\n```\r\n\r\n#### Changing server password\r\nhttp://127.0.0.1:7878/v3/server/update-password\r\ndata:\r\n```\r\ntoken = '5C58D5332D5A51DCC5CFFEBD3813014ECF0248BA104CF12ADE0F93E192E77347'\r\npassword = '123123'\r\n```\r\n\r\nExample response:\r\n```json\r\n{\r\n    \"status\": 200,\r\n    \"response\": \"Successfully changed server password.\"\r\n}\r\n```\r\n\r\n#### Shutting the server down\r\nDeprecates: `/v2/server/off`\r\nhttp://127.0.0.1:7878/v3/server/shut-down\r\ndata:\r\n```\r\ntoken = '5C58D5332D5A51DCC5CFFEBD3813014ECF0248BA104CF12ADE0F93E192E77347'\r\nsave = false // Optional; default true\r\n```\r\n\r\nExample response:\r\n```json\r\n{\r\n    \"status\": 200,\r\n    \"response\": \"Server shut down. World not saved.\"\r\n}\r\n```\r\n\r\n#### Starting the server up\r\n*New feature*\r\nhttp://127.0.0.1:7878/v3/server/start-up\r\ndata:\r\n```\r\ntoken = '5C58D5332D5A51DCC5CFFEBD3813014ECF0248BA104CF12ADE0F93E192E77347'\r\nport = 8888 // Optional; default 7777\r\n```\r\n\r\nExample response:\r\n```json\r\n{\r\n    \"status\": 200\r\n}\r\n```\r\n\r\n\r\n\r\n### World\r\n#### Information\r\nDeprecates: `/world/read`, `/v2/server/status`\r\nhttp://127.0.0.1:7878/v3/world\r\ndata:\r\n```\r\ntoken = '5C58D5332D5A51DCC5CFFEBD3813014ECF0248BA104CF12ADE0F93E192E77347'\r\n```\r\n\r\nExample response:\r\n```json\r\n{\r\n    \"status\": 200,\r\n    \"data\": {\r\n        \"id\": 18624254254,\r\n        \"name\": \"World 3\",\r\n        \"size\": {\r\n            \"type\": \"medium\",\r\n            \"width\": 6400,\r\n            \"height\": 1800\r\n        },\r\n        \"mode\": \"expert\",\r\n        \"creation_date\": \"2015-7-24T13:39Z\",\r\n        \"//\": \"In what format is the time??\",\r\n        \"time\": \"42149\",\r\n        \"is_day\": true,\r\n        \"is_bloodmoon\": false,\r\n        \"//\": \"TODO: Improve invasionsize.\",\r\n        \"invasionsize\": 0\r\n    }\r\n}\r\n```\r\n\r\n#### Auto-saving\r\nDeprecates: `/v2/world/autosave/state/{bool}`\r\nhttp://127.0.0.1:7878/v3/world/auto-save\r\ndata:\r\n```\r\ntoken = '5C58D5332D5A51DCC5CFFEBD3813014ECF0248BA104CF12ADE0F93E192E77347'\r\nmode = false // Optional; default true\r\n```\r\n\r\nExample response:\r\n```json\r\n{\r\n    \"status\": 200,\r\n    \"response\": \"Successfully set auto-save to true.\"\r\n}\r\n```\r\n\r\n\r\n\r\n### Groups\r\n#### Group information\r\nDeprecates: `/v2/groups/list`, `/v2/groups/read`\r\nhttp://127.0.0.1:7878/v3/groups\r\ndata:\r\n```\r\ntoken = '5C58D5332D5A51DCC5CFFEBD3813014ECF0248BA104CF12ADE0F93E192E77347'\r\n```\r\n\r\nExample response:\r\n```json\r\n{\r\n    \"status\": 200,\r\n    \"response\": \"Successfully fetched 8 groups.\",\r\n    \"data\": {\r\n        \"groups\": [\r\n            {\r\n                \"name\": \"default\",\r\n                \"parent\": \"guest\",\r\n                \"rgb_chat_color\": [\r\n                    255,\r\n                    255,\r\n                    255\r\n                ],\r\n                \"permissions\": [\r\n                    \"tshock.reservedslot\"\r\n                ],\r\n                \"negatedpermissions\": [],\r\n                \"totalpermissions\": [\r\n                    \"tshock.reservedslot\",\r\n                    \"tshock.warp\",\r\n                    \"// ...\",\r\n                    \"tshock.canchat\"\r\n                ]\r\n            },\r\n            \"// ...\"\r\n        ]\r\n    }\r\n}\r\n```\r\n\r\n#### Create group\r\nDeprecates: `/v2/groups/create`\r\nhttp://127.0.0.1:7878/v3/group/create\r\ndata:\r\n```\r\ntoken = '5C58D5332D5A51DCC5CFFEBD3813014ECF0248BA104CF12ADE0F93E192E77347'\r\nname = 'Team Penguin'\r\nprefix = '(Team Penguin)'\r\nsuffix = null\r\nparent_type = 'id' // Optional; defaults to \"name\"; options: id, name\r\nparent_group = 23\r\npermissions = [\r\n    'tshock.tp.self',\r\n    'tshock.tp.others'\r\n]\r\nrgb_chat_color = [\r\n    255,\r\n    255,\r\n    255\r\n]\r\n```\r\n\r\nExample response:\r\n```json\r\n{\r\n    \"status\": 201,\r\n    \"response\": \"Successfully created group \\\"Team Penguin\\\".\"\r\n}\r\n```\r\n\r\n#### Update group\r\nDeprecates: `/v2/groups/update`\r\nhttp://127.0.0.1:7878/v3/group/update\r\ndata:\r\n```\r\ntoken = '5C58D5332D5A51DCC5CFFEBD3813014ECF0248BA104CF12ADE0F93E192E77347'\r\ntype = 'id' // Optional; defaults to \"name\"; options: id, name\r\nname = 24\r\nprefix = '(Team Penguin)'\r\nsuffix = null\r\nparent_type = 'id' // Optional; defaults to \"name\"; options: id, name\r\nparent_group = 23\r\npermissions = [\r\n    'tshock.tp.self',\r\n    'tshock.tp.others'\r\n]\r\nrgb_chat_color = [\r\n    255,\r\n    255,\r\n    255\r\n]\r\n```\r\n\r\nExample response:\r\n```json\r\n{\r\n    \"status\": 201,\r\n    \"response\": \"Successfully created group \\\"Team Penguin\\\".\"\r\n}\r\n```\r\n\r\n#### Delete group\r\nDeprecates: `/v2/groups/destroy`\r\nhttp://127.0.0.1:7878/v3/group/delete\r\ndata:\r\n```\r\ntoken = '5C58D5332D5A51DCC5CFFEBD3813014ECF0248BA104CF12ADE0F93E192E77347'\r\ntype = 'id' // Optional; defaults to \"name\"; options: id, name\r\ngroup = 24\r\n```\r\n\r\nExample response:\r\n```json\r\n{\r\n    \"status\": 200,\r\n    \"response\": \"Successfully deleted group \\\"Team Penguin\\\".\"\r\n}\r\n```\r\n\r\n### Users\r\n#### Registered users info\r\nRelevant: https://github.com/NyxStudios/TShock/issues/901\r\nDeprecates: `/v2/users/read`\r\nhttp://127.0.0.1:7878/v3/users\r\ndata:\r\n```\r\ntoken = '5C58D5332D5A51DCC5CFFEBD3813014ECF0248BA104CF12ADE0F93E192E77347'\r\n```\r\n\r\nExample response:\r\n```json\r\n{\r\n    \"status\": 200,\r\n    \"response\": \"Successfully fetched 4 online users.\",\r\n    \"data\": {\r\n        \"maximum_allowed\": 7,\r\n        \"online\": [\r\n            {\r\n                \"nickname\": \"Ped\",\r\n                \"username\": \"ped\",\r\n                \"group\": \"superadmin\",\r\n                \"team\": 0,\r\n                \"ip\": \"127.0.0.1\",\r\n                \"position\": {\r\n                    \"longtitude\": 3219,\r\n                    \"latitude\": 290\r\n                },\r\n                \"buffs\": [\r\n                    {\r\n                        \"id\": 147,\r\n                        \"name\": \"Banners\",\r\n                        \"description\": [\r\n                            \"Increased damage and defense from the following:\",\r\n                            \"Zombie\",\r\n                            \"Green Slime\"\r\n                        ],\r\n                        \"seconds_left\": null\r\n                    },\r\n                    {\r\n                        \"id\": 121,\r\n                        \"name\": \"Fishing\",\r\n                        \"description\": \"Increased fishing level\",\r\n                        \"seconds_left\": 480\r\n                    }\r\n                ],\r\n                \"inventory\": {\r\n                    \"items\": [\r\n                        {\r\n                            \"id\": 200,\r\n                            \"name\": \"Green Phaseblade\",\r\n                            \"description\": [\r\n                                \"23 melee damage\",\r\n                                \"9% critical strike chance\",\r\n                                \"Fast speed\",\r\n                                \"Weak knockback\",\r\n                                \"Material\",\r\n                                \"+5% damage\",\r\n                                \"+15% knockback\"\r\n                            ],\r\n                            \"prefix\": {\r\n                                \"id\": 7,\r\n                                \"name\": \"Unpleasant\"\r\n                            },\r\n                            \"amount\": 1\r\n                        },\r\n                        \"// x50 elements\"\r\n                    ],\r\n                    \"coins\": [\r\n                        \"// Same as items, but without prefix\",\r\n                        \"// x4 elements\"\r\n                    ],\r\n                    \"ammo\": [\r\n                        \"// Same as items, but without prefix\",\r\n                        \"// x4 elements\"\r\n                    ],\r\n                    \"trash\": null,\r\n                    \"holding_item\": null,\r\n                    \"helmet\": {\r\n                        \"dye\": {\r\n                            \"id\": 213,\r\n                            \"name\": \"Brown Dye\",\r\n                            \"description\": [\r\n                                \"Material\"\r\n                            ]\r\n                        },\r\n                        \"vanity\": {\r\n                            \"//\": \"Same as dye, but with prefix\",\r\n                            \"prefix\": {\r\n                                \"id\": 7,\r\n                                \"name\": \"Unpleasant\"\r\n                            }\r\n                        },\r\n                        \"item\": {\r\n                            \"//\": \"Same as dye, but with prefix\",\r\n                        }\r\n                    },\r\n                    \"shirt\": {\r\n                        \"//\": \"Same as helmet\"\r\n                    },\r\n                    \"pants\": {\r\n                        \"//\": \"Same as helmet\"\r\n                    },\r\n                    \"accessories\": [\r\n                        {\r\n                            \"dye\": {\r\n                                \"//\": \"Same as helmet's dye\"\r\n                            },\r\n                            \"vanity\": {\r\n                                \"//\": \"Same as helmet's vanity\"\r\n                            },\r\n                            \"item\": {\r\n                                \"//\": \"Same as dye, but with prefix\"\r\n                            }\r\n                        }\r\n                        \"// x5 elements\"\r\n                    ],\r\n                    \"pet\": {\r\n                        \"dye\": {\r\n                            \"//\": \"Same as helmet's dye\"\r\n                        },\r\n                        \"item\": {\r\n                            \"//\": \"Same as helmet's item\"\r\n                        }\r\n                    },\r\n                    \"light_pet\": {\r\n                        \"//\": \"Same as pet\"\r\n                    },\r\n                    \"mount\": {\r\n                        \"//\": \"Same as pet\"\r\n                    },\r\n                    \"minecart\": {\r\n                        \"//\": \"Same as pet\"\r\n                    },\r\n                    \"grappling_hook\": {\r\n                        \"//\": \"Same as pet\"\r\n                    }\r\n                }\r\n            },\r\n            \"// Other players\"\r\n        ]\r\n    }\r\n}\r\n```\r\n\r\n#### Online info\r\nRelevant: https://github.com/NyxStudios/TShock/issues/901\r\nDeprecates: `/v2/server/status`, `/v2/users/activelist`, `/v2/players/read`, `/v2/players/list`\r\nhttp://127.0.0.1:7878/v3/online-users\r\ndata:\r\n```\r\ntoken = '5C58D5332D5A51DCC5CFFEBD3813014ECF0248BA104CF12ADE0F93E192E77347'\r\n```\r\n\r\nExample response:\r\n```json\r\n{\r\n    \"status\": 200,\r\n    \"response\": \"Successfully fetched 4 online users.\",\r\n    \"data\": {\r\n        \"maximum_allowed\": 7,\r\n        \"online\": [\r\n            {\r\n                \"nickname\": \"Ped\",\r\n                \"username\": \"ped\",\r\n                \"group\": \"superadmin\",\r\n                \"team\": 0,\r\n                \"ip\": \"127.0.0.1\",\r\n                \"position\": {\r\n                    \"longtitude\": 3219,\r\n                    \"latitude\": 290\r\n                },\r\n                \"buffs\": [\r\n                    {\r\n                        \"id\": 147,\r\n                        \"name\": \"Banners\",\r\n                        \"description\": [\r\n                            \"Increased damage and defense from the following:\",\r\n                            \"Zombie\",\r\n                            \"Green Slime\"\r\n                        ],\r\n                        \"seconds_left\": null\r\n                    },\r\n                    {\r\n                        \"id\": 121,\r\n                        \"name\": \"Fishing\",\r\n                        \"description\": \"Increased fishing level\",\r\n                        \"seconds_left\": 480\r\n                    }\r\n                ],\r\n                \"inventory\": {\r\n                    \"items\": [\r\n                        {\r\n                            \"id\": 200,\r\n                            \"name\": \"Green Phaseblade\",\r\n                            \"description\": [\r\n                                \"23 melee damage\",\r\n                                \"9% critical strike chance\",\r\n                                \"Fast speed\",\r\n                                \"Weak knockback\",\r\n                                \"Material\",\r\n                                \"+5% damage\",\r\n                                \"+15% knockback\"\r\n                            ],\r\n                            \"prefix\": {\r\n                                \"id\": 7,\r\n                                \"name\": \"Unpleasant\"\r\n                            },\r\n                            \"amount\": 1\r\n                        },\r\n                        \"// x50 elements\"\r\n                    ],\r\n                    \"coins\": [\r\n                        \"// Same as items, but without prefix\",\r\n                        \"// x4 elements\"\r\n                    ],\r\n                    \"ammo\": [\r\n                        \"// Same as items, but without prefix\",\r\n                        \"// x4 elements\"\r\n                    ],\r\n                    \"trash\": null,\r\n                    \"holding_item\": null,\r\n                    \"helmet\": {\r\n                        \"dye\": {\r\n                            \"id\": 213,\r\n                            \"name\": \"Brown Dye\",\r\n                            \"description\": [\r\n                                \"Material\"\r\n                            ]\r\n                        },\r\n                        \"vanity\": {\r\n                            \"//\": \"Same as dye, but with prefix\",\r\n                            \"prefix\": {\r\n                                \"id\": 7,\r\n                                \"name\": \"Unpleasant\"\r\n                            }\r\n                        },\r\n                        \"item\": {\r\n                            \"//\": \"Same as dye, but with prefix\",\r\n                        }\r\n                    },\r\n                    \"shirt\": {\r\n                        \"//\": \"Same as helmet\"\r\n                    },\r\n                    \"pants\": {\r\n                        \"//\": \"Same as helmet\"\r\n                    },\r\n                    \"accessories\": [\r\n                        {\r\n                            \"dye\": {\r\n                                \"//\": \"Same as helmet's dye\"\r\n                            },\r\n                            \"vanity\": {\r\n                                \"//\": \"Same as helmet's vanity\"\r\n                            },\r\n                            \"item\": {\r\n                                \"//\": \"Same as dye, but with prefix\"\r\n                            }\r\n                        }\r\n                        \"// x5 elements\"\r\n                    ],\r\n                    \"pet\": {\r\n                        \"dye\": {\r\n                            \"//\": \"Same as helmet's dye\"\r\n                        },\r\n                        \"item\": {\r\n                            \"//\": \"Same as helmet's item\"\r\n                        }\r\n                    },\r\n                    \"light_pet\": {\r\n                        \"//\": \"Same as pet\"\r\n                    },\r\n                    \"mount\": {\r\n                        \"//\": \"Same as pet\"\r\n                    },\r\n                    \"minecart\": {\r\n                        \"//\": \"Same as pet\"\r\n                    },\r\n                    \"grappling_hook\": {\r\n                        \"//\": \"Same as pet\"\r\n                    }\r\n                }\r\n            },\r\n            \"// Other players\"\r\n        ]\r\n    }\r\n}\r\n```\r\n\r\n### Create user\r\nDeprecates: `/v2/users/create`\r\nhttp://127.0.0.1:7878/v3/user/create\r\ndata:\r\n```\r\ntoken = '5C58D5332D5A51DCC5CFFEBD3813014ECF0248BA104CF12ADE0F93E192E77347'\r\nusername = 'ped'\r\npassword = '123123'\r\ngroup = 'moderator' // Optional; defaults to \"default\"\r\n```\r\n\r\nExample response:\r\n```json\r\n{\r\n    \"status\": 201,\r\n    \"response\": \"Successfully created moderator \\\"ped\\\".\"\r\n}\r\n```\r\n\r\n#### Update user\r\nDeprecates: `/v2/users/update`\r\nhttp://127.0.0.1:7878/v3/user/update\r\ndata:\r\n```\r\ntoken = '5C58D5332D5A51DCC5CFFEBD3813014ECF0248BA104CF12ADE0F93E192E77347'\r\ntype = 'id' // Optional; defaults to \"username\"; options: id, username\r\nuser = 254\r\n// TODO: Add more parameters\r\n```\r\n\r\nExample response:\r\n```json\r\n{\r\n    \"status\": 200,\r\n    \"response\": \"Successfully updated user 254.\"\r\n}\r\n```\r\n\r\n#### Delete user\r\nDeprecates: `/v2/users/destroy`\r\nhttp://127.0.0.1:7878/v3/user/delete\r\ndata:\r\n```\r\ntoken = '5C58D5332D5A51DCC5CFFEBD3813014ECF0248BA104CF12ADE0F93E192E77347'\r\ntype = 'id' // Optional; defaults to \"username\"; options: id, username\r\nuser = 254\r\n```\r\n\r\nExample response:\r\n```json\r\n{\r\n    \"status\": 200,\r\n    \"response\": \"Successfully deleted user from database.\"\r\n}\r\n```\r\n\r\n\r\n\r\n### Bans\r\nDeprecates: `/v2/players/ban`\r\n\r\n\r\n\r\n\r\n## REST API v1 & v2\r\nv1 is out for a very long time. I propose to remove the support to get rid of legacy code. I also propose to deprecate v2 and remove it in August 2018.\r\n\r\nFeel free to comment on this. I might have missed something or made some mistakes along the way.\r\n\r\n@WhiteXZ If v3 is already out, then you can obviously name it v4. I am not aware of v3."},"comment":{"url":"https://api.github.com/repos/NyxStudios/Orion/issues/comments/253075264","html_url":"https://github.com/NyxStudios/Orion/issues/6#issuecomment-253075264","issue_url":"https://api.github.com/repos/NyxStudios/Orion/issues/6","id":253075264,"user":{"login":"tylerjwatson","id":5001408,"avatar_url":"https://avatars.githubusercontent.com/u/5001408?v=3","gravatar_id":"","url":"https://api.github.com/users/tylerjwatson","html_url":"https://github.com/tylerjwatson","followers_url":"https://api.github.com/users/tylerjwatson/followers","following_url":"https://api.github.com/users/tylerjwatson/following{/other_user}","gists_url":"https://api.github.com/users/tylerjwatson/gists{/gist_id}","starred_url":"https://api.github.com/users/tylerjwatson/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tylerjwatson/subscriptions","organizations_url":"https://api.github.com/users/tylerjwatson/orgs","repos_url":"https://api.github.com/users/tylerjwatson/repos","events_url":"https://api.github.com/users/tylerjwatson/events{/privacy}","received_events_url":"https://api.github.com/users/tylerjwatson/received_events","type":"User","site_admin":false},"created_at":"2016-10-11T23:19:04Z","updated_at":"2016-10-11T23:19:04Z","body":"@Ijwu see #33 - the progress is with a REST service, which spins up a fully managed instance of OWIN self-host with WebAPI 2 front end.  It should harvest controllers within the current app domain, and should be ready for controllers to be added in other services.\r\n\r\nAlternatively, we can discuss a design where controllers are constructed dynamically by calls to a REST service method like `AddEndpoint<>`.\r\n\r\nThere most definitely is progress.  Thanks to @DeathCradle for all his work on it"}}
{"actor":{"display_login":"tylerjwatson"}}