Versions Compared

Key

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

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

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

Частина Prozorro.Sale

...

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

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

...

...

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

Image Removed

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

Code Block
            "_meta":

...

де,

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

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

...

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-а біда

...

 {
                "ownerTransfer": "filip.kuzmin@prozorro.sale"
                "systemDateModified": "2025-04-09T18:00:03.751000Z"

...


            }

Приклад обʼєкта, для якого виконали команду: https://procedure-epic.prozorro.sale/api/procedures/682462182cf8333bd1c00c64

Image Added

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

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

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

Приклад

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

...

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

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

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

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

Code Block
"_meta":

...

 {
     "systemDateModified": "2025-05-15T06:39:31.450000Z",
     "ownerTransfer": "test_broker_1"

...


}


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

GET
HTTP методPOST
Header

Authorization

{{broker_token}}


Приклад запиту:GET {{host}

POST https://{host}/api/

...

procedures/{

...

object_id}/transfer
Authorization: {{broker_token}

...

}


Приклад сURL

Expand
titlecURL

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

params:

host  -


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


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

...

Code Block
languageyml
{
    "id":

...

 "67f3889fe820f82002c07a04",

...


    "acc_token":

...

 "17e86edb-18d8-4d43-9511-2c49146cbe94"

...


}

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

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

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


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

...

Code Block
{
    "message":

...

 "Forbidden. You are not authorized to receive token to this object"

...


}

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


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

...

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

Приклад

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

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