Skip to content
Sections

Guest portal

Get guest-owned loyalty account

GET/guest-portal/loyalty

Returns the capability-owned enrollment, points balance, current tier, expiration state, and visible ledger summary.

Authentication

x-guest-portal-token: <HALLIFY_GUEST_PORTAL_TOKEN>

Guest-owned portal session token.

Connection guide

Parameters

No path, query or ordinary header parameters. See authentication and request body below.

Responses

200Returns the current guest loyalty account projection.
GuestLoyaltyWorkspaceDto
Full definition
{
  "$ref": "#/components/schemas/GuestLoyaltyWorkspaceDto"
}
Example response · 200 · application/json
{
  "adjustments": [
    {
      "id": "69437603-0ae1-4d42-848b-150f80c54e15",
      "points": 0,
      "reason": "Synthetic example",
      "status": "PENDING",
      "revision": 1,
      "requestedById": "e84b4c3f-5e8d-4601-8a63-dafba13b902d",
      "requestedAt": "2026-01-15T12:00:00.000Z"
    }
  ]
}
401Rejects a missing, malformed, expired, revoked, or invalid guestPortalToken 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

GuestLoyaltyWorkspaceDto

Returns the current guest loyalty account projection.

programOptional

Program details embedded in guest portal loyalty containing id, venue id, name, status, points name, and currency. Null means no value is recorded for this representation.

object · null
Full definition
{
  "type": "object",
  "required": [
    "id",
    "name",
    "status",
    "pointsName",
    "currency",
    "pointsPerCurrencyUnit",
    "redemptionValuePerPoint",
    "revision",
    "tiers"
  ],
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid",
      "description": "Hallify UUID identifying guest portal loyalty program.",
      "example": "222a791a-08cc-49d5-8a38-85ae79bc2a8f"
    },
    "venueId": {
      "type": "string",
      "format": "uuid",
      "nullable": true,
      "description": "Hallify UUID identifying venue associated with guest portal loyalty program. Null means no value is recorded for this representation.",
      "example": "0604de3a-da74-4ad5-89f6-2dfe000d5391"
    },
    "name": {
      "type": "string",
      "description": "Human-readable name for guest portal loyalty program.",
      "example": "Example name"
    },
    "status": {
      "type": "string",
      "enum": [
        "DRAFT",
        "ACTIVE",
        "PAUSED",
        "ARCHIVED"
      ],
      "description": "Current lifecycle status of guest portal loyalty program; allowed values are DRAFT, ACTIVE, PAUSED, ARCHIVED.",
      "example": "DRAFT"
    },
    "pointsName": {
      "type": "string",
      "description": "Human-readable points name for guest portal loyalty program.",
      "example": "Example name"
    },
    "currency": {
      "type": "string",
      "description": "ISO 4217 currency code for the monetary values carried by guest portal loyalty program.",
      "example": "GEL"
    },
    "pointsPerCurrencyUnit": {
      "type": "string",
      "description": "ISO 4217 currency code for the monetary values carried by guest portal loyalty program.",
      "example": "GEL"
    },
    "redemptionValuePerPoint": {
      "type": "string",
      "description": "Redemption value per point for guest portal loyalty program.",
      "example": "example"
    },
    "pointsExpiryDays": {
      "type": "integer",
      "nullable": true,
      "description": "Whole-number points expiry days recorded for guest portal loyalty program. Null means no value is recorded for this representation.",
      "example": 0
    },
    "revision": {
      "type": "integer",
      "description": "Monotonic optimistic-concurrency revision for guest portal loyalty program.",
      "example": 1
    },
    "tiers": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "name",
          "minimumLifetimePoints",
          "isActive",
          "revision"
        ],
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Hallify UUID identifying guest portal loyalty program tiers item.",
            "example": "a088d985-d2c9-4968-8593-7fbdfd8fa9cb"
          },
          "name": {
            "type": "string",
            "description": "Human-readable name for guest portal loyalty program tiers item.",
            "example": "Example name"
          },
          "minimumLifetimePoints": {
            "type": "integer",
            "description": "Whole-number minimum lifetime points recorded for guest portal loyalty program tiers item.",
            "example": 0
          },
          "benefits": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/JsonValue"
            },
            "nullable": true,
            "description": "Benefit definitions granted by guest portal loyalty program tiers item. Null means no value is recorded for this representation.",
            "example": {
              "exampleKey": "example"
            }
          },
          "isActive": {
            "type": "boolean",
            "description": "Whether guest portal loyalty program tiers item is active and available for its documented use; false means it is inactive.",
            "example": true
          },
          "revision": {
            "type": "integer",
            "description": "Monotonic optimistic-concurrency revision for guest portal loyalty program tiers item.",
            "example": 1
          }
        },
        "example": {
          "id": "a088d985-d2c9-4968-8593-7fbdfd8fa9cb",
          "name": "Example name",
          "minimumLifetimePoints": 0,
          "isActive": true,
          "revision": 1
        }
      },
      "description": "Tiers included as tiers in guest portal loyalty program.",
      "example": [
        {
          "id": "a088d985-d2c9-4968-8593-7fbdfd8fa9cb",
          "name": "Example name",
          "minimumLifetimePoints": 0,
          "isActive": true,
          "revision": 1
        }
      ]
    }
  },
  "nullable": true,
  "description": "Program details embedded in guest portal loyalty containing id, venue id, name, status, points name, and currency. Null means no value is recorded for this representation.",
  "example": {
    "id": "222a791a-08cc-49d5-8a38-85ae79bc2a8f",
    "name": "Example name",
    "status": "DRAFT",
    "pointsName": "Example name",
    "currency": "GEL",
    "pointsPerCurrencyUnit": "GEL",
    "redemptionValuePerPoint": "example",
    "revision": 1,
    "tiers": [
      {
        "id": "a088d985-d2c9-4968-8593-7fbdfd8fa9cb",
        "name": "Example name",
        "minimumLifetimePoints": 0,
        "isActive": true,
        "revision": 1
      }
    ]
  }
}
accountOptional

