API osTicket

Общее описание

Все запросы к API osTicket http post. Ко всем передаются следующие http-заголовки:

X-API-Key - Ключ API-доступа к osticket

User-Login - Логин пользователя osTicket, от имени которого выполняется запрос. Должен быть правильным email.

User-Password - Пароль пользователя. Не используется для специальных API ключей, работающих совместно с авторизацией lk2.

Запрос должен содержать хотя бы один post-параметр. Если параметры по логике запроса не нужны, его следует вызывать с параметром-заглушкой.

{
	"param": 1
}

/api/tickets.json

Создает тикет.

{
  "success": true,
  "number":"219600",
  "is_working_now":false,
  "not_working_message":"График работы сервисного отдела ежедневно с 9:00 до 21:00. Мы ответим Вам в рабочие часы. Спасибо за обращение!"
}
{
	"success": true,
  	"number": "526252",
  	"id": 224336
}

Пример запроса:

{
  "subject":"777", 
  "message":"data:text/html;charset=utf-8,<p>Пробное сообщение</p>",
  "topicId":103,
  "returnJson": true,
  "attachments":[
    	{"logo-color.svg":"data:image/svg+xml;base64,..."},
        {"test.log":"data:text/x-log;base64,..."}
  ]
}

/api/tickets/get.json

Возвращает список тикетов пользователя, переданного в http-заголовке запроса

Все параметры не обязательны.

{
	"page":0,
    "size":10,
    "search":"878",
    "direction":"outbound",
  	"collaborator_visibility": true,
  	"org_visibility": true,
  	"unreaded_only": true,
    "subject": "171220-41656-1959"
  	"updated_from": "2022-08-08 23:08:09"
  	"number":"367871"
  	"ticket_id":"203300"
}

Пример возвращаемого значения:

{
	"success": true,
  	"recordsTotal":26,
	"tickets": [
    	{
        	"ticket_id":34901,
            "subject":"тестовый номер 777",
            "status_id":2,
            "status":"Проблема решена",
            "number":"651265",
            "isanswered":0,
            "state":"closed",
            "created":"2021-02-08 13:35:08",
            "message":"Пробное сообщение",
            "topic_id":103,
            "unreaded":false,
            "direction":"outbound",
            "reopenable":true,
          	"user_id": 10,
            "user_login": "test@mail.ru",
            "user_name": "Иван",
          	"updated": "2022-05-06 14:28:14"
        },

		{
        	"ticket_id":12514,
            "subject":"888-888",
            "status_id":3,
            "status":"Закрыт",
            "number":"840372",
            "isanswered":0,
            "state":"closed",
            "created":"2020-12-09 19:15:19",
            "message":"Тестовое сообщение",
            "topic_id":1,
            "unreaded":false,
            "direction":"outbound",
            "reopenable":false,
          	"user_id": 12,
            "user_login": "test2@mail.ru",
            "user_name": "Петр",
          	"updated": "2022-05-06 14:28:14"
        },
    ]
}

Если в заголовке передан логин пользователя, отсутствующий в osTicket запрос не завершается ошибкой а возвращает следующий ответ:

{
	"account_not_found": 1
}

Это можно использовать для авторегистрации пользователей при первом обращении к функционалу osTicket.

/api/tickets/thread.json

Возвращает цепочку переписки данного тикета

{
	"ticket_id":34937
}

Пример возвращаемого значения

 

{
  	"success": true,
	"messages": [
		{
          "id":1074256,
          "type":"M",
          "is_staff":false,
          "author":"Slava",
          "user_login":"slava-sh@yandex.ru",
          "created":"2023-03-14 23:34:02",
          "title":null,
          "message":"<p>Новая заявка<\/p>",
          "attachments":[
          	{
				"size": 26556,
				"url": "https://ticket.kak2c.ru/file.php?key=f-5x9e888ngsiuvsgeuy_ge59gczgnsu&expires=1612828800&signature=ae890af39b6ba9e4659ec5f221b7a4a4d24b5904&id=6866",
				"name": "baner-1.jpg"
			}
          ]
        },
      	{
          "id":1074257,
          "type":"R",
          "is_staff":true,
          "author":"admin notasoft",
          "user_login":"adm1@notasoft.ru",
          "created":"2023-03-14 23:54:33",
          "title":null,
          "message":"<p>Привет!<\/p>",
          "attachments":[]
      	}
	]
}

/api/tickets/getunreaded.json

Возвращает количество непрочитанных пользователем сообщений. Учитываются только тикеты владелец которого данный пользователь. Не учитываются тикеты других пользователей организации и те в которых данный пользователь соавтор. Пример возвращаемого результата:

{
  	"success": true,
	"unreadedCount": 2
}

 

/api/tickets/message.json

Отправка сообщения в ветку тикета (ответа на тикет)

{
	"attachments": [
		{
			"p-14334.jpg": "data:image/jpeg;base64,..."
		}
	],
	"is_resolved": true,
	"message": "data:text/html;charset=utf-8,<p>Ответ на сообщение</p>",
	"ticket_id": 34937
}

Ответ:

{
	"success": true,
    "message_id":1074273
}

/api/tickets/unreaded.json

Помечает тикет как прочитанный или непрочитанный:

