diff --git a/api/admin/canned/index.php b/api/admin/canned/index.php
index 47c95fc6..bd4357c4 100644
--- a/api/admin/canned/index.php
+++ b/api/admin/canned/index.php
@@ -14,15 +14,39 @@ hesk_dbConnect();
// Routing
$request_method = $_SERVER['REQUEST_METHOD'];
+
+/**
+ * @api {get} /admin/canned Retrieve a canned response
+ * @apiVersion 0.0.0
+ * @apiName GetCanned
+ * @apiGroup Canned Response
+ * @apiPermission protected
+ *
+ * @apiParam {Number} [id] The ID of the canned response. Omit for all canned responses.
+ *
+ * @apiSuccess {Number} id ID of the canned response
+ * @apiSuccess {String} title The title of the canned response.
+ * @apiSuccess {String} message The contents of the canned response, including HTML markup.
+ * @apiSuccess {Integer} reply_order The position of the canned response in the list of canned responses (in multiples of 10).
+ *
+ * @apiSuccessExample {json} Success-Response:
+ * HTTP/1.1 200 OK
+ * {
+ * "id": 2,
+ * "title": "html",
+ * "message": "
My canned response
\r\n%%HESK_ID%%
",
+ * "reply_order": 10
+ * }
+ *
+ * @apiError (noTokenProvided) 400 No `X-Auth-Token` was provided where it is required
+ * @apiError (invalidXAuthToken) 401 The `X-Auth-Token` provided was invalid
+ */
if ($request_method == 'GET') {
$token = get_header('X-Auth-Token');
try {
get_user_for_token($token, $hesk_settings);
} catch (AccessException $e) {
- if ($e->getCode() == 422) {
- print_error($e->getMessage(), $e->getMessage());
- }
return http_response_code($e->getCode());
}
diff --git a/api/admin/ticket/index.php b/api/admin/ticket/index.php
index 033cede5..521a1118 100644
--- a/api/admin/ticket/index.php
+++ b/api/admin/ticket/index.php
@@ -14,15 +14,126 @@ hesk_dbConnect();
// Routing
$request_method = $_SERVER['REQUEST_METHOD'];
+
+/**
+ * @api {get} /admin/ticket Retrieve a ticket (staff-side)
+ * @apiVersion 0.0.0
+ * @apiName GetTicketStaff
+ * @apiGroup Ticket
+ * @apiPermission protected
+ *
+ * @apiParam {Number} [id] The ID of the ticket. Omit for all tickets.
+ *
+ * @apiSuccess {Number} id ID of the ticket
+ * @apiSuccess {String} trackid The tracking id of the ticket
+ * @apiSuccess {String} name The name of the contact
+ * @apiSuccess {String} email The email address of the ticket (empty string if no email)
+ * @apiSuccess {Integer} category The ID of the category the ticket is in
+ * @apiSuccess {Integer} priority The ID of the priority the ticket is in
+ * @apiSuccess {String} subject The subject of the ticket
+ * @apiSuccess {String} message The original message of the ticket
+ * @apiSuccess {String} dt The date and time the ticket was submitted, in `YYYY-MM-DD hh:mm:ss`
+ * @apiSuccess {String} lastchange The date and time the ticket was last changed, in `YYYY-MM-DD hh:mm:ss`
+ * @apiSuccess {String} firstreply The date and time the first remply was recorded, in `YYYY-MM-DD hh:mm:ss`
+ * @apiSuccess {String} closedat The date and time the ticket was closed, in `YYYY-MM-DD hh:mm:ss`
+ * @apiSuccess {Integer} articles The knowledgebase article IDs suggested when the user created the ticket
+ * @apiSuccess {String} ip The IP address of the submitter
+ * @apiSuccess {String} language The language the ticket was submitted in
+ * @apiSuccess {Integer} status The ID of the status the ticket is set to
+ * @apiSuccess {Integer} openedby `0` - Ticket opened by staff
`1` - Ticket opened by customer
+ * @apiSuccess {Integer} firstreplyby `0` - First reply by staff
`1` - First reply by customer
+ * @apiSuccess {Integer} closedby `0` - Ticket closed by staff
`1` - Ticket closed by customer
+ * @apiSuccess {Integer} replies Total number of replies to ticket
+ * @apiSuccess {Integer} staffreplies Total number of replies to ticket from staff
+ * @apiSuccess {Integer} owner The user ID of the ticket owner
+ * @apiSuccess {String} time_worked The total time worked on the ticket, in `hh:mm:ss`
+ * @apiSuccess {Integer} lastreplier `0` - Last reply by staff
`1` - Last reply by customer
+ * @apiSuccess {Integer} replierid The user ID of the staff that last replied to the ticket, or `0` if the last reply was made by the customer
+ * @apiSuccess {Boolean} archive `true` if the ticket is tagged
`false` otherwise
+ * @apiSuccess {Boolean} locked `true` if the ticket is locked
`false` otherwise
+ * @apiSuccess {Binary[]} attachments Array of attachments, in base-64 encoded binary
+ * @apiSuccess {Integer[]} merged Array of merged ticket IDs
+ * @apiSuccess {String} history HTML markup of the entire "Audit Trail" section
+ * @apiSuccess {String} custom1-20 Custom fields 1-20's values.
+ * @apiSuccess {Integer} parent The ID of the ticket linked to this ticket
+ * @apiSuccess {String} latitude The latitudinal coordinate of the user's location, or one of the corresponding error codes.
+ * @apiSuccess {String} longitude The longitudinal coordinate of the user's location, or one of the corresponding error codes.
+ * @apiSuccess {Boolean} html `true` if the ticket was created with HTML encoding
`false` otherwise
+ * @apiSuccess {String} user_agent The user agent of the user who submitted the ticket
+ * @apiSuccess {Integer} screen_resolution_width The width of the screen resolution of the user who submitted the ticket
+ * @apiSuccess {Integer} screen_resolution_height The height of the screen resolution of the user who submitted the ticket
+ *
+ * @apiSuccessExample {json} Success-Response:
+ * HTTP/1.1 200 OK
+ * {
+ * "id": 22,
+ * "trackid": "EVL-RRL-DUBG",
+ * "name": "Test",
+ * "email": "",
+ * "category": 1,
+ * "priority": 3,
+ * "subject": "test",
+ * "message": "test",
+ * "dt": "2014-12-28 00:57:26",
+ * "lastchange": "2015-03-08 23:38:59",
+ * "firstreply": "2015-01-17 10:21:16",
+ * "closedat": "2015-01-17 15:39:12",
+ * "articles": null,
+ * "ip": "::1",
+ * "language": null,
+ * "status": 3,
+ * "openedby": 0,
+ * "firstreplyby": "1",
+ * "closedby": "1",
+ * "replies": "11",
+ * "staffreplies": "10",
+ * "owner": "1",
+ * "time_worked": "00:05:07",
+ * "lastreplier": 1,
+ * "replierid": 1,
+ * "archive": true,
+ * "locked": true,
+ * "attachments": "",
+ * "merged": "",
+ * "history": "2014-12-28 06:57:28 | ticket created by Your name (mkoch)2014-12-31 21:00:59 | closed by Your name (mkoch)2014-12-31 21:01:05 | status changed to Waiting reply by Your name (mkoch)2014-12-31 21:01:58 | closed by Your name (mkoch)2015-01-17 16:21:18 | closed by Your name (mkoch)2015-01-17 16:21:31 | closed by Your name (mkoch)2015-01-17 16:22:05 | closed by Your name (mkoch)2015-01-17 16:24:06 | status changed to by Your name (mkoch)2015-01-17 16:25:40 | status changed to On Hold by Your name (mkoch)2015-01-17 16:25:53 | status changed to In Progress by Your name (mkoch)2015-01-17 21:39:11 | locked by Your name (mkoch)",
+ * "custom1": "1420671600",
+ * "custom2": "",
+ * "custom3": "",
+ * "custom4": "",
+ * "custom5": "",
+ * "custom6": "",
+ * "custom7": "",
+ * "custom8": "",
+ * "custom9": "",
+ * "custom10": "",
+ * "custom11": "",
+ * "custom12": "",
+ * "custom13": "",
+ * "custom14": "",
+ * "custom15": "",
+ * "custom16": "",
+ * "custom17": "",
+ * "custom18": "",
+ * "custom19": "",
+ * "custom20": "",
+ * "parent": null,
+ * "latitude": "E-0",
+ * "longitude": "E-0",
+ * "html": false,
+ * "user_agent": null,
+ * "screen_resolution_width": null,
+ * "screen_resolution_height": null
+ * }
+ *
+ * @apiError (noTokenProvided) 400 No `X-Auth-Token` was provided where it is required
+ * @apiError (invalidXAuthToken) 401 The `X-Auth-Token` provided was invalid
+ */
if ($request_method == 'GET') {
$token = get_header('X-Auth-Token');
try {
get_user_for_token($token, $hesk_settings);
} catch (AccessException $e) {
- if ($e->getCode() == 422) {
- print_error($e->getMessage(), $e->getMessage());
- }
return http_response_code($e->getCode());
}
diff --git a/api/category/index.php b/api/category/index.php
index 1f216313..df068488 100644
--- a/api/category/index.php
+++ b/api/category/index.php
@@ -18,7 +18,7 @@ $request_method = $_SERVER['REQUEST_METHOD'];
* @apiVersion 0.0.0
* @apiName GetCategory
* @apiGroup Category
- * @apiPermission none
+ * @apiPermission public
*
* @apiParam {Number} [id] The ID of the category. Omit for all categories.
*
@@ -40,7 +40,7 @@ $request_method = $_SERVER['REQUEST_METHOD'];
* "type": 0,
* "priority": 2,
* "manager": 0
- * }
+ * }
*/
if ($request_method == 'GET') {
if (isset($_GET['id'])) {
diff --git a/api/common_api_doc.php b/api/common_api_doc.php
new file mode 100644
index 00000000..6212e53a
--- /dev/null
+++ b/api/common_api_doc.php
@@ -0,0 +1,18 @@
+