Skip to content
Sections

Partner preorders

Read a partner preorder order

GET/external/preorders/orders/{orderId}

Returns the authorized partner projection of a preorder, including fulfillment, deposit, item, and revision state without internal-only data.

Authentication

Authorization: Bearer <HALLIFY_PREORDER_PARTNER_KEY>

Partner-scoped preorder credential.

Connection guide

Parameters

orderIdPath · Required

Venue order selected for this operation; its current revision, lifecycle, and ownership determine the allowed result.

string · uuid
Full definition
{
  "type": "string",
  "format": "uuid",
  "example": "9b6163a8-afea-4877-818b-8e2ae28a2845"
}

Responses

200Returns the partner-visible preorder or the documented absent result when it is outside the credential scope.
PreorderExternalGetOrderResultDto
Full definition
{
  "$ref": "#/components/schemas/PreorderExternalGetOrderResultDto"
}
Example response · 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
    }
  ]
}
401Rejects a missing, malformed, expired, revoked, or invalid preorderPartnerKey credential at the owning domain boundary.
TranslatedErrorDto
Full definition
{
  "$ref": "#/components/schemas/TranslatedErrorDto"
}
Example response · 401 · application/json
{
  "statusCode": 401,
  "error": "errors:http.unauthorized",
  "code": "HTTP_UNAUTHORIZED",
  "message": "errors:http.unauthorized",
  "translationKey": "errors:http.unauthorized"
}

Schemas

PreorderExternalGetOrderResultDto

Returns the partner-visible preorder or the documented absent result when it is outside the credential scope.

idRequired

Hallify UUID identifying preorder external order.

string · uuid
Full definition
{
  "type": "string",
  "format": "uuid",
  "description": "Hallify UUID identifying preorder external order.",
  "example": "dadd2857-b22c-4e95-8ed2-2a29c5a47f42"
}
revisionRequired

Monotonic optimistic-concurrency revision for preorder external order. Accepted values enforce minimum 1.

integer
Full definition
{
  "type": "integer",
  "minimum": 1,
  "description": "Monotonic optimistic-concurrency revision for preorder external order. Accepted values enforce minimum 1.",
  "example": 1
}
statusRequired

Current lifecycle status of preorder external order; allowed values are OPEN, SUSPENDED, SUBMITTED, PAID, CANCELED.

string
Full definition
{
  "type": "string",
  "enum": [
    "OPEN",
    "SUSPENDED",
    "SUBMITTED",
    "PAID",
    "CANCELED"
  ],
  "description": "Current lifecycle status of preorder external order; allowed values are OPEN, SUSPENDED, SUBMITTED, PAID, CANCELED.",
  "example": "OPEN"
}
currencyRequired

ISO 4217 currency code for the monetary values carried by preorder external order.

string
Full definition
{
  "type": "string",
  "pattern": "^[A-Z]{3}$",
  "description": "ISO 4217 currency code for the monetary values carried by preorder external order.",
  "example": "GEL"
}
createdAtRequired

RFC 3339 timestamp for created at; offsets represent the same absolute instant.

string · date-time
Full definition
{
  "type": "string",
  "format": "date-time",
  "description": "RFC 3339 timestamp for created at; offsets represent the same absolute instant.",
  "example": "2026-01-15T10:00:00.000Z"
}
updatedAtRequired

RFC 3339 timestamp for updated at; offsets represent the same absolute instant.

string · date-time
Full definition
{
  "type": "string",
  "format": "date-time",
  "description": "RFC 3339 timestamp for updated at; offsets represent the same absolute instant.",
  "example": "2026-01-15T13:00:00.000Z"
}
fulfillmentRequired

Fulfillment details embedded in preorder external order containing revision, status, service mode, scheduled for, deposit status, and deposit required amount. Null means no value is recorded for this representation.

