{"openapi": "3.1.0", "info": {"title": "ConfigPig API", "version": "1.0.0", "description": "ConfigPig \u2014 Config file management for small teams"}, "paths": {"/api/": {"get": {"operationId": "api_main_api_root", "summary": "API Root", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/APIRootResponse"}}}}}, "description": "API root endpoint with version information"}}, "/api/v1/health": {"get": {"operationId": "api_v1_router_health_check", "summary": "Health Check", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HealthResponse"}}}}}, "description": "Simple health check endpoint", "tags": ["v1"]}}, "/api/v1/configs/": {"get": {"operationId": "api_v1_configs_list_configs", "summary": "List configs", "parameters": [{"in": "query", "name": "tag", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Tag"}, "required": false}, {"in": "query", "name": "search", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Search"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/ConfigListOut"}, "title": "Response", "type": "array"}}}}}, "tags": ["Configs"], "security": [{"ApiKeyAuth": []}]}, "post": {"operationId": "api_v1_configs_create_config", "summary": "Create config", "parameters": [], "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ConfigOut"}}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorOut"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorOut"}}}}}, "tags": ["Configs"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ConfigCreateIn"}}}, "required": true}, "security": [{"ApiKeyAuth": []}]}}, "/api/v1/configs/{slug}": {"get": {"operationId": "api_v1_configs_get_config", "summary": "Get config", "parameters": [{"in": "path", "name": "slug", "schema": {"title": "Slug", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ConfigOut"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorOut"}}}}}, "tags": ["Configs"], "security": [{"ApiKeyAuth": []}]}, "put": {"operationId": "api_v1_configs_update_config", "summary": "Update config metadata", "parameters": [{"in": "path", "name": "slug", "schema": {"title": "Slug", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ConfigOut"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorOut"}}}}}, "tags": ["Configs"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ConfigUpdateIn"}}}, "required": true}, "security": [{"ApiKeyAuth": []}]}, "delete": {"operationId": "api_v1_configs_delete_config", "summary": "Delete config", "parameters": [{"in": "path", "name": "slug", "schema": {"title": "Slug", "type": "string"}, "required": true}], "responses": {"204": {"description": "No Content"}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorOut"}}}}}, "tags": ["Configs"], "security": [{"ApiKeyAuth": []}]}}, "/api/v1/configs/{slug}/versions": {"get": {"operationId": "api_v1_configs_list_versions", "summary": "List versions", "parameters": [{"in": "path", "name": "slug", "schema": {"title": "Slug", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/ConfigVersionOut"}, "title": "Response", "type": "array"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorOut"}}}}}, "tags": ["Configs"], "security": [{"ApiKeyAuth": []}]}, "post": {"operationId": "api_v1_configs_create_version", "summary": "Create version", "parameters": [{"in": "path", "name": "slug", "schema": {"title": "Slug", "type": "string"}, "required": true}], "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ConfigVersionOut"}}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorOut"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorOut"}}}}}, "tags": ["Configs"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/VersionCreateIn"}}}, "required": true}, "security": [{"ApiKeyAuth": []}]}}, "/api/v1/configs/{slug}/versions/{num}": {"get": {"operationId": "api_v1_configs_get_version", "summary": "Get specific version", "parameters": [{"in": "path", "name": "slug", "schema": {"title": "Slug", "type": "string"}, "required": true}, {"in": "path", "name": "num", "schema": {"title": "Num", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ConfigVersionOut"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorOut"}}}}}, "tags": ["Configs"], "security": [{"ApiKeyAuth": []}]}}, "/api/v1/configs/{slug}/fetch": {"get": {"operationId": "api_v1_configs_fetch_config", "summary": "Fetch config content with optional format conversion", "parameters": [{"in": "path", "name": "slug", "schema": {"title": "Slug", "type": "string"}, "required": true}, {"in": "query", "name": "label", "schema": {"default": "latest", "title": "Label", "type": "string"}, "required": false}, {"in": "query", "name": "output_format", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Output Format"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/FetchOut"}}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorOut"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorOut"}}}}}, "tags": ["Configs"], "security": [{"ApiKeyAuth": []}]}}, "/api/v1/configs/{slug}/promote": {"post": {"operationId": "api_v1_configs_promote_version", "summary": "Assign label to a version", "parameters": [{"in": "path", "name": "slug", "schema": {"title": "Slug", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ConfigOut"}}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorOut"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorOut"}}}}}, "tags": ["Configs"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/PromoteIn"}}}, "required": true}, "security": [{"ApiKeyAuth": []}]}}, "/api/v1/configs/{slug}/rollback": {"post": {"operationId": "api_v1_configs_rollback_version", "summary": "Rollback label to previous version", "parameters": [{"in": "path", "name": "slug", "schema": {"title": "Slug", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ConfigOut"}}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorOut"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorOut"}}}}}, "tags": ["Configs"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/RollbackIn"}}}, "required": true}, "security": [{"ApiKeyAuth": []}]}}, "/api/v1/labels/": {"get": {"operationId": "api_v1_labels_list_labels", "summary": "List team labels", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/TeamLabelOut"}, "title": "Response", "type": "array"}}}}}, "tags": ["Labels"], "security": [{"ApiKeyAuth": []}]}, "post": {"operationId": "api_v1_labels_create_label", "summary": "Create team label", "parameters": [], "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TeamLabelOut"}}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorOut"}}}}}, "tags": ["Labels"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/TeamLabelCreateIn"}}}, "required": true}, "security": [{"ApiKeyAuth": []}]}}, "/api/v1/labels/{name}": {"delete": {"operationId": "api_v1_labels_delete_label", "summary": "Delete team label", "parameters": [{"in": "path", "name": "name", "schema": {"title": "Name", "type": "string"}, "required": true}], "responses": {"204": {"description": "No Content"}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorOut"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorOut"}}}}}, "tags": ["Labels"], "security": [{"ApiKeyAuth": []}]}}, "/api/v1/labels/configs/{slug}": {"get": {"operationId": "api_v1_labels_list_config_labels", "summary": "List labels for a config", "parameters": [{"in": "path", "name": "slug", "schema": {"title": "Slug", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/ConfigLabelOut"}, "title": "Response", "type": "array"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorOut"}}}}}, "tags": ["Labels"], "security": [{"ApiKeyAuth": []}]}, "post": {"operationId": "api_v1_labels_assign_label", "summary": "Assign label to a config version", "parameters": [{"in": "path", "name": "slug", "schema": {"title": "Slug", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ConfigLabelOut"}}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorOut"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorOut"}}}}}, "tags": ["Labels"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/AssignLabelIn"}}}, "required": true}, "security": [{"ApiKeyAuth": []}]}}, "/api/v1/environments/": {"get": {"operationId": "api_v1_environments_list_environments", "summary": "List team environments", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/TeamEnvironmentOut"}, "title": "Response", "type": "array"}}}}}, "tags": ["Environments"], "security": [{"ApiKeyAuth": []}]}, "post": {"operationId": "api_v1_environments_create_environment", "summary": "Create team environment", "parameters": [], "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TeamEnvironmentOut"}}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorOut"}}}}}, "tags": ["Environments"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/TeamEnvironmentCreateIn"}}}, "required": true}, "security": [{"ApiKeyAuth": []}]}}, "/api/v1/environments/{name}": {"delete": {"operationId": "api_v1_environments_delete_environment", "summary": "Delete team environment", "parameters": [{"in": "path", "name": "name", "schema": {"title": "Name", "type": "string"}, "required": true}], "responses": {"204": {"description": "No Content"}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorOut"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorOut"}}}}}, "tags": ["Environments"], "security": [{"ApiKeyAuth": []}]}}, "/api/v1/exports/": {"get": {"operationId": "api_v1_exports_list_exports", "summary": "List exports", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/ExportOut"}, "title": "Response", "type": "array"}}}}}, "tags": ["Exports"], "security": [{"ApiKeyAuth": []}]}, "post": {"operationId": "api_v1_exports_create_export", "summary": "Request new export", "parameters": [], "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ExportOut"}}}}, "409": {"description": "Conflict", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorOut"}}}}}, "tags": ["Exports"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ExportCreateIn"}}}, "required": true}, "security": [{"ApiKeyAuth": []}]}}, "/api/v1/exports/{export_id}/": {"get": {"operationId": "api_v1_exports_get_export", "summary": "Get export details", "parameters": [{"in": "path", "name": "export_id", "schema": {"title": "Export Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ExportOut"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorOut"}}}}}, "tags": ["Exports"], "security": [{"ApiKeyAuth": []}]}, "delete": {"operationId": "api_v1_exports_delete_export", "summary": "Delete export", "parameters": [{"in": "path", "name": "export_id", "schema": {"title": "Export Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"additionalProperties": true, "title": "Response", "type": "object"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorOut"}}}}}, "tags": ["Exports"], "security": [{"ApiKeyAuth": []}]}}, "/api/v1/exports/{export_id}/download/": {"get": {"operationId": "api_v1_exports_download_export", "summary": "Download export file", "parameters": [{"in": "path", "name": "export_id", "schema": {"title": "Export Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK"}}, "tags": ["Exports"], "security": [{"ApiKeyAuth": []}]}}, "/api/v1/secrets/": {"post": {"operationId": "api_v1_secrets_create_secret", "summary": "Store an encrypted secret", "parameters": [], "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SecretOut"}}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorOut"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorOut"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorOut"}}}}}, "tags": ["Secrets"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/SecretCreateIn"}}}, "required": true}, "security": [{"ApiKeyAuth": []}]}}, "/api/v1/secrets/{config_slug}/keys/{secret_key}": {"get": {"operationId": "api_v1_secrets_get_secret", "summary": "Fetch an encrypted secret (ciphertext)", "parameters": [{"in": "path", "name": "config_slug", "schema": {"title": "Config Slug", "type": "string"}, "required": true}, {"in": "path", "name": "secret_key", "schema": {"title": "Secret Key", "type": "string"}, "required": true}, {"in": "query", "name": "environment", "schema": {"default": "default", "title": "Environment", "type": "string"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SecretOut"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorOut"}}}}}, "tags": ["Secrets"], "security": [{"ApiKeyAuth": []}]}, "put": {"operationId": "api_v1_secrets_update_secret", "summary": "Update an encrypted secret (e.g. rotation)", "parameters": [{"in": "path", "name": "config_slug", "schema": {"title": "Config Slug", "type": "string"}, "required": true}, {"in": "path", "name": "secret_key", "schema": {"title": "Secret Key", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SecretOut"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorOut"}}}}}, "tags": ["Secrets"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/SecretUpdateIn"}}}, "required": true}, "security": [{"ApiKeyAuth": []}]}, "delete": {"operationId": "api_v1_secrets_delete_secret", "summary": "Delete a secret", "parameters": [{"in": "path", "name": "config_slug", "schema": {"title": "Config Slug", "type": "string"}, "required": true}, {"in": "path", "name": "secret_key", "schema": {"title": "Secret Key", "type": "string"}, "required": true}, {"in": "query", "name": "environment", "schema": {"default": "default", "title": "Environment", "type": "string"}, "required": false}], "responses": {"204": {"description": "No Content"}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorOut"}}}}}, "tags": ["Secrets"], "security": [{"ApiKeyAuth": []}]}}, "/api/v1/secrets/{config_slug}/": {"get": {"operationId": "api_v1_secrets_list_secrets", "summary": "List secret metadata for a config", "parameters": [{"in": "path", "name": "config_slug", "schema": {"title": "Config Slug", "type": "string"}, "required": true}, {"in": "query", "name": "environment", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Environment"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SecretListOut"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorOut"}}}}}, "tags": ["Secrets"], "security": [{"ApiKeyAuth": []}]}}, "/api/v1/secrets/{config_slug}/audit-log": {"get": {"operationId": "api_v1_secrets_get_audit_log", "summary": "Get secret audit log for a config", "parameters": [{"in": "path", "name": "config_slug", "schema": {"title": "Config Slug", "type": "string"}, "required": true}, {"in": "query", "name": "environment", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Environment"}, "required": false}, {"in": "query", "name": "limit", "schema": {"default": 50, "title": "Limit", "type": "integer"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/SecretAuditLogOut"}, "title": "Response", "type": "array"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorOut"}}}}}, "tags": ["Secrets"], "security": [{"ApiKeyAuth": []}]}}, "/api/v1/rotation/{config_slug}/keys/{secret_key}/schedule": {"get": {"operationId": "api_v1_rotation_get_schedule", "summary": "Get rotation schedule for a secret", "parameters": [{"in": "path", "name": "config_slug", "schema": {"title": "Config Slug", "type": "string"}, "required": true}, {"in": "path", "name": "secret_key", "schema": {"title": "Secret Key", "type": "string"}, "required": true}, {"in": "query", "name": "environment", "schema": {"default": "default", "title": "Environment", "type": "string"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RotationScheduleOut"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorOut"}}}}}, "tags": ["Rotation"], "security": [{"ApiKeyAuth": []}]}, "put": {"operationId": "api_v1_rotation_upsert_schedule", "summary": "Create or update rotation schedule for a secret", "parameters": [{"in": "path", "name": "config_slug", "schema": {"title": "Config Slug", "type": "string"}, "required": true}, {"in": "path", "name": "secret_key", "schema": {"title": "Secret Key", "type": "string"}, "required": true}, {"in": "query", "name": "environment", "schema": {"default": "default", "title": "Environment", "type": "string"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RotationScheduleOut"}}}}, "201": {"description": "Created", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RotationScheduleOut"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorOut"}}}}}, "tags": ["Rotation"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/RotationScheduleIn"}}}, "required": true}, "security": [{"ApiKeyAuth": []}]}, "delete": {"operationId": "api_v1_rotation_delete_schedule", "summary": "Delete rotation schedule for a secret", "parameters": [{"in": "path", "name": "config_slug", "schema": {"title": "Config Slug", "type": "string"}, "required": true}, {"in": "path", "name": "secret_key", "schema": {"title": "Secret Key", "type": "string"}, "required": true}, {"in": "query", "name": "environment", "schema": {"default": "default", "title": "Environment", "type": "string"}, "required": false}], "responses": {"204": {"description": "No Content"}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorOut"}}}}}, "tags": ["Rotation"], "security": [{"ApiKeyAuth": []}]}}, "/api/v1/rotation/{config_slug}/schedules": {"get": {"operationId": "api_v1_rotation_list_schedules", "summary": "List all rotation schedules for a config", "parameters": [{"in": "path", "name": "config_slug", "schema": {"title": "Config Slug", "type": "string"}, "required": true}, {"in": "query", "name": "overdue_only", "schema": {"default": false, "title": "Overdue Only", "type": "boolean"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/RotationScheduleOut"}, "title": "Response", "type": "array"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorOut"}}}}}, "tags": ["Rotation"], "security": [{"ApiKeyAuth": []}]}}, "/api/v1/rotation/{config_slug}/keys/{secret_key}/trigger-rotation": {"post": {"operationId": "api_v1_rotation_trigger_rotation", "summary": "Trigger a rotation event for a secret", "parameters": [{"in": "path", "name": "config_slug", "schema": {"title": "Config Slug", "type": "string"}, "required": true}, {"in": "path", "name": "secret_key", "schema": {"title": "Secret Key", "type": "string"}, "required": true}, {"in": "query", "name": "environment", "schema": {"default": "default", "title": "Environment", "type": "string"}, "required": false}], "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RotationEventOut"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorOut"}}}}}, "tags": ["Rotation"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/RotationTriggerIn"}}}, "required": true}, "security": [{"ApiKeyAuth": []}]}}, "/api/v1/rotation/events/{event_id}": {"put": {"operationId": "api_v1_rotation_update_event", "summary": "Update rotation event status (from SDK daemon)", "parameters": [{"in": "path", "name": "event_id", "schema": {"title": "Event Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RotationEventOut"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorOut"}}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorOut"}}}}}, "tags": ["Rotation"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/RotationEventUpdateIn"}}}, "required": true}, "security": [{"ApiKeyAuth": []}]}}, "/api/v1/rotation/{config_slug}/rotation-events": {"get": {"operationId": "api_v1_rotation_list_rotation_events", "summary": "List rotation events for a config", "parameters": [{"in": "path", "name": "config_slug", "schema": {"title": "Config Slug", "type": "string"}, "required": true}, {"in": "query", "name": "secret_key", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Secret Key"}, "required": false}, {"in": "query", "name": "status", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Status"}, "required": false}, {"in": "query", "name": "limit", "schema": {"default": 50, "title": "Limit", "type": "integer"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/RotationEventOut"}, "title": "Response", "type": "array"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorOut"}}}}}, "tags": ["Rotation"], "security": [{"ApiKeyAuth": []}]}}, "/api/v1/rotation/pending": {"get": {"operationId": "api_v1_rotation_pending_rotations", "summary": "List pending rotation events for the team (polled by daemon)", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/RotationEventOut"}, "title": "Response", "type": "array"}}}}}, "tags": ["Rotation"], "security": [{"ApiKeyAuth": []}]}}, "/api/v1/rotation/alerts": {"get": {"operationId": "api_v1_rotation_list_alerts", "summary": "List alert configurations", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/AlertConfigOut"}, "title": "Response", "type": "array"}}}}}, "tags": ["Rotation"], "security": [{"ApiKeyAuth": []}]}, "post": {"operationId": "api_v1_rotation_create_alert", "summary": "Create an alert configuration", "parameters": [], "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AlertConfigOut"}}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorOut"}}}}}, "tags": ["Rotation"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/AlertConfigIn"}}}, "required": true}, "security": [{"ApiKeyAuth": []}]}}, "/api/v1/rotation/alerts/{alert_id}": {"delete": {"operationId": "api_v1_rotation_delete_alert", "summary": "Delete an alert configuration", "parameters": [{"in": "path", "name": "alert_id", "schema": {"title": "Alert Id", "type": "string"}, "required": true}], "responses": {"204": {"description": "No Content"}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorOut"}}}}}, "tags": ["Rotation"], "security": [{"ApiKeyAuth": []}]}}, "/api/v1/teams/": {"get": {"operationId": "api_v1_teams_list_teams", "summary": "List teams", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/TeamOut"}, "title": "Response", "type": "array"}}}}}, "description": "List teams for the authenticated API key.", "tags": ["Teams"], "security": [{"ApiKeyAuth": []}]}}, "/api/v1/teams/{slug}/": {"patch": {"operationId": "api_v1_teams_update_team", "summary": "Update team name", "parameters": [{"in": "path", "name": "slug", "schema": {"title": "Slug", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TeamOut"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorOut"}}}}}, "tags": ["Teams"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/TeamUpdateIn"}}}, "required": true}, "security": [{"ApiKeyAuth": []}]}}, "/api/v1/teams/{slug}/api-keys/": {"get": {"operationId": "api_v1_team_api_keys_list_api_keys", "summary": "List API keys", "parameters": [{"in": "path", "name": "slug", "schema": {"title": "Slug", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/APIKeyOut"}, "title": "Response", "type": "array"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorOut"}}}}}, "description": "List active API keys for a team.", "tags": ["API Keys"], "security": [{"ApiKeyAuth": []}]}, "post": {"operationId": "api_v1_team_api_keys_create_api_key", "summary": "Create API key", "parameters": [{"in": "path", "name": "slug", "schema": {"title": "Slug", "type": "string"}, "required": true}], "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/APIKeyCreatedOut"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorOut"}}}}}, "description": "Create a new API key for a team.", "tags": ["API Keys"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/APIKeyCreateIn"}}}, "required": true}, "security": [{"ApiKeyAuth": []}]}}, "/api/v1/teams/{slug}/api-keys/{key_uuid}/": {"delete": {"operationId": "api_v1_team_api_keys_revoke_api_key", "summary": "Revoke API key", "parameters": [{"in": "path", "name": "slug", "schema": {"title": "Slug", "type": "string"}, "required": true}, {"in": "path", "name": "key_uuid", "schema": {"title": "Key Uuid", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MessageOut"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorOut"}}}}}, "description": "Revoke an API key (soft delete).", "tags": ["API Keys"], "security": [{"ApiKeyAuth": []}]}}, "/api/v1/admin/users/{email}/teams/": {"get": {"operationId": "api_v1_admin_api_list_user_teams", "summary": "List user's teams (superuser)", "parameters": [{"in": "path", "name": "email", "schema": {"title": "Email", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/UserTeamOut"}, "title": "Response", "type": "array"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorOut"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorOut"}}}}}, "description": "List all teams for a user (superuser only).", "tags": ["Admin"], "security": [{"ApiKeyAuth": []}]}}, "/api/v1/admin/users/{email}/teams/{slug}/api-keys/": {"get": {"operationId": "api_v1_admin_api_list_user_team_api_keys", "summary": "List user's team API keys (superuser)", "parameters": [{"in": "path", "name": "email", "schema": {"title": "Email", "type": "string"}, "required": true}, {"in": "path", "name": "slug", "schema": {"title": "Slug", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/APIKeyOut"}, "title": "Response", "type": "array"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorOut"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorOut"}}}}}, "description": "List API keys for a user's team (superuser only).", "tags": ["Admin"], "security": [{"ApiKeyAuth": []}]}}}, "components": {"schemas": {"APIRootResponse": {"properties": {"message": {"description": "Welcome message", "title": "Message", "type": "string"}, "versions": {"additionalProperties": {"type": "string"}, "description": "Available API versions", "title": "Versions", "type": "object"}, "documentation": {"description": "Documentation URL", "title": "Documentation", "type": "string"}, "openapi_schema": {"description": "OpenAPI schema URL", "title": "Openapi Schema", "type": "string"}}, "required": ["message", "versions", "documentation", "openapi_schema"], "title": "APIRootResponse", "type": "object"}, "HealthResponse": {"properties": {"status": {"description": "API health status", "title": "Status", "type": "string"}, "version": {"description": "API version", "title": "Version", "type": "string"}, "timestamp": {"description": "Current timestamp", "title": "Timestamp", "type": "string"}}, "required": ["status", "version", "timestamp"], "title": "HealthResponse", "type": "object"}, "ConfigListOut": {"properties": {"id": {"title": "Id", "type": "string"}, "slug": {"title": "Slug", "type": "string"}, "name": {"title": "Name", "type": "string"}, "description": {"title": "Description", "type": "string"}, "tags": {"items": {"type": "string"}, "title": "Tags", "type": "array"}, "format": {"title": "Format", "type": "string"}, "version_count": {"title": "Version Count", "type": "integer"}, "updated_at": {"title": "Updated At", "type": "string"}}, "required": ["id", "slug", "name", "description", "tags", "format", "version_count", "updated_at"], "title": "ConfigListOut", "type": "object"}, "ConfigOut": {"properties": {"id": {"title": "Id", "type": "string"}, "slug": {"title": "Slug", "type": "string"}, "name": {"title": "Name", "type": "string"}, "description": {"title": "Description", "type": "string"}, "tags": {"items": {"type": "string"}, "title": "Tags", "type": "array"}, "format": {"title": "Format", "type": "string"}, "version_count": {"title": "Version Count", "type": "integer"}, "labels": {"items": {"$ref": "#/components/schemas/LabelOut"}, "title": "Labels", "type": "array"}, "created_at": {"title": "Created At", "type": "string"}, "updated_at": {"title": "Updated At", "type": "string"}}, "required": ["id", "slug", "name", "description", "tags", "format", "version_count", "created_at", "updated_at"], "title": "ConfigOut", "type": "object"}, "LabelOut": {"properties": {"label_name": {"title": "Label Name", "type": "string"}, "version_number": {"title": "Version Number", "type": "integer"}, "is_system": {"title": "Is System", "type": "boolean"}, "updated_at": {"title": "Updated At", "type": "string"}}, "required": ["label_name", "version_number", "is_system", "updated_at"], "title": "LabelOut", "type": "object"}, "ErrorOut": {"properties": {"detail": {"title": "Detail", "type": "string"}}, "required": ["detail"], "title": "ErrorOut", "type": "object"}, "ConfigCreateIn": {"properties": {"name": {"maxLength": 200, "minLength": 1, "title": "Name", "type": "string"}, "slug": {"anyOf": [{"maxLength": 200, "pattern": "^[a-z0-9][-a-z0-9]*$", "type": "string"}, {"type": "null"}], "title": "Slug"}, "description": {"default": "", "title": "Description", "type": "string"}, "tags": {"items": {"type": "string"}, "title": "Tags", "type": "array"}, "content": {"description": "Initial config content", "title": "Content", "type": "string"}, "change_note": {"default": "Initial version", "title": "Change Note", "type": "string"}, "format": {"default": "json", "description": "Config format (json, yaml, toml, ini, dotenv)", "title": "Format", "type": "string"}}, "required": ["name", "content"], "title": "ConfigCreateIn", "type": "object"}, "ConfigUpdateIn": {"properties": {"name": {"anyOf": [{"maxLength": 200, "type": "string"}, {"type": "null"}], "title": "Name"}, "description": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Description"}, "tags": {"anyOf": [{"items": {"type": "string"}, "type": "array"}, {"type": "null"}], "title": "Tags"}}, "title": "ConfigUpdateIn", "type": "object"}, "ConfigVersionOut": {"properties": {"id": {"title": "Id", "type": "string"}, "version_number": {"title": "Version Number", "type": "integer"}, "content": {"title": "Content", "type": "string"}, "change_note": {"title": "Change Note", "type": "string"}, "created_by": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Created By"}, "created_at": {"title": "Created At", "type": "string"}}, "required": ["id", "version_number", "content", "change_note", "created_at"], "title": "ConfigVersionOut", "type": "object"}, "VersionCreateIn": {"properties": {"content": {"description": "Config content", "title": "Content", "type": "string"}, "change_note": {"default": "", "title": "Change Note", "type": "string"}}, "required": ["content"], "title": "VersionCreateIn", "type": "object"}, "FetchOut": {"properties": {"content": {"title": "Content", "type": "string"}, "format": {"title": "Format", "type": "string"}, "source_format": {"title": "Source Format", "type": "string"}, "version_number": {"title": "Version Number", "type": "integer"}, "label": {"title": "Label", "type": "string"}, "converted": {"title": "Converted", "type": "boolean"}}, "required": ["content", "format", "source_format", "version_number", "label", "converted"], "title": "FetchOut", "type": "object"}, "PromoteIn": {"properties": {"version": {"description": "Version number to promote", "title": "Version", "type": "integer"}, "label": {"description": "Label to assign", "title": "Label", "type": "string"}}, "required": ["version", "label"], "title": "PromoteIn", "type": "object"}, "RollbackIn": {"properties": {"label": {"description": "Label to rollback", "title": "Label", "type": "string"}}, "required": ["label"], "title": "RollbackIn", "type": "object"}, "TeamLabelOut": {"properties": {"id": {"title": "Id", "type": "string"}, "name": {"title": "Name", "type": "string"}, "is_protected": {"title": "Is Protected", "type": "boolean"}, "is_system": {"title": "Is System", "type": "boolean"}, "description": {"title": "Description", "type": "string"}, "created_at": {"title": "Created At", "type": "string"}}, "required": ["id", "name", "is_protected", "is_system", "description", "created_at"], "title": "TeamLabelOut", "type": "object"}, "TeamLabelCreateIn": {"properties": {"name": {"maxLength": 100, "minLength": 1, "pattern": "^[a-z0-9][-a-z0-9]*$", "title": "Name", "type": "string"}, "is_protected": {"default": false, "title": "Is Protected", "type": "boolean"}, "description": {"default": "", "title": "Description", "type": "string"}}, "required": ["name"], "title": "TeamLabelCreateIn", "type": "object"}, "ConfigLabelOut": {"properties": {"label_name": {"title": "Label Name", "type": "string"}, "version_number": {"title": "Version Number", "type": "integer"}, "is_system": {"title": "Is System", "type": "boolean"}, "updated_at": {"title": "Updated At", "type": "string"}}, "required": ["label_name", "version_number", "is_system", "updated_at"], "title": "ConfigLabelOut", "type": "object"}, "AssignLabelIn": {"properties": {"label": {"description": "Label name to assign", "title": "Label", "type": "string"}, "version": {"description": "Version number to point to", "title": "Version", "type": "integer"}}, "required": ["label", "version"], "title": "AssignLabelIn", "type": "object"}, "TeamEnvironmentOut": {"properties": {"id": {"title": "Id", "type": "string"}, "name": {"title": "Name", "type": "string"}, "is_protected": {"title": "Is Protected", "type": "boolean"}, "description": {"title": "Description", "type": "string"}, "created_at": {"title": "Created At", "type": "string"}}, "required": ["id", "name", "is_protected", "description", "created_at"], "title": "TeamEnvironmentOut", "type": "object"}, "TeamEnvironmentCreateIn": {"properties": {"name": {"maxLength": 100, "minLength": 1, "pattern": "^[a-z0-9][-a-z0-9]*$", "title": "Name", "type": "string"}, "is_protected": {"default": false, "title": "Is Protected", "type": "boolean"}, "description": {"default": "", "title": "Description", "type": "string"}}, "required": ["name"], "title": "TeamEnvironmentCreateIn", "type": "object"}, "ExportOut": {"properties": {"id": {"title": "Id", "type": "string"}, "name": {"title": "Name", "type": "string"}, "status": {"title": "Status", "type": "string"}, "format": {"title": "Format", "type": "string"}, "file_size": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "File Size"}, "error_message": {"default": "", "title": "Error Message", "type": "string"}, "requested_by": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Requested By"}, "created_at": {"title": "Created At", "type": "string"}, "completed_at": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Completed At"}, "expires_at": {"title": "Expires At", "type": "string"}, "download_url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Download Url"}}, "required": ["id", "name", "status", "format", "created_at", "expires_at"], "title": "ExportOut", "type": "object"}, "ExportCreateIn": {"properties": {"name": {"maxLength": 200, "minLength": 1, "title": "Name", "type": "string"}, "format": {"default": "json", "title": "Format", "type": "string"}, "include_versions": {"default": true, "title": "Include Versions", "type": "boolean"}, "include_labels": {"default": true, "title": "Include Labels", "type": "boolean"}}, "required": ["name"], "title": "ExportCreateIn", "type": "object"}, "SecretOut": {"properties": {"id": {"title": "Id", "type": "string"}, "config_slug": {"title": "Config Slug", "type": "string"}, "key": {"title": "Key", "type": "string"}, "environment": {"title": "Environment", "type": "string"}, "ciphertext": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Ciphertext"}, "algorithm": {"title": "Algorithm", "type": "string"}, "kdf": {"title": "Kdf", "type": "string"}, "fingerprint": {"title": "Fingerprint", "type": "string"}, "created_at": {"title": "Created At", "type": "string"}, "last_accessed_at": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Last Accessed At"}}, "required": ["id", "config_slug", "key", "environment", "algorithm", "kdf", "fingerprint", "created_at"], "title": "SecretOut", "type": "object"}, "SecretCreateIn": {"properties": {"config_slug": {"description": "Config namespace slug", "title": "Config Slug", "type": "string"}, "key": {"description": "Dot-path secret key, e.g. \"openai.api_key\"", "title": "Key", "type": "string"}, "environment": {"default": "default", "description": "Environment scope", "title": "Environment", "type": "string"}, "ciphertext": {"description": "Base64-encoded encrypted blob", "title": "Ciphertext", "type": "string"}, "algorithm": {"default": "aes-256-gcm", "title": "Algorithm", "type": "string"}, "kdf": {"default": "argon2id", "title": "Kdf", "type": "string"}, "fingerprint": {"default": "", "description": "BLAKE2b hash of ciphertext", "title": "Fingerprint", "type": "string"}}, "required": ["config_slug", "key", "ciphertext"], "title": "SecretCreateIn", "type": "object"}, "SecretUpdateIn": {"properties": {"environment": {"default": "default", "title": "Environment", "type": "string"}, "ciphertext": {"description": "New encrypted blob", "title": "Ciphertext", "type": "string"}, "fingerprint": {"default": "", "description": "BLAKE2b hash of new ciphertext", "title": "Fingerprint", "type": "string"}, "algorithm": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Algorithm"}, "kdf": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Kdf"}}, "required": ["ciphertext"], "title": "SecretUpdateIn", "type": "object"}, "SecretListOut": {"properties": {"config_slug": {"title": "Config Slug", "type": "string"}, "secrets": {"items": {"$ref": "#/components/schemas/SecretMetadataOut"}, "title": "Secrets", "type": "array"}}, "required": ["config_slug", "secrets"], "title": "SecretListOut", "type": "object"}, "SecretMetadataOut": {"properties": {"key": {"title": "Key", "type": "string"}, "environment": {"title": "Environment", "type": "string"}, "fingerprint": {"title": "Fingerprint", "type": "string"}, "created_at": {"title": "Created At", "type": "string"}, "last_accessed_at": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Last Accessed At"}}, "required": ["key", "environment", "fingerprint", "created_at"], "title": "SecretMetadataOut", "type": "object"}, "SecretAuditLogOut": {"properties": {"timestamp": {"title": "Timestamp", "type": "string"}, "secret_key": {"title": "Secret Key", "type": "string"}, "environment": {"title": "Environment", "type": "string"}, "action": {"title": "Action", "type": "string"}, "performed_by": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Performed By"}, "ip_address": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Ip Address"}, "old_fingerprint": {"title": "Old Fingerprint", "type": "string"}, "new_fingerprint": {"title": "New Fingerprint", "type": "string"}}, "required": ["timestamp", "secret_key", "environment", "action", "old_fingerprint", "new_fingerprint"], "title": "SecretAuditLogOut", "type": "object"}, "RotationScheduleOut": {"properties": {"id": {"title": "Id", "type": "string"}, "secret_key": {"title": "Secret Key", "type": "string"}, "environment": {"title": "Environment", "type": "string"}, "config_slug": {"title": "Config Slug", "type": "string"}, "interval_days": {"title": "Interval Days", "type": "integer"}, "is_enabled": {"title": "Is Enabled", "type": "boolean"}, "provider": {"title": "Provider", "type": "string"}, "provider_config": {"additionalProperties": true, "title": "Provider Config", "type": "object"}, "last_rotated_at": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Last Rotated At"}, "next_rotation_at": {"title": "Next Rotation At", "type": "string"}, "is_overdue": {"title": "Is Overdue", "type": "boolean"}, "created_at": {"title": "Created At", "type": "string"}}, "required": ["id", "secret_key", "environment", "config_slug", "interval_days", "is_enabled", "provider", "provider_config", "next_rotation_at", "is_overdue", "created_at"], "title": "RotationScheduleOut", "type": "object"}, "RotationScheduleIn": {"properties": {"interval_days": {"default": 90, "description": "Days between rotations (30, 60, 90, 180, 365)", "title": "Interval Days", "type": "integer"}, "is_enabled": {"default": true, "title": "Is Enabled", "type": "boolean"}, "provider": {"default": "custom", "description": "Rotation provider adapter", "title": "Provider", "type": "string"}, "provider_config": {"additionalProperties": true, "title": "Provider Config", "type": "object"}}, "title": "RotationScheduleIn", "type": "object"}, "RotationEventOut": {"properties": {"id": {"title": "Id", "type": "string"}, "config_slug": {"title": "Config Slug", "type": "string"}, "secret_key": {"title": "Secret Key", "type": "string"}, "environment": {"title": "Environment", "type": "string"}, "provider": {"title": "Provider", "type": "string"}, "status": {"title": "Status", "type": "string"}, "trigger": {"title": "Trigger", "type": "string"}, "old_fingerprint": {"title": "Old Fingerprint", "type": "string"}, "new_fingerprint": {"title": "New Fingerprint", "type": "string"}, "error_message": {"title": "Error Message", "type": "string"}, "started_at": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Started At"}, "completed_at": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Completed At"}, "created_at": {"title": "Created At", "type": "string"}}, "required": ["id", "config_slug", "secret_key", "environment", "provider", "status", "trigger", "old_fingerprint", "new_fingerprint", "error_message", "created_at"], "title": "RotationEventOut", "type": "object"}, "RotationTriggerIn": {"properties": {"trigger": {"default": "manual", "description": "Trigger type: manual or api", "title": "Trigger", "type": "string"}}, "title": "RotationTriggerIn", "type": "object"}, "RotationEventUpdateIn": {"properties": {"status": {"description": "New status: executing, encrypting, uploaded, confirmed, failed", "title": "Status", "type": "string"}, "new_fingerprint": {"default": "", "title": "New Fingerprint", "type": "string"}, "error_message": {"default": "", "title": "Error Message", "type": "string"}}, "required": ["status"], "title": "RotationEventUpdateIn", "type": "object"}, "AlertConfigOut": {"properties": {"id": {"title": "Id", "type": "string"}, "alert_type": {"title": "Alert Type", "type": "string"}, "endpoint": {"title": "Endpoint", "type": "string"}, "is_enabled": {"title": "Is Enabled", "type": "boolean"}, "events": {"items": {"type": "string"}, "title": "Events", "type": "array"}, "created_at": {"title": "Created At", "type": "string"}}, "required": ["id", "alert_type", "endpoint", "is_enabled", "events", "created_at"], "title": "AlertConfigOut", "type": "object"}, "AlertConfigIn": {"properties": {"alert_type": {"description": "Alert type: email or webhook", "title": "Alert Type", "type": "string"}, "endpoint": {"description": "Email address or webhook URL", "title": "Endpoint", "type": "string"}, "is_enabled": {"default": true, "title": "Is Enabled", "type": "boolean"}, "events": {"description": "Event types to trigger alerts for", "items": {"type": "string"}, "title": "Events", "type": "array"}}, "required": ["alert_type", "endpoint"], "title": "AlertConfigIn", "type": "object"}, "TeamOut": {"properties": {"name": {"title": "Name", "type": "string"}, "slug": {"title": "Slug", "type": "string"}, "created_at": {"title": "Created At", "type": "string"}, "owner_email": {"title": "Owner Email", "type": "string"}}, "required": ["name", "slug", "created_at", "owner_email"], "title": "TeamOut", "type": "object"}, "TeamUpdateIn": {"properties": {"name": {"maxLength": 255, "minLength": 1, "title": "Name", "type": "string"}}, "required": ["name"], "title": "TeamUpdateIn", "type": "object"}, "APIKeyOut": {"properties": {"uuid": {"title": "Uuid", "type": "string"}, "description": {"title": "Description", "type": "string"}, "is_prod": {"title": "Is Prod", "type": "boolean"}, "created_at": {"title": "Created At", "type": "string"}}, "required": ["uuid", "description", "is_prod", "created_at"], "title": "APIKeyOut", "type": "object"}, "APIKeyCreatedOut": {"properties": {"uuid": {"title": "Uuid", "type": "string"}, "description": {"title": "Description", "type": "string"}, "is_prod": {"title": "Is Prod", "type": "boolean"}, "created_at": {"title": "Created At", "type": "string"}, "raw_key": {"title": "Raw Key", "type": "string"}}, "required": ["uuid", "description", "is_prod", "created_at", "raw_key"], "title": "APIKeyCreatedOut", "type": "object"}, "APIKeyCreateIn": {"properties": {"description": {"default": "", "title": "Description", "type": "string"}, "is_prod": {"default": false, "title": "Is Prod", "type": "boolean"}}, "title": "APIKeyCreateIn", "type": "object"}, "MessageOut": {"properties": {"uuid": {"title": "Uuid", "type": "string"}, "message": {"title": "Message", "type": "string"}}, "required": ["uuid", "message"], "title": "MessageOut", "type": "object"}, "UserTeamOut": {"properties": {"name": {"title": "Name", "type": "string"}, "slug": {"title": "Slug", "type": "string"}, "role": {"title": "Role", "type": "string"}, "created_at": {"title": "Created At", "type": "string"}}, "required": ["name", "slug", "role", "created_at"], "title": "UserTeamOut", "type": "object"}}, "securitySchemes": {"ApiKeyAuth": {"type": "http", "scheme": "bearer"}}}, "servers": []}