Следующая версия | Предыдущая версия |
open:tech:dev:sharix_open_-_primery_json [2023/05/16 15:40] – создано sharixadmin | open:tech:dev:sharix_open_-_primery_json [2023/06/21 23:37] (текущий) – sharixadmin |
---|
=== Примеры JSON для обмена данными между системами === | ==== Примеры JSON для обмена данными между системами ==== |
| |
| |
| === Пример OrderTicket === |
| |
| Данный JSON должен формироваться посредством вызова API из нескольких разных источников. |
| |
<code> | <code> |
#Full json order example | #Full json order example for copy and paste |
| |
{ | { |
| "order_synced": 1, #[POST] - заявка из синхронизируемой части |
| |
"ticket": 123, | "ticket": 123, |
"state": 111, | "status": 111, |
| |
| "priority": 1, |
| "title": "123", |
| "note": "123", |
| "due_date": 2023-05-15T17:16:22.955601Z, |
"id_metaservice": 1, | "id_metaservice": 1, |
"is_global": false, | "is_global": false, |
"service_type": 1, | "service_type": 1, |
| |
| "status_changed_date": "2023-05-15T17:16:22.955601Z", |
"time_placed": "2023-05-15T16:40:32.179777Z", | "time_placed": "2023-05-15T16:40:32.179777Z", |
"time_start": "2023-05-15T16:40:32.179777Z", | "time_start": "2023-05-15T16:40:32.179777Z", |
"time_finish_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": "р-н Беговой", |
"order_place_start_gps": "55.751941, 37.607513", | "order_place_start_gps": "55.751941, 37.607513", |
| "order_place_start_sector": 4, |
"order_place_start_real": "р-н Беговой", | "order_place_start_real": "р-н Беговой", |
"order_place_start_real_gps": "55.751941, 37.607513", | "order_place_start_real_gps": "55.751941, 37.607513", |
"order_place_finish_predicted": "р-н Мещанский", | "order_place_finish_predicted": "р-н Мещанский", |
"order_place_finish_predicted_gps": "55.751941, 37.607513", | "order_place_finish_predicted_gps": "55.751941, 37.607513", |
| "order_place_finish_sector": 4, |
"order_place_finish_real": "р-н Мещанский", | "order_place_finish_real": "р-н Мещанский", |
"order_place_finish_real_gps": "55.751941, 37.607513", | "order_place_finish_real_gps": "55.751941, 37.607513", |
"receiver_screen_name": "Marfa Clientovna", | "receiver_screen_name": "Marfa Clientovna", |
"client_id": 1, | "client_id": 1, |
"resource_id": 1 | "client_screen_name": "Fedor Client", |
| "resource_id": 1, |
| "attempts": null, |
| "asap": true |
} | } |
| |
| </code> |
| |
| === Вариант с комментариями источников для получения данных === |
| <code> |
| [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 #информация о том, срочный ли заказ |
| } |
| |
| |
| </code> |
| |
| === Минимально необходимая информация в JSON с примером данных === |
| |
| <code> |
| |
#minimal acceptable as order json example | #minimal acceptable as order json example |
| |
{ | { |
"ticket": 123, | "ticket": 123, |
"state": 111, | "status": 111, |
"id_metaservice": 1, | |
"is_global": false, | "priority": 1, |
"is_visible": false, | "title": "123", |
"service": 1, | "note": "123", |
"service_type": 1, | "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_placed": "2023-05-15T16:40:32.179777Z", |
"time_start": null, | "time_start": null, |
"order_place_start": null, | "order_place_start": null, |
"order_place_start_gps": null, | "order_place_start_gps": null, |
| "order_place_start_sector": null, |
"order_place_start_real": null, | "order_place_start_real": null, |
"order_place_start_real_gps": null, | "order_place_start_real_gps": null, |
"order_place_finish_predicted": null, | "order_place_finish_predicted": null, |
"order_place_finish_predicted_gps": null, | "order_place_finish_predicted_gps": null, |
| "order_place_finish_sector": null, |
"order_place_finish_real": null, | "order_place_finish_real": null, |
"order_place_finish_real_gps": null, | "order_place_finish_real_gps": null, |
"receiver_screen_name": null, | "receiver_screen_name": null, |
"client_id": null, | "client_id": null, |
"resource_id": null | "client_screen_name": null, |
| "resource_id": null, |
| |
| |
| "attempts": null, |
| "asap": true |
} | } |
| |
| </code> |
| |
| === Пример JSON обычной заявки в тикетах === |
| |
| <code> |
| |
#ticket json example | #ticket json example |
} | } |
| |
| </code> |
| |
| === Пример минимального необходимого набора данных Ticket === |
| |
| <code> |
| |
#ticket minimal example | #ticket minimal example |