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

Гостевые платежи

Зафиксировать проверенное гостевое финансовое предложение

POST/public/guest-payment-accesses/{accessId}/restaurant-payments/consent-offer

Повторно рассчитывает каноническое предложение с текущими нативными платёжными полномочиями и требует совпадения semantic digest с просмотренным расчётом. Сохраняет полный manifest согласия, используя ожидаемую предложенную ревизию при замене изменившегося offer. Неизменённый действующий расчёт сохраняет исходные manifest и receipt; операция не принимает согласие и не создаёт checkout, финансовый hold или запрос провайдеру.

Авторизация

Authorization: Bearer <HALLIFY_GUEST_PAYMENT_ACCESS_TOKEN>

Приватный гостевой платёжный токен, связанный с нативным actor, tenant, источником, transport origin и текущими полномочиями. Для списания требуется явное согласие; точное раскрытие исходного результата не разрешает новую денежную команду и не предоставляет сессию аккаунта Hallify.

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

Параметры

originЗаголовок · Обязательно

Фактический HTTP Origin вызывающей стороны; должен точно совпадать с текущей транспортной аудиторией платёжного доступа.

string
Полное определение
{
  "type": "string",
  "maxLength": 2048,
  "example": "example"
}
accessIdПуть · Обязательно

Несекретный UUID, выданный при открытии или передаче нативного платёжного доступа. Используйте с Bearer-токеном этого доступа; сам UUID полномочий не даёт.

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

Тело запроса

Обязательно

Проверенный выбор расчёта и выданный для него semantic quoteHash, а также expectedConsentRevision: null для нового предложения или текущая ревизия при замене существующего.

application/json

GuestPaymentOfferRequestDto
Полное определение
{
  "$ref": "#/components/schemas/GuestPaymentOfferRequestDto"
}

Ответы

200Сохранённые идентификатор согласия OFFERED, ревизия, digest полного manifest, срок и terms вместе с публичной проекцией сохранённого финансового предложения.
GuestPaymentOfferDto
Полное определение
{
  "$ref": "#/components/schemas/GuestPaymentOfferDto"
}
Пример ответа · 200 · application/json
{
  "consent": {
    "consentId": "a78d3537-1595-4dbd-8fad-560c53ecc15c",
    "revision": 1,
    "manifestHash": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef",
    "expiresAt": "2026-12-31T18:00:00.000Z",
    "terms": {
      "version": "example",
      "digest": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef",
      "locale": "en"
    }
  },
  "quote": {
    "payee": {
      "venueName": "Example name",
      "legalName": "Example name"
    },
    "quoteHash": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef",
    "currency": "USD",
    "principalAmount": "12.50",
    "tipAmount": "0.00",
    "totalAmount": "12.50",
    "provider": "BOG_PAYMENT_MANAGER",
    "merchantBindingId": "a9365a46-0f50-4efd-89fb-cd79e20e0439",
    "expiresAt": "2026-12-31T18:00:00.000Z",
    "terms": {
      "version": "example",
      "digest": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef",
      "locale": "en",
      "text": "en"
    },
    "targets": [
      {
        "orderId": "f3127edf-ce4f-4da7-8be5-81b962024e6c",
        "principalAmount": "12.50",
        "tipAmount": "0.00",
        "totalAmount": "12.50",
        "items": [
          {
            "orderItemId": "48069d23-be97-4039-8099-9db268ddf890",
            "quantityPortion": "1.0000",
            "totalAmount": "12.50"
          }
        ]
      }
    ]
  }
}
400Неверное представление ограниченного запроса или ключа команды.
TranslatedErrorDto
Полное определение
{
  "$ref": "#/components/schemas/TranslatedErrorDto"
}
Пример ответа · 400 · application/json
{
  "statusCode": 400,
  "error": "errors:http.badRequest",
  "code": "HTTP_BAD_REQUEST",
  "message": "errors:http.badRequest",
  "translationKey": "errors:http.badRequest"
}
401Отклоняет отсутствующий, неверно представленный, истёкший, отозванный или недействительный guestPaymentAccessToken на границе соответствующего домена.
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"
}
404Текущие нативные полномочия, приватный платёжный токен или точный исходный checkout недоступны.
TranslatedErrorDto
Полное определение
{
  "$ref": "#/components/schemas/TranslatedErrorDto"
}
Пример ответа · 404 · application/json
{
  "statusCode": 404,
  "error": "errors:http.notFound",
  "code": "HTTP_NOT_FOUND",
  "message": "errors:http.notFound",
  "translationKey": "errors:http.notFound"
}
409Изменились нативный источник, проверенный счёт, ревизия согласия или состояние параллельной команды.
TranslatedErrorDto
Полное определение
{
  "$ref": "#/components/schemas/TranslatedErrorDto"
}
Пример ответа · 409 · application/json
{
  "statusCode": 409,
  "error": "errors:http.conflict",
  "code": "HTTP_CONFLICT",
  "message": "errors:http.conflict",
  "translationKey": "errors:http.conflict"
}

Схемы

GuestPaymentOfferRequestDto

Ранее проверенный выбор quote, его semantic финансовый digest и ожидаемая ревизия offer для сохранения manifest согласия.

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

Точные привязка эквайринга, purpose гарантии либо выбор Order и чаевых, а также locale, связанные с просмотренным quoteHash.

oneOf
Полное определение
{
  "example": {
    "purpose": "RESERVATION_GUARANTEE",
    "merchantBindingId": "a9365a46-0f50-4efd-89fb-cd79e20e0439",
    "locale": "en"
  },
  "allOf": [
    {
      "$ref": "#/components/schemas/GuestPaymentQuoteRequestDto"
    }
  ],
  "oneOf": [
    {
      "required": [
        "purpose"
      ],
      "not": {
        "anyOf": [
          {
            "required": [
              "targets"
            ],
            "example": {
              "targets": "example"
            }
          },
          {
            "required": [
              "requestedTipAmount"
            ],
            "example": {
              "requestedTipAmount": "example"
            }
          }
        ],
        "example": {
          "targets": "example"
        }
      },
      "example": {
        "purpose": "example"
      }
    },
    {
      "required": [
        "targets",
        "requestedTipAmount"
      ],
      "not": {
        "required": [
          "purpose"
        ],
        "example": {
          "purpose": "example"
        }
      },
      "example": {
        "targets": "example",
        "requestedTipAmount": "example"
      }
    }
  ],
  "description": "Точные привязка эквайринга, purpose гарантии либо выбор Order и чаевых, а также locale, связанные с просмотренным quoteHash."
}
quoteHashОбязательно

Выданный для этого выбора SHA-256 semantic digest финансового предложения в нижнем регистре; новый канонический расчёт должен воспроизвести его до сохранения offer.

string
Полное определение
{
  "type": "string",
  "pattern": "^[a-f0-9]{64}$",
  "description": "Выданный для этого выбора SHA-256 semantic digest финансового предложения в нижнем регистре; новый канонический расчёт должен воспроизвести его до сохранения offer.",
  "example": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef"
}
expectedConsentRevisionОбязательно

Обязательная nullable ожидаемая ревизия согласия OFFERED. Используйте null при отсутствии сохранённого offer; замена изменённого существующего предложения требует его текущей ревизии. Неизменённый расчёт может сохранить существующий receipt.

integer · null
Полное определение
{
  "type": "integer",
  "nullable": true,
  "minimum": 1,
  "description": "Обязательная nullable ожидаемая ревизия согласия OFFERED. Используйте null при отсутствии сохранённого offer; замена изменённого существующего предложения требует его текущей ревизии. Неизменённый расчёт может сохранить существующий receipt.",
  "example": 1
}
Полное определение
{
  "type": "object",
  "properties": {
    "quote": {
      "example": {
        "purpose": "RESERVATION_GUARANTEE",
        "merchantBindingId": "a9365a46-0f50-4efd-89fb-cd79e20e0439",
        "locale": "en"
      },
      "allOf": [
        {
          "$ref": "#/components/schemas/GuestPaymentQuoteRequestDto"
        }
      ],
      "oneOf": [
        {
          "required": [
            "purpose"
          ],
          "not": {
            "anyOf": [
              {
                "required": [
                  "targets"
                ],
                "example": {
                  "targets": "example"
                }
              },
              {
                "required": [
                  "requestedTipAmount"
                ],
                "example": {
                  "requestedTipAmount": "example"
                }
              }
            ],
            "example": {
              "targets": "example"
            }
          },
          "example": {
            "purpose": "example"
          }
        },
        {
          "required": [
            "targets",
            "requestedTipAmount"
          ],
          "not": {
            "required": [
              "purpose"
            ],
            "example": {
              "purpose": "example"
            }
          },
          "example": {
            "targets": "example",
            "requestedTipAmount": "example"
          }
        }
      ],
      "description": "Точные привязка эквайринга, purpose гарантии либо выбор Order и чаевых, а также locale, связанные с просмотренным quoteHash."
    },
    "quoteHash": {
      "type": "string",
      "pattern": "^[a-f0-9]{64}$",
      "description": "Выданный для этого выбора SHA-256 semantic digest финансового предложения в нижнем регистре; новый канонический расчёт должен воспроизвести его до сохранения offer.",
      "example": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef"
    },
    "expectedConsentRevision": {
      "type": "integer",
      "nullable": true,
      "minimum": 1,
      "description": "Обязательная nullable ожидаемая ревизия согласия OFFERED. Используйте null при отсутствии сохранённого offer; замена изменённого существующего предложения требует его текущей ревизии. Неизменённый расчёт может сохранить существующий receipt.",
      "example": 1
    }
  },
  "description": "Ранее проверенный выбор quote, его semantic финансовый digest и ожидаемая ревизия offer для сохранения manifest согласия.",
  "required": [
    "quote",
    "quoteHash",
    "expectedConsentRevision"
  ],
  "example": {
    "quote": {
      "purpose": "RESERVATION_GUARANTEE",
      "merchantBindingId": "a9365a46-0f50-4efd-89fb-cd79e20e0439",
      "locale": "en"
    },
    "quoteHash": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef",
    "expectedConsentRevision": null
  }
}
GuestPaymentQuoteRequestDto

