В разі виникнення необхідності перенести обʼєкт ЦБД з одного Майданчика на інший, на Prozorro.Sale надходить пиьсмове звернення.

В процесі виконання операції переносу обʼєкта, адміністратор ЦБД виконує команду.

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

nametypemandatory
ownerTransferstringfalse

Дане поле заповнюється значенням, яке вказав виконавець заявки в Адмінці в полі Owner

Приклад структури _meta{} з масивом transfer[]:


"_meta": {
    "transfer": [
        {
            "_id": "63bc1c8da660d45afc86cc30",
            "objType": "procedure",
            "ownerTo": "test_broker_1"
        }
    ],
    "systemDateModified": "2025-04-09T18:00:03.751000Z"
}

де,

_id - технічний ідентифікатор обʼєкта, для якого змінюють owner-а. Наприклад, _id процедури або біда

objType - тип обʼєкта, для якого змінюють owner. Може приймати одне із значень:

procedure
bid
asset
largeAsset
execution
largeExecution
registry
lease_request
action
announcement
largeAnnouncement
redemption
largeRedemption

ownerTo - це owner name майданчика, на який переносять обʼєкт (майданчик-реціпієнт)


Команда має виконуватись повторно для обʼєкта, навіть якщо в transfer[] вже присутній _id цього обʼєкта. В такому випадку значення поля ownerTo заміняється на нове.

Видалити обʼєкт із масива transfer[] неможливо, якщо його вже додали командою.

Можна замінити значення в полях обʼєкта в масиві transfer[] повторним виконанням команди Change procedure owner commands.

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

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


Перевірити успішність виконання команди, зокрема, можна переглянувши JSON обʼєкта.

Після виконання команди в обʼєкті має бути масив transfer[] в якому буде обʼєкт з полем ownerTo, де має бути записано owner name майданчика на який переносили обʼєкт.

Особливості

в масиві transfer[] може бути декілька обʼєктів, якщо, наприклад, виконати дві команди в адмінці: на зміну owner-а для процедури та на зміну owner-а біда

            "_meta": {
                "transfer": [
                    {
                        "_id": "63bc1c8da660d45afc86cc30",
                        "objType": "procedure",
                        "ownerTo": "test_broker_1"
                    },
                    {
                        "_id": "554d604e4d8b4e5cbc43676ce5774dea",
                        "objType": "bid",
                        "ownerTo": "test_broker_2"
                    }
                ],
                "systemDateModified": "2025-04-09T18:00:03.751000Z"
            }

Логіка роботи з обʼєктом і отримання токену Майданчиком реціпієнтом

В результаті виконання команди в обʼєкті для якого виконували команду має бути присутній масив transfer[] в якому присутні поля _id, objType та ownerTo

Приклад

На цьому етапі Токен до процедури не змінився, Майданчик-донор може виконувати дії над Процедурою використовуючи свій токен.

Для фактичної зміни токена до процедури Майданчику-реціпієнту потрібно зробити виклик API-запиту

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

Необхідно розробити команду за допомогою якої Майданчик-реціпієнт отримує токен до обʼєкта, який на нього хочуть перенести.

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

Наприклад, якщо в Адмінці була виконана команда на переніс обʼєкта на Майданчик "test_broker_1", то в обʼєкті, який переносять буде:

"_meta": {
    "transfer": [
        {
            "_id": "63bc1c8da660d45afc86cc30",
            "objType": "procedure",
            "ownerTo": "test_broker_1"
        }
    ],
    "systemDateModified": "2025-04-09T18:00:03.751000Z"
}


Щоб отримати токен до обʼєкту, Майданчику-реціпієнту необхідно виконати запит

HTTP методGET
Header

Authorization

{{broker_token}}


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

GET {{host}}/api/transfer/{{object_id}}/getObjectToken


params:

host -

Dev

https://procedure-dev.prozorro.sale

Sandbox

https://procedure-sandbox.prozorro.sale

Prodhttps://procedure.prozorro.sale


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


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

{
    "id": "67f3889fe820f82002c07a04",
    "acc_token": "17e86edb-18d8-4d43-9511-2c49146cbe94"
}

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

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

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


Відповідь 403 Forbidden:

{
    "message": "Forbidden. You are not authorized to receive token to this object"
}

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


Відповідь 404 Not Found:

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

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