{"openapi":"3.1.0","info":{"title":"WolfeGuard Synapse","description":"\n## **WolfeGuard Synapse** 🐺⚡\n*Universal Custom-Made REST API Platform & Autonomous Gateway*\n\n- **Organization**: WolfeGuard\n- **Developer & Maintainer**: `@sinfulldesirez` (Discord: `@sinfulldesirez`)\n- **Version**: `1.0.0`\n- **Database**: Local Zero-Cost SQLite (`data/wolfeguard.db`)\n\n---\n### **Custom-Built Synapse API Engines:**\n* 🧠 **Neural AI Engine API**: Local LLM completions, prompt execution, asynchronous model training.\n* 🗺️ **Maps & Geospatial Engine API**: Free Slippy tile server, cyber-noir shaders, geocoding, reverse lookups, static map generation, and Haversine distance math.\n* 💾 **Storage & Database API**: Custom collections, JSON documents, and raw SQL queries over zero-cost SQLite.\n* 🛠️ **Universal Utilities API**: Cryptographic hashing, bulk UUIDs, OpenGraph extraction, HTML-to-MD conversion, SVG QR codes.\n* ⚡ **System & Process Runner API**: Asynchronous CLI and binary runners with live stdout/stderr streaming.\n* 📋 **Task Queue API**: Real-time background job tracking, execution logs, and output retrieval.\n* 🔐 **API Key Engine**: Custom multi-tenant keys, granular scopes, rate limiting, and audit trail.\n","version":"1.0.0"},"paths":{"/api/v1/auth/register":{"post":{"tags":["User Accounts & API Keys"],"summary":"Register","description":"Register a new user account and receive an individual WolfeGuard API key.","operationId":"register_api_v1_auth_register_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserRegisterRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/auth/login":{"post":{"tags":["User Accounts & API Keys"],"summary":"Login","description":"Log in with username and password to retrieve your active API key and profile.","operationId":"login_api_v1_auth_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserLoginRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/auth/me":{"get":{"tags":["User Accounts & API Keys"],"summary":"Get Current User Profile","description":"Returns the profile and key details for the currently active API key.","operationId":"get_current_user_profile_api_v1_auth_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/auth/me/email":{"put":{"tags":["User Accounts & API Keys"],"summary":"Update My Email","description":"Update email address for the currently authenticated user.","operationId":"update_my_email_api_v1_auth_me_email_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateEmailRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/auth/me/password":{"put":{"tags":["User Accounts & API Keys"],"summary":"Update My Password","description":"Update password for the currently authenticated user after verifying current password.","operationId":"update_my_password_api_v1_auth_me_password_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangePasswordRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/auth/regenerate-key":{"post":{"tags":["User Accounts & API Keys"],"summary":"Regenerate User Key","description":"Revokes current user API key and generates a fresh one.","operationId":"regenerate_user_key_api_v1_auth_regenerate_key_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/auth/users":{"get":{"tags":["User Accounts & API Keys"],"summary":"List Users","description":"Admin/Owner: List all registered user accounts.","operationId":"list_users_api_v1_auth_users_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardResponse"}}}}},"security":[{"APIKeyHeader":[]}]},"post":{"tags":["User Accounts & API Keys"],"summary":"Create User By Admin","description":"Admin/Owner: Manually create a new user, administrator, or owner account.","operationId":"create_user_by_admin_api_v1_auth_users_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminCreateUserRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/auth/users/{user_id}/role":{"put":{"tags":["User Accounts & API Keys"],"summary":"Change User Role","description":"Admin/Owner: Update user role (owner, admin, or user).","operationId":"change_user_role_api_v1_auth_users__user_id__role_put","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRoleRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/auth/users/{user_id}/reset-password":{"post":{"tags":["User Accounts & API Keys"],"summary":"Reset User Password","description":"Admin/Owner: Reset a user's password.","operationId":"reset_user_password_api_v1_auth_users__user_id__reset_password_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResetPasswordRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/auth/users/{user_id}":{"delete":{"tags":["User Accounts & API Keys"],"summary":"Delete User","description":"Admin/Owner: Permanently delete a user account from SQLite.","operationId":"delete_user_api_v1_auth_users__user_id__delete","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/ai/generate":{"post":{"tags":["AI Engine (Inference & Training)"],"summary":"Generate Text","description":"Run immediate text generation or chat completion through local Ollama or OpenAI.","operationId":"generate_text_api_v1_ai_generate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompletionRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/ai/train":{"post":{"tags":["AI Engine (Inference & Training)"],"summary":"Trigger Training Job","description":"Queue an asynchronous AI training / fine-tuning job in the background task manager.\nReturns a Task ID immediately to track progress and epoch logs.","operationId":"trigger_training_job_api_v1_ai_train_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrainJobRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/maps/tiles/{z}/{x}/{y}.png":{"get":{"tags":["Maps & Geospatial Engine API"],"summary":"Serve High-Speed Slippy Map Tile","description":"Slippy Map XYZ tile service formatted for Leaflet, MapLibre GL, and OpenLayers.\nAll tiles are processed in real-time with custom color matrices and cached locally.\nSupports ?key=YOUR_API_KEY for developer authentication and usage analytics.","operationId":"get_tile_api_v1_maps_tiles__z___x___y__png_get","parameters":[{"name":"z","in":"path","required":true,"schema":{"type":"integer","title":"Z"}},{"name":"x","in":"path","required":true,"schema":{"type":"integer","title":"X"}},{"name":"y","in":"path","required":true,"schema":{"type":"integer","title":"Y"}},{"name":"theme","in":"query","required":false,"schema":{"type":"string","description":"Map visual style: cyber_noir, crimson_tactical, dark_matter, satellite, osm_light","default":"cyber_noir","title":"Theme"},"description":"Map visual style: cyber_noir, crimson_tactical, dark_matter, satellite, osm_light"},{"name":"key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"WolfeGuard Map API Key (e.g. wg_live_...) for tracking/billing","title":"Key"},"description":"WolfeGuard Map API Key (e.g. wg_live_...) for tracking/billing"},{"name":"apiKey","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Alias for key parameter","title":"Apikey"},"description":"Alias for key parameter"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/maps/geocode":{"get":{"tags":["Maps & Geospatial Engine API"],"summary":"Forward Geocoding & Address Search","description":"Resolves human-readable addresses, cities, and landmarks into precise GPS coordinates.\nPrioritizes local WolfeGuard POIs before fallback to cached OpenStreetMap data.","operationId":"search_location_api_v1_maps_geocode_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":1,"description":"Address, landmark, city, or coordinates","title":"Q"},"description":"Address, landmark, city, or coordinates"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":20,"minimum":1,"description":"Maximum number of search results","default":5,"title":"Limit"},"description":"Maximum number of search results"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/maps/reverse":{"get":{"tags":["Maps & Geospatial Engine API"],"summary":"Reverse Geocoding","description":"Resolves geographic latitude and longitude coordinates back into an address and territory.","operationId":"reverse_geocode_api_v1_maps_reverse_get","parameters":[{"name":"lat","in":"query","required":true,"schema":{"type":"number","maximum":90.0,"minimum":-90.0,"description":"Target latitude","title":"Lat"},"description":"Target latitude"},{"name":"lon","in":"query","required":true,"schema":{"type":"number","maximum":180.0,"minimum":-180.0,"description":"Target longitude","title":"Lon"},"description":"Target longitude"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/maps/static":{"get":{"tags":["Maps & Geospatial Engine API"],"summary":"Generate High-Resolution Static Map Snapshot","description":"Renders and exports a static map image with tactical crosshairs and glowing scarlet markers on-the-fly.","operationId":"get_static_map_api_v1_maps_static_get","parameters":[{"name":"lat","in":"query","required":true,"schema":{"type":"number","maximum":90.0,"minimum":-90.0,"description":"Center latitude","title":"Lat"},"description":"Center latitude"},{"name":"lon","in":"query","required":true,"schema":{"type":"number","maximum":180.0,"minimum":-180.0,"description":"Center longitude","title":"Lon"},"description":"Center longitude"},{"name":"zoom","in":"query","required":false,"schema":{"type":"integer","maximum":19,"minimum":1,"description":"Zoom level (1-19)","default":12,"title":"Zoom"},"description":"Zoom level (1-19)"},{"name":"width","in":"query","required":false,"schema":{"type":"integer","maximum":2400,"minimum":200,"description":"Image width in pixels","default":800,"title":"Width"},"description":"Image width in pixels"},{"name":"height","in":"query","required":false,"schema":{"type":"integer","maximum":1800,"minimum":150,"description":"Image height in pixels","default":500,"title":"Height"},"description":"Image height in pixels"},{"name":"theme","in":"query","required":false,"schema":{"type":"string","description":"Theme: cyber_noir, crimson_tactical, dark_matter, satellite","default":"cyber_noir","title":"Theme"},"description":"Theme: cyber_noir, crimson_tactical, dark_matter, satellite"},{"name":"markers","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"JSON array of markers or single label (e.g. '[{\"lat\":40.7,\"lon\":-74,\"label\":\"Target\"}]')","title":"Markers"},"description":"JSON array of markers or single label (e.g. '[{\"lat\":40.7,\"lon\":-74,\"label\":\"Target\"}]')"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/maps/distance":{"post":{"tags":["Maps & Geospatial Engine API"],"summary":"Great-Circle Distance & Bearing Engine","description":"Computes precise Haversine distance, initial bearing azimuth, compass heading,\nmidpoint coordinates, and estimated travel times.","operationId":"calculate_distance_api_v1_maps_distance_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DistanceRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/maps/pois":{"get":{"tags":["Maps & Geospatial Engine API"],"summary":"List Saved Tactical POIs & Markers","description":"Fetches user-saved tactical points of interest, safehouses, and landmarks from SQLite.","operationId":"list_pois_api_v1_maps_pois_get","parameters":[{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional category filter","title":"Category"},"description":"Optional category filter"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"description":"Result limit","default":50,"title":"Limit"},"description":"Result limit"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Maps & Geospatial Engine API"],"summary":"Save New Tactical POI","description":"Saves a new custom point of interest to the database for instant geocoding and rendering.","operationId":"create_poi_api_v1_maps_pois_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PoiCreateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/maps/pois/{poi_id}":{"delete":{"tags":["Maps & Geospatial Engine API"],"summary":"Delete Tactical POI","description":"Removes a custom POI from the database.","operationId":"delete_poi_api_v1_maps_pois__poi_id__delete","parameters":[{"name":"poi_id","in":"path","required":true,"schema":{"type":"integer","title":"Poi Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/maps/styles":{"get":{"tags":["Maps & Geospatial Engine API"],"summary":"Get Map Styles & Tile Provider Metadata","description":"Provides tile URL templates and visual style metadata compatible with MapLibre GL and Leaflet.","operationId":"get_styles_api_v1_maps_styles_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardResponse"}}}}}}},"/api/v1/maps/layers":{"get":{"tags":["Maps & Geospatial Engine API"],"summary":"List Custom User Map Layers & Polygons","description":"Retrieves all custom user-drawn polygons, tactical boundaries, and flight corridors.","operationId":"list_layers_api_v1_maps_layers_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardResponse"}}}}}},"post":{"tags":["Maps & Geospatial Engine API"],"summary":"Save Custom User Map Layer or Territory","description":"Saves a user-crafted polygon, territory boundary, or route into SQLite.","operationId":"create_layer_api_v1_maps_layers_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomLayerCreateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/maps/layers/{key}":{"delete":{"tags":["Maps & Geospatial Engine API"],"summary":"Delete Custom Map Layer","description":"Deletes a user-crafted polygon or territory layer.","operationId":"delete_layer_api_v1_maps_layers__key__delete","parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string","title":"Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/maps/export":{"get":{"tags":["Maps & Geospatial Engine API"],"summary":"Export Complete Custom Map as GeoJSON","description":"Bundles all custom POIs, markers, and user-drawn territories into a single GeoJSON FeatureCollection.","operationId":"export_map_geojson_api_v1_maps_export_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardResponse"}}}}}}},"/api/v1/storage/meta":{"get":{"tags":["SQLite Database & Storage"],"summary":"Get Database Meta","description":"Get SQLite database file stats, disk path, and table row counts.","operationId":"get_database_meta_api_v1_storage_meta_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/storage/query":{"post":{"tags":["SQLite Database & Storage"],"summary":"Run Sql Query","description":"Run custom SQL queries against the local SQLite database.","operationId":"run_sql_query_api_v1_storage_query_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SqlQueryRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/storage/{collection}":{"post":{"tags":["SQLite Database & Storage"],"summary":"Store Collection Record","description":"Store or update any arbitrary JSON data into a named collection for free.","operationId":"store_collection_record_api_v1_storage__collection__post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"collection","in":"path","required":true,"schema":{"type":"string","title":"Collection"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetRecordRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["SQLite Database & Storage"],"summary":"List Collection Records","description":"Retrieve all documents inside a given collection.","operationId":"list_collection_records_api_v1_storage__collection__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"collection","in":"path","required":true,"schema":{"type":"string","title":"Collection"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/storage/{collection}/{key}":{"get":{"tags":["SQLite Database & Storage"],"summary":"Get Collection Record","description":"Get a specific document by its key from a collection.","operationId":"get_collection_record_api_v1_storage__collection___key__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"collection","in":"path","required":true,"schema":{"type":"string","title":"Collection"}},{"name":"key","in":"path","required":true,"schema":{"type":"string","title":"Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["SQLite Database & Storage"],"summary":"Delete Collection Record","description":"Delete a document from a collection.","operationId":"delete_collection_record_api_v1_storage__collection___key__delete","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"collection","in":"path","required":true,"schema":{"type":"string","title":"Collection"}},{"name":"key","in":"path","required":true,"schema":{"type":"string","title":"Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/utils/hashes":{"post":{"tags":["Utilities & Web Tools API"],"summary":"Compute Cryptographic Hashes & HMAC","operationId":"compute_hashes_api_v1_utils_hashes_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HashRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/utils/qr":{"get":{"tags":["Utilities & Web Tools API"],"summary":"Generate Pure Vector QR Code SVG","operationId":"get_qr_api_v1_utils_qr_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"text","in":"query","required":false,"schema":{"type":"string","description":"Data payload to encode","default":"https://wolfeguard.net","title":"Text"},"description":"Data payload to encode"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":100,"description":"QR code dimension in pixels","default":240,"title":"Size"},"description":"QR code dimension in pixels"},{"name":"foreground","in":"query","required":false,"schema":{"type":"string","description":"Foreground hex color","default":"#00f0ff","title":"Foreground"},"description":"Foreground hex color"},{"name":"background","in":"query","required":false,"schema":{"type":"string","description":"Background hex color","default":"#0a0d14","title":"Background"},"description":"Background hex color"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Utilities & Web Tools API"],"summary":"Generate Vector QR Code SVG","operationId":"make_qr_api_v1_utils_qr_post","security":[{"APIKeyHeader":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QrRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/utils/uuid":{"get":{"tags":["Utilities & Web Tools API"],"summary":"Bulk Secure UUID & Token Generator","operationId":"generate_tokens_api_v1_utils_uuid_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"count","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Number of tokens to generate","default":5,"title":"Count"},"description":"Number of tokens to generate"},{"name":"format_type","in":"query","required":false,"schema":{"type":"string","pattern":"^(v4|v4_hex|nanoid|alphanumeric)$","description":"Format: v4, v4_hex, nanoid, alphanumeric","default":"v4","title":"Format Type"},"description":"Format: v4, v4_hex, nanoid, alphanumeric"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/utils/opengraph":{"post":{"tags":["Utilities & Web Tools API"],"summary":"Extract OpenGraph & URL Metadata","operationId":"extract_og_api_v1_utils_opengraph_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpenGraphRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/utils/html2md":{"post":{"tags":["Utilities & Web Tools API"],"summary":"Convert HTML to Markdown","operationId":"html_to_md_api_v1_utils_html2md_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HtmlToMarkdownRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/utils/webhook":{"post":{"tags":["Utilities & Web Tools API"],"summary":"Dispatch Signed Webhook","operationId":"send_webhook_api_v1_utils_webhook_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/system/metrics":{"get":{"tags":["System & Executable Runner"],"summary":"Get Metrics","description":"Get live host hardware metrics (CPU, RAM, Disk, OS environment).","operationId":"get_metrics_api_v1_system_metrics_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/system/execute":{"post":{"tags":["System & Executable Runner"],"summary":"Execute Command","description":"Execute a command or external tool synchronously and return stdout, stderr, and exit code.","operationId":"execute_command_api_v1_system_execute_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExecuteCommandRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/system/spawn":{"post":{"tags":["System & Executable Runner"],"summary":"Spawn Background Process","description":"Launch an executable, bot, or script in the background. Streams output into task logs.","operationId":"spawn_background_process_api_v1_system_spawn_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpawnProcessRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/tasks":{"get":{"tags":["Task Queue & Workers"],"summary":"List Recent Tasks","description":"List recently submitted background tasks, their status, and timestamps.","operationId":"list_recent_tasks_api_v1_tasks_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tasks/{task_id}":{"get":{"tags":["Task Queue & Workers"],"summary":"Get Task Details","description":"Get real-time status, logs, and output of a specific background task.","operationId":"get_task_details_api_v1_tasks__task_id__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","title":"Task Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/apikeys/create":{"post":{"tags":["Custom API Key Management"],"summary":"Create Api Key","description":"Provision a new custom WolfeGuard API key with scopes, rate limits, and expiration.\nFor standard users, key ownership is automatically locked to their own account.","operationId":"create_api_key_api_v1_apikeys_create_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateKeyRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/apikeys/list":{"get":{"tags":["Custom API Key Management"],"summary":"List Api Keys","description":"List provisioned API keys (never exposes raw keys).\nRegular users can ONLY EVER see keys that THEY created.\nAdministrators and Owners can toggle between their own keys and all platform keys.","operationId":"list_api_keys_api_v1_apikeys_list_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"owner","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Owner"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/apikeys/revoke/{key_id}":{"post":{"tags":["Custom API Key Management"],"summary":"Revoke Api Key","description":"Instantly revoke an API key. Users can only revoke their own keys.","operationId":"revoke_api_key_api_v1_apikeys_revoke__key_id__post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"integer","title":"Key Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/apikeys/{key_id}":{"delete":{"tags":["Custom API Key Management"],"summary":"Delete Api Key","description":"Permanently purge and delete an API key. Users can only delete their own keys.","operationId":"delete_api_key_api_v1_apikeys__key_id__delete","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"integer","title":"Key Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/apikeys/delete/{key_id}":{"delete":{"tags":["Custom API Key Management"],"summary":"Delete Api Key","description":"Permanently purge and delete an API key. Users can only delete their own keys.","operationId":"delete_api_key_api_v1_apikeys_delete__key_id__delete","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"integer","title":"Key Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/apikeys/rotate/{key_id}":{"post":{"tags":["Custom API Key Management"],"summary":"Rotate Api Key","description":"Generate a new key that inherits all settings from the old key.\nUsers can only rotate their own keys.","operationId":"rotate_api_key_api_v1_apikeys_rotate__key_id__post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"integer","title":"Key Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/apikeys/update/{key_id}":{"put":{"tags":["Custom API Key Management"],"summary":"Update Api Key","description":"Update an existing key's label, scopes, or rate limit.","operationId":"update_api_key_api_v1_apikeys_update__key_id__put","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"integer","title":"Key Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateKeyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/apikeys/stats":{"get":{"tags":["Custom API Key Management"],"summary":"Get Api Key Stats","description":"Aggregate statistics: total keys, active/revoked, request counts, owners.\nScoped to the authenticated user for regular operatives.","operationId":"get_api_key_stats_api_v1_apikeys_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/apikeys/audit":{"get":{"tags":["Custom API Key Management"],"summary":"Get Audit Log","description":"Returns API key lifecycle events, scoped to the caller for regular users.","operationId":"get_audit_log_api_v1_apikeys_audit_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/apikeys/validate":{"post":{"tags":["Custom API Key Management"],"summary":"Validate Api Key Endpoint","description":"Validate any WolfeGuard API key — checks existence, expiration, and active status.","operationId":"validate_api_key_endpoint_api_v1_apikeys_validate_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"raw_key","in":"query","required":true,"schema":{"type":"string","title":"Raw Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/apikeys/rate-limit/{raw_key}":{"get":{"tags":["Custom API Key Management"],"summary":"Check Key Rate Limit","description":"Check rate limit status for a given API key.","operationId":"check_key_rate_limit_api_v1_apikeys_rate_limit__raw_key__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"raw_key","in":"path","required":true,"schema":{"type":"string","title":"Raw Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1":{"get":{"tags":["Core"],"summary":"Api Gateway Info","description":"WolfeGuard Synapse Gateway Metadata & Endpoint Discovery.","operationId":"api_gateway_info_api_v1_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardResponse"}}}}}}},"/api":{"get":{"tags":["Core"],"summary":"Api Gateway Info","description":"WolfeGuard Synapse Gateway Metadata & Endpoint Discovery.","operationId":"api_gateway_info_api_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardResponse"}}}}}}},"/health":{"get":{"tags":["Core"],"summary":"Health Check","description":"Health check probe for monitoring tools and uptime checkers.","operationId":"health_check_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardResponse"}}}}}}}},"components":{"schemas":{"AdminCreateUserRequest":{"properties":{"username":{"type":"string","maxLength":32,"minLength":3,"title":"Username"},"password":{"type":"string","minLength":6,"title":"Password"},"role":{"type":"string","title":"Role","description":"'user', 'admin', or 'owner'","default":"user"}},"type":"object","required":["username","password"],"title":"AdminCreateUserRequest"},"ChangePasswordRequest":{"properties":{"current_password":{"type":"string","minLength":1,"title":"Current Password","description":"Current account password"},"new_password":{"type":"string","minLength":6,"title":"New Password","description":"New account password (min 6 chars)"}},"type":"object","required":["current_password","new_password"],"title":"ChangePasswordRequest"},"CompletionRequest":{"properties":{"prompt":{"type":"string","title":"Prompt","description":"Prompt or user message to evaluate"},"system_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"System Prompt","description":"System persona or rules"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model","description":"Model identifier (e.g. llama3, mistral, gpt-4o)"},"temperature":{"type":"number","maximum":2.0,"minimum":0.0,"title":"Temperature","default":0.7},"provider":{"type":"string","title":"Provider","description":"'ollama' for local inference or 'openai' for remote API","default":"ollama"}},"type":"object","required":["prompt"],"title":"CompletionRequest"},"CreateKeyRequest":{"properties":{"owner":{"anyOf":[{"type":"string","maxLength":64,"minLength":2},{"type":"null"}],"title":"Owner","description":"Key owner identifier (username, app name, service)"},"label":{"type":"string","maxLength":128,"title":"Label","description":"Human-readable label for this key","default":"Default Key"},"key_type":{"type":"string","title":"Key Type","description":"Key type: 'live' (production), 'test' (sandbox), 'internal' (service)","default":"live"},"scopes":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Scopes","description":"Permission scopes (e.g. ['maps', 'ai', 'intel']). Defaults to ['*'] (all)"},"rate_limit":{"type":"integer","maximum":100000.0,"minimum":1.0,"title":"Rate Limit","description":"Max requests per hour for this key","default":1000},"expires_in_days":{"anyOf":[{"type":"integer","maximum":3650.0,"minimum":1.0},{"type":"null"}],"title":"Expires In Days","description":"Auto-expire after N days (null = never)"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Arbitrary key-value metadata to attach"}},"type":"object","title":"CreateKeyRequest"},"CustomLayerCreateRequest":{"properties":{"name":{"type":"string","title":"Name","description":"Layer / Polygon / Zone name"},"layer_type":{"type":"string","title":"Layer Type","description":"Type: polygon, polyline, zone, circle","default":"polygon"},"geojson":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Geojson","description":"GeoJSON geometry or feature dictionary"},"geojson_data":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Geojson Data","description":"GeoJSON geometry or feature dictionary (alias)"},"color":{"type":"string","title":"Color","description":"Hex color for boundary and fill","default":"#ff1e42"},"key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key","description":"Optional custom key"}},"type":"object","required":["name"],"title":"CustomLayerCreateRequest"},"DistanceRequest":{"properties":{"lat1":{"type":"number","maximum":90.0,"minimum":-90.0,"title":"Lat1","description":"Origin latitude (-90 to 90)"},"lon1":{"type":"number","maximum":180.0,"minimum":-180.0,"title":"Lon1","description":"Origin longitude (-180 to 180)"},"lat2":{"type":"number","maximum":90.0,"minimum":-90.0,"title":"Lat2","description":"Destination latitude (-90 to 90)"},"lon2":{"type":"number","maximum":180.0,"minimum":-180.0,"title":"Lon2","description":"Destination longitude (-180 to 180)"}},"type":"object","required":["lat1","lon1","lat2","lon2"],"title":"DistanceRequest"},"ExecuteCommandRequest":{"properties":{"command":{"type":"string","title":"Command","description":"CLI command or executable invocation to run (e.g. 'ping 1.1.1.1' or 'python bot.py')"},"timeout_seconds":{"type":"integer","maximum":300.0,"minimum":1.0,"title":"Timeout Seconds","description":"Max execution duration before killing process","default":30}},"type":"object","required":["command"],"title":"ExecuteCommandRequest"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HashRequest":{"properties":{"text":{"type":"string","title":"Text","description":"Target string to hash"},"secret_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Secret Key","description":"Optional HMAC key"}},"type":"object","required":["text"],"title":"HashRequest"},"HtmlToMarkdownRequest":{"properties":{"html":{"type":"string","title":"Html","description":"Raw HTML string to convert"}},"type":"object","required":["html"],"title":"HtmlToMarkdownRequest"},"OpenGraphRequest":{"properties":{"url":{"type":"string","title":"Url","description":"Target website URL to extract metadata from"}},"type":"object","required":["url"],"title":"OpenGraphRequest"},"PoiCreateRequest":{"properties":{"name":{"type":"string","maxLength":120,"minLength":1,"title":"Name","description":"Point of interest name"},"category":{"type":"string","title":"Category","description":"Category: tactical, base, safehouse, waypoint, landmark","default":"tactical"},"lat":{"type":"number","maximum":90.0,"minimum":-90.0,"title":"Lat","description":"Latitude"},"lon":{"type":"number","maximum":180.0,"minimum":-180.0,"title":"Lon","description":"Longitude"},"address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Address","description":"Optional street address","default":""},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City","description":"Optional city or territory","default":""},"country_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Code","description":"ISO country code","default":"US"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Custom JSON payload"}},"type":"object","required":["name","lat","lon"],"title":"PoiCreateRequest"},"QrRequest":{"properties":{"data":{"type":"string","title":"Data","description":"Data payload to encode into QR code"},"size":{"type":"integer","maximum":1000.0,"minimum":100.0,"title":"Size","description":"QR code dimension in pixels","default":250}},"type":"object","required":["data"],"title":"QrRequest"},"ResetPasswordRequest":{"properties":{"password":{"type":"string","minLength":6,"title":"Password"}},"type":"object","required":["password"],"title":"ResetPasswordRequest"},"SetRecordRequest":{"properties":{"key":{"type":"string","title":"Key","description":"Unique document / record key"},"value":{"title":"Value","description":"Any JSON data object, list, string, or number to store"}},"type":"object","required":["key","value"],"title":"SetRecordRequest"},"SpawnProcessRequest":{"properties":{"command":{"type":"string","title":"Command","description":"Command line or binary to spawn as a long-running background worker"}},"type":"object","required":["command"],"title":"SpawnProcessRequest"},"SqlQueryRequest":{"properties":{"query":{"type":"string","title":"Query","description":"SQL query to execute against wolfeguard.db"}},"type":"object","required":["query"],"title":"SqlQueryRequest"},"StandardResponse":{"properties":{"success":{"type":"boolean","title":"Success","default":true},"status":{"type":"string","title":"Status","default":"ok"},"data":{"anyOf":[{},{"type":"null"}],"title":"Data"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"},"meta":{"additionalProperties":true,"type":"object","title":"Meta"}},"type":"object","title":"StandardResponse"},"TrainJobRequest":{"properties":{"base_model":{"type":"string","title":"Base Model","description":"Foundation model to fine-tune","default":"llama3"},"dataset_path":{"type":"string","title":"Dataset Path","description":"Path or URL to JSONL dataset","default":"datasets/training_data.jsonl"},"epochs":{"type":"integer","maximum":100.0,"minimum":1.0,"title":"Epochs","default":3}},"type":"object","title":"TrainJobRequest"},"UpdateEmailRequest":{"properties":{"email":{"type":"string","maxLength":120,"minLength":3,"title":"Email","description":"New contact email address"}},"type":"object","required":["email"],"title":"UpdateEmailRequest"},"UpdateKeyRequest":{"properties":{"label":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Label"},"scopes":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Scopes"},"rate_limit":{"anyOf":[{"type":"integer","maximum":100000.0,"minimum":1.0},{"type":"null"}],"title":"Rate Limit"}},"type":"object","title":"UpdateKeyRequest"},"UpdateRoleRequest":{"properties":{"role":{"type":"string","title":"Role","description":"'user', 'admin', or 'owner'"}},"type":"object","required":["role"],"title":"UpdateRoleRequest"},"UserLoginRequest":{"properties":{"username":{"type":"string","title":"Username","description":"Account username"},"password":{"type":"string","title":"Password","description":"Account password"}},"type":"object","required":["username","password"],"title":"UserLoginRequest"},"UserRegisterRequest":{"properties":{"username":{"type":"string","maxLength":32,"minLength":3,"title":"Username","description":"Unique username"},"password":{"type":"string","minLength":6,"title":"Password","description":"Account password"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email","description":"Optional contact email","default":""}},"type":"object","required":["username","password"],"title":"UserRegisterRequest"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"WebhookRequest":{"properties":{"target_url":{"type":"string","title":"Target Url","description":"Destination webhook URL"},"payload":{"additionalProperties":true,"type":"object","title":"Payload","description":"JSON body to deliver"},"secret":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Secret","description":"Optional secret for X-Synapse-Signature"}},"type":"object","required":["target_url"],"title":"WebhookRequest"}},"securitySchemes":{"APIKeyHeader":{"type":"apiKey","in":"header","name":"X-API-Key"}}}}