Привязка эквайринга и locale согласия вместе с фиксированным purpose нативной гарантии либо выбором principal, позиций и чаевых Order для расчёта гостевого платёжного обзора.

purposeНеобязательно

Выбирает точную нативную гарантию брони. Опустите для существующего выбора счёта Order. Сумму гарантии и capture mode определяет сервер; цели Order и чаевые опускаются.

string
Полное определение
{
  "type": "string",
  "enum": [
    "RESERVATION_GUARANTEE"
  ],
  "description": "Выбирает точную нативную гарантию брони. Опустите для существующего выбора счёта Order. Сумму гарантии и capture mode определяет сервер; цели Order и чаевые опускаются.",
  "example": "RESERVATION_GUARANTEE"
}
merchantBindingIdОбязательно

UUID текущей допустимой merchant-привязки заведения из счёта; текущая конфигурация определяет провайдера, режим и допустимость автоматического capture.

string · uuid
Полное определение
{
  "type": "string",
  "format": "uuid",
  "description": "UUID текущей допустимой merchant-привязки заведения из счёта; текущая конфигурация определяет провайдера, режим и допустимость автоматического capture.",
  "example": "a9365a46-0f50-4efd-89fb-cd79e20e0439"
}
requestedTipAmountНеобязательно

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

string
Полное определение
{
  "type": "string",
  "example": "0.00",
  "maxLength": 32,
  "description": "Неотрицательная общая сумма запрошенных чаевых для выбранных Orders в валюте счёта, строкой ровно с двумя дробными знаками; канонический расчёт распределяет её между принятыми целями."
}
localeОбязательно

Язык показанного текста согласия и его terms digest. Язык checkout провайдера определяется из этого значения по поддерживаемому языковому контракту провайдера.

string
Полное определение
{
  "type": "string",
  "enum": [
    "en",
    "ru",
    "ka"
  ],
  "description": "Язык показанного текста согласия и его terms digest. Язык checkout провайдера определяется из этого значения по поддерживаемому языковому контракту провайдера.",
  "example": "en"
}
targetsНеобязательно

От одного до пятидесяти разных нативных Orders с положительными запрошенными основными суммами и nullable-выбором позиций в пределах текущего платёжного scope вызывающей стороны.

array
Полное определение
{
  "minItems": 1,
  "maxItems": 50,
  "description": "От одного до пятидесяти разных нативных Orders с положительными запрошенными основными суммами и nullable-выбором позиций в пределах текущего платёжного scope вызывающей стороны.",
  "type": "array",
  "items": {
    "$ref": "#/components/schemas/GuestPaymentOrderSelectionDto"
  },
  "example": [
    {
      "orderId": "f3127edf-ce4f-4da7-8be5-81b962024e6c",
      "principalAmount": "12.50",
      "items": null
    }
  ]
}
Полное определение
{
  "type": "object",
  "properties": {
    "purpose": {
      "type": "string",
      "enum": [
        "RESERVATION_GUARANTEE"
      ],
      "description": "Выбирает точную нативную гарантию брони. Опустите для существующего выбора счёта Order. Сумму гарантии и capture mode определяет сервер; цели Order и чаевые опускаются.",
      "example": "RESERVATION_GUARANTEE"
    },
    "merchantBindingId": {
      "type": "string",
      "format": "uuid",
      "description": "UUID текущей допустимой merchant-привязки заведения из счёта; текущая конфигурация определяет провайдера, режим и допустимость автоматического capture.",
      "example": "a9365a46-0f50-4efd-89fb-cd79e20e0439"
    },
    "requestedTipAmount": {
      "type": "string",
      "example": "0.00",
      "maxLength": 32,
      "description": "Неотрицательная общая сумма запрошенных чаевых для выбранных Orders в валюте счёта, строкой ровно с двумя дробными знаками; канонический расчёт распределяет её между принятыми целями."
    },
    "locale": {
      "type": "string",
      "enum": [
        "en",
        "ru",
        "ka"
      ],
      "description": "Язык показанного текста согласия и его terms digest. Язык checkout провайдера определяется из этого значения по поддерживаемому языковому контракту провайдера.",
      "example": "en"
    },
    "targets": {
      "minItems": 1,
      "maxItems": 50,
      "description": "От одного до пятидесяти разных нативных Orders с положительными запрошенными основными суммами и nullable-выбором позиций в пределах текущего платёжного scope вызывающей стороны.",
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/GuestPaymentOrderSelectionDto"
      },
      "example": [
        {
          "orderId": "f3127edf-ce4f-4da7-8be5-81b962024e6c",
          "principalAmount": "12.50",
          "items": null
        }
      ]
    }
  },
  "description": "Привязка эквайринга и locale согласия вместе с фиксированным purpose нативной гарантии либо выбором principal, позиций и чаевых Order для расчёта гостевого платёжного обзора.",
  "required": [
    "merchantBindingId",
    "locale"
  ],
  "example": {
    "merchantBindingId": "a9365a46-0f50-4efd-89fb-cd79e20e0439",
    "locale": "en"
  }
}
GuestPaymentOrderSelectionDto

Запрошенная основная сумма и nullable-выбор явных позиций одного нативного Order для автоматической гостевой оплаты счёта.

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

UUID Order, входящего в текущий проверенный нативный платёжный источник; каждый Order может присутствовать в запросе quote только один раз.

string · uuid
Полное определение
{
  "type": "string",
  "format": "uuid",
  "description": "UUID Order, входящего в текущий проверенный нативный платёжный источник; каждый Order может присутствовать в запросе quote только один раз.",
  "example": "f3127edf-ce4f-4da7-8be5-81b962024e6c"
}
principalAmountОбязательно

Строго положительная запрошенная основная сумма этого Order в валюте счёта без чаевых, строкой ровно с двумя дробными знаками; канонический расчёт Orders проверяет предел доступной оплаты.

string
Полное определение
{
  "type": "string",
  "example": "12.50",
  "maxLength": 32,
  "description": "Строго положительная запрошенная основная сумма этого Order в валюте счёта без чаевых, строкой ровно с двумя дробными знаками; канонический расчёт Orders проверяет предел доступной оплаты."
}
itemsОбязательно

Обязательный nullable-выбор позиций. Null запрашивает каноническое автоматическое распределение основной суммы; массив задаёт от одной до пятисот явных частей позиций. Совокупный выбор по всем Orders также ограничен пятьюстами позициями.

