...
На Prozorro.Sale надходить письмовий запит на перенесення обʼєкта з одного Майданчика на інший Майданчик.
(Ніяких змін в ініціації процесу переносу не відбувається!)
Частина Prozorro.Sale
В разі отримання звернення, адміністратор ЦБД виконує технічну команду по створеній на нього Jira завці.
Результатом виконання команди зміни owner-а, в обʼєкті в _meta{} додається поле ownerTransfer зі значенням owner name майданчика, на який переносять обʼєкт.
...
Частина Майданчика-реціпієнта
| Anchor | ||||
|---|---|---|---|---|
|
Ознакою того, що на Майданчик хочуть перенести обʼєкт є наявність в обʼєкті поля _meta{}.ownerTransfer в якому записано значення owner name майданчика-реціпієнта.
...
| Code Block |
|---|
"_meta": {
"systemDateModified": "2025-05-15T06:39:31.450000Z",
"ownerTransfer": "test_broker_1"
} |
ВАЖЛИВО! Токен до обʼєкта процедури на цьому етапі не змінюється! Навіть при наявності в обʼєкті поля _meta.ownerTransfer попередній owner обʼєкта може виконувати дії над обʼєктом використовуючи свій токен.
Щоб отримати токен до обʼєкту, Майданчику-реціпієнту необхідно виконати запит
| HTTP метод | POST | |
| Header | Authorization | {{broker_token}} |
Приклад запиту:
POST https://{host}/api/procedures/{object_id}/transfer
Authorization: {{broker_token}}
...
| Expand | ||
|---|---|---|
| ||
curl --location --request POST 'https://procedure-dev.prozorro.sale/api/procedures/67c7fb9b150280fe7b87f69b/transfer' \ |
params:
host -
| Назва | host |
|---|---|
| Dev | |
| Sandbox | |
| Prod | https://procedure.prozorro.sale |
object_id - технічний ідентифікатор обʼєкта "_id". Приклад: 67f3889fe820f82002c07a04 67c7fb9b150280fe7b87f69b
Відповідь 200 ОК:
| Code Block | ||
|---|---|---|
| ||
{
"id": "67f3889fe820f82002c07a0467c7fb9b150280fe7b87f69b",
"acc_token": "17e86edba4082115-18d8ae38-4d43409f-95119093-2c49146cbe94bcacdb701cb5"
} |
Запит обовʼязково має бути аутентифікований (відпрацьовує тільки з використанням унікального токену Майданчика)
ВАЖЛИВО! Результатом успішного виконання запиту має бути видача токена новому власнику, а також прибирання із обʼєкта, для якого виконувався переніс, полів _id, objType та ownerTo в масиві transfer[]поля ownerTransfer
Тобто, поля в transfer[] відображаються поле ownerTransfer відображається з моменту успішного виконання команди в Адмінці і до моменту успішного GET POST запиту майданчиком-реціпієнтом.
...
Якщо обʼєкт ще не передано (відсутнє поле metaInfo. ownerTransfer), то повертаємо 403
...
В системі має відбуватись логування дій отримання токену Майданчиком-реціпієнтом.
Команда може виконуватись повторно для обʼєкта, навіть якщо в meta{} вже присутнє поле "ownerTransfer". В такому випадку значення поля "ownerTransfer" заміняється на нове.
Видалити поле "ownerTransfer" неможливо, якщо його вже додали командою.
Можна замінити значення в полі "ownerTransfer" повторним виконанням команди Change procedure owner commands.
Поле "ownerTransfer" має зникнути після отримання Майданчиком-реціпієнтом токену. Тобто, "ownerTransfer" відображається з моменту успішного виконання команди і до моменту успішного запиту майданчиком-реціпієнтом.
ВАЖЛИВО! Токен до обʼєкта процедури на цьому етапі не змінюється! Навіть при наявності в обʼєкті поля _meta.ownerTransfer попередній owner обʼєкта може виконувати дії над обʼєктом використовуючи свій токен.
Перевірити успішність виконання команди, зокрема, можна переглянувши JSON обʼєкта.
Результатом виконання команди в Адмінці є наявність в обʼєкті поля _meta{}.ownerTransfer в якому має бути записано owner name майданчика на який переносили обʼєкт.
Логіка роботи з обʼєктом і отримання токену Майданчиком реціпієнтом
В результаті виконання команди в обʼєкті для якого виконували команду має бути присутнє поле ownerTransfer в _meta
На цьому етапі Токен до процедури не змінився, Майданчик-донор може виконувати дії над Процедурою використовуючи свій токен.
...
Як можна налаштувати логіку на Майданчику
Коли в mirror прилітає обʼєкт, то необхідно дивитись на наявність поля ownerTransfer в _meta{}
Якщо в обʼєкті присутнє поле ownerTransfer, то перевірити чи вказано в цьому поліownerName Вашого Майданчика?
- Вказано.
- Необхідно забрати обʼєкт виконавши POST запит описаний вище (можна автоматизувати, можна викликати запит вручну. Отримати токен і записати в БД)
- Якому саме користувачу Вашого Майданчика належить обʼєкт можна спробувати дізнатись порівнявши ЄДРПОУ\ІПН із поля sellingEntity.identifier.id з реєстраційними даними на Майданчику. Має бути користувач з таким ЄДРПОУ, йому і привʼязати обʼєкт (ці дії за межами Prozorro.Sale і приклад описано теоретичний)
- НЕ вказно
- Необхідно перевірити "Чи в полі owner вказано ownerName Вашого Майданчика?"
- Вказано.
- Обʼєкт хочуть перенести з Вашого Майданчика на інший. Можна відвʼязувати обʼєкт від кабінету.
- Не Вказано.
- Не виконувати ніяких дій. Ви не являєтесь власником обʼєкта і на Вас його не переносять.
- Вказано.
- Необхідно перевірити "Чи в полі owner вказано ownerName Вашого Майданчика?"