==== Примеры JSON для обмена данными между системами ====
=== Пример OrderTicket ===
Данный JSON должен формироваться посредством вызова API из нескольких разных источников.
#Full json order example for copy and paste
{
"order_synced": 1, #[POST] - заявка из синхронизируемой части
"ticket": 123,
"status": 111,
"priority": 1,
"title": "123",
"note": "123",
"due_date": 2023-05-15T17:16:22.955601Z,
"id_metaservice": 1,
"is_global": false,
"is_visible": false,
"service": 1,
"service_type": 1,
"status_changed_date": "2023-05-15T17:16:22.955601Z",
"time_placed": "2023-05-15T16:40:32.179777Z",
"time_start": "2023-05-15T16:40:32.179777Z",
"time_start_predicted": "2023-05-15T16:40:32.179777Z",
"time_finish_predicted": "2023-05-15T16:40:32.179777Z",
"time_start_real": "2023-05-15T16:40:32.179777Z",
"time_finish_real": "2023-05-15T16:40:32.179777Z",
"order_place_type": "address",
"order_place_start": "р-н Беговой",
"order_place_start_gps": "55.751941, 37.607513",
"order_place_start_sector": 4,
"order_place_start_real": "р-н Беговой",
"order_place_start_real_gps": "55.751941, 37.607513",
"order_place_finish_predicted": "р-н Мещанский",
"order_place_finish_predicted_gps": "55.751941, 37.607513",
"order_place_finish_sector": 4,
"order_place_finish_real": "р-н Мещанский",
"order_place_finish_real_gps": "55.751941, 37.607513",
"predicted_price": 1000,
"real_price": 1001,
"payment_transaction_id": 1,
"rating_id": 1,
"provider": 1,
"provider_screen_name": "Vasya Ispolnitelev",
"receiver": 1,
"receiver_screen_name": "Marfa Clientovna",
"client_id": 1,
"client_screen_name": "Fedor Client",
"resource_id": 1,
"attempts": null,
"asap": true
}
=== Вариант с комментариями источников для получения данных ===
[POST]/openlocal/api/orderslocal/ - данные которые будут заданы при пост запросе
[PUT]/openlocal/api/orderslocal/id/ - данные которые буду изменены при пут запросе
{
"order_synced": 1, #[POST] - заявка из синхронизируемой части
"ticket": 123, #id из tickets
"status": 111, #[PUT] status из tickets
"priority": 1, #[PUT] это берем из tickets, по идее можно будет повышать приоритет для привлечения внимания техподдержки
"title": "123", #[PUT] это берем из tickets
"note": "123", #[PUT] это берем из tickets
"due_date": 2023-05-15T17:16:22.955601Z, #[PUT] это берем из tickets или из api сервиса - должно совпадать это значение - по сути это крайний срок жизни заказа
"id_metaservice": 1, #[PUT] это из api сервиса, где хранится заказ
"is_global": false, #[PUT] это из api сервиса, где хранится заказ
"is_visible": false,#[PUT] это из api сервиса, где хранится заказ
"service": 1, #[PUT] это из api сервиса, где хранится заказ
"service_type": 1, #[PUT] это из api сервиса, где хранится заказ
"status_changed_date": "2023-05-15T17:16:22.955601Z", #[PUT] это из tickets, для нового заказа оно эквивалентно time_placed
"time_placed": "2023-05-15T16:40:32.179777Z", #[PUT] это из api сервиса, где хранится заказ, должно совпадать (хотя бы частично, если в tickets меньше информации хранится) с "created_date" в tickets
"time_start": "2023-05-15T16:40:32.179777Z", #[PUT] это и все ниже - из api сервиса, где хранится заказ, если не написано иное
"time_start_predicted": "2023-05-15T16:40:32.179777Z", #[PUT]
"time_finish_predicted": "2023-05-15T16:40:32.179777Z", #[PUT]
"time_start_real": "2023-05-15T16:40:32.179777Z", #[PUT]
"time_finish_real": "2023-05-15T16:40:32.179777Z", #[PUT]
"order_place_type": "address", #[POST][PUT] может быть address, coords или both
"order_place_start": "р-н Беговой", #[POST][PUT] вычисляется на языке местности 1 раз на основе координат, если адрес не задавался
"order_place_start_gps": "55.751941, 37.607513", #[POST][PUT] вычисляются на основе адреса, если координаты не задавались
"order_place_start_sector": 4, #[POST][PUT] вычисляется 1 раз на основе координат
"order_place_start_real": "р-н Беговой", #[POST][PUT] вычисляется на основе координат 1 раз по факту заполнения
"order_place_start_real_gps": "55.751941, 37.607513", #[POST][PUT] фиксируется приложением в момент начала заказа
"order_place_finish_predicted": "р-н Мещанский", #[POST][PUT] вычисляется 1 раз на основе координат или сектора, зависит от логики сервиса
"order_place_finish_predicted_gps": "55.751941, 37.607513", #[POST][PUT]
"order_place_finish_sector": 4, #[POST][PUT]
"order_place_finish_real": "р-н Мещанский", #[POST][PUT] вычисляется 1 раз на основе координат
"order_place_finish_real_gps": "55.751941, 37.607513", #[POST][PUT] фиксируется приложением в момент завершения заказа
"predicted_price": 1000, #[PUT] рассчитывается на этапе регистрации заказа и хранимое
"real_price": 1001, #[PUT] обновляется приложением, отправляется на сервис при необходимости в логике обработчиков
"payment_transaction_id": 1, #[POST][PUT]
"rating_id": 1, #[POST][PUT]
"provider": 1, #[PUT] это из api сервиса, должно быть эквивалентно "assigned_to" в тикетах (если функционал позволяет назначить тикет на того, кто не в листе, если не позволяет - то assigned_to должно быть отдельно и может быть null либо назначенный сотрудник для обработки)
"provider_screen_name": "Vasya Worker",
"receiver": 1, #[PUT]
"receiver_screen_name": "Marfa Wife",
"client_id": 1, #[PUT] это из api сервиса, где хранится заказ - но должно совпадать с "created_by" в tickets
"client_screen_name": "Fedor Client",
"resource_id": 1, #[POST][PUT] это из api сервиса, где хранится заказ
"attempts": 1, #[POST][PUT] это ниоткуда, должно добавляться пустым, обработчики с этим могут работать по необходимости
"asap": true #информация о том, срочный ли заказ
}
=== Минимально необходимая информация в JSON с примером данных ===
#minimal acceptable as order json example
{
"ticket": 123,
"status": 111,
"priority": 1,
"title": "123",
"note": "123",
"due_date": 2023-05-15T17:16:22.955601Z,
"id_metaservice": 1,
"is_global": false,
"is_visible": false,
"service": 1,
"service_type": 1,
"status_changed_date": "2023-05-15T17:16:22.955601Z",
"time_placed": "2023-05-15T16:40:32.179777Z",
"time_start": null,
"time_start_predicted": null,
"time_finish_predicted": null,
"time_start_real": null,
"time_finish_real": null,
"order_place_start": null,
"order_place_start_gps": null,
"order_place_start_sector": null,
"order_place_start_real": null,
"order_place_start_real_gps": null,
"order_place_finish_predicted": null,
"order_place_finish_predicted_gps": null,
"order_place_finish_sector": null,
"order_place_finish_real": null,
"order_place_finish_real_gps": null,
"predicted_price": null,
"real_price": null,
"payment_transaction_id": null,
"rating_id": null,
"provider": null,
"provider_screen_name": null,
"receiver": null,
"receiver_screen_name": null,
"client_id": null,
"client_screen_name": null,
"resource_id": null,
"attempts": null,
"asap": true
}
=== Пример JSON обычной заявки в тикетах ===
#ticket json example
{
"id": 2,
"status": 111,
"created_date": "2023-05-15",
"status_changed_date": "2023-05-15T17:16:22.955601Z",
"priority": 0,
"title": "Test",
"note": "{\n \n \"ticket\": 1,\n \"state\": 1,\n \"id_metaservice\": 1,\n \"is_global\": false,\n \"is_visible\": false,\n \"service\": 1,\n \"service_type\": 1,\n\n \"time_placed\": 1}"
"due_date": "2023-05-15",
"task_list": 10,
"created_by": 1,
"type": 1,
"assigned_to": 1
}
=== Пример минимального необходимого набора данных Ticket ===
#ticket minimal example
{
"id": 2,
"status": 111,
"created_date": "2023-05-15",
"status_changed_date": "2023-05-15T17:16:22.955601Z",
"priority": 0,
"title": null,
"note": null,
"due_date": null,
"task_list": 10,
"created_by": 1,
"type": 1,
"assigned_to": null
}