array · null
Полное определение
{
  "nullable": true,
  "minItems": 1,
  "maxItems": 500,
  "description": "Обязательный nullable-выбор позиций. Null запрашивает каноническое автоматическое распределение основной суммы; массив задаёт от одной до пятисот явных частей позиций. Совокупный выбор по всем Orders также ограничен пятьюстами позициями.",
  "type": "array",
  "items": {
    "$ref": "#/components/schemas/GuestPaymentItemSelectionDto"
  },
  "example": [
    {
      "orderItemId": "48069d23-be97-4039-8099-9db268ddf890",
      "quantityPortion": "1.0000"
    }
  ]
}
Полное определение
{
  "type": "object",
  "properties": {
    "orderId": {
      "type": "string",
      "format": "uuid",
      "description": "UUID Order, входящего в текущий проверенный нативный платёжный источник; каждый Order может присутствовать в запросе quote только один раз.",
      "example": "f3127edf-ce4f-4da7-8be5-81b962024e6c"
    },
    "principalAmount": {
      "type": "string",
      "example": "12.50",
      "maxLength": 32,
      "description": "Строго положительная запрошенная основная сумма этого Order в валюте счёта без чаевых, строкой ровно с двумя дробными знаками; канонический расчёт Orders проверяет предел доступной оплаты."
    },
    "items": {
      "nullable": true,
      "minItems": 1,
      "maxItems": 500,
      "description": "Обязательный nullable-выбор позиций. Null запрашивает каноническое автоматическое распределение основной суммы; массив задаёт от одной до пятисот явных частей позиций. Совокупный выбор по всем Orders также ограничен пятьюстами позициями.",
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/GuestPaymentItemSelectionDto"
      },
      "example": [
        {
          "orderItemId": "48069d23-be97-4039-8099-9db268ddf890",
          "quantityPortion": "1.0000"
        }
      ]
    }
  },
  "description": "Запрошенная основная сумма и nullable-выбор явных позиций одного нативного Order для автоматической гостевой оплаты счёта.",
  "required": [
    "orderId",
    "principalAmount",
    "items"
  ],
  "example": {
    "orderId": "f3127edf-ce4f-4da7-8be5-81b962024e6c",
    "principalAmount": "12.50",
    "items": null
  }
}
GuestPaymentItemSelectionDto

Одна нативная позиция Order и положительное количество с четырьмя дробными знаками в пределах текущего гостевого распределения.

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

UUID нативной позиции Order, принадлежащей выбранному содержащему Order и разрешённой текущим платёжным scope.

string · uuid
Полное определение
{
  "type": "string",
  "format": "uuid",
  "description": "UUID нативной позиции Order, принадлежащей выбранному содержащему Order и разрешённой текущим платёжным scope.",
  "example": "48069d23-be97-4039-8099-9db268ddf890"
}
quantityPortionОбязательно

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

string
Полное определение
{
  "type": "string",
  "example": "1.0000",
  "maxLength": 32,
  "description": "Строго положительное количество позиции строкой ровно с четырьмя дробными знаками; доступное количество ограничено оплаченными частями, активными holds и назначением."
}
Полное определение
{
  "type": "object",
  "properties": {
    "orderItemId": {
      "type": "string",
      "format": "uuid",
      "description": "UUID нативной позиции Order, принадлежащей выбранному содержащему Order и разрешённой текущим платёжным scope.",
      "example": "48069d23-be97-4039-8099-9db268ddf890"
    },
    "quantityPortion": {
      "type": "string",
      "example": "1.0000",
      "maxLength": 32,
      "description": "Строго положительное количество позиции строкой ровно с четырьмя дробными знаками; доступное количество ограничено оплаченными частями, активными holds и назначением."
    }
  },
  "description": "Одна нативная позиция Order и положительное количество с четырьмя дробными знаками в пределах текущего гостевого распределения.",
  "required": [
    "orderItemId",
    "quantityPortion"
  ],
  "example": {
    "orderItemId": "48069d23-be97-4039-8099-9db268ddf890",
    "quantityPortion": "1.0000"
  }
}
GuestPaymentOfferDto

Сохранённый offer согласия вместе с его финансовым предложением до принятия или создания финансовых holds.

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

Идентификатор, предложенная ревизия, digest полного manifest, срок и terms, необходимые для явного принятия согласия.

allOf
Полное определение
{
  "description": "Идентификатор, предложенная ревизия, digest полного manifest, срок и terms, необходимые для явного принятия согласия.",
  "allOf": [
    {
      "$ref": "#/components/schemas/GuestPaymentConsentReceiptDto"
    }
  ],
  "example": {
    "consentId": "a78d3537-1595-4dbd-8fad-560c53ecc15c",
    "revision": 1,
    "manifestHash": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef",
    "expiresAt": "2026-12-31T18:00:00.000Z",
    "terms": {
      "version": "example",
      "digest": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef",
      "locale": "en"
    }
  }
}
quoteОбязательно

Публичная проекция сохранённого manifest, связанного с consent.manifestHash, с суммами, нативным распределением и текстом, предложенными для принятия.

allOf
Полное определение
{
  "description": "Публичная проекция сохранённого manifest, связанного с consent.manifestHash, с суммами, нативным распределением и текстом, предложенными для принятия.",
  "allOf": [
    {
      "$ref": "#/components/schemas/GuestPaymentQuoteDto"
    }
  ],
  "example": {
    "payee": {
      "venueName": "Example name",
      "legalName": "Example name"
    },
    "quoteHash": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef",
    "currency": "USD",
    "principalAmount": "12.50",
    "tipAmount": "0.00",
    "totalAmount": "12.50",
    "provider": "BOG_PAYMENT_MANAGER",
    "merchantBindingId": "a9365a46-0f50-4efd-89fb-cd79e20e0439",
    "expiresAt": "2026-12-31T18:00:00.000Z",
    "terms": {
      "version": "example",
      "digest": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef",
      "locale": "en",
      "text": "en"
    },
    "targets": [
      {
        "orderId": "f3127edf-ce4f-4da7-8be5-81b962024e6c",
        "principalAmount": "12.50",
        "tipAmount": "0.00",
        "totalAmount": "12.50",
        "items": [
          {
            "orderItemId": "48069d23-be97-4039-8099-9db268ddf890",
            "quantityPortion": "1.0000",
            "totalAmount": "12.50"
          }
        ]
      }
    ]
  }
}
Полное определение
{
  "type": "object",
  "properties": {
    "consent": {
      "description": "Идентификатор, предложенная ревизия, digest полного manifest, срок и terms, необходимые для явного принятия согласия.",
      "allOf": [
        {
          "$ref": "#/components/schemas/GuestPaymentConsentReceiptDto"
        }
      ],
      "example": {
        "consentId": "a78d3537-1595-4dbd-8fad-560c53ecc15c",
        "revision": 1,
        "manifestHash": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef",
        "expiresAt": "2026-12-31T18:00:00.000Z",
        "terms": {
          "version": "example",
          "digest": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef",
          "locale": "en"
        }
      }
    },
    "quote": {
      "description": "Публичная проекция сохранённого manifest, связанного с consent.manifestHash, с суммами, нативным распределением и текстом, предложенными для принятия.",
      "allOf": [
        {
          "$ref": "#/components/schemas/GuestPaymentQuoteDto"
        }
      ],
      "example": {
        "payee": {
          "venueName": "Example name",
          "legalName": "Example name"
        },
        "quoteHash": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef",
        "currency": "USD",
        "principalAmount": "12.50",
        "tipAmount": "0.00",
        "totalAmount": "12.50",
        "provider": "BOG_PAYMENT_MANAGER",
        "merchantBindingId": "a9365a46-0f50-4efd-89fb-cd79e20e0439",
        "expiresAt": "2026-12-31T18:00:00.000Z",
        "terms": {
          "version": "example",
          "digest": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef",
          "locale": "en",
          "text": "en"
        },
        "targets": [
          {
            "orderId": "f3127edf-ce4f-4da7-8be5-81b962024e6c",
            "principalAmount": "12.50",
            "tipAmount": "0.00",
            "totalAmount": "12.50",
            "items": [
              {
                "orderItemId": "48069d23-be97-4039-8099-9db268ddf890",
                "quantityPortion": "1.0000",
                "totalAmount": "12.50"
              }
            ]
          }
        ]
      }
    }
  },
  "description": "Сохранённый offer согласия вместе с его финансовым предложением до принятия или создания финансовых holds.",
  "required": [
    "consent",
    "quote"
  ],
  "example": {
    "consent": {
      "consentId": "a78d3537-1595-4dbd-8fad-560c53ecc15c",
      "revision": 1,
      "manifestHash": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef",
      "expiresAt": "2026-12-31T18:00:00.000Z",
      "terms": {
        "version": "example",
        "digest": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef",
        "locale": "en"
      }
    },
    "quote": {
      "payee": {
        "venueName": "Example name",
        "legalName": "Example name"
      },
      "quoteHash": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef",
      "currency": "USD",
      "principalAmount": "12.50",
      "tipAmount": "0.00",
      "totalAmount": "12.50",
      "provider": "BOG_PAYMENT_MANAGER",
      "merchantBindingId": "a9365a46-0f50-4efd-89fb-cd79e20e0439",
      "expiresAt": "2026-12-31T18:00:00.000Z",
      "terms": {
        "version": "example",
        "digest": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef",
        "locale": "en",
        "text": "en"
      },
      "targets": [
        {
          "orderId": "f3127edf-ce4f-4da7-8be5-81b962024e6c",
          "principalAmount": "12.50",
          "tipAmount": "0.00",
          "totalAmount": "12.50",
          "items": [
            {
              "orderItemId": "48069d23-be97-4039-8099-9db268ddf890",
              "quantityPortion": "1.0000",
              "totalAmount": "12.50"
            }
          ]
        }
      ]
    }
  }
}
GuestPaymentConsentReceiptDto

