/**
 * This file was auto-generated by openapi-typescript.
 * Do not make direct changes to the file.
 */

export interface paths {
    "/api/v1/cameras": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * List Cameras
         * @description List all cameras.
         */
        get: operations["list_cameras_api_v1_cameras_get"];
        put?: never;
        /**
         * Create Camera
         * @description Create a new camera.
         */
        post: operations["create_camera_api_v1_cameras_post"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/api/v1/cameras/{name}": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Get Camera
         * @description Get a single camera.
         */
        get: operations["get_camera_api_v1_cameras__name__get"];
        /**
         * Update Camera
         * @description Update a camera.
         */
        put: operations["update_camera_api_v1_cameras__name__put"];
        post?: never;
        /**
         * Delete Camera
         * @description Delete a camera.
         */
        delete: operations["delete_camera_api_v1_cameras__name__delete"];
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/api/v1/clips": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * List Clips
         * @description List clips with filtering and keyset pagination.
         */
        get: operations["list_clips_api_v1_clips_get"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/api/v1/clips/{clip_id}": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Get Clip
         * @description Get a single clip.
         */
        get: operations["get_clip_api_v1_clips__clip_id__get"];
        put?: never;
        post?: never;
        /**
         * Delete Clip
         * @description Delete a clip and its storage object.
         */
        delete: operations["delete_clip_api_v1_clips__clip_id__delete"];
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/api/v1/clips/{clip_id}/media": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Get Clip Media
         * @description Stream clip media through HomeSec for in-app playback.
         */
        get: operations["get_clip_media_api_v1_clips__clip_id__media_get"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/api/v1/clips/{clip_id}/media-token": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /**
         * Create Clip Media Token
         * @description Create media playback URL.
         *
         *     When auth is disabled, returns direct media URL with tokenized=False and expires_at=None.
         *     When auth is enabled, returns tokenized URL with tokenized=True and non-null expires_at.
         */
        post: operations["create_clip_media_token_api_v1_clips__clip_id__media_token_post"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/api/v1/config": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Get Config
         * @description Return full configuration.
         */
        get: operations["get_config_api_v1_config_get"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/api/v1/diagnostics": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Get Diagnostics
         * @description Detailed component diagnostics.
         */
        get: operations["get_diagnostics_api_v1_diagnostics_get"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/api/v1/health": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Get Health
         * @description Versioned health check endpoint.
         */
        get: operations["get_health_api_v1_health_get"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/api/v1/runtime/reload": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        put?: never;
        /**
         * Reload Runtime
         * @description Trigger runtime reload and return async acceptance outcome.
         */
        post: operations["reload_runtime_api_v1_runtime_reload_post"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/api/v1/runtime/status": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Get Runtime Status
         * @description Return runtime-manager status.
         */
        get: operations["get_runtime_status_api_v1_runtime_status_get"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/api/v1/stats": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Get Stats
         * @description Return system statistics.
         */
        get: operations["get_stats_api_v1_stats_get"];
        put?: never;
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
}
export type webhooks = Record<string, never>;
export interface components {
    schemas: {
        /** CameraCreate */
        CameraCreate: {
            /**
             * Enabled
             * @default true
             */
            enabled: boolean;
            /** Name */
            name: string;
            /** Source Backend */
            source_backend: string;
            /** Source Config */
            source_config: {
                [key: string]: unknown;
            };
        };
        /** CameraResponse */
        CameraResponse: {
            /** Enabled */
            enabled: boolean;
            /** Healthy */
            healthy: boolean;
            /** Last Heartbeat */
            last_heartbeat: number | null;
            /** Name */
            name: string;
            /** Source Backend */
            source_backend: string;
            /** Source Config */
            source_config: {
                [key: string]: unknown;
            };
        };
        /** CameraStatus */
        CameraStatus: {
            /** Enabled */
            enabled: boolean;
            /** Healthy */
            healthy: boolean;
            /** Last Heartbeat */
            last_heartbeat: number | null;
        };
        /** CameraUpdate */
        CameraUpdate: {
            /** Enabled */
            enabled?: boolean | null;
            /** Source Config */
            source_config?: {
                [key: string]: unknown;
            } | null;
        };
        /** ClipListResponse */
        ClipListResponse: {
            /** Clips */
            clips: components["schemas"]["ClipResponse"][];
            /** Has More */
            has_more: boolean;
            /** Limit */
            limit: number;
            /** Next Cursor */
            next_cursor: string | null;
        };
        /** ClipMediaTokenResponse */
        ClipMediaTokenResponse: {
            /** Expires At */
            expires_at: string | null;
            /** Media Url */
            media_url: string;
            /** Tokenized */
            tokenized: boolean;
        };
        /** ClipResponse */
        ClipResponse: {
            /** Activity Type */
            activity_type?: string | null;
            /**
             * Alerted
             * @default false
             */
            alerted: boolean;
            /** Camera */
            camera: string;
            /**
             * Created At
             * Format: date-time
             */
            created_at: string;
            /** Detected Objects */
            detected_objects?: string[];
            /** Id */
            id: string;
            /** Risk Level */
            risk_level?: string | null;
            /** Status */
            status: string;
            /** Storage Uri */
            storage_uri?: string | null;
            /** Summary */
            summary?: string | null;
            /** View Url */
            view_url?: string | null;
        };
        /**
         * ClipStatus
         * @description Clip processing status values.
         *
         *     Represents the high-level status of a clip in the processing pipeline.
         * @enum {string}
         */
        ClipStatus: "queued_local" | "uploaded" | "analyzed" | "done" | "error" | "deleted";
        /** ComponentStatus */
        ComponentStatus: {
            /** Error */
            error?: string | null;
            /** Latency Ms */
            latency_ms?: number | null;
            /** Status */
            status: string;
        };
        /** ConfigChangeResponse */
        ConfigChangeResponse: {
            camera?: components["schemas"]["CameraResponse"] | null;
            /**
             * Restart Required
             * @default true
             */
            restart_required: boolean;
        };
        /**
         * ConfigResponse
         * @description Returns the full config (secrets shown as env var names, not values).
         */
        ConfigResponse: {
            /** Config */
            config: {
                [key: string]: unknown;
            };
        };
        /** DiagnosticsResponse */
        DiagnosticsResponse: {
            /** Cameras */
            cameras: {
                [key: string]: components["schemas"]["CameraStatus"];
            };
            postgres: components["schemas"]["ComponentStatus"];
            /** Status */
            status: string;
            storage: components["schemas"]["ComponentStatus"];
            /** Uptime Seconds */
            uptime_seconds: number;
        };
        /** HTTPValidationError */
        HTTPValidationError: {
            /** Detail */
            detail?: components["schemas"]["ValidationError"][];
        };
        /** HealthResponse */
        HealthResponse: {
            /** Cameras Online */
            cameras_online: number;
            /** Pipeline */
            pipeline: string;
            /** Postgres */
            postgres: string;
            /** Status */
            status: string;
        };
        /** RuntimeReloadResponse */
        RuntimeReloadResponse: {
            /** Accepted */
            accepted: boolean;
            /** Message */
            message: string;
            /** Target Generation */
            target_generation: number;
        };
        /**
         * RuntimeState
         * @description Lifecycle state for the active runtime.
         * @enum {string}
         */
        RuntimeState: "idle" | "reloading" | "failed";
        /** RuntimeStatusResponse */
        RuntimeStatusResponse: {
            /** Active Config Version */
            active_config_version: string | null;
            /** Generation */
            generation: number;
            /** Last Reload At */
            last_reload_at: string | null;
            /** Last Reload Error */
            last_reload_error: string | null;
            /** Reload In Progress */
            reload_in_progress: boolean;
            state: components["schemas"]["RuntimeState"];
        };
        /** StatsResponse */
        StatsResponse: {
            /** Alerts Today */
            alerts_today: number;
            /** Cameras Online */
            cameras_online: number;
            /** Cameras Total */
            cameras_total: number;
            /** Clips Today */
            clips_today: number;
            /** Uptime Seconds */
            uptime_seconds: number;
        };
        /** ValidationError */
        ValidationError: {
            /** Context */
            ctx?: Record<string, never>;
            /** Input */
            input?: unknown;
            /** Location */
            loc: (string | number)[];
            /** Message */
            msg: string;
            /** Error Type */
            type: string;
        };
    };
    responses: never;
    parameters: never;
    requestBodies: never;
    headers: never;
    pathItems: never;
}
export type $defs = Record<string, never>;
export interface operations {
    list_cameras_api_v1_cameras_get: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Successful Response */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["CameraResponse"][];
                };
            };
        };
    };
    create_camera_api_v1_cameras_post: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["CameraCreate"];
            };
        };
        responses: {
            /** @description Successful Response */
            201: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["ConfigChangeResponse"];
                };
            };
            /** @description Validation Error */
            422: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["HTTPValidationError"];
                };
            };
        };
    };
    get_camera_api_v1_cameras__name__get: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                name: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Successful Response */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["CameraResponse"];
                };
            };
            /** @description Validation Error */
            422: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["HTTPValidationError"];
                };
            };
        };
    };
    update_camera_api_v1_cameras__name__put: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                name: string;
            };
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": components["schemas"]["CameraUpdate"];
            };
        };
        responses: {
            /** @description Successful Response */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["ConfigChangeResponse"];
                };
            };
            /** @description Validation Error */
            422: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["HTTPValidationError"];
                };
            };
        };
    };
    delete_camera_api_v1_cameras__name__delete: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                name: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Successful Response */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["ConfigChangeResponse"];
                };
            };
            /** @description Validation Error */
            422: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["HTTPValidationError"];
                };
            };
        };
    };
    list_clips_api_v1_clips_get: {
        parameters: {
            query?: {
                camera?: string | null;
                status?: components["schemas"]["ClipStatus"] | null;
                alerted?: boolean | null;
                detected?: boolean | null;
                risk_level?: string | null;
                activity_type?: string | null;
                since?: string | null;
                until?: string | null;
                limit?: number;
                cursor?: string | null;
            };
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Successful Response */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["ClipListResponse"];
                };
            };
            /** @description Validation Error */
            422: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["HTTPValidationError"];
                };
            };
        };
    };
    get_clip_api_v1_clips__clip_id__get: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                clip_id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Successful Response */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["ClipResponse"];
                };
            };
            /** @description Validation Error */
            422: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["HTTPValidationError"];
                };
            };
        };
    };
    delete_clip_api_v1_clips__clip_id__delete: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                clip_id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Successful Response */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["ClipResponse"];
                };
            };
            /** @description Validation Error */
            422: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["HTTPValidationError"];
                };
            };
        };
    };
    get_clip_media_api_v1_clips__clip_id__media_get: {
        parameters: {
            query?: {
                token?: string | null;
            };
            header?: never;
            path: {
                clip_id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Successful Response */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": unknown;
                };
            };
            /** @description Validation Error */
            422: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["HTTPValidationError"];
                };
            };
        };
    };
    create_clip_media_token_api_v1_clips__clip_id__media_token_post: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                clip_id: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Successful Response */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["ClipMediaTokenResponse"];
                };
            };
            /** @description Validation Error */
            422: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["HTTPValidationError"];
                };
            };
        };
    };
    get_config_api_v1_config_get: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Successful Response */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["ConfigResponse"];
                };
            };
        };
    };
    get_diagnostics_api_v1_diagnostics_get: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Successful Response */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["DiagnosticsResponse"];
                };
            };
        };
    };
    get_health_api_v1_health_get: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Successful Response */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["HealthResponse"];
                };
            };
        };
    };
    reload_runtime_api_v1_runtime_reload_post: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Successful Response */
            202: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["RuntimeReloadResponse"];
                };
            };
        };
    };
    get_runtime_status_api_v1_runtime_status_get: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Successful Response */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["RuntimeStatusResponse"];
                };
            };
        };
    };
    get_stats_api_v1_stats_get: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description Successful Response */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["StatsResponse"];
                };
            };
        };
    };
}
