Skip to content

baldur.interfaces — Repository Data Model

The enums and data classes shared across the repository interfaces — the status and domain enums, plus the operation/state/incident DTOs.

Enums

DLQCompressedStatus

Bases: str, Enum

Lifecycle state machine for compressed DLQ entries.

FailedOperationDomain

Bases: str, Enum

Domain classification for failed operations (domain-neutral).

Core domains are framework-agnostic. Application-specific domains (like 'payment', 'order') should be registered via adapter configuration.

FailedOperationStatus

Bases: str, Enum

State machine for DLQ item lifecycle

CircuitBreakerStateEnum

Bases: str, Enum

Circuit breaker states

SecurityIncidentType

Bases: str, Enum

Types of security incidents (domain-neutral)

SecuritySeverity

Bases: str, Enum

Severity levels for security incidents

SecurityIncidentStatus

Bases: str, Enum

Investigation status for security incidents

Data classes

FailedOperationData dataclass

FailedOperationData(
    id: str,
    domain: str,
    failure_type: str,
    status: str,
    entity_type: str | None = None,
    entity_id: str | None = None,
    entity_refs: dict[str, Any] = dict(),
    user_id: int | None = None,
    snapshot_data: dict[str, Any] = dict(),
    error_code: str = "",
    error_message: str = "",
    retry_count: int = 0,
    max_retries: int = 2,
    last_retry_at: datetime | None = None,
    request_data: dict[str, Any] = dict(),
    response_data: dict[str, Any] = dict(),
    metadata: dict[str, Any] = dict(),
    resolved_at: datetime | None = None,
    resolved_by_id: int | None = None,
    resolution_type: str = "",
    resolution_note: str = "",
    next_action_hint: str = "",
    recommended_action: str = "",
    created_at: datetime | None = None,
    updated_at: datetime | None = None,
    expires_at: datetime | None = None,
)

Data transfer object for FailedOperation model.

Contains all necessary fields for DLQ operations without Django model dependencies.

is_pending property

is_pending: bool

Check if operation is pending review

is_resolved property

is_resolved: bool

Check if operation is resolved

can_retry property

can_retry: bool

Check if operation can be retried

CircuitBreakerStateData dataclass

CircuitBreakerStateData(
    service_name: str,
    id: int | None = None,
    state: str = CircuitBreakerStateEnum.CLOSED.value,
    failure_count: int = 0,
    success_count: int = 0,
    last_failure_at: datetime | None = None,
    opened_at: datetime | None = None,
    manually_controlled: bool = False,
    controlled_by_id: int | None = None,
    control_reason: str = "",
    manual_override_expires_at: datetime | None = None,
    half_open_request_count: int = 0,
    half_open_window_started_at: datetime | None = None,
    metadata: dict[str, Any] = dict(),
    created_at: datetime | None = None,
    updated_at: datetime | None = None,
)

Data transfer object for CircuitBreakerState model.

Represents the current state of a circuit breaker for a service.

is_open property

is_open: bool

Check if circuit is open (blocking requests)

is_closed property

is_closed: bool

Check if circuit is closed (allowing requests)

is_half_open property

is_half_open: bool

Check if circuit is half-open (testing)

SecurityIncidentData dataclass

SecurityIncidentData(
    id: int,
    incident_type: str,
    severity: str,
    status: str,
    source_ip: str | None = None,
    user_agent: str = "",
    user_id: int | None = None,
    entity_refs: dict[str, int] = dict(),
    description: str = "",
    raw_payload: dict[str, Any] = dict(),
    assigned_to_id: int | None = None,
    investigation_notes: str = "",
    resolved_at: datetime | None = None,
    created_at: datetime | None = None,
    updated_at: datetime | None = None,
)

Data transfer object for SecurityIncident model.

Security incidents are NEVER auto-healed and require human intervention.

is_critical property

is_critical: bool

Check if incident is critical severity

needs_investigation property

needs_investigation: bool

Check if incident needs investigation