Сохранённые идентификатор согласия OFFERED, ревизия, digest полного manifest, срок и описание terms для явного принятия.

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

UUID offer согласия, сохранённого для этого платёжного доступа и нативного actor.

string · uuid
Полное определение
{
  "type": "string",
  "format": "uuid",
  "description": "UUID offer согласия, сохранённого для этого платёжного доступа и нативного actor.",
  "example": "a78d3537-1595-4dbd-8fad-560c53ecc15c"
}
revisionОбязательно

Текущая ревизия согласия OFFERED для повтора при принятии или использования как ожидаемой ревизии при изменении offer; потребление увеличивает сохранённую ревизию.

integer
Полное определение
{
  "type": "integer",
  "minimum": 1,
  "description": "Текущая ревизия согласия OFFERED для повтора при принятии или использования как ожидаемой ревизии при изменении offer; потребление увеличивает сохранённую ревизию.",
  "example": 1
}
manifestHashОбязательно

SHA-256 digest полного сохранённого manifest предложения в нижнем регистре, включая зафиксированные полномочия, идентичности получателей средств и terms; точный replay неизменённого offer сохраняет этот digest.

string
Полное определение
{
  "type": "string",
  "pattern": "^[a-f0-9]{64}$",
  "description": "SHA-256 digest полного сохранённого manifest предложения в нижнем регистре, включая зафиксированные полномочия, идентичности получателей средств и terms; точный replay неизменённого offer сохраняет этот digest.",
  "example": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef"
}
expiresAtОбязательно

Срок непринятого offer в UTC ISO-8601; принятие должно произойти до него и в пределах текущего финансового окна платёжного доступа.

string · date-time
Полное определение
{
  "type": "string",
  "format": "date-time",
  "description": "Срок непринятого offer в UTC ISO-8601; принятие должно произойти до него и в пределах текущего финансового окна платёжного доступа.",
  "example": "2026-12-31T18:00:00.000Z"
}
termsОбязательно

Точные версия, digest и язык текста согласия, привязанные к этому offer и обязательные при принятии.

allOf
Полное определение
{
  "description": "Точные версия, digest и язык текста согласия, привязанные к этому offer и обязательные при принятии.",
  "allOf": [
    {
      "$ref": "#/components/schemas/GuestPaymentTermsDto"
    }
  ],
  "example": {
    "version": "example",
    "digest": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef",
    "locale": "en"
  }
}
Полное определение
{
  "type": "object",
  "properties": {
    "consentId": {
      "type": "string",
      "format": "uuid",
      "description": "UUID offer согласия, сохранённого для этого платёжного доступа и нативного actor.",
      "example": "a78d3537-1595-4dbd-8fad-560c53ecc15c"
    },
    "revision": {
      "type": "integer",
      "minimum": 1,
      "description": "Текущая ревизия согласия OFFERED для повтора при принятии или использования как ожидаемой ревизии при изменении offer; потребление увеличивает сохранённую ревизию.",
      "example": 1
    },
    "manifestHash": {
      "type": "string",
      "pattern": "^[a-f0-9]{64}$",
      "description": "SHA-256 digest полного сохранённого manifest предложения в нижнем регистре, включая зафиксированные полномочия, идентичности получателей средств и terms; точный replay неизменённого offer сохраняет этот digest.",
      "example": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef"
    },
    "expiresAt": {
      "type": "string",
      "format": "date-time",
      "description": "Срок непринятого offer в UTC ISO-8601; принятие должно произойти до него и в пределах текущего финансового окна платёжного доступа.",
      "example": "2026-12-31T18:00:00.000Z"
    },
    "terms": {
      "description": "Точные версия, digest и язык текста согласия, привязанные к этому offer и обязательные при принятии.",
      "allOf": [
        {
          "$ref": "#/components/schemas/GuestPaymentTermsDto"
        }
      ],
      "example": {
        "version": "example",
        "digest": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef",
        "locale": "en"
      }
    }
  },
  "description": "Сохранённые идентификатор согласия OFFERED, ревизия, digest полного manifest, срок и описание terms для явного принятия.",
  "required": [
    "consentId",
    "revision",
    "manifestHash",
    "expiresAt",
    "terms"
  ],
  "example": {
    "consentId": "a78d3537-1595-4dbd-8fad-560c53ecc15c",
    "revision": 1,
    "manifestHash": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef",
    "expiresAt": "2026-12-31T18:00:00.000Z",
    "terms": {
      "version": "example",
      "digest": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef",
      "locale": "en"
    }
  }
}
GuestPaymentTermsDto

Версия, SHA-256 digest и язык, определяющие точный показанный текст платёжного согласия.

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

Непустая версия показанного текста согласия; при принятии должна точно совпадать с версией, сохранённой в offer.

string
Полное определение
{
  "type": "string",
  "maxLength": 64,
  "description": "Непустая версия показанного текста согласия; при принятии должна точно совпадать с версией, сохранённой в offer.",
  "example": "example"
}
digestОбязательно

SHA-256 digest в нижнем регистре, связывающий версию terms, язык и точный показанный текст; при принятии повторяется предложенный digest.

string
Полное определение
{
  "type": "string",
  "pattern": "^[a-f0-9]{64}$",
  "description": "SHA-256 digest в нижнем регистре, связывающий версию terms, язык и точный показанный текст; при принятии повторяется предложенный digest.",
  "example": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef"
}
localeОбязательно

Язык, охваченный показанным текстом согласия и digest; при принятии должен совпадать с языком, сохранённым в offer.

string
Полное определение
{
  "type": "string",
  "enum": [
    "en",
    "ru",
    "ka"
  ],
  "description": "Язык, охваченный показанным текстом согласия и digest; при принятии должен совпадать с языком, сохранённым в offer.",
  "example": "en"
}
Полное определение
{
  "type": "object",
  "properties": {
    "version": {
      "type": "string",
      "maxLength": 64,
      "description": "Непустая версия показанного текста согласия; при принятии должна точно совпадать с версией, сохранённой в offer.",
      "example": "example"
    },
    "digest": {
      "type": "string",
      "pattern": "^[a-f0-9]{64}$",
      "description": "SHA-256 digest в нижнем регистре, связывающий версию terms, язык и точный показанный текст; при принятии повторяется предложенный digest.",
      "example": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef"
    },
    "locale": {
      "type": "string",
      "enum": [
        "en",
        "ru",
        "ka"
      ],
      "description": "Язык, охваченный показанным текстом согласия и digest; при принятии должен совпадать с языком, сохранённым в offer.",
      "example": "en"
    }
  },
  "description": "Версия, SHA-256 digest и язык, определяющие точный показанный текст платёжного согласия.",
  "required": [
    "version",
    "digest",
    "locale"
  ],
  "example": {
    "version": "example",
    "digest": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef",
    "locale": "en"
  }
}
GuestPaymentQuoteDto

Рассчитанное сервером автоматическое платёжное предложение с каноническими итогами, merchant/провайдером, локализованным текстом согласия, распределением нативных позиций и действующим сроком проверки.

purposeНеобязательно

Присутствует, если рассматриваемый платёж вносит средства нативной гарантии брони.

string
Полное определение
{
  "type": "string",
  "enum": [
    "RESERVATION_GUARANTEE"
  ],
  "description": "Присутствует, если рассматриваемый платёж вносит средства нативной гарантии брони.",
  "example": "RESERVATION_GUARANTEE"
}
guaranteeНеобязательно

Точная нативная гарантия и принятые финансовые условия; цели Order пусты.

allOf
Полное определение
{
  "description": "Точная нативная гарантия и принятые финансовые условия; цели Order пусты.",
  "allOf": [
    {
      "$ref": "#/components/schemas/GuestPaymentGuaranteeReviewDto"
    }
  ],
  "example": {
    "reservationId": "b21b31e5-56ea-442f-8594-270e4efd0f5e",
    "guaranteeRequirementId": "97101ce8-3e48-412d-8520-b38e371ebe3b",
    "revision": 1,
    "kind": "DEPOSIT",
    "termsHash": null,
    "dueAt": null,
    "authorizationExpiresAt": null,
    "terms": null
  }
}
payeeОбязательно

Точный отображаемый снимок ресторана и юридического лица получателя, связанный quoteHash и сохранённым manifestHash согласия. Replay предложения возвращает сохранённый снимок, а не текущие переименованные данные заведения.

allOf
Полное определение
{
  "description": "Точный отображаемый снимок ресторана и юридического лица получателя, связанный quoteHash и сохранённым manifestHash согласия. Replay предложения возвращает сохранённый снимок, а не текущие переименованные данные заведения.",
  "allOf": [
    {
      "$ref": "#/components/schemas/GuestPaymentPayeeDto"
    }
  ],
  "example": {
    "venueName": "Example name",
    "legalName": "Example name"
  }
}
quoteHashОбязательно

