defmodule AccessGrid.Types do
@moduledoc """
Shared type definitions for the AccessGrid client.
This module contains types used across multiple modules to avoid
circular dependencies.
"""
@typedoc """
Error reasons returned from API operations.
- `:unauthorized` - Invalid or missing credentials (401)
- `:forbidden` - Access denied (403)
- `:not_found` - Resource not found (404)
- `:conflict` - Request conflicts with current state (409)
- `:validation_failed` - Invalid request parameters (422)
- `:rate_limited` - Too many requests (429)
- `:timeout` - Request timed out
- `:server_error` - Server-side error (5xx)
- `:request_failed` - Other/unknown failures
- `:missing_required` - A required field was nil or blank before the request was
sent. The third tuple element is the offending field name as an atom (no
`HttpFailure` is produced — the SDK short-circuits before any HTTP call).
"""
@type api_error_reason ::
:unauthorized
| :forbidden
| :not_found
| :conflict
| :validation_failed
| :rate_limited
| :timeout
| :server_error
| :request_failed
| :missing_required
end