Перейти к содержимому
Разделы

Партнёрские предзаказы

Получить партнёрский предзаказ

GET/external/preorders/orders/{orderId}

Возвращает разрешённое партнёру представление предзаказа: исполнение, депозит, позиции и ревизию без внутренних данных.

Авторизация

Authorization: Bearer <HALLIFY_PREORDER_PARTNER_KEY>

Ключ партнёра с ограниченной областью доступа к предзаказам.

Руководство по подключению

Параметры

orderIdПуть · Обязательно

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

string · uuid
Полное определение
{
  "type": "string",
  "format": "uuid",
  "example": "9b6163a8-afea-4877-818b-8e2ae28a2845"
}

Ответы

200Возвращает доступный партнёру предзаказ либо предусмотренный контрактом результат отсутствия, если заказ находится вне области ключа.
PreorderExternalGetOrderResultDto
Полное определение
{
  "$ref": "#/components/schemas/PreorderExternalGetOrderResultDto"
}
Пример ответа · 200 · application/json
{
  "id": "dadd2857-b22c-4e95-8ed2-2a29c5a47f42",
  "revision": 1,
  "status": "OPEN",
  "currency": "GEL",
  "createdAt": "2026-01-15T10:00:00.000Z",
  "updatedAt": "2026-01-15T13:00:00.000Z",
  "fulfillment": null,
  "items": [
    {
      "id": "dadd2857-b22c-4e95-8ed2-2a29c5a47f42",
      "nameSnapshot": "Example name",
      "quantity": 1,
      "unitPrice": "1.00",
      "kitchenStatus": "example",
      "fullyVoidedAt": null
    }
  ]
}
401Отклоняет отсутствующий, некорректный, истёкший, отозванный или недействительный ключ preorderPartnerKey на границе владеющего домена.
TranslatedErrorDto
Полное определение
{
  "$ref": "#/components/schemas/TranslatedErrorDto"
}
Пример ответа · 401 · application/json
{
  "statusCode": 401,
  "error": "errors:http.unauthorized",
  "code": "HTTP_UNAUTHORIZED",
  "message": "errors:http.unauthorized",
  "translationKey": "errors:http.unauthorized"
}

Схемы

PreorderExternalGetOrderResultDto

Возвращает доступный партнёру предзаказ либо предусмотренный контрактом результат отсутствия, если заказ находится вне области ключа.

idОбязательно

UUID Hallify для id.

string · uuid
Полное определение
{
  "type": "string",
  "format": "uuid",
  "description": "UUID Hallify для `id`.",
  "example": "dadd2857-b22c-4e95-8ed2-2a29c5a47f42"
}
revisionОбязательно

Монотонно возрастающая ревизия revision для оптимистичного контроля конкурентных изменений. Ограничения: минимум 1.

integer
Полное определение
{
  "type": "integer",
  "minimum": 1,
  "description": "Монотонно возрастающая ревизия `revision` для оптимистичного контроля конкурентных изменений. Ограничения: минимум 1.",
  "example": 1
}
statusОбязательно

Текущий статус жизненного цикла status; допустимые значения: OPEN, SUSPENDED, SUBMITTED, PAID, CANCELED.

string
Полное определение
{
  "type": "string",
  "enum": [
    "OPEN",
    "SUSPENDED",
    "SUBMITTED",
    "PAID",
    "CANCELED"
  ],
  "description": "Текущий статус жизненного цикла `status`; допустимые значения: OPEN, SUSPENDED, SUBMITTED, PAID, CANCELED.",
  "example": "OPEN"
}
currencyОбязательно

Код валюты ISO 4217 в currency для денежных значений этого представления.

string
Полное определение
{
  "type": "string",
  "pattern": "^[A-Z]{3}$",
  "description": "Код валюты ISO 4217 в `currency` для денежных значений этого представления.",
  "example": "GEL"
}
createdAtОбязательно

Время createdAt в формате RFC3339; разные часовые смещения могут обозначать один абсолютный момент.

string · date-time
Полное определение
{
  "type": "string",
  "format": "date-time",
  "description": "Время `createdAt` в формате RFC3339; разные часовые смещения могут обозначать один абсолютный момент.",
  "example": "2026-01-15T10:00:00.000Z"
}
updatedAtОбязательно

