Ticket Article

By Ticket

Required permission:

  • ticket.agent (access to related ticket)
  • ticket.customer (access to related ticket with customer_id ** current_user.id || organization_id ** current_user.organization_id)

Request:

GET /api/v1/ticket_articles/by_ticket/{ticketId}

Response:

Status: 200 Ok

[
 {
   "id": 3,
   "ticket_id": 3,
   "from": "Bob Smith",
   "to": "",
   "cc": "",
   "subject": "some subject",
   "body": "huhuhuu<br>huhuhuu<br>huhuhuu<br><br>",
   "content_type": "text/html",
   "type": "note",
   "internal": false,
   "time_unit": "12.0"
   ...
   "updated_at": "2016-08-15T07:55:42.119Z",
   "created_at": "2016-08-15T07:55:42.119Z"
},
{
   "id": 4,
   "ticket_id": 3,
   "from": "Bob Smith",
   "to": "",
   "cc": "",
   "subject": "some subject",
   "body": "huhuhuu<br>huhuhuu<br>huhuhuu<br><br>",
   "content_type": "text/html",
   "type": "note",
   "internal": false,
   "time_unit": "15.0"
   ...
   "updated_at": "2016-08-16T07:55:42.119Z",
   "created_at": "2016-08-16T07:55:42.119Z"
 },
]

Show

Required permission:

  • ticket.agent (access to related ticket)
  • ticket.customer (access to related ticket with customer_id ** current_user.id || organization_id ** current_user.organization_id)

Request:

GET /api/v1/ticket_articles/{id}

Response:

Status: 200 Ok

{
   "id": 3,
   "ticket_id": 3,
   "from": "Bob Smith",
   "to": "",
   "cc": "",
   "subject": "some subject",
   "body": "huhuhuu<br>huhuhuu<br>huhuhuu<br><br>",
   "content_type": "text/html",
   "type": "note",
   "internal": false,
   "time_unit": "12.0"
   "attachments": [
     {
       "id": 123,
       "filename": "some_file1.txt",
       "preferences": {
         "Mime-Type": "text/plain"
       }
     },
     {
       "id": 124,
       "filename": "some_file2.txt",
       "preferences": {
         "Mime-Type": "text/plain"
       }
     }
   ],
   ...
   "created_at": "2016-10-19T10:07:12.011Z",
   "updated_at": "2017-01-18T12:45:53.420Z"
}

Create

Required permission:

  • ticket.agent (access to related ticket)
  • ticket.customer (access to related ticket with customer_id ** current_user.id || organization_id ** current_user.organization_id)

Request:

POST /api/v1/ticket_articles

{
   "ticket_id": 3,
   "to": "",
   "cc": "",
   "subject": "some subject",
   "body": "huhuhuu<br>huhuhuu<br>huhuhuu<br><br>",
   "content_type": "text/html",
   "type": "note",
   "internal": false,
   "time_unit": "12"
}

Response:

Status: 201 Created

{
   "id": 3,
   "ticket_id": 3,
   "from": "Bob Smith",
   "to": "",
   "cc": "",
   "subject": "some subject",
   "body": "huhuhuu<br>huhuhuu<br>huhuhuu<br><br>",
   "content_type": "text/html",
   "type": "note",
   "internal": false,
   "time_unit": "12.0"
   ...
   "created_at": "2016-10-19T10:07:12.011Z",
   "updated_at": "2017-01-18T12:45:53.420Z"
}

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

Request:

POST /api/v1/ticket_articles

{
   "ticket_id": 3,
   "to": "",
   "cc": "",
   "subject": "some subject",
   "body": "huhuhuu<br>huhuhuu<br>huhuhuu<br><br>",
   "content_type": "text/html",
   "type": "note",
   "internal": false,
   "time_unit": "12",
   "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"
     }
   ]
}

Response:

Status: 201 Created

{
   "id": 3,
   "from": "Bob Smith",
   "to": "",
   "cc": "",
   "subject": "some subject",
   "body": "huhuhuu<br>huhuhuu<br>huhuhuu<br><br>",
   "content_type": "text/html",
   "type": "note",
   "internal": false,
   "time_unit": "12.0"
   "attachments": [
     {
       "id": 123,
       "filename": "some_file1.txt",
       "preferences": {
         "Mime-Type": "text/plain"
       }
     },
     {
       "id": 124,
       "filename": "some_file2.txt",
       "preferences": {
         "Mime-Type": "text/plain"
       }
     }
   ],
   ...
   "created_at": "2016-10-19T10:07:12.011Z",
   "updated_at": "2017-01-18T12:45:53.420Z"
}

To download attachments you need to call “GET /api/v1/ticket_attachment/#{ticket_id}/#{article_id}/#{id}”.

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

Request:

POST /api/v1/ticket_articles

{
   "ticket_id": 3,
   "to": "",
   "cc": "",
   "subject": "some subject",
   "body": "<b>some</b> message witn inline image <img src=\"data:image/jpeg;base64,ABCDEFG==\">"
   "content_type": "text/html",
   "type": "note",
   "internal": false,
   "time_unit": "12"
}

Response:

Status: 201 Created

{
   "id": 3,
   "ticket_id": 3,
   "from": "Bob Smith",
   "to": "",
   "cc": "",
   "subject": "some subject",
   "body": "huhuhuu<br>huhuhuu<br>huhuhuu<br><br>",
   "content_type": "text/html",
   "type": "note",
   "internal": false,
   "time_unit": "12.0"
   "attachments": [
     {
       "id": 123,
       "filename": "44.262871107@zammad.example.com",
       "preferences": {
         "Mime-Type": "image/jpeg",
         "Content-ID"=>"44.262871107@zammad.example.com",
         "Content-Disposition"=>"inline"
       }
     }
   ],
   ...
   "created_at": "2016-10-19T10:07:12.011Z",
   "updated_at": "2017-01-18T12:45:53.420Z"
}

To download attachments you need to call “GET /api/v1/ticket_attachment/#{ticket_id}/#{article_id}/#{id}”.

If you want to create a phone ticket on behalf for a specific customer, use origin_by_id:

Required permission:

  • ticket.agent (access to related ticket)

Request:

POST /api/v1/ticket_articles

{
   "ticket_id": 3,
   "origin_by_id": 5,
   "to": "",
   "cc": "",
   "subject": "some subject",
   "body": "<b>some</b> message witn inline image <img src=\"data:image/jpeg;base64,ABCDEFG==\">"
   "content_type": "text/html",
   "sender": "Customer",
   "type": "phone",
   "internal": false,
   "time_unit": "12"
}