object · null
Full definition
{
  "type": "object",
  "nullable": true,
  "properties": {
    "revision": {
      "type": "integer",
      "minimum": 1,
      "description": "Monotonic optimistic-concurrency revision for preorder external order fulfillment. Accepted values enforce minimum 1.",
      "example": 1
    },
    "status": {
      "type": "string",
      "enum": [
        "DRAFT",
        "HELD",
        "CONFIRMED",
        "IN_PREPARATION",
        "READY_FOR_HANDOFF",
        "OUT_FOR_DELIVERY",
        "COMPLETED",
        "CANCELED",
        "EXPIRED"
      ],
      "description": "Current lifecycle status of preorder external order fulfillment; allowed values are 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": "Allowed service mode for preorder external order fulfillment: DINE_IN, PICKUP, DELIVERY, CATERING.",
      "example": "DINE_IN"
    },
    "scheduledFor": {
      "type": "string",
      "format": "date-time",
      "description": "RFC 3339 timestamp for scheduled for; offsets represent the same absolute instant.",
      "example": "2026-01-15T12:00:00.000Z"
    },
    "depositStatus": {
      "type": "string",
      "enum": [
        "NOT_REQUIRED",
        "REQUIRED",
        "PARTIALLY_PAID",
        "PAID",
        "OVERDUE"
      ],
      "description": "Current lifecycle status of preorder external order fulfillment; allowed values are NOT_REQUIRED, REQUIRED, PARTIALLY_PAID, PAID, OVERDUE.",
      "example": "NOT_REQUIRED"
    },
    "depositRequiredAmount": {
      "type": "string",
      "pattern": "^\\d+\\.\\d{2}$",
      "description": "Decimal monetary deposit required amount serialized as a string in the currency identified by the `currency` field; zero is a recorded amount, not absence.",
      "example": "1.00"
    },
    "depositPaidAmount": {
      "type": "string",
      "pattern": "^\\d+\\.\\d{2}$",
      "description": "Decimal monetary deposit paid amount serialized as a string in the currency identified by the `currency` field; zero is a recorded amount, not absence.",
      "example": "1.00"
    },
    "stockReservationState": {
      "type": "string",
      "enum": [
        "NOT_REQUIRED",
        "PENDING",
        "RESERVED",
        "SHORTFALL",
        "CONSUMED",
        "RELEASED"
      ],
      "description": "Allowed stock reservation state for preorder external order fulfillment: NOT_REQUIRED, PENDING, RESERVED, SHORTFALL, CONSUMED, RELEASED.",
      "example": "NOT_REQUIRED"
    },
    "handoffOutcome": {
      "type": "string",
      "nullable": true,
      "enum": [
        "PICKED_UP",
        "DELIVERED",
        "CATERING_HANDOFF",
        null
      ],
      "description": "Allowed handoff outcome for preorder external order fulfillment: PICKED_UP, DELIVERED, CATERING_HANDOFF. Null means no value is recorded for this representation.",
      "example": "PICKED_UP"
    },
    "completedAt": {
      "type": "string",
      "format": "date-time",
      "nullable": true,
      "description": "RFC 3339 timestamp for completed at; offsets represent the same absolute instant. Null means no value is recorded for this representation.",
      "example": "2026-01-15T13:00:00.000Z"
    },
    "canceledAt": {
      "type": "string",
      "format": "date-time",
      "nullable": true,
      "description": "RFC 3339 timestamp for canceled at; offsets represent the same absolute instant. Null means no value is recorded for this representation.",
      "example": "2026-01-15T12:00:00.000Z"
    }
  },
  "required": [
    "revision",
    "status",
    "serviceMode",
    "scheduledFor",
    "depositStatus",
    "depositRequiredAmount",
    "depositPaidAmount",
    "stockReservationState",
    "handoffOutcome",
    "completedAt",
    "canceledAt"
  ],
  "description": "Fulfillment details embedded in preorder external order containing revision, status, service mode, scheduled for, deposit status, and deposit required amount. Null means no value is recorded for this representation.",
  "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
  }
}
itemsRequired

Items returned in the preorder external order collection.