Время updatedAt в формате RFC3339; разные часовые смещения могут обозначать один абсолютный момент.

string · date-time
Полное определение
{
  "type": "string",
  "format": "date-time",
  "description": "Время `updatedAt` в формате RFC3339; разные часовые смещения могут обозначать один абсолютный момент.",
  "example": "2026-01-15T13:00:00.000Z"
}
fulfillmentОбязательно

Вложенные сведения fulfillment; состав полей указан в схеме. Null означает отсутствие записанного значения в этом представлении.

object · null
Полное определение
{
  "type": "object",
  "nullable": true,
  "properties": {
    "revision": {
      "type": "integer",
      "minimum": 1,
      "description": "Монотонно возрастающая ревизия `revision` для оптимистичного контроля конкурентных изменений. Ограничения: минимум 1.",
      "example": 1
    },
    "status": {
      "type": "string",
      "enum": [
        "DRAFT",
        "HELD",
        "CONFIRMED",
        "IN_PREPARATION",
        "READY_FOR_HANDOFF",
        "OUT_FOR_DELIVERY",
        "COMPLETED",
        "CANCELED",
        "EXPIRED"
      ],
      "description": "Текущий статус жизненного цикла `status`; допустимые значения: DRAFT, HELD, CONFIRMED, IN_PREPARATION, READY_FOR_HANDOFF, OUT_FOR_DELIVERY, COMPLETED, CANCELED, EXPIRED.",
      "example": "DRAFT"
    },
    "serviceMode": {
      "type": "string",
      "enum": [
        "DINE_IN",
        "PICKUP",
        "DELIVERY",
        "CATERING"
      ],
      "description": "Допустимые значения `serviceMode`: DINE_IN, PICKUP, DELIVERY, CATERING.",
      "example": "DINE_IN"
    },
    "scheduledFor": {
      "type": "string",
      "format": "date-time",
      "description": "Время `scheduledFor` в формате RFC3339; разные часовые смещения могут обозначать один абсолютный момент.",
      "example": "2026-01-15T12:00:00.000Z"
    },
    "depositStatus": {
      "type": "string",
      "enum": [
        "NOT_REQUIRED",
        "REQUIRED",
        "PARTIALLY_PAID",
        "PAID",
        "OVERDUE"
      ],
      "description": "Текущий статус жизненного цикла `depositStatus`; допустимые значения: NOT_REQUIRED, REQUIRED, PARTIALLY_PAID, PAID, OVERDUE.",
      "example": "NOT_REQUIRED"
    },
    "depositRequiredAmount": {
      "type": "string",
      "pattern": "^\\d+\\.\\d{2}$",
      "description": "Десятичная денежная величина `depositRequiredAmount`, сериализованная строкой в валюте поля `currency`. Ноль означает записанную сумму, а не отсутствие значения.",
      "example": "1.00"
    },
    "depositPaidAmount": {
      "type": "string",
      "pattern": "^\\d+\\.\\d{2}$",
      "description": "Десятичная денежная величина `depositPaidAmount`, сериализованная строкой в валюте поля `currency`. Ноль означает записанную сумму, а не отсутствие значения.",
      "example": "1.00"
    },
    "stockReservationState": {
      "type": "string",
      "enum": [
        "NOT_REQUIRED",
        "PENDING",
        "RESERVED",
        "SHORTFALL",
        "CONSUMED",
        "RELEASED"
      ],
      "description": "Допустимые значения `stockReservationState`: NOT_REQUIRED, PENDING, RESERVED, SHORTFALL, CONSUMED, RELEASED.",
      "example": "NOT_REQUIRED"
    },
    "handoffOutcome": {
      "type": "string",
      "nullable": true,
      "enum": [
        "PICKED_UP",
        "DELIVERED",
        "CATERING_HANDOFF",
        null
      ],
      "description": "Допустимые значения `handoffOutcome`: PICKED_UP, DELIVERED, CATERING_HANDOFF. Null означает отсутствие записанного значения в этом представлении.",
      "example": "PICKED_UP"
    },
    "completedAt": {
      "type": "string",
      "format": "date-time",
      "nullable": true,
      "description": "Время `completedAt` в формате RFC3339; разные часовые смещения могут обозначать один абсолютный момент. Null означает отсутствие записанного значения в этом представлении.",
      "example": "2026-01-15T13:00:00.000Z"
    },
    "canceledAt": {
      "type": "string",
      "format": "date-time",
      "nullable": true,
      "description": "Время `canceledAt` в формате RFC3339; разные часовые смещения могут обозначать один абсолютный момент. Null означает отсутствие записанного значения в этом представлении.",
      "example": "2026-01-15T12:00:00.000Z"
    }
  },
  "required": [
    "revision",
    "status",
    "serviceMode",
    "scheduledFor",
    "depositStatus",
    "depositRequiredAmount",
    "depositPaidAmount",
    "stockReservationState",
    "handoffOutcome",
    "completedAt",
    "canceledAt"
  ],
  "description": "Вложенные сведения `fulfillment`; состав полей указан в схеме. Null означает отсутствие записанного значения в этом представлении.",
  "example": {
    "revision": 1,
    "status": "DRAFT",
    "serviceMode": "DINE_IN",
    "scheduledFor": "2026-01-15T12:00:00.000Z",
    "depositStatus": "NOT_REQUIRED",
    "depositRequiredAmount": "1.00",
    "depositPaidAmount": "1.00",
    "stockReservationState": "NOT_REQUIRED",
    "handoffOutcome": null,
    "completedAt": null,
    "canceledAt": null
  }
}
itemsОбязательно