SHA-256 digest semantic финансового предложения в нижнем регистре; передаётся с тем же выбором при запросе offer. Принятие ссылается на полный manifestHash, возвращённый в consent receipt этого предложения.

string
Полное определение
{
  "type": "string",
  "pattern": "^[a-f0-9]{64}$",
  "description": "SHA-256 digest semantic финансового предложения в нижнем регистре; передаётся с тем же выбором при запросе offer. Принятие ссылается на полный manifestHash, возвращённый в consent receipt этого предложения.",
  "example": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef"
}
currencyОбязательно

Валюта всех основных сумм, чаевых и итогов в этом проверенном расчёте.

string
Полное определение
{
  "type": "string",
  "enum": [
    "USD",
    "GEL"
  ],
  "description": "Валюта всех основных сумм, чаевых и итогов в этом проверенном расчёте.",
  "example": "USD"
}
principalAmountОбязательно

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

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

Общие запрошенные чаевые, распределённые каноническим расчётом по выбранным Orders, неотрицательной строкой с двумя дробными знаками.

string
Полное определение
{
  "type": "string",
  "example": "0.00",
  "description": "Общие запрошенные чаевые, распределённые каноническим расчётом по выбранным Orders, неотрицательной строкой с двумя дробными знаками."
}
totalAmountОбязательно

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

string
Полное определение
{
  "type": "string",
  "example": "12.50",
  "description": "Сумма общих проверенных основной суммы и чаевых строкой с двумя дробными знаками в валюте расчёта."
}
providerОбязательно

Платёжный провайдер из текущей допустимой merchant-привязки, сохранённой в этом финансовом предложении.

string
Полное определение
{
  "type": "string",
  "enum": [
    "BOG_PAYMENT_MANAGER",
    "TBC_CHECKOUT",
    "STRIPE_CONNECT"
  ],
  "description": "Платёжный провайдер из текущей допустимой merchant-привязки, сохранённой в этом финансовом предложении.",
  "example": "BOG_PAYMENT_MANAGER"
}
merchantBindingIdОбязательно

UUID merchant-привязки, чьи текущие custody, режим и возможности автоматического capture охвачены этим предложением.

string · uuid
Полное определение
{
  "type": "string",
  "format": "uuid",
  "description": "UUID merchant-привязки, чьи текущие custody, режим и возможности автоматического capture охвачены этим предложением.",
  "example": "a9365a46-0f50-4efd-89fb-cd79e20e0439"
}
expiresAtОбязательно

Срок финансовой проверки предварительного расчёта в UTC ISO-8601 либо срок сохранённого offer при возврате с предложением согласия; изменение источника или счёта может сделать расчёт недействительным раньше.

string · date-time
Полное определение
{
  "type": "string",
  "format": "date-time",
  "description": "Срок финансовой проверки предварительного расчёта в UTC ISO-8601 либо срок сохранённого offer при возврате с предложением согласия; изменение источника или счёта может сделать расчёт недействительным раньше.",
  "example": "2026-12-31T18:00:00.000Z"
}
termsОбязательно

Точный локализованный текст согласия и версия, digest и язык, охваченные этим финансовым предложением.

allOf
Полное определение
{
  "description": "Точный локализованный текст согласия и версия, digest и язык, охваченные этим финансовым предложением.",
  "allOf": [
    {
      "$ref": "#/components/schemas/GuestPaymentDisplayedTermsDto"
    }
  ],
  "example": {
    "version": "example",
    "digest": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef",
    "locale": "en",
    "text": "en"
  }
}
targetsОбязательно

Проверенные канонические распределения основной суммы, чаевых и нативных позиций выбранных Orders.

array
Полное определение
{
  "description": "Проверенные канонические распределения основной суммы, чаевых и нативных позиций выбранных Orders.",
  "type": "array",
  "items": {
    "$ref": "#/components/schemas/GuestPaymentQuotedOrderDto"
  },
  "example": [
    {
      "orderId": "f3127edf-ce4f-4da7-8be5-81b962024e6c",
      "principalAmount": "12.50",
      "tipAmount": "0.00",
      "totalAmount": "12.50",
      "items": [
        {
          "orderItemId": "48069d23-be97-4039-8099-9db268ddf890",
          "quantityPortion": "1.0000",
          "totalAmount": "12.50"
        }
      ]
    }
  ]
}
Полное определение
{
  "type": "object",
  "properties": {
    "purpose": {
      "type": "string",
      "enum": [
        "RESERVATION_GUARANTEE"
      ],
      "description": "Присутствует, если рассматриваемый платёж вносит средства нативной гарантии брони.",
      "example": "RESERVATION_GUARANTEE"
    },
    "guarantee": {
      "description": "Точная нативная гарантия и принятые финансовые условия; цели Order пусты.",
      "allOf": [
        {
          "$ref": "#/components/schemas/GuestPaymentGuaranteeReviewDto"
        }
      ],
      "example": {
        "reservationId": "b21b31e5-56ea-442f-8594-270e4efd0f5e",
        "guaranteeRequirementId": "97101ce8-3e48-412d-8520-b38e371ebe3b",
        "revision": 1,
        "kind": "DEPOSIT",
        "termsHash": null,
        "dueAt": null,
        "authorizationExpiresAt": null,
        "terms": null
      }
    },
    "payee": {
      "description": "Точный отображаемый снимок ресторана и юридического лица получателя, связанный quoteHash и сохранённым manifestHash согласия. Replay предложения возвращает сохранённый снимок, а не текущие переименованные данные заведения.",
      "allOf": [
        {
          "$ref": "#/components/schemas/GuestPaymentPayeeDto"
        }
      ],
      "example": {
        "venueName": "Example name",
        "legalName": "Example name"
      }
    },
    "quoteHash": {
      "type": "string",
      "pattern": "^[a-f0-9]{64}$",
      "description": "SHA-256 digest semantic финансового предложения в нижнем регистре; передаётся с тем же выбором при запросе offer. Принятие ссылается на полный manifestHash, возвращённый в consent receipt этого предложения.",
      "example": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef"
    },
    "currency": {
      "type": "string",
      "enum": [
        "USD",
        "GEL"
      ],
      "description": "Валюта всех основных сумм, чаевых и итогов в этом проверенном расчёте.",
      "example": "USD"
    },
    "principalAmount": {
      "type": "string",
      "example": "12.50",
      "description": "Общая каноническая основная сумма выбранных Orders до чаевых, положительной строкой с двумя дробными знаками."
    },
    "tipAmount": {
      "type": "string",
      "example": "0.00",
      "description": "Общие запрошенные чаевые, распределённые каноническим расчётом по выбранным Orders, неотрицательной строкой с двумя дробными знаками."
    },
    "totalAmount": {
      "type": "string",
      "example": "12.50",
      "description": "Сумма общих проверенных основной суммы и чаевых строкой с двумя дробными знаками в валюте расчёта."
    },
    "provider": {
      "type": "string",
      "enum": [
        "BOG_PAYMENT_MANAGER",
        "TBC_CHECKOUT",
        "STRIPE_CONNECT"
      ],
      "description": "Платёжный провайдер из текущей допустимой merchant-привязки, сохранённой в этом финансовом предложении.",
      "example": "BOG_PAYMENT_MANAGER"
    },
    "merchantBindingId": {
      "type": "string",
      "format": "uuid",
      "description": "UUID merchant-привязки, чьи текущие custody, режим и возможности автоматического capture охвачены этим предложением.",
      "example": "a9365a46-0f50-4efd-89fb-cd79e20e0439"
    },
    "expiresAt": {
      "type": "string",
      "format": "date-time",
      "description": "Срок финансовой проверки предварительного расчёта в UTC ISO-8601 либо срок сохранённого offer при возврате с предложением согласия; изменение источника или счёта может сделать расчёт недействительным раньше.",
      "example": "2026-12-31T18:00:00.000Z"
    },
    "terms": {
      "description": "Точный локализованный текст согласия и версия, digest и язык, охваченные этим финансовым предложением.",
      "allOf": [
        {
          "$ref": "#/components/schemas/GuestPaymentDisplayedTermsDto"
        }
      ],
      "example": {
        "version": "example",
        "digest": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef",
        "locale": "en",
        "text": "en"
      }
    },
    "targets": {
      "description": "Проверенные канонические распределения основной суммы, чаевых и нативных позиций выбранных Orders.",
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/GuestPaymentQuotedOrderDto"
      },
      "example": [
        {
          "orderId": "f3127edf-ce4f-4da7-8be5-81b962024e6c",
          "principalAmount": "12.50",
          "tipAmount": "0.00",
          "totalAmount": "12.50",
          "items": [
            {
              "orderItemId": "48069d23-be97-4039-8099-9db268ddf890",
              "quantityPortion": "1.0000",
              "totalAmount": "12.50"
            }
          ]
        }
      ]
    }
  },
  "description": "Рассчитанное сервером автоматическое платёжное предложение с каноническими итогами, merchant/провайдером, локализованным текстом согласия, распределением нативных позиций и действующим сроком проверки.",
  "required": [
    "payee",
    "quoteHash",
    "currency",
    "principalAmount",
    "tipAmount",
    "totalAmount",
    "provider",
    "merchantBindingId",
    "expiresAt",
    "terms",
    "targets"
  ],
  "example": {
    "payee": {
      "venueName": "Example name",
      "legalName": "Example name"
    },
    "quoteHash": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef",
    "currency": "USD",
    "principalAmount": "12.50",
    "tipAmount": "0.00",
    "totalAmount": "12.50",
    "provider": "BOG_PAYMENT_MANAGER",
    "merchantBindingId": "a9365a46-0f50-4efd-89fb-cd79e20e0439",
    "expiresAt": "2026-12-31T18:00:00.000Z",
    "terms": {
      "version": "example",
      "digest": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef",
      "locale": "en",
      "text": "en"
    },
    "targets": [
      {
        "orderId": "f3127edf-ce4f-4da7-8be5-81b962024e6c",
        "principalAmount": "12.50",
        "tipAmount": "0.00",
        "totalAmount": "12.50",
        "items": [
          {
            "orderItemId": "48069d23-be97-4039-8099-9db268ddf890",
            "quantityPortion": "1.0000",
            "totalAmount": "12.50"
          }
        ]
      }
    ]
  }
}
GuestPaymentGuaranteeReviewDto

