Ticket

List

Required permission:

  • ticket.agent (access to all ticket in allocated groups)
  • ticket.customer (access to all ticket with customer_id ** current_user.id || organization_id ** current_user.organization_id)

Request:

GET /api/v1/tickets

Response:

Status: 200 Ok

[
 {
   "id": 123,
   "title": "Help me!",
   "group_id": 1,
   "state_id": 1,
   "priority_id": 2,
   "customer_id": 2,
   ...
   "note": "some note",
   "updated_at": "2016-08-16T07:55:42.119Z",
   "created_at": "2016-08-16T07:55:42.119Z"
 },
 {
   "id": 124,
   "title": "Just want to ask for support",
   "state_id": 2,
   "priority_id": 2,
   "customer_id": 2,
   ...
   "note": "some note",
   "updated_at": "2016-08-16T07:55:42.119Z",
   "created_at": "2016-08-16T07:55:42.119Z"
 },
]

Show

Required permission:

  • ticket.agent (access to all ticket in allocated groups)
  • ticket.customer (access to all ticket with customer_id ** current_user.id || organization_id ** current_user.organization_id)

Request:

GET /api/v1/tickets/{id}

Response:

Status: 200 Ok

{
 "id": 123,
 "title": "Help me!",
 "group_id": 1,
 "state_id": 1,
 "priority_id": 2,
 "customer_id": 2,
 ...
 "note": "some note",
 "updated_at": "2016-08-16T07:55:42.119Z",
 "created_at": "2016-08-16T07:55:42.119Z"
}

Create

Required permission:

  • ticket.agent (create in all allocated groups)
  • ticket.customer

Request:

POST /api/v1/tickets

{
 "title": "Help me!",
 "group": "Users",
 "customer": "email_of_existing_customer@example.com",
 "article": {
   "subject": "some subject",
   "body": "some message",
   "type": "note",
   "internal": false
 },
 ...
 "note": "some note"
}

Response:

Status: 201 Created

{
 "id": 123,
 "title": "Help me!",
 "group_id": 1,
 "state_id": 1,
 "priority_id": 2,
 "customer_id": 2,
 ...
 "note": "some note",
 "updated_at": "2016-08-16T07:55:42.119Z",
 "created_at": "2016-08-16T07:55:42.119Z"
}

For more article attributes have a look into “Ticket Article”.

If you want to include attachments of the first article, the payload looks like:

Request:

POST /api/v1/tickets

{
 "title": "Help me!",
 "group": "Users",
 "article": {
   "subject": "some subject",
   "body": "some message",
   "attachments": [
     {
       "filename": "some_file1.txt",
       "data": "content in base64",
       "mime-type": "text/plain"
     },
     {
       "filename": "some_file2.txt",
       "data": "content in base64",
       "mime-type": "text/plain"
     }
   ]
 },
 ...
 "note": "some note"
}

If you want to add inline images, just use data URIs in HTML markup:

Request:

POST /api/v1/tickets

{
 "title": "Help me!",
 "group": "Users",
 "article": {
   "content_type": "text/html",
   "subject": "some subject",
   "body": "<b>some</b> message witn inline image <img src=\"data:image/jpeg;base64,ABCDEFG==\">"
 },
 ...
 "note": "some note"
}

If you want to use or create an customer by email address at ticket creation, you can do with “guess:customer@example.com” in the customer_id attribute:

Request:

POST /api/v1/tickets

{
 "title": "Help me!",
 "group": "Users",
 "customer_id": "guess:customer@example.com",
 ...
 "note": "some note"
}

Update

Required permission:

  • ticket.agent (access to all ticket in allocated groups)
  • ticket.customer (access to all ticket with customer_id ** current_user.id || organization_id ** current_user.organization_id)

Request:

PUT /api/v1/tickets/{id}

{
 "id": 123,
 "title": "Help me!",
 "group": "Users",
 "state": "open",
 "priority": "3 high",
 "article": {
   "subject": "some subject of update",
   "body": "some message of update"
 },
 ...
}

Response:

Status: 200 Ok

{
 "id": 123,
 "title": "Help me!",
 "group_id": 1,
 "state_id": 1,
 "priority_id": 2,
 ...
 "note": "some note",
 "updated_at": "2016-08-16T07:55:42.119Z",
 "created_at": "2016-08-16T07:55:42.119Z"
}

If you want to include attachments of the article, the payload looks like:

Request:

PUT /api/v1/tickets/{id}

{
 "id": 123,
 "title": "Help me!",
 "group": "Users",
 "article": {
   "subject": "some subject",
   "body": "some message",
   "attachments": [
     {
       "filename": "some_file1.txt",
       "data": "content in base64",
       "mime-type": "text/plain"
     },
     {
       "filename": "some_file2.txt",
       "data": "content in base64",
       "mime-type": "text/plain"
     }
   ]
 },
 ...
 "note": "some note"
}

If you want to add inline images, just use data URIs in HTML markup:

Request:

PUT /api/v1/tickets/{id}

{
 "id": 123,
 "title": "Help me!",
 "group": "Users",
 "article": {
   "content_type": "text/html",
   "subject": "some subject",
   "body": "<b>some</b> message witn inline image <img src=\"data:image/jpeg;base64,ABCDEFG==\">"
 },
 ...
 "note": "some note"
}

Delete

Required permission:

  • admin

Request:

DELETE /api/v1/tickets/{id}

Response:

Status: 200 Ok

{}