Коллекция items в составе представления.

array
Полное определение
{
  "type": "array",
  "items": {
    "type": "object",
    "properties": {
      "id": {
        "type": "string",
        "format": "uuid",
        "description": "UUID Hallify для `id`.",
        "example": "dadd2857-b22c-4e95-8ed2-2a29c5a47f42"
      },
      "nameSnapshot": {
        "type": "string",
        "description": "Снимок названия `nameSnapshot`.",
        "example": "Example name"
      },
      "quantity": {
        "type": "number",
        "minimum": 0,
        "description": "Количество `quantity`, допускающее дроби, в единице измерения содержащей его позиции или строки. Ограничения: минимум 0.",
        "example": 1
      },
      "unitPrice": {
        "type": "string",
        "pattern": "^\\d+\\.\\d{2}$",
        "description": "Десятичная денежная величина `unitPrice`, сериализованная строкой в валюте поля `currency`. Ноль означает записанную сумму, а не отсутствие значения.",
        "example": "1.00"
      },
      "kitchenStatus": {
        "type": "string",
        "description": "Текущий статус жизненного цикла `kitchenStatus`.",
        "example": "example"
      },
      "fullyVoidedAt": {
        "type": "string",
        "format": "date-time",
        "nullable": true,
        "description": "Время `fullyVoidedAt` в формате RFC3339; разные часовые смещения могут обозначать один абсолютный момент. Null означает отсутствие записанного значения в этом представлении.",
        "example": "2026-01-15T12:00:00.000Z"
      }
    },
    "required": [
      "id",
      "nameSnapshot",
      "quantity",
      "unitPrice",
      "kitchenStatus",
      "fullyVoidedAt"
    ],
    "example": {
      "id": "dadd2857-b22c-4e95-8ed2-2a29c5a47f42",
      "nameSnapshot": "Example name",
      "quantity": 1,
      "unitPrice": "1.00",
      "kitchenStatus": "example",
      "fullyVoidedAt": null
    }
  },
  "description": "Коллекция `items` в составе представления.",
  "example": [
    {
      "id": "dadd2857-b22c-4e95-8ed2-2a29c5a47f42",
      "nameSnapshot": "Example name",
      "quantity": 1,
      "unitPrice": "1.00",
      "kitchenStatus": "example",
      "fullyVoidedAt": null
    }
  ]
}
Полное определение
{
  "type": "object",
  "nullable": true,
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid",
      "description": "UUID Hallify для `id`.",
      "example": "dadd2857-b22c-4e95-8ed2-2a29c5a47f42"
    },
    "revision": {
      "type": "integer",
      "minimum": 1,
      "description": "Монотонно возрастающая ревизия `revision` для оптимистичного контроля конкурентных изменений. Ограничения: минимум 1.",
      "example": 1
    },
    "status": {
      "type": "string",
      "enum": [
        "OPEN",
        "SUSPENDED",
        "SUBMITTED",
        "PAID",
        "CANCELED"
      ],
      "description": "Текущий статус жизненного цикла `status`; допустимые значения: OPEN, SUSPENDED, SUBMITTED, PAID, CANCELED.",
      "example": "OPEN"
    },
    "currency": {
      "type": "string",
      "pattern": "^[A-Z]{3}$",
      "description": "Код валюты ISO 4217 в `currency` для денежных значений этого представления.",
      "example": "GEL"
    },
    "createdAt": {
      "type": "string",
      "format": "date-time",
      "description": "Время `createdAt` в формате RFC3339; разные часовые смещения могут обозначать один абсолютный момент.",
      "example": "2026-01-15T10:00:00.000Z"
    },
    "updatedAt": {
      "type": "string",
      "format": "date-time",
      "description": "Время `updatedAt` в формате RFC3339; разные часовые смещения могут обозначать один абсолютный момент.",
      "example": "2026-01-15T13:00:00.000Z"
    },
    "fulfillment": {
      "type": "object",
      "nullable": true,
      "properties": {
        "revision": {
          "type": "integer",
          "minimum": 1,
          "description": "Монотонно возрастающая ревизия `revision` для оптимистичного контроля конкурентных изменений. Ограничения: минимум 1.",
          "example": 1
        },
        "status": {
          "type": "string",
          "enum": [
            "DRAFT",
            "HELD",
            "CONFIRMED",
            "IN_PREPARATION",
            "READY_FOR_HANDOFF",
            "OUT_FOR_DELIVERY",
            "COMPLETED",
            "CANCELED",
            "EXPIRED"
          ],
          "description": "Текущий статус жизненного цикла `status`; допустимые значения: DRAFT, HELD, CONFIRMED, IN_PREPARATION, READY_FOR_HANDOFF, OUT_FOR_DELIVERY, COMPLETED, CANCELED, EXPIRED.",
          "example": "DRAFT"
        },
        "serviceMode": {
          "type": "string",
          "enum": [
            "DINE_IN",
            "PICKUP",
            "DELIVERY",
            "CATERING"
          ],
          "description": "Допустимые значения `serviceMode`: DINE_IN, PICKUP, DELIVERY, CATERING.",
          "example": "DINE_IN"
        },
        "scheduledFor": {
          "type": "string",
          "format": "date-time",
          "description": "Время `scheduledFor` в формате RFC3339; разные часовые смещения могут обозначать один абсолютный момент.",
          "example": "2026-01-15T12:00:00.000Z"
        },
        "depositStatus": {
          "type": "string",
          "enum": [
            "NOT_REQUIRED",
            "REQUIRED",
            "PARTIALLY_PAID",
            "PAID",
            "OVERDUE"
          ],
          "description": "Текущий статус жизненного цикла `depositStatus`; допустимые значения: NOT_REQUIRED, REQUIRED, PARTIALLY_PAID, PAID, OVERDUE.",
          "example": "NOT_REQUIRED"
        },
        "depositRequiredAmount": {
          "type": "string",
          "pattern": "^\\d+\\.\\d{2}$",
          "description": "Десятичная денежная величина `depositRequiredAmount`, сериализованная строкой в валюте поля `currency`. Ноль означает записанную сумму, а не отсутствие значения.",
          "example": "1.00"
        },
        "depositPaidAmount": {
          "type": "string",
          "pattern": "^\\d+\\.\\d{2}$",
          "description": "Десятичная денежная величина `depositPaidAmount`, сериализованная строкой в валюте поля `currency`. Ноль означает записанную сумму, а не отсутствие значения.",
          "example": "1.00"
        },
        "stockReservationState": {
          "type": "string",
          "enum": [
            "NOT_REQUIRED",
            "PENDING",
            "RESERVED",
            "SHORTFALL",
            "CONSUMED",
            "RELEASED"
          ],
          "description": "Допустимые значения `stockReservationState`: NOT_REQUIRED, PENDING, RESERVED, SHORTFALL, CONSUMED, RELEASED.",
          "example": "NOT_REQUIRED"
        },
        "handoffOutcome": {
          "type": "string",
          "nullable": true,
          "enum": [
            "PICKED_UP",
            "DELIVERED",
            "CATERING_HANDOFF",
            null
          ],
          "description": "Допустимые значения `handoffOutcome`: PICKED_UP, DELIVERED, CATERING_HANDOFF. Null означает отсутствие записанного значения в этом представлении.",
          "example": "PICKED_UP"
        },
        "completedAt": {
          "type": "string",
          "format": "date-time",
          "nullable": true,
          "description": "Время `completedAt` в формате RFC3339; разные часовые смещения могут обозначать один абсолютный момент. Null означает отсутствие записанного значения в этом представлении.",
          "example": "2026-01-15T13:00:00.000Z"
        },
        "canceledAt": {
          "type": "string",
          "format": "date-time",
          "nullable": true,
          "description": "Время `canceledAt` в формате RFC3339; разные часовые смещения могут обозначать один абсолютный момент. Null означает отсутствие записанного значения в этом представлении.",
          "example": "2026-01-15T12:00:00.000Z"
        }
      },
      "required": [
        "revision",
        "status",
        "serviceMode",
        "scheduledFor",
        "depositStatus",
        "depositRequiredAmount",
        "depositPaidAmount",
        "stockReservationState",
        "handoffOutcome",
        "completedAt",
        "canceledAt"
      ],
      "description": "Вложенные сведения `fulfillment`; состав полей указан в схеме. Null означает отсутствие записанного значения в этом представлении.",
      "example": {
        "revision": 1,
        "status": "DRAFT",
        "serviceMode": "DINE_IN",
        "scheduledFor": "2026-01-15T12:00:00.000Z",
        "depositStatus": "NOT_REQUIRED",
        "depositRequiredAmount": "1.00",
        "depositPaidAmount": "1.00",
        "stockReservationState": "NOT_REQUIRED",
        "handoffOutcome": null,
        "completedAt": null,
        "canceledAt": null
      }
    },
    "items": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "UUID Hallify для `id`.",
            "example": "dadd2857-b22c-4e95-8ed2-2a29c5a47f42"
          },
          "nameSnapshot": {
            "type": "string",
            "description": "Снимок названия `nameSnapshot`.",
            "example": "Example name"
          },
          "quantity": {
            "type": "number",
            "minimum": 0,
            "description": "Количество `quantity`, допускающее дроби, в единице измерения содержащей его позиции или строки. Ограничения: минимум 0.",
            "example": 1
          },
          "unitPrice": {
            "type": "string",
            "pattern": "^\\d+\\.\\d{2}$",
            "description": "Десятичная денежная величина `unitPrice`, сериализованная строкой в валюте поля `currency`. Ноль означает записанную сумму, а не отсутствие значения.",
            "example": "1.00"
          },
          "kitchenStatus": {
            "type": "string",
            "description": "Текущий статус жизненного цикла `kitchenStatus`.",
            "example": "example"
          },
          "fullyVoidedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "Время `fullyVoidedAt` в формате RFC3339; разные часовые смещения могут обозначать один абсолютный момент. Null означает отсутствие записанного значения в этом представлении.",
            "example": "2026-01-15T12:00:00.000Z"
          }
        },
        "required": [
          "id",
          "nameSnapshot",
          "quantity",
          "unitPrice",
          "kitchenStatus",
          "fullyVoidedAt"
        ],
        "example": {
          "id": "dadd2857-b22c-4e95-8ed2-2a29c5a47f42",
          "nameSnapshot": "Example name",
          "quantity": 1,
          "unitPrice": "1.00",
          "kitchenStatus": "example",
          "fullyVoidedAt": null
        }
      },
      "description": "Коллекция `items` в составе представления.",
      "example": [
        {
          "id": "dadd2857-b22c-4e95-8ed2-2a29c5a47f42",
          "nameSnapshot": "Example name",
          "quantity": 1,
          "unitPrice": "1.00",
          "kitchenStatus": "example",
          "fullyVoidedAt": null
        }
      ]
    }
  },
  "required": [
    "id",
    "revision",
    "status",
    "currency",
    "createdAt",
    "updatedAt",
    "fulfillment",
    "items"
  ],
  "description": "Возвращает доступный партнёру предзаказ либо предусмотренный контрактом результат отсутствия, если заказ находится вне области ключа.",
  "example": {
    "id": "dadd2857-b22c-4e95-8ed2-2a29c5a47f42",
    "revision": 1,
    "status": "OPEN",
    "currency": "GEL",
    "createdAt": "2026-01-15T10:00:00.000Z",
    "updatedAt": "2026-01-15T13:00:00.000Z",
    "fulfillment": null,
    "items": [
      {
        "id": "dadd2857-b22c-4e95-8ed2-2a29c5a47f42",
        "nameSnapshot": "Example name",
        "quantity": 1,
        "unitPrice": "1.00",
        "kitchenStatus": "example",
        "fullyVoidedAt": null
      }
    ]
  }
}
TranslatedErrorDto