array
Full definition
{
  "type": "array",
  "items": {
    "type": "object",
    "properties": {
      "id": {
        "type": "string",
        "format": "uuid",
        "description": "Hallify UUID identifying preorder external order item.",
        "example": "dadd2857-b22c-4e95-8ed2-2a29c5a47f42"
      },
      "nameSnapshot": {
        "type": "string",
        "description": "Name snapshot for preorder external order item.",
        "example": "Example name"
      },
      "quantity": {
        "type": "number",
        "minimum": 0,
        "description": "Fraction-capable quantity measured in the unit established by the item or line that embeds preorder external order item. Accepted values enforce minimum 0.",
        "example": 1
      },
      "unitPrice": {
        "type": "string",
        "pattern": "^\\d+\\.\\d{2}$",
        "description": "Decimal monetary unit price serialized as a string in the currency identified by the `currency` field; zero is a recorded amount, not absence.",
        "example": "1.00"
      },
      "kitchenStatus": {
        "type": "string",
        "description": "Current lifecycle status of preorder external order item.",
        "example": "example"
      },
      "fullyVoidedAt": {
        "type": "string",
        "format": "date-time",
        "nullable": true,
        "description": "RFC 3339 timestamp for fully voided at; offsets represent the same absolute instant. Null means no value is recorded for this representation.",
        "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 returned in the preorder external order collection.",
  "example": [
    {
      "id": "dadd2857-b22c-4e95-8ed2-2a29c5a47f42",
      "nameSnapshot": "Example name",
      "quantity": 1,
      "unitPrice": "1.00",
      "kitchenStatus": "example",
      "fullyVoidedAt": null
    }
  ]
}
Full definition
{
  "type": "object",
  "nullable": true,
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid",
      "description": "Hallify UUID identifying preorder external order.",
      "example": "dadd2857-b22c-4e95-8ed2-2a29c5a47f42"
    },
    "revision": {
      "type": "integer",
      "minimum": 1,
      "description": "Monotonic optimistic-concurrency revision for preorder external order. Accepted values enforce minimum 1.",
      "example": 1
    },
    "status": {
      "type": "string",
      "enum": [
        "OPEN",
        "SUSPENDED",
        "SUBMITTED",
        "PAID",
        "CANCELED"
      ],
      "description": "Current lifecycle status of preorder external order; allowed values are OPEN, SUSPENDED, SUBMITTED, PAID, CANCELED.",
      "example": "OPEN"
    },
    "currency": {
      "type": "string",
      "pattern": "^[A-Z]{3}$",
      "description": "ISO 4217 currency code for the monetary values carried by preorder external order.",
      "example": "GEL"
    },
    "createdAt": {
      "type": "string",
      "format": "date-time",
      "description": "RFC 3339 timestamp for created at; offsets represent the same absolute instant.",
      "example": "2026-01-15T10:00:00.000Z"
    },
    "updatedAt": {
      "type": "string",
      "format": "date-time",
      "description": "RFC 3339 timestamp for updated at; offsets represent the same absolute instant.",
      "example": "2026-01-15T13:00:00.000Z"
    },
    "fulfillment": {
      "type": "object",
      "nullable": true,
      "properties": {
        "revision": {
          "type": "integer",
          "minimum": 1,
          "description": "Monotonic optimistic-concurrency revision for preorder external order fulfillment. Accepted values enforce minimum 1.",
          "example": 1
        },
        "status": {
          "type": "string",
          "enum": [
            "DRAFT",
            "HELD",
            "CONFIRMED",
            "IN_PREPARATION",
            "READY_FOR_HANDOFF",
            "OUT_FOR_DELIVERY",
            "COMPLETED",
            "CANCELED",
            "EXPIRED"
          ],
          "description": "Current lifecycle status of preorder external order fulfillment; allowed values are 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": "Allowed service mode for preorder external order fulfillment: DINE_IN, PICKUP, DELIVERY, CATERING.",
          "example": "DINE_IN"
        },
        "scheduledFor": {
          "type": "string",
          "format": "date-time",
          "description": "RFC 3339 timestamp for scheduled for; offsets represent the same absolute instant.",
          "example": "2026-01-15T12:00:00.000Z"
        },
        "depositStatus": {
          "type": "string",
          "enum": [
            "NOT_REQUIRED",
            "REQUIRED",
            "PARTIALLY_PAID",
            "PAID",
            "OVERDUE"
          ],
          "description": "Current lifecycle status of preorder external order fulfillment; allowed values are NOT_REQUIRED, REQUIRED, PARTIALLY_PAID, PAID, OVERDUE.",
          "example": "NOT_REQUIRED"
        },
        "depositRequiredAmount": {
          "type": "string",
          "pattern": "^\\d+\\.\\d{2}$",
          "description": "Decimal monetary deposit required amount serialized as a string in the currency identified by the `currency` field; zero is a recorded amount, not absence.",
          "example": "1.00"
        },
        "depositPaidAmount": {
          "type": "string",
          "pattern": "^\\d+\\.\\d{2}$",
          "description": "Decimal monetary deposit paid amount serialized as a string in the currency identified by the `currency` field; zero is a recorded amount, not absence.",
          "example": "1.00"
        },
        "stockReservationState": {
          "type": "string",
          "enum": [
            "NOT_REQUIRED",
            "PENDING",
            "RESERVED",
            "SHORTFALL",
            "CONSUMED",
            "RELEASED"
          ],
          "description": "Allowed stock reservation state for preorder external order fulfillment: NOT_REQUIRED, PENDING, RESERVED, SHORTFALL, CONSUMED, RELEASED.",
          "example": "NOT_REQUIRED"
        },
        "handoffOutcome": {
          "type": "string",
          "nullable": true,
          "enum": [
            "PICKED_UP",
            "DELIVERED",
            "CATERING_HANDOFF",
            null
          ],
          "description": "Allowed handoff outcome for preorder external order fulfillment: PICKED_UP, DELIVERED, CATERING_HANDOFF. Null means no value is recorded for this representation.",
          "example": "PICKED_UP"
        },
        "completedAt": {
          "type": "string",
          "format": "date-time",
          "nullable": true,
          "description": "RFC 3339 timestamp for completed at; offsets represent the same absolute instant. Null means no value is recorded for this representation.",
          "example": "2026-01-15T13:00:00.000Z"
        },
        "canceledAt": {
          "type": "string",
          "format": "date-time",
          "nullable": true,
          "description": "RFC 3339 timestamp for canceled at; offsets represent the same absolute instant. Null means no value is recorded for this representation.",
          "example": "2026-01-15T12:00:00.000Z"
        }
      },
      "required": [
        "revision",
        "status",
        "serviceMode",
        "scheduledFor",
        "depositStatus",
        "depositRequiredAmount",
        "depositPaidAmount",
        "stockReservationState",
        "handoffOutcome",
        "completedAt",
        "canceledAt"
      ],
      "description": "Fulfillment details embedded in preorder external order containing revision, status, service mode, scheduled for, deposit status, and deposit required amount. Null means no value is recorded for this representation.",
      "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": "Hallify UUID identifying preorder external order item.",
            "example": "dadd2857-b22c-4e95-8ed2-2a29c5a47f42"
          },
          "nameSnapshot": {
            "type": "string",
            "description": "Name snapshot for preorder external order item.",
            "example": "Example name"
          },
          "quantity": {
            "type": "number",
            "minimum": 0,
            "description": "Fraction-capable quantity measured in the unit established by the item or line that embeds preorder external order item. Accepted values enforce minimum 0.",
            "example": 1
          },
          "unitPrice": {
            "type": "string",
            "pattern": "^\\d+\\.\\d{2}$",
            "description": "Decimal monetary unit price serialized as a string in the currency identified by the `currency` field; zero is a recorded amount, not absence.",
            "example": "1.00"
          },
          "kitchenStatus": {
            "type": "string",
            "description": "Current lifecycle status of preorder external order item.",
            "example": "example"
          },
          "fullyVoidedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "RFC 3339 timestamp for fully voided at; offsets represent the same absolute instant. Null means no value is recorded for this representation.",
            "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 returned in the preorder external order collection.",
      "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": "Returns the partner-visible preorder or the documented absent result when it is outside the credential scope.",
  "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

Stable error envelope emitted by the global HTTP exception boundary. Domain-specific machine data, when present, is nested under details.

statusCodeRequired

HTTP status code repeated from the response.

integer
Full definition
{
  "type": "integer",
  "description": "HTTP status code repeated from the response.",
  "example": 400
}
errorRequired

Translation key for the HTTP category, such as errors:http.conflict. The specific cause is identified by code and translationKey.

string
Full definition
{
  "type": "string",
  "description": "Translation key for the HTTP category, such as errors:http.conflict. The specific cause is identified by code and translationKey.",
  "example": "errors.request.invalid"
}
codeRequired

Stable machine-readable domain code, or an HTTP_* fallback when no domain code is provided. Branch on this field and the HTTP status; localized wording never controls retries or business decisions.

string
Full definition
{
  "type": "string",
  "example": "HTTP_BAD_REQUEST",
  "description": "Stable machine-readable domain code, or an HTTP_* fallback when no domain code is provided. Branch on this field and the HTTP status; localized wording never controls retries or business decisions."
}
messageRequired

Translation key, identical to translationKey. The API does not return localized display text. Resolve the key and translationValues in the consuming application.

string
Full definition
{
  "type": "string",
  "example": "errors:http.badRequest",
  "description": "Translation key, identical to translationKey. The API does not return localized display text. Resolve the key and translationValues in the consuming application."
}
translationKeyRequired

Canonical translation key, identical to message. Status-specific errors:http.* keys cover unspecified failures. Public keys and EN/RU explanations are listed in Developers; unknown keys require a localized client fallback.

string
Full definition
{
  "type": "string",
  "example": "errors:http.badRequest",
  "description": "Canonical translation key, identical to message. Status-specific errors:http.* keys cover unspecified failures. Public keys and EN/RU explanations are listed in Developers; unknown keys require a localized client fallback."
}
translationValuesOptional

Optional scalar values for placeholders in the translation. Treat values as data, escape them when rendering, and never use them as translation options.

object
Full definition
{
  "type": "object",
  "additionalProperties": {
    "oneOf": [
      {
        "type": "string",
        "example": "example"
      },
      {
        "type": "number",
        "example": 0
      },
      {
        "type": "boolean",
        "example": true
      }
    ],
    "example": "example"
  },
  "description": "Optional scalar values for placeholders in the translation. Treat values as data, escape them when rendering, and never use them as translation options.",
  "example": {
    "exampleKey": "example"
  }
}
validationErrorsOptional

Field validation failures with translation keys and stable validator codes. Submitted values and raw validator text are not included.

array
Full definition
{
  "description": "Field validation failures with translation keys and stable validator codes. Submitted values and raw validator text are not included.",
  "type": "array",
  "items": {
    "$ref": "#/components/schemas/ValidationErrorDto"
  },
  "example": [
    {
      "field": "email",
      "translationKey": "validation:isEmail",
      "code": "isEmail",
      "message": "validation:isEmail"
    }
  ]
}
detailsOptional

Optional domain-specific blocker or validation details

oneOf
Full definition
{
  "description": "Optional domain-specific blocker or validation details",
  "oneOf": [
    {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/JsonValue"
      },
      "example": [
        "example"
      ]
    },
    {
      "type": "object",
      "additionalProperties": {
        "$ref": "#/components/schemas/JsonValue"
      },
      "example": {
        "exampleKey": "example"
      }
    }
  ],
  "example": [
    "example"
  ]
}
Full definition
{
  "type": "object",
  "properties": {
    "statusCode": {
      "type": "integer",
      "description": "HTTP status code repeated from the response.",
      "example": 400
    },
    "error": {
      "type": "string",
      "description": "Translation key for the HTTP category, such as errors:http.conflict. The specific cause is identified by code and translationKey.",
      "example": "errors.request.invalid"
    },
    "code": {
      "type": "string",
      "example": "HTTP_BAD_REQUEST",
      "description": "Stable machine-readable domain code, or an HTTP_* fallback when no domain code is provided. Branch on this field and the HTTP status; localized wording never controls retries or business decisions."
    },
    "message": {
      "type": "string",
      "example": "errors:http.badRequest",
      "description": "Translation key, identical to translationKey. The API does not return localized display text. Resolve the key and translationValues in the consuming application."
    },
    "translationKey": {
      "type": "string",
      "example": "errors:http.badRequest",
      "description": "Canonical translation key, identical to message. Status-specific errors:http.* keys cover unspecified failures. Public keys and EN/RU explanations are listed in Developers; unknown keys require a localized client fallback."
    },
    "translationValues": {
      "type": "object",
      "additionalProperties": {
        "oneOf": [
          {
            "type": "string",
            "example": "example"
          },
          {
            "type": "number",
            "example": 0
          },
          {
            "type": "boolean",
            "example": true
          }
        ],
        "example": "example"
      },
      "description": "Optional scalar values for placeholders in the translation. Treat values as data, escape them when rendering, and never use them as translation options.",
      "example": {
        "exampleKey": "example"
      }
    },
    "validationErrors": {
      "description": "Field validation failures with translation keys and stable validator codes. Submitted values and raw validator text are not included.",
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/ValidationErrorDto"
      },
      "example": [
        {
          "field": "email",
          "translationKey": "validation:isEmail",
          "code": "isEmail",
          "message": "validation:isEmail"
        }
      ]
    },
    "details": {
      "description": "Optional domain-specific blocker or validation details",
      "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": "Stable error envelope emitted by the global HTTP exception boundary. Domain-specific machine data, when present, is nested under details.",
  "example": {
    "statusCode": 400,
    "error": "errors:http.badRequest",
    "code": "HTTP_BAD_REQUEST",
    "message": "errors:http.badRequest",
    "translationKey": "errors:http.badRequest"
  }
}
ValidationErrorDto

Field validation failure with a field path, stable validator code and a translation key. Human-readable text belongs to the consuming application.

fieldRequired

Public field path. Nested properties and array indices are separated by dots.

string
Full definition
{
  "type": "string",
  "example": "email",
  "description": "Public field path. Nested properties and array indices are separated by dots."
}
translationKeyRequired

Translation key for this validator, identical to message. Resolve it using a client dictionary; see the public Developers error catalog.

string
Full definition
{
  "type": "string",
  "example": "validation:isEmail",
  "description": "Translation key for this validator, identical to message. Resolve it using a client dictionary; see the public Developers error catalog."
}
codeRequired

Stable validator identifier for this field failure. Custom validators may define additional identifiers.

string
Full definition
{
  "type": "string",
  "example": "isEmail",
  "description": "Stable validator identifier for this field failure. Custom validators may define additional identifiers."
}
messageRequired

Translation key describing this field validation failure, identical to translationKey. Submitted values and validator prose are not included.

string
Full definition
{
  "type": "string",
  "example": "validation:isEmail",
  "description": "Translation key describing this field validation failure, identical to translationKey. Submitted values and validator prose are not included."
}
translationValuesOptional

Optional scalar values for placeholders in the translation. Treat values as data, escape them when rendering, and never use them as translation options.

object
Full definition
{
  "type": "object",
  "additionalProperties": {
    "oneOf": [
      {
        "type": "string",
        "example": "example"
      },
      {
        "type": "number",
        "example": 0
      },
      {
        "type": "boolean",
        "example": true
      }
    ],
    "example": "example"
  },
  "description": "Optional scalar values for placeholders in the translation. Treat values as data, escape them when rendering, and never use them as translation options.",
  "example": {
    "exampleKey": "example"
  }
}
Full definition
{
  "type": "object",
  "properties": {
    "field": {
      "type": "string",
      "example": "email",
      "description": "Public field path. Nested properties and array indices are separated by dots."
    },
    "translationKey": {
      "type": "string",
      "example": "validation:isEmail",
      "description": "Translation key for this validator, identical to message. Resolve it using a client dictionary; see the public Developers error catalog."
    },
    "code": {
      "type": "string",
      "example": "isEmail",
      "description": "Stable validator identifier for this field failure. Custom validators may define additional identifiers."
    },
    "message": {
      "type": "string",
      "example": "validation:isEmail",
      "description": "Translation key describing this field validation failure, identical to translationKey. Submitted values and validator prose are not included."
    },
    "translationValues": {
      "type": "object",
      "additionalProperties": {
        "oneOf": [
          {
            "type": "string",
            "example": "example"
          },
          {
            "type": "number",
            "example": 0
          },
          {
            "type": "boolean",
            "example": true
          }
        ],
        "example": "example"
      },
      "description": "Optional scalar values for placeholders in the translation. Treat values as data, escape them when rendering, and never use them as translation options.",
      "example": {
        "exampleKey": "example"
      }
    }
  },
  "required": [
    "field",
    "translationKey",
    "code",
    "message"
  ],
  "description": "Field validation failure with a field path, stable validator code and a translation key. Human-readable text belongs to the consuming application.",
  "example": {
    "field": "email",
    "translationKey": "validation:isEmail",
    "code": "isEmail",
    "message": "validation:isEmail"
  }
}
JsonValue

Recursively JSON-safe value used only where the owning contract intentionally allows free-form structured data.

Full definition
{
  "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": "Recursively JSON-safe value used only where the owning contract intentionally allows free-form structured data.",
  "example": "example"
}

Hallify uses essential cookies and optional analytics.

Essential cookies keep sign-in, locale, and theme preferences working. Analytics is off until you choose to allow it.