Настоящая нативная гарантия брони для просмотра; проекция не содержит цели Order или приватного доступа/capability.

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

UUID нативной Reservation.

string · uuid
Полное определение
{
  "type": "string",
  "format": "uuid",
  "description": "UUID нативной Reservation.",
  "example": "b21b31e5-56ea-442f-8594-270e4efd0f5e"
}
guaranteeRequirementIdОбязательно

UUID точного исходного требования гарантии; другое соглашение не принимает его средства.

string · uuid
Полное определение
{
  "type": "string",
  "format": "uuid",
  "description": "UUID точного исходного требования гарантии; другое соглашение не принимает его средства.",
  "example": "97101ce8-3e48-412d-8520-b38e371ebe3b"
}
revisionОбязательно

Нативная ревизия требования, использованная в обзоре.

integer
Полное определение
{
  "type": "integer",
  "minimum": 1,
  "description": "Нативная ревизия требования, использованная в обзоре.",
  "example": 1
}
kindОбязательно

Нативный вид гарантии, определяющий автоматическое списание или ручное удержание на карте.

string
Полное определение
{
  "type": "string",
  "enum": [
    "DEPOSIT",
    "PREPAID",
    "CARD_HOLD"
  ],
  "description": "Нативный вид гарантии, определяющий автоматическое списание или ручное удержание на карте.",
  "example": "DEPOSIT"
}
termsHashОбязательно

Digest принятого нативного финансового соглашения; null только для сохранённого legacy-свидетельства.

string · null
Полное определение
{
  "type": "string",
  "nullable": true,
  "minLength": 64,
  "maxLength": 64,
  "pattern": "^[a-f0-9]{64}$",
  "description": "Digest принятого нативного финансового соглашения; null только для сохранённого legacy-свидетельства.",
  "example": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef"
}
dueAtОбязательно

Нативный срок внесения средств, сохранённый в обзоре.

string · date-time · null
Полное определение
{
  "type": "string",
  "nullable": true,
  "format": "date-time",
  "description": "Нативный срок внесения средств, сохранённый в обзоре.",
  "example": "2026-12-31T18:00:00.000Z"
}
authorizationExpiresAtОбязательно

Нативный срок авторизации при наличии. В исходном обзоре может быть null; защитой управляет фактический аутентифицированный срок провайдера.

string · date-time · null
Полное определение
{
  "type": "string",
  "nullable": true,
  "format": "date-time",
  "description": "Нативный срок авторизации при наличии. В исходном обзоре может быть null; защитой управляет фактический аутентифицированный срок провайдера.",
  "example": "2026-12-31T18:00:00.000Z"
}
termsОбязательно

Точные принятые нативные финансовые условия отмены и неявки, спроецированные для просмотра.

