Жизненный цикл заказа

Каждый заказ проходит одни и те же статусы. Переходы проверяет сервер, а каждое изменение записывается в журнал заказа.

DRAFT→OPEN→ASSIGNED→IN_PROGRESS→COMPLETION_PENDING→COMPLETED

Дополнительные конечные статусы: CANCELLED и DISPUTED.

Статусы

СтатусЗначениеКто переводит дальше
DRAFTЧерновик, виден только авторуЗаказчик публикует
OPENОткрыт для откликовЗаказчик назначает исполнителя
ASSIGNEDИсполнитель выбран, контакты открыты, цена зафиксированаИсполнитель отмечает начало
IN_PROGRESSРабота идётИсполнитель сообщает о завершении
COMPLETION_PENDINGЖдём подтверждения заказчикаЗаказчик подтверждает или открывает спор. Через 72 часа без ответа заказ закрывается сам
COMPLETEDЗавершён, можно оставить отзывы—
CANCELLEDОтменён одной из сторон до завершения—
DISPUTEDОткрыт спор, решает модераторМодератор

Прямое приглашение

Приглашение из каталога создаёт заказ сразу в статусе OPEN с одним приглашённым. Когда рабочий принимает приглашение, заказ переходит в ASSIGNED.

Смена статуса через API

POST /v1/jobs/job_51ad/transitions
Idempotency-Key: 0b8e...
Content-Type: application/json

{ "to": "COMPLETION_PENDING", "comment": "Плитка уложена, затирка готова" }

Если переход недопустим (например, заказ уже отменён), сервер вернёт 409 с кодом invalid_transition. Одновременные запросы, например две попытки назначить разных исполнителей, сервер обрабатывает так, что выигрывает только один.

Журнал заказа

Записываются все переходы, отмены с причиной, изменения согласованной цены и момент раскрытия контактов. Журнал используется при разборе споров.

Отзывы

После COMPLETED обе стороны могут оставить отзыв. Отзывы публикуются, когда ответили оба, или через 7 дней.