Account details embedded in guest portal loyalty containing id, points balance, lifetime points, revision, enrolled at, and last activity at. Null means no value is recorded for this representation.

object · null
Full definition
{
  "type": "object",
  "nullable": true,
  "required": [
    "id",
    "pointsBalance",
    "lifetimePoints",
    "revision",
    "enrolledAt"
  ],
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid",
      "description": "Hallify UUID identifying guest portal loyalty account.",
      "example": "f9b88121-702a-4576-8ac2-dd88ef58b3f0"
    },
    "pointsBalance": {
      "type": "integer",
      "description": "Whole-number points balance recorded for guest portal loyalty account.",
      "example": 0
    },
    "lifetimePoints": {
      "type": "integer",
      "description": "Whole-number lifetime points recorded for guest portal loyalty account.",
      "example": 0
    },
    "revision": {
      "type": "integer",
      "description": "Monotonic optimistic-concurrency revision for guest portal loyalty account.",
      "example": 1
    },
    "enrolledAt": {
      "type": "string",
      "format": "date-time",
      "description": "RFC 3339 timestamp for enrolled at; offsets represent the same absolute instant.",
      "example": "2026-01-15T12:00:00.000Z"
    },
    "lastActivityAt": {
      "type": "string",
      "format": "date-time",
      "nullable": true,
      "description": "RFC 3339 timestamp for last activity at; offsets represent the same absolute instant. Null means no value is recorded for this representation.",
      "example": "2026-01-15T12:00:00.000Z"
    },
    "tier": {
      "required": [
        "id",
        "name",
        "minimumLifetimePoints",
        "benefits"
      ],
      "type": "object",
      "nullable": true,
      "properties": {
        "id": {
          "type": "string",
          "format": "uuid",
          "description": "Hallify UUID identifying guest portal loyalty account tier.",
          "example": "dc560371-b113-4aec-80d5-67bd830de231"
        },
        "name": {
          "type": "string",
          "description": "Human-readable name for guest portal loyalty account tier.",
          "example": "Example name"
        },
        "minimumLifetimePoints": {
          "type": "integer",
          "description": "Whole-number minimum lifetime points recorded for guest portal loyalty account tier.",
          "example": 0
        },
        "benefits": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/components/schemas/JsonValue"
          },
          "nullable": true,
          "description": "Benefit definitions granted by guest portal loyalty account tier. Null means no value is recorded for this representation.",
          "example": {
            "exampleKey": "example"
          }
        }
      },
      "description": "Tier details embedded in guest portal loyalty account containing id, name, minimum lifetime points, and benefits. Null means no value is recorded for this representation.",
      "example": {
        "id": "dc560371-b113-4aec-80d5-67bd830de231",
        "name": "Example name",
        "minimumLifetimePoints": 0,
        "benefits": null
      }
    }
  },
  "description": "Account details embedded in guest portal loyalty containing id, points balance, lifetime points, revision, enrolled at, and last activity at. Null means no value is recorded for this representation.",
  "example": {
    "id": "f9b88121-702a-4576-8ac2-dd88ef58b3f0",
    "pointsBalance": 0,
    "lifetimePoints": 0,
    "revision": 1,
    "enrolledAt": "2026-01-15T12:00:00.000Z"
  }
}
adjustmentsRequired