object · null
Полное определение
{
  "nullable": true,
  "description": "Точные принятые нативные финансовые условия отмены и неявки, спроецированные для просмотра.",
  "type": "object",
  "properties": {
    "kind": {
      "type": "string",
      "enum": [
        "DEPOSIT",
        "PREPAID",
        "CARD_HOLD"
      ],
      "description": "Принятый тип гарантии.",
      "example": "DEPOSIT"
    },
    "amountBasis": {
      "type": "string",
      "enum": [
        "FIXED",
        "PER_GUEST"
      ],
      "description": "Принятый расчёт фиксированной суммы или суммы за гостя.",
      "example": "FIXED"
    },
    "unitAmount": {
      "type": "string",
      "pattern": "^(0|[1-9]\\d*)\\.\\d{2}$",
      "description": "Принятый единичный principal с двумя десятичными знаками.",
      "example": "1.00"
    },
    "totalAmount": {
      "type": "string",
      "pattern": "^(0|[1-9]\\d*)\\.\\d{2}$",
      "description": "Принятый общий principal гарантии с двумя десятичными знаками.",
      "example": "1.00"
    },
    "currency": {
      "type": "string",
      "minLength": 3,
      "maxLength": 3,
      "pattern": "^[A-Z]{3}$",
      "description": "Валюта принятой гарантии.",
      "example": "GEL"
    },
    "partySize": {
      "type": "integer",
      "minimum": 1,
      "description": "Число гостей, связанное с принятыми финансовыми условиями.",
      "example": 1
    },
    "scheduledAt": {
      "type": "string",
      "format": "date-time",
      "description": "Запланированный момент брони, связанный с соглашением.",
      "example": "2026-01-15T12:00:00.000Z"
    },
    "dueAt": {
      "type": "string",
      "format": "date-time",
      "description": "Принятый срок внесения средств гарантии.",
      "example": "2026-12-31T18:00:00.000Z"
    },
    "freeCancellationAt": {
      "type": "string",
      "format": "date-time",
      "description": "Принятый срок бесплатной отмены.",
      "example": "2026-01-15T12:00:00.000Z"
    },
    "noShowAfter": {
      "type": "string",
      "format": "date-time",
      "description": "Принятый момент решения о неявке; фактическая авторизация карты должна покрывать требуемый период защиты.",
      "example": "2026-01-15T12:00:00.000Z"
    },
    "forfeitOnLateCancellation": {
      "type": "boolean",
      "description": "Разрешают ли принятые условия удержание после поздней отмены.",
      "example": true
    },
    "forfeitOnNoShow": {
      "type": "boolean",
      "description": "Разрешают ли принятые условия удержание при неявке.",
      "example": true
    },
    "termsVersion": {
      "type": "string",
      "description": "Принятая нативная версия условий.",
      "example": "example"
    },
    "privacyVersion": {
      "type": "string",
      "description": "Принятая нативная версия конфиденциальности.",
      "example": "example"
    }
  },
  "required": [
    "kind",
    "amountBasis",
    "unitAmount",
    "totalAmount",
    "currency",
    "partySize",
    "scheduledAt",
    "dueAt",
    "freeCancellationAt",
    "noShowAfter",
    "forfeitOnLateCancellation",
    "forfeitOnNoShow",
    "termsVersion",
    "privacyVersion"
  ],
  "example": {
    "kind": "DEPOSIT",
    "amountBasis": "FIXED",
    "unitAmount": "1.00",
    "totalAmount": "1.00",
    "currency": "GEL",
    "partySize": 1,
    "scheduledAt": "2026-01-15T12:00:00.000Z",
    "dueAt": "2026-12-31T18:00:00.000Z",
    "freeCancellationAt": "2026-01-15T12:00:00.000Z",
    "noShowAfter": "2026-01-15T12:00:00.000Z",
    "forfeitOnLateCancellation": true,
    "forfeitOnNoShow": true,
    "termsVersion": "example",
    "privacyVersion": "example"
  }
}
Полное определение
{
  "type": "object",
  "properties": {
    "reservationId": {
      "type": "string",
      "format": "uuid",
      "description": "UUID нативной Reservation.",
      "example": "b21b31e5-56ea-442f-8594-270e4efd0f5e"
    },
    "guaranteeRequirementId": {
      "type": "string",
      "format": "uuid",
      "description": "UUID точного исходного требования гарантии; другое соглашение не принимает его средства.",
      "example": "97101ce8-3e48-412d-8520-b38e371ebe3b"
    },
    "revision": {
      "type": "integer",
      "minimum": 1,
      "description": "Нативная ревизия требования, использованная в обзоре.",
      "example": 1
    },
    "kind": {
      "type": "string",
      "enum": [
        "DEPOSIT",
        "PREPAID",
        "CARD_HOLD"
      ],
      "description": "Нативный вид гарантии, определяющий автоматическое списание или ручное удержание на карте.",
      "example": "DEPOSIT"
    },
    "termsHash": {
      "type": "string",
      "nullable": true,
      "minLength": 64,
      "maxLength": 64,
      "pattern": "^[a-f0-9]{64}$",
      "description": "Digest принятого нативного финансового соглашения; null только для сохранённого legacy-свидетельства.",
      "example": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef"
    },
    "dueAt": {
      "type": "string",
      "nullable": true,
      "format": "date-time",
      "description": "Нативный срок внесения средств, сохранённый в обзоре.",
      "example": "2026-12-31T18:00:00.000Z"
    },
    "authorizationExpiresAt": {
      "type": "string",
      "nullable": true,
      "format": "date-time",
      "description": "Нативный срок авторизации при наличии. В исходном обзоре может быть null; защитой управляет фактический аутентифицированный срок провайдера.",
      "example": "2026-12-31T18:00:00.000Z"
    },
    "terms": {
      "nullable": true,
      "description": "Точные принятые нативные финансовые условия отмены и неявки, спроецированные для просмотра.",
      "type": "object",
      "properties": {
        "kind": {
          "type": "string",
          "enum": [
            "DEPOSIT",
            "PREPAID",
            "CARD_HOLD"
          ],
          "description": "Принятый тип гарантии.",
          "example": "DEPOSIT"
        },
        "amountBasis": {
          "type": "string",
          "enum": [
            "FIXED",
            "PER_GUEST"
          ],
          "description": "Принятый расчёт фиксированной суммы или суммы за гостя.",
          "example": "FIXED"
        },
        "unitAmount": {
          "type": "string",
          "pattern": "^(0|[1-9]\\d*)\\.\\d{2}$",
          "description": "Принятый единичный principal с двумя десятичными знаками.",
          "example": "1.00"
        },
        "totalAmount": {
          "type": "string",
          "pattern": "^(0|[1-9]\\d*)\\.\\d{2}$",
          "description": "Принятый общий principal гарантии с двумя десятичными знаками.",
          "example": "1.00"
        },
        "currency": {
          "type": "string",
          "minLength": 3,
          "maxLength": 3,
          "pattern": "^[A-Z]{3}$",
          "description": "Валюта принятой гарантии.",
          "example": "GEL"
        },
        "partySize": {
          "type": "integer",
          "minimum": 1,
          "description": "Число гостей, связанное с принятыми финансовыми условиями.",
          "example": 1
        },
        "scheduledAt": {
          "type": "string",
          "format": "date-time",
          "description": "Запланированный момент брони, связанный с соглашением.",
          "example": "2026-01-15T12:00:00.000Z"
        },
        "dueAt": {
          "type": "string",
          "format": "date-time",
          "description": "Принятый срок внесения средств гарантии.",
          "example": "2026-12-31T18:00:00.000Z"
        },
        "freeCancellationAt": {
          "type": "string",
          "format": "date-time",
          "description": "Принятый срок бесплатной отмены.",
          "example": "2026-01-15T12:00:00.000Z"
        },
        "noShowAfter": {
          "type": "string",
          "format": "date-time",
          "description": "Принятый момент решения о неявке; фактическая авторизация карты должна покрывать требуемый период защиты.",
          "example": "2026-01-15T12:00:00.000Z"
        },
        "forfeitOnLateCancellation": {
          "type": "boolean",
          "description": "Разрешают ли принятые условия удержание после поздней отмены.",
          "example": true
        },
        "forfeitOnNoShow": {
          "type": "boolean",
          "description": "Разрешают ли принятые условия удержание при неявке.",
          "example": true
        },
        "termsVersion": {
          "type": "string",
          "description": "Принятая нативная версия условий.",
          "example": "example"
        },
        "privacyVersion": {
          "type": "string",
          "description": "Принятая нативная версия конфиденциальности.",
          "example": "example"
        }
      },
      "required": [
        "kind",
        "amountBasis",
        "unitAmount",
        "totalAmount",
        "currency",
        "partySize",
        "scheduledAt",
        "dueAt",
        "freeCancellationAt",
        "noShowAfter",
        "forfeitOnLateCancellation",
        "forfeitOnNoShow",
        "termsVersion",
        "privacyVersion"
      ],
      "example": {
        "kind": "DEPOSIT",
        "amountBasis": "FIXED",
        "unitAmount": "1.00",
        "totalAmount": "1.00",
        "currency": "GEL",
        "partySize": 1,
        "scheduledAt": "2026-01-15T12:00:00.000Z",
        "dueAt": "2026-12-31T18:00:00.000Z",
        "freeCancellationAt": "2026-01-15T12:00:00.000Z",
        "noShowAfter": "2026-01-15T12:00:00.000Z",
        "forfeitOnLateCancellation": true,
        "forfeitOnNoShow": true,
        "termsVersion": "example",
        "privacyVersion": "example"
      }
    }
  },
  "description": "Настоящая нативная гарантия брони для просмотра; проекция не содержит цели Order или приватного доступа/capability.",
  "required": [
    "reservationId",
    "guaranteeRequirementId",
    "revision",
    "kind",
    "termsHash",
    "dueAt",
    "authorizationExpiresAt",
    "terms"
  ],
  "example": {
    "reservationId": "b21b31e5-56ea-442f-8594-270e4efd0f5e",
    "guaranteeRequirementId": "97101ce8-3e48-412d-8520-b38e371ebe3b",
    "revision": 1,
    "kind": "DEPOSIT",
    "termsHash": null,
    "dueAt": null,
    "authorizationExpiresAt": null,
    "terms": null
  }
}
GuestPaymentPayeeDto

Определённые сервером имена ресторана и юридического лица получателя из точных разрешённых заведения и юридического лица. Quotes сохраняют эти отображаемые сведения в неизменяемом manifest согласия.

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

Каноническое имя нативного заведения — получателя проверяемой оплаты Order, определённое в текущем scope организации, заведения и юридического лица; это не клиентская подпись и не служебное имя merchant-привязки.

string
Полное определение
{
  "type": "string",
  "minLength": 1,
  "maxLength": 255,
  "description": "Каноническое имя нативного заведения — получателя проверяемой оплаты Order, определённое в текущем scope организации, заведения и юридического лица; это не клиентская подпись и не служебное имя merchant-привязки.",
  "example": "Example name"
}
legalNameОбязательно

Каноническое юридическое наименование получателя, которому принадлежат разрешённые заведение и merchant custody. Это сохранённая идентичность юридического лица, а не предположение о PSP statement descriptor.

string
Полное определение
{
  "type": "string",
  "minLength": 1,
  "maxLength": 255,
  "description": "Каноническое юридическое наименование получателя, которому принадлежат разрешённые заведение и merchant custody. Это сохранённая идентичность юридического лица, а не предположение о PSP statement descriptor.",
  "example": "Example name"
}
Полное определение
{
  "type": "object",
  "properties": {
    "venueName": {
      "type": "string",
      "minLength": 1,
      "maxLength": 255,
      "description": "Каноническое имя нативного заведения — получателя проверяемой оплаты Order, определённое в текущем scope организации, заведения и юридического лица; это не клиентская подпись и не служебное имя merchant-привязки.",
      "example": "Example name"
    },
    "legalName": {
      "type": "string",
      "minLength": 1,
      "maxLength": 255,
      "description": "Каноническое юридическое наименование получателя, которому принадлежат разрешённые заведение и merchant custody. Это сохранённая идентичность юридического лица, а не предположение о PSP statement descriptor.",
      "example": "Example name"
    }
  },
  "description": "Определённые сервером имена ресторана и юридического лица получателя из точных разрешённых заведения и юридического лица. Quotes сохраняют эти отображаемые сведения в неизменяемом manifest согласия.",
  "required": [
    "venueName",
    "legalName"
  ],
  "example": {
    "venueName": "Example name",
    "legalName": "Example name"
  }
}
GuestPaymentDisplayedTermsDto

Точный локализованный текст согласия с определяющими его для финансовой проверки версией, языком и digest.

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

Непустая версия показанного текста согласия; при принятии должна точно совпадать с версией, сохранённой в offer.

string
Полное определение
{
  "type": "string",
  "maxLength": 64,
  "description": "Непустая версия показанного текста согласия; при принятии должна точно совпадать с версией, сохранённой в offer.",
  "example": "example"
}
digestОбязательно

SHA-256 digest в нижнем регистре, связывающий версию terms, язык и точный показанный текст; при принятии повторяется предложенный digest.