Стабильная оболочка ошибки общего обработчика HTTP-исключений. Дополнительные машинные данные домена вложены в details.

statusCodeОбязательно

HTTP-статус, повторённый из ответа.

integer
Полное определение
{
  "type": "integer",
  "description": "HTTP-статус, повторённый из ответа.",
  "example": 400
}
errorОбязательно

Ключ перевода HTTP-категории, например errors:http.conflict. Конкретную причину определяют code и translationKey.

string
Полное определение
{
  "type": "string",
  "description": "Ключ перевода HTTP-категории, например errors:http.conflict. Конкретную причину определяют code и translationKey.",
  "example": "errors.request.invalid"
}
codeОбязательно

Стабильный машинный код домена либо стандартный HTTP_*, если доменный код не задан. Используйте это поле и HTTP-статус для программной логики; локализованная формулировка не управляет повторами или бизнес-решениями.

string
Полное определение
{
  "type": "string",
  "example": "HTTP_BAD_REQUEST",
  "description": "Стабильный машинный код домена либо стандартный HTTP_*, если доменный код не задан. Используйте это поле и HTTP-статус для программной логики; локализованная формулировка не управляет повторами или бизнес-решениями."
}
messageОбязательно

Ключ перевода, идентичный translationKey. API не возвращает локализованный текст интерфейса. Найдите перевод ключа и подставьте translationValues в приложении-потребителе.