Adjustments included as adjustments in guest portal loyalty.

array
Full definition
{
  "type": "array",
  "items": {
    "type": "object",
    "required": [
      "id",
      "points",
      "reason",
      "status",
      "revision",
      "requestedById",
      "requestedAt"
    ],
    "properties": {
      "id": {
        "type": "string",
        "format": "uuid",
        "description": "Hallify UUID identifying guest portal loyalty adjustments item.",
        "example": "69437603-0ae1-4d42-848b-150f80c54e15"
      },
      "points": {
        "type": "integer",
        "description": "Whole-number points recorded for guest portal loyalty adjustments item.",
        "example": 0
      },
      "reason": {
        "type": "string",
        "description": "Human-entered reason retained with guest portal loyalty adjustments item as decision or audit evidence.",
        "example": "Synthetic example"
      },
      "status": {
        "type": "string",
        "enum": [
          "PENDING",
          "APPROVED",
          "REJECTED",
          "APPLIED"
        ],
        "description": "Current lifecycle status of guest portal loyalty adjustments item; allowed values are PENDING, APPROVED, REJECTED, APPLIED.",
        "example": "PENDING"
      },
      "revision": {
        "type": "integer",
        "description": "Monotonic optimistic-concurrency revision for guest portal loyalty adjustments item.",
        "example": 1
      },
      "requestedById": {
        "type": "string",
        "format": "uuid",
        "description": "Hallify UUID of the user that requested guest portal loyalty adjustments item.",
        "example": "e84b4c3f-5e8d-4601-8a63-dafba13b902d"
      },
      "decidedById": {
        "type": "string",
        "format": "uuid",
        "nullable": true,
        "description": "Hallify UUID of the user that decided guest portal loyalty adjustments item. Null means no value is recorded for this representation.",
        "example": "12f638d0-9411-4c61-8f2d-aa3e985672c0"
      },
      "requestedAt": {
        "type": "string",
        "format": "date-time",
        "description": "RFC 3339 timestamp for requested at; offsets represent the same absolute instant.",
        "example": "2026-01-15T12:00:00.000Z"
      },
      "decidedAt": {
        "type": "string",
        "format": "date-time",
        "nullable": true,
        "description": "RFC 3339 timestamp for decided at; offsets represent the same absolute instant. Null means no value is recorded for this representation.",
        "example": "2026-01-15T12:00:00.000Z"
      }
    },
    "example": {
      "id": "69437603-0ae1-4d42-848b-150f80c54e15",
      "points": 0,
      "reason": "Synthetic example",
      "status": "PENDING",
      "revision": 1,
      "requestedById": "e84b4c3f-5e8d-4601-8a63-dafba13b902d",
      "requestedAt": "2026-01-15T12:00:00.000Z"
    }
  },
  "description": "Adjustments included as adjustments in guest portal loyalty.",
  "example": [
    {
      "id": "69437603-0ae1-4d42-848b-150f80c54e15",
      "points": 0,
      "reason": "Synthetic example",
      "status": "PENDING",
      "revision": 1,
      "requestedById": "e84b4c3f-5e8d-4601-8a63-dafba13b902d",
      "requestedAt": "2026-01-15T12:00:00.000Z"
    }
  ]
}
Full definition
{
  "type": "object",
  "required": [
    "adjustments"
  ],
  "properties": {
    "program": {
      "type": "object",
      "required": [
        "id",
        "name",
        "status",
        "pointsName",
        "currency",
        "pointsPerCurrencyUnit",
        "redemptionValuePerPoint",
        "revision",
        "tiers"
      ],
      "properties": {
        "id": {
          "type": "string",
          "format": "uuid",
          "description": "Hallify UUID identifying guest portal loyalty program.",
          "example": "222a791a-08cc-49d5-8a38-85ae79bc2a8f"
        },
        "venueId": {
          "type": "string",
          "format": "uuid",
          "nullable": true,
          "description": "Hallify UUID identifying venue associated with guest portal loyalty program. Null means no value is recorded for this representation.",
          "example": "0604de3a-da74-4ad5-89f6-2dfe000d5391"
        },
        "name": {
          "type": "string",
          "description": "Human-readable name for guest portal loyalty program.",
          "example": "Example name"
        },
        "status": {
          "type": "string",
          "enum": [
            "DRAFT",
            "ACTIVE",
            "PAUSED",
            "ARCHIVED"
          ],
          "description": "Current lifecycle status of guest portal loyalty program; allowed values are DRAFT, ACTIVE, PAUSED, ARCHIVED.",
          "example": "DRAFT"
        },
        "pointsName": {
          "type": "string",
          "description": "Human-readable points name for guest portal loyalty program.",
          "example": "Example name"
        },
        "currency": {
          "type": "string",
          "description": "ISO 4217 currency code for the monetary values carried by guest portal loyalty program.",
          "example": "GEL"
        },
        "pointsPerCurrencyUnit": {
          "type": "string",
          "description": "ISO 4217 currency code for the monetary values carried by guest portal loyalty program.",
          "example": "GEL"
        },
        "redemptionValuePerPoint": {
          "type": "string",
          "description": "Redemption value per point for guest portal loyalty program.",
          "example": "example"
        },
        "pointsExpiryDays": {
          "type": "integer",
          "nullable": true,
          "description": "Whole-number points expiry days recorded for guest portal loyalty program. Null means no value is recorded for this representation.",
          "example": 0
        },
        "revision": {
          "type": "integer",
          "description": "Monotonic optimistic-concurrency revision for guest portal loyalty program.",
          "example": 1
        },
        "tiers": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "id",
              "name",
              "minimumLifetimePoints",
              "isActive",
              "revision"
            ],
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "description": "Hallify UUID identifying guest portal loyalty program tiers item.",
                "example": "a088d985-d2c9-4968-8593-7fbdfd8fa9cb"
              },
              "name": {
                "type": "string",
                "description": "Human-readable name for guest portal loyalty program tiers item.",
                "example": "Example name"
              },
              "minimumLifetimePoints": {
                "type": "integer",
                "description": "Whole-number minimum lifetime points recorded for guest portal loyalty program tiers item.",
                "example": 0
              },
              "benefits": {
                "type": "object",
                "additionalProperties": {
                  "$ref": "#/components/schemas/JsonValue"
                },
                "nullable": true,
                "description": "Benefit definitions granted by guest portal loyalty program tiers item. Null means no value is recorded for this representation.",
                "example": {
                  "exampleKey": "example"
                }
              },
              "isActive": {
                "type": "boolean",
                "description": "Whether guest portal loyalty program tiers item is active and available for its documented use; false means it is inactive.",
                "example": true
              },
              "revision": {
                "type": "integer",
                "description": "Monotonic optimistic-concurrency revision for guest portal loyalty program tiers item.",
                "example": 1
              }
            },
            "example": {
              "id": "a088d985-d2c9-4968-8593-7fbdfd8fa9cb",
              "name": "Example name",
              "minimumLifetimePoints": 0,
              "isActive": true,
              "revision": 1
            }
          },
          "description": "Tiers included as tiers in guest portal loyalty program.",
          "example": [
            {
              "id": "a088d985-d2c9-4968-8593-7fbdfd8fa9cb",
              "name": "Example name",
              "minimumLifetimePoints": 0,
              "isActive": true,
              "revision": 1
            }
          ]
        }
      },
      "nullable": true,
      "description": "Program details embedded in guest portal loyalty containing id, venue id, name, status, points name, and currency. Null means no value is recorded for this representation.",
      "example": {
        "id": "222a791a-08cc-49d5-8a38-85ae79bc2a8f",
        "name": "Example name",
        "status": "DRAFT",
        "pointsName": "Example name",
        "currency": "GEL",
        "pointsPerCurrencyUnit": "GEL",
        "redemptionValuePerPoint": "example",
        "revision": 1,
        "tiers": [
          {
            "id": "a088d985-d2c9-4968-8593-7fbdfd8fa9cb",
            "name": "Example name",
            "minimumLifetimePoints": 0,
            "isActive": true,
            "revision": 1
          }
        ]
      }
    },
    "account": {
      "type": "object",
      "nullable": true,
      "required": [
        "id",
        "pointsBalance",
        "lifetimePoints",
        "revision",
        "enrolledAt"
      ],
      "properties": {
        "id": {
          "type": "string",
          "format": "uuid",
          "description": "Hallify UUID identifying guest portal loyalty account.",
          "example": "f9b88121-702a-4576-8ac2-dd88ef58b3f0"
        },
        "pointsBalance": {
          "type": "integer",
          "description": "Whole-number points balance recorded for guest portal loyalty account.",
          "example": 0
        },
        "lifetimePoints": {
          "type": "integer",
          "description": "Whole-number lifetime points recorded for guest portal loyalty account.",
          "example": 0
        },
        "revision": {
          "type": "integer",
          "description": "Monotonic optimistic-concurrency revision for guest portal loyalty account.",
          "example": 1
        },
        "enrolledAt": {
          "type": "string",
          "format": "date-time",
          "description": "RFC 3339 timestamp for enrolled at; offsets represent the same absolute instant.",
          "example": "2026-01-15T12:00:00.000Z"
        },
        "lastActivityAt": {
          "type": "string",
          "format": "date-time",
          "nullable": true,
          "description": "RFC 3339 timestamp for last activity at; offsets represent the same absolute instant. Null means no value is recorded for this representation.",
          "example": "2026-01-15T12:00:00.000Z"
        },
        "tier": {
          "required": [
            "id",
            "name",
            "minimumLifetimePoints",
            "benefits"
          ],
          "type": "object",
          "nullable": true,
          "properties": {
            "id": {
              "type": "string",
              "format": "uuid",
              "description": "Hallify UUID identifying guest portal loyalty account tier.",
              "example": "dc560371-b113-4aec-80d5-67bd830de231"
            },
            "name": {
              "type": "string",
              "description": "Human-readable name for guest portal loyalty account tier.",
              "example": "Example name"
            },
            "minimumLifetimePoints": {
              "type": "integer",
              "description": "Whole-number minimum lifetime points recorded for guest portal loyalty account tier.",
              "example": 0
            },
            "benefits": {
              "type": "object",
              "additionalProperties": {
                "$ref": "#/components/schemas/JsonValue"
              },
              "nullable": true,
              "description": "Benefit definitions granted by guest portal loyalty account tier. Null means no value is recorded for this representation.",
              "example": {
                "exampleKey": "example"
              }
            }
          },
          "description": "Tier details embedded in guest portal loyalty account containing id, name, minimum lifetime points, and benefits. Null means no value is recorded for this representation.",
          "example": {
            "id": "dc560371-b113-4aec-80d5-67bd830de231",
            "name": "Example name",
            "minimumLifetimePoints": 0,
            "benefits": null
          }
        }
      },
      "description": "Account details embedded in guest portal loyalty containing id, points balance, lifetime points, revision, enrolled at, and last activity at. Null means no value is recorded for this representation.",
      "example": {
        "id": "f9b88121-702a-4576-8ac2-dd88ef58b3f0",
        "pointsBalance": 0,
        "lifetimePoints": 0,
        "revision": 1,
        "enrolledAt": "2026-01-15T12:00:00.000Z"
      }
    },
    "adjustments": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "points",
          "reason",
          "status",
          "revision",
          "requestedById",
          "requestedAt"
        ],
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Hallify UUID identifying guest portal loyalty adjustments item.",
            "example": "69437603-0ae1-4d42-848b-150f80c54e15"
          },
          "points": {
            "type": "integer",
            "description": "Whole-number points recorded for guest portal loyalty adjustments item.",
            "example": 0
          },
          "reason": {
            "type": "string",
            "description": "Human-entered reason retained with guest portal loyalty adjustments item as decision or audit evidence.",
            "example": "Synthetic example"
          },
          "status": {
            "type": "string",
            "enum": [
              "PENDING",
              "APPROVED",
              "REJECTED",
              "APPLIED"
            ],
            "description": "Current lifecycle status of guest portal loyalty adjustments item; allowed values are PENDING, APPROVED, REJECTED, APPLIED.",
            "example": "PENDING"
          },
          "revision": {
            "type": "integer",
            "description": "Monotonic optimistic-concurrency revision for guest portal loyalty adjustments item.",
            "example": 1
          },
          "requestedById": {
            "type": "string",
            "format": "uuid",
            "description": "Hallify UUID of the user that requested guest portal loyalty adjustments item.",
            "example": "e84b4c3f-5e8d-4601-8a63-dafba13b902d"
          },
          "decidedById": {
            "type": "string",
            "format": "uuid",
            "nullable": true,
            "description": "Hallify UUID of the user that decided guest portal loyalty adjustments item. Null means no value is recorded for this representation.",
            "example": "12f638d0-9411-4c61-8f2d-aa3e985672c0"
          },
          "requestedAt": {
            "type": "string",
            "format": "date-time",
            "description": "RFC 3339 timestamp for requested at; offsets represent the same absolute instant.",
            "example": "2026-01-15T12:00:00.000Z"
          },
          "decidedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "RFC 3339 timestamp for decided at; offsets represent the same absolute instant. Null means no value is recorded for this representation.",
            "example": "2026-01-15T12:00:00.000Z"
          }
        },
        "example": {
          "id": "69437603-0ae1-4d42-848b-150f80c54e15",
          "points": 0,
          "reason": "Synthetic example",
          "status": "PENDING",
          "revision": 1,
          "requestedById": "e84b4c3f-5e8d-4601-8a63-dafba13b902d",
          "requestedAt": "2026-01-15T12:00:00.000Z"
        }
      },
      "description": "Adjustments included as adjustments in guest portal loyalty.",
      "example": [
        {
          "id": "69437603-0ae1-4d42-848b-150f80c54e15",
          "points": 0,
          "reason": "Synthetic example",
          "status": "PENDING",
          "revision": 1,
          "requestedById": "e84b4c3f-5e8d-4601-8a63-dafba13b902d",
          "requestedAt": "2026-01-15T12:00:00.000Z"
        }
      ]
    }
  },
  "description": "Returns the current guest loyalty account projection.",
  "example": {
    "adjustments": [
      {
        "id": "69437603-0ae1-4d42-848b-150f80c54e15",
        "points": 0,
        "reason": "Synthetic example",
        "status": "PENDING",
        "revision": 1,
        "requestedById": "e84b4c3f-5e8d-4601-8a63-dafba13b902d",
        "requestedAt": "2026-01-15T12:00:00.000Z"
      }
    ]
  }
}
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"
}
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"
  }
}

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.