# Error Model Requirements

## Purpose
Define a consistent error taxonomy and response structure across admin UI, API, CalDAV, and ICS surfaces.

## Scope
This document covers:

- Error categories and stable codes
- API/CalDAV/ICS status behavior
- UI-facing error messaging principles
- Logging expectations for failures

## Error Categories
- `validation_error`
- `authentication_error`
- `authorization_error`
- `not_found`
- `conflict_error`
- `precondition_failed`
- `rate_limited`
- `integration_error`
- `internal_error`

## API Error Contract
JSON errors must include:

- `error.code` (stable machine identifier)
- `error.message` (safe human message)
- `error.details` (optional object/list with field-level data)
- `error.request_id` (optional correlation id)

Status mapping:

- `400` malformed payload/query
- `401` unauthenticated
- `403` unauthorized
- `404` not found
- `409` conflict
- `412` precondition failed
- `422` validation error
- `429` rate-limited
- `500` internal error

## CalDAV/WebDAV Error Behavior
- Use standards-appropriate HTTP status codes and DAV error bodies.
- On multistatus operations, each href must report accurate per-resource status.
- Precondition failures must be explicit for conditional writes.

## ICS Error Behavior
- Non-success ICS responses should return clear status (`4xx/5xx`) and not malformed calendar text.
- Internal diagnostics go to logs, not to public response bodies.

## Admin UI Error Messaging
- Messages must be actionable and non-technical for end users where possible.
- Field-level validation errors must indicate affected field and remedy.
- Authentication/authorization failures should avoid revealing sensitive internals.

## Retry Guidance
- Transient errors (rate limit, temporary integration failure) should indicate retry expectation.
- Permanent validation errors should not be presented as retriable without change.

## Logging Requirements
- All `5xx` and security-relevant `4xx` failures must be logged.
- Logs should include actor, endpoint/action, status, timestamp, and request id.
- Logs must not include plaintext secrets/tokens/passwords.

## Verification Requirements
Acceptance should verify:

- Error payload shape is consistent for API endpoints.
- CalDAV and ICS failures return standards-appropriate statuses.
- UI displays user-safe messages while logs retain troubleshooting detail.
