Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents

Ініціація перенесення обʼєкта

На Prozorro.Sale надходить письмовий запит на перенесення обʼєкта з одного Майданчика на інший Майданчик. (Технічно - просять змінити owner-а)

(Ніяких змін в ініціації процесу переносу не відбувається!)

Частина Prozorro.Sale

В разі отримання звернення, адміністратор ЦБД виконує технічну команду по створеній на нього Jira завці.

Результатом виконання команди зміни owner-а, в обʼєкті в _meta{} додається поле ownerTransfer зі значенням owner name майданчика, на який переносять обʼєкт.

...

Приклад обʼєкта, для якого виконали команду і цей обʼєкт готовий для передачі: https://procedure-epicdev.prozorro.sale/api/procedures/682462182cf8333bd1c00c64680f67d2196e27e271cc2c2a

Image RemovedImage Added

Частина Майданчика-реціпієнта

Anchor
POST_req
POST_req
API -запит на отримання токену

Ознакою того, що на Майданчик хочуть перенести обʼєкт є наявність в обʼєкті поля _meta{}.ownerTransfer в якому записано значення owner name майданчика-реціпієнта.

...

Code Block
"_meta": {
     "systemDateModified": "2025-05-15T06:39:31.450000Z",
     "ownerTransfer": "test_broker_1filip.kuzmin@prozorro.sale"
}

ВАЖЛИВО! Токен до обʼєкта процедури на цьому етапі не змінюється! Навіть при наявності в обʼєкті поля _meta.ownerTransfer попередній owner обʼєкта може виконувати дії над обʼєктом використовуючи свій токен.


Щоб отримати токен до обʼєкту, Майданчику-реціпієнту необхідно виконати запит в залежності від типу обʼєкта (запити будуть в Swagger):

Тип обʼєктаБізнес назваПриклад запиту
ProcedureПроцедура

POST /api/procedures/{{_id}}/transfer

Header Authorization: {{broker_token}

AssetОбʼєкт малої приватизації

POST /api/registry/assets/{{_id}}/transfer

Header Authorization: {{broker_token}

Large AssetОбʼєкт великої приватизації

POST /api/registry/large_assets/{{_id}}/transfer

Header Authorization: {{broker_token}

ExecutionВиконання умов малої приватизації

POST /api/registry/executions/{{_id}}/transfer

Header Authorization: {{broker_token}

Large ExecutionВиконання умов великої приватизації

POST /api/registry/large_executions/{{_id}}/transfer

Header Authorization: {{broker_token}

RegistryОбʼєкт реєстру оренди

POST /api/registry/objects/{{_id}}/transfer

Header Authorization: {{broker_token}

ActionДія над обʼєктом оренди

POST /api/registry/actions/{{_id}}/transfer

Header Authorization: {{broker_token}

Lease_requestЗапит на обʼєкт оренди

POST /api/registry/lease_requests/{{_id}}/transfer

Header Authorization: {{broker_token}

AnnouncementІнформаційне повідомлення малої приватизації

POST /api/jobber/announcements/jas/{{_id}}/transfer

Header Authorization: {{broker_token}

Large AnnouncementІнформаційне повідомлення великої приватизації

POST /api/jobber/announcements/jal/{{_id}}/transfer

Header Authorization: {{broker_token}

RedemptionПриватизація шляхом викупу малої приватизації

POST /api/jobber/redemption/jrs/{{_id}}/transfer

Header Authorization: {{broker_token}

Large RedemptionПриватизація шляхом викупу великої приватизації

POST /api/jobber/redemption/jrl/{{_id}}/transfer

Header Authorization: {{broker_token

HTTP методPOSTHeader

Authorization

{{broker_token}

}

Приклад запиту:

POST https://{host}/api/procedures/{object_id}/transfer
Authorization: {{broker_token}}

...

Expand
titlecURL

curl --location --request POST 'https://procedure-dev.prozorro.sale/api/procedures/67c7fb9b150280fe7b87f69b/transfer' \
--header 'Authorization: *******-*****-****-****-*******'

params:

host -


object_id - технічний ідентифікатор обʼєкта "_id". Приклад: 67f3889fe820f82002c07a04 67c7fb9b150280fe7b87f69b


Відповідь 200 ОК:

Code Block
languageyml
{
    "id": "67f3889fe820f82002c07a0467c7fb9b150280fe7b87f69b",
    "acc_token": "17e86edba4082115-18d8ae38-4d43409f-95119093-2c49146cbe94bcacdb701cb5"
}

Запит обовʼязково має бути аутентифікований (відпрацьовує тільки з використанням унікального токену Майданчика)


ВАЖЛИВО! Результатом успішного виконання запиту має бути видача токена новому власнику, а також прибирання із обʼєкта, для якого виконувався переніс, полів _id, objType та ownerTo в масиві transfer[]поля ownerTransfer

Тобто, поля в transfer[] відображаються поле ownerTransfer відображається з моменту успішного виконання команди в Адмінці і до моменту успішного GET POST запиту майданчиком-реціпієнтом.

...

Якщо обʼєкт ще не передано (відсутнє поле metaInfo. ownerTransfer), то повертаємо 403

...

Code Block
{
    "message": "Not found procedure object with id 67f38f3de820f002c07a0644"
}

В системі має відбуватись логування дій отримання токену Майданчиком-реціпієнтом.

Команда може виконуватись повторно для обʼєкта, навіть якщо в 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 Вашого Майданчика?"
      • Вказано.
        • Обʼєкт хочуть перенести з Вашого Майданчика на інший. Можна відвʼязувати обʼєкт від кабінету.
      • Не Вказано.
        • Не виконувати ніяких дій. Ви не являєтесь власником обʼєкта і на Вас його не переносять.