string
Полное определение
{
  "type": "string",
  "example": "errors:http.badRequest",
  "description": "Ключ перевода, идентичный translationKey. API не возвращает локализованный текст интерфейса. Найдите перевод ключа и подставьте translationValues в приложении-потребителе."
}
translationKeyОбязательно

Канонический ключ перевода, идентичный message. Ключи errors:http.* соответствующего статуса описывают неуточнённые ошибки. Публичные ключи и пояснения EN/RU перечислены в Developers; неизвестный ключ требует локализованного запасного сообщения в клиенте.

string
Полное определение
{
  "type": "string",
  "example": "errors:http.badRequest",
  "description": "Канонический ключ перевода, идентичный message. Ключи errors:http.* соответствующего статуса описывают неуточнённые ошибки. Публичные ключи и пояснения EN/RU перечислены в Developers; неизвестный ключ требует локализованного запасного сообщения в клиенте."
}
translationValuesНеобязательно

Необязательные скалярные значения параметров шаблона перевода. Обрабатывайте их как данные, экранируйте при отображении и никогда не используйте как настройки переводчика.

object
Полное определение
{
  "type": "object",
  "additionalProperties": {
    "oneOf": [
      {
        "type": "string",
        "example": "example"
      },
      {
        "type": "number",
        "example": 0
      },
      {
        "type": "boolean",
        "example": true
      }
    ],
    "example": "example"
  },
  "description": "Необязательные скалярные значения параметров шаблона перевода. Обрабатывайте их как данные, экранируйте при отображении и никогда не используйте как настройки переводчика.",
  "example": {
    "exampleKey": "example"
  }
}
validationErrorsНеобязательно