{
	"ticket_id": 34960,
	"value": false
}

Возвращает

{
	"success": true
}

/api/tickets/gettopics.json

Возвращает справочник категорий и тем тикетов

[
    {
        "value": 2,
        "label": "Общие вопросы",
        "fields": [],
        "order": "1",
        "isMassSending": false,
        "children": [
            {
                "value": 12,
                "label": "Возможности Кактуса",
                "fields": [],
                "order": 1000000,
                "isMassSending": false
            },
            {
                "value": 131,
                "label": "Делопроизводство",
                "fields": [],
                "order": 1000000,
                "isMassSending": false
            },
            {
                "value": 16,
                "label": "Возможности личного кабинета",
                "fields": [],
                "order": 1000000,
                "isMassSending": false
            },
            {
                "value": 17,
                "label": "Доступная отчетность",
                "fields": [],
                "order": 1000000,
                "isMassSending": false
            },
            {
                "value": 19,
                "label": "Как вызвать курьера?",
                "fields": [],
                "order": 1000000,
                "isMassSending": false
            },
            {
                "value": 14,
                "label": "Тарифы и условия",
                "fields": [],
                "order": 1000000,
                "isMassSending": false
            },
            {
                "value": 13,
                "label": "Услуги и их стоимость",
                "fields": [],
                "order": 1000000,
                "isMassSending": false
            }
        ]
    },
    {
        "value": 1,
        "label": "Старт работы",
        "fields": [],
        "order": "2",
        "isMassSending": false,
        "children": [
            {
                "value": 23,
                "label": "КП Кактус.Доставка",
                "fields": [
                    {
                        "value": "dogovor",
                        "label": "Номер договора клиента",
                        "note_field": "номер_договора_клиента",
                        "moderatory": false
                    },
                    {
                        "value": "company",
                        "label": "Юрлицо",
                        "note_field": "юрлицо",
                        "moderatory": false
                    }
                ],
                "order": "1",
                "isMassSending": false
            },
            {
                "value": 20,
                "label": "КП Кактус.Фулфилмент",
                "fields": [
                    {
                        "value": "dogovor",
                        "label": "Номер договора клиента",
                        "note_field": "номер_договора_клиента",
                        "moderatory": false
                    },
                    {
                        "value": "company",
                        "label": "Юрлицо",
                        "note_field": "юрлицо",
                        "moderatory": false
                    }
                ],
                "order": "2",
                "isMassSending": false
            },
            {
                "value": 24,
                "label": "Условия договора",
                "fields": [
                    {
                        "value": "dogovor",
                        "label": "Номер договора клиента",
                        "note_field": "номер_договора_клиента",
                        "moderatory": false
                    },
                    {
                        "value": "company",
                        "label": "Юрлицо",
                        "note_field": "юрлицо",
                        "moderatory": false
                    }
                ],
                "order": "3",
                "isMassSending": false
            },
            {
                "value": 25,
                "label": "Доп условия",
                "fields": [
                    {
                        "value": "dogovor",
                        "label": "Номер договора клиента",
                        "note_field": "номер_договора_клиента",
                        "moderatory": false
                    },
                    {
                        "value": "company",
                        "label": "Юрлицо",
                        "note_field": "юрлицо",
                        "moderatory": false
                    }
                ],
                "order": "4",
                "isMassSending": false
            },
            {
                "value": 118,
                "label": "Техниче\u0441кие вопросы",
                "fields": [],
                "order": "5",
                "isMassSending": false
            },
            {
                "value": 26,
                "label": "Другое",
                "fields": [
                    {
                        "value": "dogovor",
                        "label": "Номер договора клиента",
                        "note_field": "номер_договора_клиента",
                        "moderatory": false
                    },
                    {
                        "value": "company",
                        "label": "Юрлицо",
                        "note_field": "юрлицо",
                        "moderatory": false
                    }
                ],
                "order": "6",
                "isMassSending": false
            }
        ]
    },
  
  ...
]

/api/tickets/threads.json

Возвращает цепочку переписки нескольких тикетов

{
    "updated_from": "2023-01-01 00:00:00",
    "ticket_ids":["203296","195327"]
}

Пример возвращаемого значения, содержимое массива messages для каждого тикета аналогично одноименному массиву, описанному здесь 

{
    "success": true,
  	"tickets":[
        {
            "ticket_id":203296,
            "messages":[
                {
                    "id":1074256,
                    "type":"M",
                    "is_staff":false,
                    "author":"Slava",
                    "created":"2023-03-14 23:34:02",
                    "title":null,
                    "message":"<p>Новая заявка</p>",
                    "attachments":[]
                },
                {
                    "id":1074257,
                    "type":"R",
                    "is_staff":true,
                    "author":"admin notasoft",
                    "created":"2023-03-14 23:54:33",
                    "title":null,
                    "message":"<p>Привет!</p>",
                    "attachments":[]
                }
            ]
        },
        {
            "ticket_id":203297,
            "messages": [
                {
                    "id":1074260,
                    "type":"M",
                    "is_staff":false,
                    "author":"Slava",
                    "created":"2023-03-21 01:43:53",
                    "title":"Другой вопрос",
                    "message":"<p>Проверка статусов</p>",
                    "attachments":[]
                }
            ]
        }
    ]
}