string
Полное определение
{
  "type": "string",
  "pattern": "^[a-f0-9]{64}$",
  "description": "SHA-256 digest в нижнем регистре, связывающий версию terms, язык и точный показанный текст; при принятии повторяется предложенный digest.",
  "example": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef"
}
localeОбязательно

Язык, охваченный показанным текстом согласия и digest; при принятии должен совпадать с языком, сохранённым в offer.

string
Полное определение
{
  "type": "string",
  "enum": [
    "en",
    "ru",
    "ka"
  ],
  "description": "Язык, охваченный показанным текстом согласия и digest; при принятии должен совпадать с языком, сохранённым в offer.",
  "example": "en"
}
textОбязательно

Точный локализованный текст, охваченный этими версией terms, языком и digest.

string
Полное определение
{
  "type": "string",
  "description": "Точный локализованный текст, охваченный этими версией terms, языком и digest.",
  "example": "en"
}
Полное определение
{
  "type": "object",
  "properties": {
    "version": {
      "type": "string",
      "maxLength": 64,
      "description": "Непустая версия показанного текста согласия; при принятии должна точно совпадать с версией, сохранённой в offer.",
      "example": "example"
    },
    "digest": {
      "type": "string",
      "pattern": "^[a-f0-9]{64}$",
      "description": "SHA-256 digest в нижнем регистре, связывающий версию terms, язык и точный показанный текст; при принятии повторяется предложенный digest.",
      "example": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef"
    },
    "locale": {
      "type": "string",
      "enum": [
        "en",
        "ru",
        "ka"
      ],
      "description": "Язык, охваченный показанным текстом согласия и digest; при принятии должен совпадать с языком, сохранённым в offer.",
      "example": "en"
    },
    "text": {
      "type": "string",
      "description": "Точный локализованный текст, охваченный этими версией terms, языком и digest.",
      "example": "en"
    }
  },
  "description": "Точный локализованный текст согласия с определяющими его для финансовой проверки версией, языком и digest.",
  "required": [
    "version",
    "digest",
    "locale",
    "text"
  ],
  "example": {
    "version": "example",
    "digest": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef",
    "locale": "en",
    "text": "en"
  }
}
GuestPaymentQuotedOrderDto

Зафиксированные основная сумма и распределённая доля запрошенных чаевых для одного нативного Order с частями позиций, охваченными предложением.

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

UUID нативного Order, на который направлено это проверенное распределение основной суммы и чаевых.

string · uuid
Полное определение
{
  "type": "string",
  "format": "uuid",
  "description": "UUID нативного Order, на который направлено это проверенное распределение основной суммы и чаевых.",
  "example": "f3127edf-ce4f-4da7-8be5-81b962024e6c"
}
principalAmountОбязательно

Каноническая основная сумма, отнесённая на этот Order до чаевых, строкой с двумя дробными знаками в валюте расчёта.

string
Полное определение
{
  "type": "string",
  "example": "12.50",
  "description": "Каноническая основная сумма, отнесённая на этот Order до чаевых, строкой с двумя дробными знаками в валюте расчёта."
}
tipAmountОбязательно

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

string
Полное определение
{
  "type": "string",
  "example": "0.00",
  "description": "Каноническая доля запрошенных чаевых для этого Order, неотрицательной строкой с двумя дробными знаками в валюте расчёта."
}
totalAmountОбязательно

Сумма основной суммы и распределённых чаевых этой цели Order строкой с двумя дробными знаками в валюте расчёта.

string
Полное определение
{
  "type": "string",
  "example": "12.50",
  "description": "Сумма основной суммы и распределённых чаевых этой цели Order строкой с двумя дробными знаками в валюте расчёта."
}
itemsОбязательно

Канонические части нативных позиций и их основные суммы, охваченные этим выбранным Order в проверенном расчёте.

array
Полное определение
{
  "description": "Канонические части нативных позиций и их основные суммы, охваченные этим выбранным Order в проверенном расчёте.",
  "type": "array",
  "items": {
    "$ref": "#/components/schemas/GuestPaymentQuotedItemDto"
  },
  "example": [
    {
      "orderItemId": "48069d23-be97-4039-8099-9db268ddf890",
      "quantityPortion": "1.0000",
      "totalAmount": "12.50"
    }
  ]
}
Полное определение
{
  "type": "object",
  "properties": {
    "orderId": {
      "type": "string",
      "format": "uuid",
      "description": "UUID нативного Order, на который направлено это проверенное распределение основной суммы и чаевых.",
      "example": "f3127edf-ce4f-4da7-8be5-81b962024e6c"
    },
    "principalAmount": {
      "type": "string",
      "example": "12.50",
      "description": "Каноническая основная сумма, отнесённая на этот Order до чаевых, строкой с двумя дробными знаками в валюте расчёта."
    },
    "tipAmount": {
      "type": "string",
      "example": "0.00",
      "description": "Каноническая доля запрошенных чаевых для этого Order, неотрицательной строкой с двумя дробными знаками в валюте расчёта."
    },
    "totalAmount": {
      "type": "string",
      "example": "12.50",
      "description": "Сумма основной суммы и распределённых чаевых этой цели Order строкой с двумя дробными знаками в валюте расчёта."
    },
    "items": {
      "description": "Канонические части нативных позиций и их основные суммы, охваченные этим выбранным Order в проверенном расчёте.",
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/GuestPaymentQuotedItemDto"
      },
      "example": [
        {
          "orderItemId": "48069d23-be97-4039-8099-9db268ddf890",
          "quantityPortion": "1.0000",
          "totalAmount": "12.50"
        }
      ]
    }
  },
  "description": "Зафиксированные основная сумма и распределённая доля запрошенных чаевых для одного нативного Order с частями позиций, охваченными предложением.",
  "required": [
    "orderId",
    "principalAmount",
    "tipAmount",
    "totalAmount",
    "items"
  ],
  "example": {
    "orderId": "f3127edf-ce4f-4da7-8be5-81b962024e6c",
    "principalAmount": "12.50",
    "tipAmount": "0.00",
    "totalAmount": "12.50",
    "items": [
      {
        "orderItemId": "48069d23-be97-4039-8099-9db268ddf890",
        "quantityPortion": "1.0000",
        "totalAmount": "12.50"
      }
    ]
  }
}
GuestPaymentQuotedItemDto

Каноническая часть нативной позиции и её основная сумма, включённые в проверенный расчёт автоматической гостевой оплаты.

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

UUID нативной позиции Order, выбранной в распределении содержащего её проверенного Order.

string · uuid
Полное определение
{
  "type": "string",
  "format": "uuid",
  "description": "UUID нативной позиции Order, выбранной в распределении содержащего её проверенного Order.",
  "example": "48069d23-be97-4039-8099-9db268ddf890"
}
quantityPortionОбязательно

Каноническое выбранное количество позиции, сохранённое в этом предложении, положительной строкой ровно с четырьмя дробными знаками.

string
Полное определение
{
  "type": "string",
  "example": "1.0000",
  "description": "Каноническое выбранное количество позиции, сохранённое в этом предложении, положительной строкой ровно с четырьмя дробными знаками."
}
totalAmountОбязательно

Каноническая основная сумма выбранной части позиции в валюте расчёта строкой с двумя дробными знаками; чаевые распределяются отдельно на содержащую цель Order.

string
Полное определение
{
  "type": "string",
  "example": "12.50",
  "description": "Каноническая основная сумма выбранной части позиции в валюте расчёта строкой с двумя дробными знаками; чаевые распределяются отдельно на содержащую цель Order."
}
Полное определение
{
  "type": "object",
  "properties": {
    "orderItemId": {
      "type": "string",
      "format": "uuid",
      "description": "UUID нативной позиции Order, выбранной в распределении содержащего её проверенного Order.",
      "example": "48069d23-be97-4039-8099-9db268ddf890"
    },
    "quantityPortion": {
      "type": "string",
      "example": "1.0000",
      "description": "Каноническое выбранное количество позиции, сохранённое в этом предложении, положительной строкой ровно с четырьмя дробными знаками."
    },
    "totalAmount": {
      "type": "string",
      "example": "12.50",
      "description": "Каноническая основная сумма выбранной части позиции в валюте расчёта строкой с двумя дробными знаками; чаевые распределяются отдельно на содержащую цель Order."
    }
  },
  "description": "Каноническая часть нативной позиции и её основная сумма, включённые в проверенный расчёт автоматической гостевой оплаты.",
  "required": [
    "orderItemId",
    "quantityPortion",
    "totalAmount"
  ],
  "example": {
    "orderItemId": "48069d23-be97-4039-8099-9db268ddf890",
    "quantityPortion": "1.0000",
    "totalAmount": "12.50"
  }
}
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 поддерживают вход, язык и тему. Аналитика выключена, пока вы явно ее не разрешите.