Ошибки проверки полей с ключами переводов и стабильными кодами валидаторов. Введённые значения и исходные тексты валидаторов не включаются.

array
Полное определение
{
  "description": "Ошибки проверки полей с ключами переводов и стабильными кодами валидаторов. Введённые значения и исходные тексты валидаторов не включаются.",
  "type": "array",
  "items": {
    "$ref": "#/components/schemas/ValidationErrorDto"
  },
  "example": [
    {
      "field": "email",
      "translationKey": "validation:isEmail",
      "code": "isEmail",
      "message": "validation:isEmail"
    }
  ]
}
detailsНеобязательно

Необязательные сведения о доменных препятствиях или ошибках валидации.

oneOf
Полное определение
{
  "description": "Необязательные сведения о доменных препятствиях или ошибках валидации.",
  "oneOf": [
    {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/JsonValue"
      },
      "example": [
        "example"
      ]
    },
    {
      "type": "object",
      "additionalProperties": {
        "$ref": "#/components/schemas/JsonValue"
      },
      "example": {
        "exampleKey": "example"
      }
    }
  ],
  "example": [
    "example"
  ]
}
Полное определение
{
  "type": "object",
  "properties": {
    "statusCode": {
      "type": "integer",
      "description": "HTTP-статус, повторённый из ответа.",
      "example": 400
    },
    "error": {
      "type": "string",
      "description": "Ключ перевода HTTP-категории, например errors:http.conflict. Конкретную причину определяют code и translationKey.",
      "example": "errors.request.invalid"
    },
    "code": {
      "type": "string",
      "example": "HTTP_BAD_REQUEST",
      "description": "Стабильный машинный код домена либо стандартный HTTP_*, если доменный код не задан. Используйте это поле и HTTP-статус для программной логики; локализованная формулировка не управляет повторами или бизнес-решениями."
    },
    "message": {
      "type": "string",
      "example": "errors:http.badRequest",
      "description": "Ключ перевода, идентичный translationKey. API не возвращает локализованный текст интерфейса. Найдите перевод ключа и подставьте translationValues в приложении-потребителе."
    },
    "translationKey": {
      "type": "string",
      "example": "errors:http.badRequest",
      "description": "Канонический ключ перевода, идентичный message. Ключи errors:http.* соответствующего статуса описывают неуточнённые ошибки. Публичные ключи и пояснения EN/RU перечислены в Developers; неизвестный ключ требует локализованного запасного сообщения в клиенте."
    },
    "translationValues": {
      "type": "object",
      "additionalProperties": {
        "oneOf": [
          {
            "type": "string",
            "example": "example"
          },
          {
            "type": "number",
            "example": 0
          },
          {
            "type": "boolean",
            "example": true
          }
        ],
        "example": "example"
      },
      "description": "Необязательные скалярные значения параметров шаблона перевода. Обрабатывайте их как данные, экранируйте при отображении и никогда не используйте как настройки переводчика.",
      "example": {
        "exampleKey": "example"
      }
    },
    "validationErrors": {
      "description": "Ошибки проверки полей с ключами переводов и стабильными кодами валидаторов. Введённые значения и исходные тексты валидаторов не включаются.",
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/ValidationErrorDto"
      },
      "example": [
        {
          "field": "email",
          "translationKey": "validation:isEmail",
          "code": "isEmail",
          "message": "validation:isEmail"
        }
      ]
    },
    "details": {
      "description": "Необязательные сведения о доменных препятствиях или ошибках валидации.",
      "oneOf": [
        {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/JsonValue"
          },
          "example": [
            "example"
          ]
        },
        {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/components/schemas/JsonValue"
          },
          "example": {
            "exampleKey": "example"
          }
        }
      ],
      "example": [
        "example"
      ]
    }
  },
  "required": [
    "statusCode",
    "error",
    "code",
    "message",
    "translationKey"
  ],
  "description": "Стабильная оболочка ошибки общего обработчика HTTP-исключений. Дополнительные машинные данные домена вложены в details.",
  "example": {
    "statusCode": 400,
    "error": "errors:http.badRequest",
    "code": "HTTP_BAD_REQUEST",
    "message": "errors:http.badRequest",
    "translationKey": "errors:http.badRequest"
  }
}
ValidationErrorDto

Ошибка проверки поля с путём поля, стабильным кодом валидатора и ключом перевода. Человекочитаемый текст принадлежит приложению-потребителю.

fieldОбязательно

Публичный путь поля. Вложенные свойства и индексы массива разделены точками.

string
Полное определение
{
  "type": "string",
  "example": "email",
  "description": "Публичный путь поля. Вложенные свойства и индексы массива разделены точками."
}
translationKeyОбязательно

Ключ перевода этого валидатора, идентичный message. Найдите его в клиентском словаре; см. публичный каталог ошибок Developers.

string
Полное определение
{
  "type": "string",
  "example": "validation:isEmail",
  "description": "Ключ перевода этого валидатора, идентичный message. Найдите его в клиентском словаре; см. публичный каталог ошибок Developers."
}
codeОбязательно

Стабильный идентификатор валидатора для ошибки поля. Пользовательские валидаторы могут определять дополнительные идентификаторы.

string
Полное определение
{
  "type": "string",
  "example": "isEmail",
  "description": "Стабильный идентификатор валидатора для ошибки поля. Пользовательские валидаторы могут определять дополнительные идентификаторы."
}
messageОбязательно

Ключ перевода, описывающий ошибку проверки поля, идентичный translationKey. Введённые значения и тексты валидаторов не включаются.

string
Полное определение
{
  "type": "string",
  "example": "validation:isEmail",
  "description": "Ключ перевода, описывающий ошибку проверки поля, идентичный translationKey. Введённые значения и тексты валидаторов не включаются."
}
translationValuesНеобязательно

Необязательные скалярные значения параметров шаблона перевода. Обрабатывайте их как данные, экранируйте при отображении и никогда не используйте как настройки переводчика.

object
Полное определение
{
  "type": "object",
  "additionalProperties": {
    "oneOf": [
      {
        "type": "string",
        "example": "example"
      },
      {
        "type": "number",
        "example": 0
      },
      {
        "type": "boolean",
        "example": true
      }
    ],
    "example": "example"
  },
  "description": "Необязательные скалярные значения параметров шаблона перевода. Обрабатывайте их как данные, экранируйте при отображении и никогда не используйте как настройки переводчика.",
  "example": {
    "exampleKey": "example"
  }
}
Полное определение
{
  "type": "object",
  "properties": {
    "field": {
      "type": "string",
      "example": "email",
      "description": "Публичный путь поля. Вложенные свойства и индексы массива разделены точками."
    },
    "translationKey": {
      "type": "string",
      "example": "validation:isEmail",
      "description": "Ключ перевода этого валидатора, идентичный message. Найдите его в клиентском словаре; см. публичный каталог ошибок Developers."
    },
    "code": {
      "type": "string",
      "example": "isEmail",
      "description": "Стабильный идентификатор валидатора для ошибки поля. Пользовательские валидаторы могут определять дополнительные идентификаторы."
    },
    "message": {
      "type": "string",
      "example": "validation:isEmail",
      "description": "Ключ перевода, описывающий ошибку проверки поля, идентичный translationKey. Введённые значения и тексты валидаторов не включаются."
    },
    "translationValues": {
      "type": "object",
      "additionalProperties": {
        "oneOf": [
          {
            "type": "string",
            "example": "example"
          },
          {
            "type": "number",
            "example": 0
          },
          {
            "type": "boolean",
            "example": true
          }
        ],
        "example": "example"
      },
      "description": "Необязательные скалярные значения параметров шаблона перевода. Обрабатывайте их как данные, экранируйте при отображении и никогда не используйте как настройки переводчика.",
      "example": {
        "exampleKey": "example"
      }
    }
  },
  "required": [
    "field",
    "translationKey",
    "code",
    "message"
  ],
  "description": "Ошибка проверки поля с путём поля, стабильным кодом валидатора и ключом перевода. Человекочитаемый текст принадлежит приложению-потребителю.",
  "example": {
    "field": "email",
    "translationKey": "validation:isEmail",
    "code": "isEmail",
    "message": "validation:isEmail"
  }
}
JsonValue

Рекурсивно допустимое JSON-значение. Используется только там, где контракт явно разрешает произвольные структурированные данные.

Полное определение
{
  "oneOf": [
    {
      "type": "string",
      "nullable": true,
      "example": "example"
    },
    {
      "type": "number",
      "example": 0
    },
    {
      "type": "boolean",
      "example": true
    },
    {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/JsonValue"
      },
      "example": [
        "example"
      ]
    },
    {
      "type": "object",
      "additionalProperties": {
        "$ref": "#/components/schemas/JsonValue"
      },
      "example": {
        "exampleKey": "example"
      }
    }
  ],
  "description": "Рекурсивно допустимое JSON-значение. Используется только там, где контракт явно разрешает произвольные структурированные данные.",
  "example": "example"
}

Hallify использует обязательные cookies и опциональную аналитику.

Обязательные cookies поддерживают вход, язык и тему. Аналитика выключена, пока вы явно ее не разрешите.