diff --git a/backend/app/api/v1/auth/auth.py b/backend/app/api/v1/auth/auth.py index b94de25..37e1554 100644 --- a/backend/app/api/v1/auth/auth.py +++ b/backend/app/api/v1/auth/auth.py @@ -9,6 +9,7 @@ login_service, logout_service, ) +from app.core.config import settings from app.core.mfa import ( setup_mfa_service, validate_mfa_and_issue_token_service, @@ -90,3 +91,11 @@ def get_providers(): Get a list of available external authentication providers. """ return get_external_auth_providers_service() + + +@router.get("/motd", response_model=MessageResponse) +def get_motd(): + """ + Get the welcome message of the day. + """ + return MessageResponse(message=settings.WELCOME_MESSAGE or "") diff --git a/backend/app/core/config.py b/backend/app/core/config.py index 9817e45..db32e6a 100644 --- a/backend/app/core/config.py +++ b/backend/app/core/config.py @@ -52,6 +52,9 @@ class Settings(BaseSettings): # External Identity Providers EXTERNAL_AUTH_CONFIGS: list[ExternalAuthConfig] = [] + # Welcome message + WELCOME_MESSAGE: str | None = None + # MITRE settings MITRE_JSON_URL: str = "https://raw.githubusercontent.com/mitre/cti/master/enterprise-attack/enterprise-attack.json" diff --git a/backend/app/schemas/configuration.py b/backend/app/schemas/configuration.py index 3c87a34..d789d6a 100644 --- a/backend/app/schemas/configuration.py +++ b/backend/app/schemas/configuration.py @@ -59,4 +59,5 @@ class Configuration(BaseModel): MITRE_JSON_URL: str CUSTOM_DATA_URL: str | None ATOMIC_RED_TEAM_URL: str + WELCOME_MESSAGE: str | None EXTERNAL_AUTH_CONFIGS: list[ExternalAuthConfig] | None diff --git a/docs/docs/admin-guide/configuration.md b/docs/docs/admin-guide/configuration.md index f8ddcef..89be6cb 100644 --- a/docs/docs/admin-guide/configuration.md +++ b/docs/docs/admin-guide/configuration.md @@ -13,6 +13,7 @@ The in-app [configuration page](../user-guide/administration.md#view-system-conf | `APPLICATION_NAME` | `RAPTR` | Name used for JWT tokens as `iss` and `aud` claims, as MFA issuer during TOTP setup and as logger name | | `LOG_LEVEL` | `INFO` | Python logging level: `DEBUG`, `INFO`, `WARNING`, `ERROR`, `CRITICAL` | | `FASTAPI_DOCUMENTATION` | `true` | Enable the OpenAPI documentation at `/docs` and `/redoc`. Set to `false` in production to hide the API docs | +| `WELCOME_MESSAGE` | *(none)* | Message displayed on the login page | ??? bug "Inconsistent Logging" The implemented logging requires a rework. Not all relevant logs are created or stored in the DB (audit trail). diff --git a/docs/docs/user-guide/administration.md b/docs/docs/user-guide/administration.md index 723ff18..96774a2 100644 --- a/docs/docs/user-guide/administration.md +++ b/docs/docs/user-guide/administration.md @@ -55,7 +55,7 @@ The configuration page `/admin/configuration` displays all current system settin Displayed settings include: -- **General**: application name, log level, admin email +- **General**: application name, log level, admin email, welcome message - **Security**: minimum password length, OTP settings, JWT configuration, token expiry - **Database**: PostgreSQL connection details - **External Resources**: URLs for MITRE data, Atomic Red Team templates, and custom template repositories diff --git a/frontend/openapi.json b/frontend/openapi.json index c1ccf0b..b895405 100644 --- a/frontend/openapi.json +++ b/frontend/openapi.json @@ -1 +1 @@ -{"openapi":"3.1.0","info":{"title":"RAPTR Backend API","version":"0.1.0-beta.1"},"paths":{"/api/v1/health/":{"get":{"tags":["health"],"summary":"Health Check","description":"Check the health of the server and database.","operationId":"health_check_api_v1_health__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}}}}},"/api/v1/auth/token":{"post":{"tags":["auth"],"summary":"Login","description":"Login the user and issue a new token.","operationId":"login_api_v1_auth_token_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_login_api_v1_auth_token_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Token"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/auth/logout":{"post":{"tags":["auth"],"summary":"Logout","description":"Logout the authenticated user.","operationId":"logout_api_v1_auth_logout_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/auth/mfa/setup":{"post":{"tags":["auth"],"summary":"Setup Mfa","description":"Setup MFA for the authenticated user.\nReturns a provisioning URI for QR code generation.","operationId":"setup_mfa_api_v1_auth_mfa_setup_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MFASetupResponse"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/auth/mfa/setup/validate":{"post":{"tags":["auth"],"summary":"Validate Mfa Setup","description":"Validate MFA setup for the authenticated user.","operationId":"validate_mfa_setup_api_v1_auth_mfa_setup_validate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OTP"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Token"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/auth/mfa":{"post":{"tags":["auth"],"summary":"Validate Mfa","description":"Validate MFA token and issue a new jwt with MFA verified claim.","operationId":"validate_mfa_api_v1_auth_mfa_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OTP"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Token"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/auth/providers":{"get":{"tags":["auth"],"summary":"Get Providers","description":"Get a list of available external authentication providers.","operationId":"get_providers_api_v1_auth_providers_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ExternalAuthProvider"},"type":"array","title":"Response Get Providers Api V1 Auth Providers Get"}}}}}}},"/api/v1/acl/":{"get":{"tags":["acl"],"summary":"Get Acls","description":"Get all acls.","operationId":"get_acls_api_v1_acl__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/AclRead"},"type":"array","title":"Response Get Acls Api V1 Acl Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]},"post":{"tags":["acl"],"summary":"Create Acl","description":"Create a new acl.","operationId":"create_acl_api_v1_acl__post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AclBase"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AclRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/acl/{acl_id}":{"get":{"tags":["acl"],"summary":"Get Acl","description":"Get an acl by ID.","operationId":"get_acl_api_v1_acl__acl_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"acl_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Acl Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AclRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["acl"],"summary":"Update Acl","description":"Update an acl by ID.","operationId":"update_acl_api_v1_acl__acl_id__put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"acl_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Acl Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AclBase"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AclRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["acl"],"summary":"Delete Acl","description":"Delete an acl by ID.","operationId":"delete_acl_api_v1_acl__acl_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"acl_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Acl Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/acl/assessment/{assessment_id}":{"get":{"tags":["acl"],"summary":"Get Acls By Assessment","description":"Get all acls by assessment ID.","operationId":"get_acls_by_assessment_api_v1_acl_assessment__assessment_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AclRead"},"title":"Response Get Acls By Assessment Api V1 Acl Assessment Assessment Id Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/acl/user/{user_id}":{"get":{"tags":["acl"],"summary":"Get Acls By User","description":"Get all acls by user ID.","operationId":"get_acls_by_user_api_v1_acl_user__user_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AclRead"},"title":"Response Get Acls By User Api V1 Acl User User Id Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/activity_template/":{"get":{"tags":["activity_template"],"summary":"Get Activity Templates","description":"Get all activity templates.","operationId":"get_activity_templates_api_v1_activity_template__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"sort_order","in":"query","required":false,"schema":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"title":"Sort Order"}},{"name":"name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"}},{"name":"mitre_tactic","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mitre Tactic"}},{"name":"mitre_technique","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mitre Technique"}},{"name":"provider","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"}},{"name":"priority","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/ActivityPriority"}},{"type":"null"}],"title":"Priority"}},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"enum":["name","mitre_tactic","mitre_technique","provider","priority"],"type":"string"},{"type":"null"}],"title":"Sort By"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse_ActivityTemplateRead_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/activity_template/{activity_template_id}":{"get":{"tags":["activity_template"],"summary":"Get Activity Template","description":"Get an activity template by ID.","operationId":"get_activity_template_api_v1_activity_template__activity_template_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"activity_template_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Activity Template Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityTemplateRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/activity_group_template/":{"get":{"tags":["activity_group_template"],"summary":"Get Activity Group Templates","description":"Get all activity group templates.","operationId":"get_activity_group_templates_api_v1_activity_group_template__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"sort_order","in":"query","required":false,"schema":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"title":"Sort Order"}},{"name":"name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"}},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"const":"name","type":"string"},{"type":"null"}],"title":"Sort By"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse_ActivityGroupTemplateRead_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/campaign_template/":{"get":{"tags":["campaign_template"],"summary":"Get Campaign Templates","description":"Get all campaign templates.","operationId":"get_campaign_templates_api_v1_campaign_template__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"sort_order","in":"query","required":false,"schema":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"title":"Sort Order"}},{"name":"name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"}},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"const":"name","type":"string"},{"type":"null"}],"title":"Sort By"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse_CampaignTemplateRead_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/campaign_template/{campaign_template_id}":{"get":{"tags":["campaign_template"],"summary":"Get Campaign Template","description":"Get a single campaign template by ID.","operationId":"get_campaign_template_api_v1_campaign_template__campaign_template_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"campaign_template_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Campaign Template Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CampaignTemplateRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/evaluation_template/":{"get":{"tags":["evaluation_template"],"summary":"Get Evaluation Templates","description":"Get all evaluation question templates.","operationId":"get_evaluation_templates_api_v1_evaluation_template__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"sort_order","in":"query","required":false,"schema":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"title":"Sort Order"}},{"name":"name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"}},{"name":"evaluation_criteria","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Evaluation Criteria"}},{"name":"description","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"const":"name","type":"string"},{"type":"null"}],"title":"Sort By"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse_EvaluationTemplateRead_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/evaluation_template/{evaluation_template_id}":{"get":{"tags":["evaluation_template"],"summary":"Get Evaluation Template By Id","description":"Get evaluation question template by id.","operationId":"get_evaluation_template_by_id_api_v1_evaluation_template__evaluation_template_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"evaluation_template_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Evaluation Template Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvaluationTemplateRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/report_template/":{"get":{"tags":["report_template"],"summary":"Get Report Templates","description":"Get all report templates.","operationId":"get_report_templates_api_v1_report_template__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"filename","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Filename"}},{"name":"format","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/ReportTemplateFormat"},{"type":"null"}],"title":"Format"}},{"name":"sort_by","in":"query","required":false,"schema":{"enum":["filename","format"],"type":"string","default":"filename","title":"Sort By"}},{"name":"sort_order","in":"query","required":false,"schema":{"enum":["asc","desc"],"type":"string","default":"asc","title":"Sort Order"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ReportTemplateRead"},"title":"Response Get Report Templates Api V1 Report Template Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/knowledge-base/":{"get":{"tags":["knowledge-base"],"summary":"Get Knowledge Base Articles","description":"Get knowledge base articles.","operationId":"get_knowledge_base_articles_api_v1_knowledge_base__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"sort_order","in":"query","required":false,"schema":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"title":"Sort Order"}},{"name":"mitre_technique_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mitre Technique Id"}},{"name":"names","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Names"}},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"enum":["name","mitre_technique_id"],"type":"string"},{"type":"null"}],"title":"Sort By"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse_KnowledgeBaseRead_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/mitre/tactics":{"get":{"tags":["mitre"],"summary":"Read Tactics","description":"Get all tactics","operationId":"read_tactics_api_v1_mitre_tactics_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"}},{"name":"mitre_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mitre Id"}},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"enum":["name","mitre_id"],"type":"string"},{"type":"null"}],"title":"Sort By"}},{"name":"sort_order","in":"query","required":false,"schema":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"title":"Sort Order"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TacticBase"},"title":"Response Read Tactics Api V1 Mitre Tactics Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/mitre/tactics-with-techniques":{"get":{"tags":["mitre"],"summary":"Read Tactics With Techniques","description":"Get tactics with its associated techniques.","operationId":"read_tactics_with_techniques_api_v1_mitre_tactics_with_techniques_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"}},{"name":"mitre_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mitre Id"}},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"enum":["name","mitre_id"],"type":"string"},{"type":"null"}],"title":"Sort By"}},{"name":"sort_order","in":"query","required":false,"schema":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"title":"Sort Order"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TacticWithTechniques"},"title":"Response Read Tactics With Techniques Api V1 Mitre Tactics With Techniques Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/mitre/techniques":{"get":{"tags":["mitre"],"summary":"Read Techniques","description":"Get all techniques","operationId":"read_techniques_api_v1_mitre_techniques_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"}},{"name":"mitre_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mitre Id"}},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"enum":["name","mitre_id"],"type":"string"},{"type":"null"}],"title":"Sort By"}},{"name":"sort_order","in":"query","required":false,"schema":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"title":"Sort Order"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TechniqueBase"},"title":"Response Read Techniques Api V1 Mitre Techniques Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/mitre/techniques-with-tactics":{"get":{"tags":["mitre"],"summary":"Read Techniques With Tactics","description":"Get techniques with its associated tactics.","operationId":"read_techniques_with_tactics_api_v1_mitre_techniques_with_tactics_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"}},{"name":"mitre_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mitre Id"}},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"enum":["name","mitre_id"],"type":"string"},{"type":"null"}],"title":"Sort By"}},{"name":"sort_order","in":"query","required":false,"schema":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"title":"Sort Order"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TechniqueWithTactics"},"title":"Response Read Techniques With Tactics Api V1 Mitre Techniques With Tactics Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/users":{"get":{"tags":["admin"],"summary":"Read Users","description":"Get all users with pagination metadata.","operationId":"read_users_api_v1_admin_users_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"sort_order","in":"query","required":false,"schema":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"title":"Sort Order"}},{"name":"email","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"}},{"name":"role","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/UserRole"}},{"type":"null"}],"title":"Role"}},{"name":"disabled","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"boolean"}},{"type":"null"}],"title":"Disabled"}},{"name":"mfa_verified","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"boolean"}},{"type":"null"}],"title":"Mfa Verified"}},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"enum":["email","role","disabled","mfa_verified"],"type":"string"},{"type":"null"}],"title":"Sort By"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse_UserRead_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/users/{user_id}":{"get":{"tags":["admin"],"summary":"Read User","description":"Get a user by ID.","operationId":"read_user_api_v1_admin_users__user_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["admin"],"summary":"Update User","description":"Update a user by ID.","operationId":"update_user_api_v1_admin_users__user_id__put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserBase"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["admin"],"summary":"Delete User","description":"Delete a user by ID.","operationId":"delete_user_api_v1_admin_users__user_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/users/":{"post":{"tags":["admin"],"summary":"Create User","description":"Create a new user.","operationId":"create_user_api_v1_admin_users__post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserCreate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/admin/users/{user_id}/reset_password":{"post":{"tags":["admin"],"summary":"Reset User Password","description":"Reset a user's password.","operationId":"reset_user_password_api_v1_admin_users__user_id__reset_password_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserPasswordReset"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/users/{user_id}/reset_mfa":{"post":{"tags":["admin"],"summary":"Reset User Mfa","description":"Reset a user's MFA.","operationId":"reset_user_mfa_api_v1_admin_users__user_id__reset_mfa_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/seed/mitre/":{"post":{"tags":["admin"],"summary":"Import Mitre Techniques And Tactics","description":"Create MITRE ATT&CK data.","operationId":"import_mitre_techniques_and_tactics_api_v1_admin_seed_mitre__post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/admin/seed/custom":{"post":{"tags":["admin"],"summary":"Import Custom Data","description":"Import custom data from git repository.","operationId":"import_custom_data_api_v1_admin_seed_custom_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/admin/seed/ART":{"post":{"tags":["admin"],"summary":"Import Atomic Red Team Activity Templates","description":"Import Atomic Red Team templates from git repository.","operationId":"import_atomic_red_team_activity_templates_api_v1_admin_seed_ART_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/admin/configuration":{"get":{"tags":["admin"],"summary":"Get Configuration","description":"Get the configuration of the server.","operationId":"get_configuration_api_v1_admin_configuration_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Configuration"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/user/me":{"get":{"tags":["user"],"summary":"Read User Self","description":"Get the authenticated user, and the corresponding ACLs.","operationId":"read_user_self_api_v1_user_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserReadAcl"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/user/me/password":{"put":{"tags":["user"],"summary":"Update User Password Self","description":"Update the authenticated user's password.","operationId":"update_user_password_self_api_v1_user_me_password_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserPasswordUpdate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/user/me/mfa":{"put":{"tags":["user"],"summary":"Reset User Mfa Self","description":"Reset the authenticated user's MFA.","operationId":"reset_user_mfa_self_api_v1_user_me_mfa_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserPasswordMfaReset"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/assessment/":{"get":{"tags":["assessment"],"summary":"Get Assessments","description":"Get all assessments.","operationId":"get_assessments_api_v1_assessment__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"sort_order","in":"query","required":false,"schema":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"title":"Sort Order"}},{"name":"name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"}},{"name":"assessment_type","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/AssessmentType"}},{"type":"null"}],"title":"Assessment Type"}},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"enum":["name","assessment_type","description"],"type":"string"},{"type":"null"}],"title":"Sort By"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse_AssessmentRead_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["assessment"],"summary":"Create Assessment","description":"Create a new assessment.","operationId":"create_assessment_api_v1_assessment__post","security":[{"OAuth2PasswordBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssessmentBase"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssessmentRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessment/{assessment_id}":{"get":{"tags":["assessment"],"summary":"Get Assessment","description":"Get an assessment by ID.","operationId":"get_assessment_api_v1_assessment__assessment_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssessmentRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["assessment"],"summary":"Update Assessment","description":"Update an assessment by ID.","operationId":"update_assessment_api_v1_assessment__assessment_id__put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssessmentBase"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssessmentRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["assessment"],"summary":"Delete Assessment","description":"Delete an assessment by ID.","operationId":"delete_assessment_api_v1_assessment__assessment_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessment/import":{"post":{"tags":["assessment"],"summary":"Import Assessment","description":"Import an assessment from an exported zip archive.\nCreates a new assessment with all child data.","operationId":"import_assessment_api_v1_assessment_import_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_import_assessment_api_v1_assessment_import_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/assessment/{assessment_id}/default_evaluation_templates":{"put":{"tags":["assessment"],"summary":"Update Assessment Default Evaluation Templates","description":"Update an assessment's evaluation template.","operationId":"update_assessment_default_evaluation_templates_api_v1_assessment__assessment_id__default_evaluation_templates_put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DynamicEvaluationQuestionAssign"},"title":"Dynamic Evaluation Questions"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssessmentRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessments/{assessment_id}/activity_group/":{"get":{"tags":["activity_group"],"summary":"Get Activity Groups","description":"Get all activity groups for an assessment.","operationId":"get_activity_groups_api_v1_assessments__assessment_id__activity_group__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}},{"name":"name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"}},{"name":"activity_group_position","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Activity Group Position"}},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"enum":["name","activity_group_position"],"type":"string"},{"type":"null"}],"title":"Sort By"}},{"name":"sort_order","in":"query","required":false,"schema":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"title":"Sort Order"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ActivityGroupRead"},"title":"Response Get Activity Groups Api V1 Assessments Assessment Id Activity Group Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["activity_group"],"summary":"Create Activity Group","description":"Create a new activity group for an assessment.","operationId":"create_activity_group_api_v1_assessments__assessment_id__activity_group__post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityGroupBase"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityGroupRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessments/{assessment_id}/activity_group/{activity_group_id}":{"get":{"tags":["activity_group"],"summary":"Get Activity Group","description":"Get a specific activity group for an assessment.","operationId":"get_activity_group_api_v1_assessments__assessment_id__activity_group__activity_group_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"activity_group_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Activity Group Id"}},{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityGroupRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["activity_group"],"summary":"Update Activity Group","description":"Update an activity group for an assessment.","operationId":"update_activity_group_api_v1_assessments__assessment_id__activity_group__activity_group_id__put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"activity_group_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Activity Group Id"}},{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityGroupBase"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityGroupRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessments/{assessment_id}/activity_group/{activity_group_id}/activities":{"get":{"tags":["activity_group"],"summary":"Get Activity Group Activities","description":"Get all activities for a specific activity group.","operationId":"get_activity_group_activities_api_v1_assessments__assessment_id__activity_group__activity_group_id__activities_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"activity_group_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Activity Group Id"}},{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ActivityRead"},"title":"Response Get Activity Group Activities Api V1 Assessments Assessment Id Activity Group Activity Group Id Activities Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessments/{assessment_id}/activity_group/reorder":{"put":{"tags":["activity_group"],"summary":"Reorder Activity Groups","description":"Reorder activity groups within an assessment.\n\nProvide the activity group IDs in the desired order.\nThe first ID gets position 0, second gets position 1, etc.","operationId":"reorder_activity_groups_api_v1_assessments__assessment_id__activity_group_reorder_put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityGroupReorder"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessments/{assessment_id}/activity_group/{activity_group_id}/delete":{"put":{"tags":["activity_group"],"summary":"Toggle Activity Group Delete","description":"Toggle the deleted flag for an activity group for an assessment.","operationId":"toggle_activity_group_delete_api_v1_assessments__assessment_id__activity_group__activity_group_id__delete_put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"activity_group_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Activity Group Id"}},{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessments/{assessment_id}/activity_group/{activity_group_id}/visible":{"put":{"tags":["activity_group"],"summary":"Toggle Activity Group Visible","description":"Toggle the visible flag for an activity group for an assessment.","operationId":"toggle_activity_group_visible_api_v1_assessments__assessment_id__activity_group__activity_group_id__visible_put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"activity_group_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Activity Group Id"}},{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessments/{assessment_id}/activity_group/{activity_group_id}/reorder":{"put":{"tags":["activity_group"],"summary":"Reorder Activities","description":"Reorder activities within an activity group.\n\nProvide the activity IDs in the desired order.\nThe first ID gets position 0, second gets position 1, etc.","operationId":"reorder_activities_api_v1_assessments__assessment_id__activity_group__activity_group_id__reorder_put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"activity_group_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Activity Group Id"}},{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityReorder"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessments/{assessment_id}/activity/":{"get":{"tags":["activity"],"summary":"Get All Activities","description":"Get all activities for an assessment.","operationId":"get_all_activities_api_v1_assessments__assessment_id__activity__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"sort_order","in":"query","required":false,"schema":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"title":"Sort Order"}},{"name":"name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"}},{"name":"mitre_tactic","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mitre Tactic"}},{"name":"mitre_technique","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mitre Technique"}},{"name":"priority","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/ActivityPriority"}},{"type":"null"}],"title":"Priority"}},{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/ActivityState"}},{"type":"null"}],"title":"State"}},{"name":"visible","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Visible"}},{"name":"deleted","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Deleted"}},{"name":"tags","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string","format":"uuid"}},{"type":"null"}],"title":"Tags"}},{"name":"activity_group_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Activity Group Id"}},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"enum":["name","activity_position","mitre_tactic","mitre_technique","priority","state","visible","created_at","updated_at","activity_group.name","activity_coverage_score","activity_start_time","activity_end_time","tags"],"type":"string"},{"type":"null"}],"title":"Sort By"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse_ActivityRead_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["activity"],"summary":"Create Activity","description":"Create a new activity for an assessment.","operationId":"create_activity_api_v1_assessments__assessment_id__activity__post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityBase"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessments/{assessment_id}/activity/{activity_id}":{"get":{"tags":["activity"],"summary":"Get Activity By Id","description":"Get an activity by ID.","operationId":"get_activity_by_id_api_v1_assessments__assessment_id__activity__activity_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"activity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Activity Id"}},{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["activity"],"summary":"Update Activity","description":"Update an activity by ID.","operationId":"update_activity_api_v1_assessments__assessment_id__activity__activity_id__put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"activity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Activity Id"}},{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessments/{assessment_id}/activity/{activity_id}/delete":{"put":{"tags":["activity"],"summary":"Toggle Delete Activity State","description":"Toggle delete state of an activity by ID.","operationId":"toggle_delete_activity_state_api_v1_assessments__assessment_id__activity__activity_id__delete_put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"activity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Activity Id"}},{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessments/{assessment_id}/activity/{activity_id}/clone":{"put":{"tags":["activity"],"summary":"Clone Activity","description":"Clone an activity by ID.","operationId":"clone_activity_api_v1_assessments__assessment_id__activity__activity_id__clone_put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"activity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Activity Id"}},{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessments/{assessment_id}/activity/{activity_id}/tags":{"put":{"tags":["activity"],"summary":"Assign Update Activity Tags","description":"Update tags for an activity. Replaces all existing tags with the provided list.","operationId":"assign_update_activity_tags_api_v1_assessments__assessment_id__activity__activity_id__tags_put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"activity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Activity Id"}},{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityTagsUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessments/{assessment_id}/activity/{activity_id}/activity_group":{"put":{"tags":["activity"],"summary":"Assign Update Activity To Activity Group","description":"Assign an activity to a group or remove it.\nTo assign: Provide activity_group_id.\nTo remove: Provide activity_group_id as null.","operationId":"assign_update_activity_to_activity_group_api_v1_assessments__assessment_id__activity__activity_id__activity_group_put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"activity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Activity Id"}},{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityGroupUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessments/{assessment_id}/activity/{activity_id}/assets/{role}":{"put":{"tags":["activity"],"summary":"Assign Update Assets To Activity","description":"Assign assets to an activity for a specific role (source, target, tool, etc.).\nReplaces all existing assets for this role.","operationId":"assign_update_assets_to_activity_api_v1_assessments__assessment_id__activity__activity_id__assets__role__put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"activity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Activity Id"}},{"name":"role","in":"path","required":true,"schema":{"$ref":"#/components/schemas/ActivityAssetRole"}},{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityAssetUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessments/{assessment_id}/activity/{activity_id}/visible":{"put":{"tags":["activity"],"summary":"Toggle Visible Activity","operationId":"toggle_visible_activity_api_v1_assessments__assessment_id__activity__activity_id__visible_put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"activity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Activity Id"}},{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessments/{assessment_id}/activity/{activity_id}/dynamic_evaluation_questions":{"put":{"tags":["activity"],"summary":"Assign Dynamic Evaluation Questions","description":"Assign, update, remove dynamic evaluation questions to an activity.","operationId":"assign_dynamic_evaluation_questions_api_v1_assessments__assessment_id__activity__activity_id__dynamic_evaluation_questions_put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"activity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Activity Id"}},{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DynamicEvaluationQuestionAssign"},"title":"Dynamic Evaluation Questions"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessments/{assessment_id}/activity/{activity_id}/files":{"get":{"tags":["activity"],"summary":"Get Activity Files","description":"Get files for an activity.","operationId":"get_activity_files_api_v1_assessments__assessment_id__activity__activity_id__files_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"activity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Activity Id"}},{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}},{"name":"filename","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Filename"}},{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/FileCategory"},{"type":"null"}],"title":"Category"}},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"enum":["filename","created_at"],"type":"string"},{"type":"null"}],"title":"Sort By"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/FileRead"},"title":"Response Get Activity Files Api V1 Assessments Assessment Id Activity Activity Id Files Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessments/{assessment_id}/activity/{activity_id}/files/{file_id}":{"get":{"tags":["activity"],"summary":"Get Activity File","description":"Get a file for an activity.","operationId":"get_activity_file_api_v1_assessments__assessment_id__activity__activity_id__files__file_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"activity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Activity Id"}},{"name":"file_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"File Id"}},{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FileRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["activity"],"summary":"Delete Activity File","description":"Delete a file for an activity.","operationId":"delete_activity_file_api_v1_assessments__assessment_id__activity__activity_id__files__file_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"file_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"File Id"}},{"name":"activity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Activity Id"}},{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessments/{assessment_id}/activity/{activity_id}/files/{file_id}/download":{"get":{"tags":["activity"],"summary":"Download Activity File","description":"Download a file for an activity.","operationId":"download_activity_file_api_v1_assessments__assessment_id__activity__activity_id__files__file_id__download_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"activity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Activity Id"}},{"name":"file_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"File Id"}},{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessments/{assessment_id}/activity/{activity_id}/upload":{"post":{"tags":["activity"],"summary":"Upload File","description":"Upload a file to an activity.","operationId":"upload_file_api_v1_assessments__assessment_id__activity__activity_id__upload_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"activity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Activity Id"}},{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_file_api_v1_assessments__assessment_id__activity__activity_id__upload_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FileUploadResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessments/{assessment_id}/activity/{activity_id}/version":{"get":{"tags":["activity"],"summary":"Get Activity History List","description":"Get a list of all historical versions of an activity.","operationId":"get_activity_history_list_api_v1_assessments__assessment_id__activity__activity_id__version_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"activity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Activity Id"}},{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ActivityHistoryRead"},"title":"Response Get Activity History List Api V1 Assessments Assessment Id Activity Activity Id Version Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessments/{assessment_id}/activity/{activity_id}/version/{version_id}":{"get":{"tags":["activity"],"summary":"Get Activity History Version","description":"Get a specific historical version (snapshot) of an activity.","operationId":"get_activity_history_version_api_v1_assessments__assessment_id__activity__activity_id__version__version_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"activity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Activity Id"}},{"name":"version_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Version Id"}},{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityHistoryRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessments/{assessment_id}/asset/":{"get":{"tags":["asset"],"summary":"Get Assets","description":"Get all assets for an assessment.","operationId":"get_assets_api_v1_assessments__assessment_id__asset__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"sort_order","in":"query","required":false,"schema":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"title":"Sort Order"}},{"name":"name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"}},{"name":"deleted","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Deleted"}},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"enum":["name","deleted"],"type":"string"},{"type":"null"}],"title":"Sort By"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse_AssetRead_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["asset"],"summary":"Create Asset","description":"Create a new asset for an assessment.","operationId":"create_asset_api_v1_assessments__assessment_id__asset__post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetBase"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessments/{assessment_id}/asset/{asset_id}":{"get":{"tags":["asset"],"summary":"Get Asset","description":"Get a specific asset for an assessment.","operationId":"get_asset_api_v1_assessments__assessment_id__asset__asset_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"asset_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Asset Id"}},{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["asset"],"summary":"Update Asset","description":"Update a specific asset for an assessment.","operationId":"update_asset_api_v1_assessments__assessment_id__asset__asset_id__put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"asset_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Asset Id"}},{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetBase"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessments/{assessment_id}/asset/{asset_id}/delete":{"put":{"tags":["asset"],"summary":"Toggle Asset Delete","description":"Toggle the deleted flag for a specific asset for an assessment.","operationId":"toggle_asset_delete_api_v1_assessments__assessment_id__asset__asset_id__delete_put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"asset_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Asset Id"}},{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessments/{assessment_id}/tag/":{"get":{"tags":["tag"],"summary":"Get Tags","description":"Get all tags for an assessment.","operationId":"get_tags_api_v1_assessments__assessment_id__tag__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"sort_order","in":"query","required":false,"schema":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"title":"Sort Order"}},{"name":"name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"}},{"name":"deleted","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Deleted"}},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"enum":["name","color","deleted"],"type":"string"},{"type":"null"}],"title":"Sort By"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse_TagRead_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["tag"],"summary":"Create Tag","description":"Create a new tag for an assessment.","operationId":"create_tag_api_v1_assessments__assessment_id__tag__post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TagBase"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TagRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessments/{assessment_id}/tag/{tag_id}":{"get":{"tags":["tag"],"summary":"Get Tag","description":"Get a specific tag for an assessment.","operationId":"get_tag_api_v1_assessments__assessment_id__tag__tag_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"tag_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tag Id"}},{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TagRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["tag"],"summary":"Update Tag","description":"Update a specific tag for an assessment.","operationId":"update_tag_api_v1_assessments__assessment_id__tag__tag_id__put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"tag_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tag Id"}},{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TagBase"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TagRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessments/{assessment_id}/tag/{tag_id}/delete":{"put":{"tags":["tag"],"summary":"Toggle Tag Delete","description":"Toggle the deleted flag for a specific tag for an assessment.","operationId":"toggle_tag_delete_api_v1_assessments__assessment_id__tag__tag_id__delete_put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"tag_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tag Id"}},{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessments/{assessment_id}/imports/activity_templates":{"post":{"tags":["imports"],"summary":"Import From Activity Templates","description":"Import multiple activities from activity templates.","operationId":"import_from_activity_templates_api_v1_assessments__assessment_id__imports_activity_templates_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"array","items":{"type":"string","format":"uuid"},"title":"Activity Template Ids"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessments/{assessment_id}/imports/activity_group_templates":{"post":{"tags":["imports"],"summary":"Import From Activity Group Templates","description":"Import multiple activity groups from activity group templates.","operationId":"import_from_activity_group_templates_api_v1_assessments__assessment_id__imports_activity_group_templates_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"array","items":{"type":"string","format":"uuid"},"title":"Activity Group Template Ids"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessments/{assessment_id}/imports/campaign_template":{"post":{"tags":["imports"],"summary":"Import From Campaign Template","description":"Import all content from a campaign template into an assessment.\nCreates groups and activities with correct ordering.","operationId":"import_from_campaign_template_api_v1_assessments__assessment_id__imports_campaign_template_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}},{"name":"campaign_template_id","in":"query","required":true,"schema":{"type":"string","format":"uuid","title":"Campaign Template Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessments/{assessment_id}/export/report/context":{"post":{"tags":["export"],"summary":"Get Report Context","description":"Return the report data layer as JSON.","operationId":"get_report_context_api_v1_assessments__assessment_id__export_report_context_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportContextRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Report Context Api V1 Assessments Assessment Id Export Report Context Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessments/{assessment_id}/export/report/generate":{"post":{"tags":["export"],"summary":"Generate Report","description":"Generate a report for the assessment using the specified template.\nReturns a file download (HTML or DOCX).","operationId":"generate_report_api_v1_assessments__assessment_id__export_report_generate_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportGenerateRequest"}}}},"responses":{"200":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessments/{assessment_id}/export/mitre":{"post":{"tags":["export"],"summary":"Generate Mitre Attack Navigator Layer","description":"Generate a MITRE ATT&CK Navigator layer for the assessment.\nReturns a file download (JSON).","operationId":"generate_mitre_attack_navigator_layer_api_v1_assessments__assessment_id__export_mitre_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"responses":{"200":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessments/{assessment_id}/export/assessment":{"post":{"tags":["export"],"summary":"Export Assessment","description":"Export the entire assessment as a zip archive download.","operationId":"export_assessment_api_v1_assessments__assessment_id__export_assessment_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"responses":{"200":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessments/{assessment_id}/statistics/":{"get":{"tags":["statistics"],"summary":"Get Assessment Statistics Endpoint","description":"Get statistics for a single assessment.\n\nReturns metrics over visible, non-deleted activities in visible,\nnon-deleted groups. All roles see the same data.","operationId":"get_assessment_statistics_endpoint_api_v1_assessments__assessment_id__statistics__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssessmentStatisticsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"AclBase":{"properties":{"assessment_role":{"$ref":"#/components/schemas/AclRole","default":"spectator"},"user_id":{"type":"string","format":"uuid","title":"User Id"},"assessment_id":{"type":"string","format":"uuid","title":"Assessment Id"}},"type":"object","required":["user_id","assessment_id"],"title":"AclBase","description":"Shared properties for multiple acl schemas","example":{"assessment_id":"10000000-0000-0000-0000-000000000001","assessment_role":"spectator","user_id":"00000000-0000-0000-0000-000000000004"}},"AclRead":{"properties":{"assessment_role":{"$ref":"#/components/schemas/AclRole","default":"spectator"},"user_id":{"type":"string","format":"uuid","title":"User Id"},"assessment_id":{"type":"string","format":"uuid","title":"Assessment Id"},"id":{"type":"string","format":"uuid","title":"Id"}},"type":"object","required":["user_id","assessment_id","id"],"title":"AclRead","description":"Properties to return via API for general acl requests","example":{"assessment_id":"10000000-0000-0000-0000-000000000001","assessment_role":"spectator","id":"50000000-0000-0000-0000-000000000001","user_id":"00000000-0000-0000-0000-000000000004"}},"AclRole":{"type":"string","enum":["red","blue","spectator"],"title":"AclRole","description":"Possible acl roles"},"ActivityAssetRole":{"type":"string","enum":["source","target","tool","log_source","prevention_source","alert_source","stakeholder_notification_source"],"title":"ActivityAssetRole","description":"Possible asset roles in an activity"},"ActivityAssetUpdate":{"properties":{"asset_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Asset Ids"}},"type":"object","required":["asset_ids"],"title":"ActivityAssetUpdate","description":"Schema for updating activity assets","example":{"asset_ids":["3fa85f64-5717-4562-b3fc-2c963f66afa6","7c9e6679-7425-40de-944b-e07fc1f90ae7"]}},"ActivityBase":{"properties":{"name":{"type":"string","title":"Name"},"mitre_tactic":{"type":"string","title":"Mitre Tactic"},"mitre_technique":{"type":"string","title":"Mitre Technique"}},"type":"object","required":["name","mitre_tactic","mitre_technique"],"title":"ActivityBase","description":"Assessment activity base model","example":{"mitre_tactic":"TA0002","mitre_technique":"T1204.001","name":"Windows: Malicious Link Execution on Client"}},"ActivityEvaluationDynamicQuestionsRead":{"properties":{"evaluation_template_id":{"type":"string","format":"uuid","title":"Evaluation Template Id"},"data":{"type":"string","title":"Data","default":""},"evaluation_result":{"$ref":"#/components/schemas/EvaluationResult","default":"n/a"},"position":{"type":"integer","title":"Position","default":0},"id":{"type":"string","format":"uuid","title":"Id"}},"type":"object","required":["evaluation_template_id","id"],"title":"ActivityEvaluationDynamicQuestionsRead","description":"Read schema for activity evaluation dynamic questions","example":{"data":"Yes, all relevant information are provided.","evaluation_result":"pass","evaluation_template_id":"00000000-0000-0000-0000-000000000000","id":"00000000-0000-0000-0000-000000000000","position":0}},"ActivityEvaluationDynamicQuestionsUpdate":{"properties":{"evaluation_template_id":{"type":"string","format":"uuid","title":"Evaluation Template Id"},"data":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Data"},"evaluation_result":{"anyOf":[{"$ref":"#/components/schemas/EvaluationResult"},{"type":"null"}]}},"type":"object","required":["evaluation_template_id"],"title":"ActivityEvaluationDynamicQuestionsUpdate","description":"Update schema for activity evaluation dynamic questions"},"ActivityEvaluationRead":{"properties":{"logged_evaluation":{"$ref":"#/components/schemas/EvaluationResult","default":"n/a"},"alerted_evaluation":{"$ref":"#/components/schemas/EvaluationResult","default":"n/a"},"prevented_evaluation":{"$ref":"#/components/schemas/EvaluationResult","default":"n/a"},"stakeholder_notified_evaluation":{"$ref":"#/components/schemas/EvaluationResult","default":"n/a"},"activity_coverage_score":{"type":"integer","title":"Activity Coverage Score","default":0},"event_to_alert_data":{"type":"string","title":"Event To Alert Data","default":""},"event_to_alert_evaluation_result":{"$ref":"#/components/schemas/EvaluationResult","default":"n/a"},"alert_to_stakeholder_data":{"type":"string","title":"Alert To Stakeholder Data","default":""},"alert_to_stakeholder_evaluation_result":{"$ref":"#/components/schemas/EvaluationResult","default":"n/a"},"alert_severity_data":{"type":"string","title":"Alert Severity Data","default":""},"alert_severity_evaluation_result":{"$ref":"#/components/schemas/EvaluationResult","default":"n/a"},"stakeholder_notification_severity_data":{"type":"string","title":"Stakeholder Notification Severity Data","default":""},"stakeholder_notification_severity_evaluation_result":{"$ref":"#/components/schemas/EvaluationResult","default":"n/a"},"dynamic_questions":{"items":{"$ref":"#/components/schemas/ActivityEvaluationDynamicQuestionsRead"},"type":"array","title":"Dynamic Questions","default":[]},"id":{"type":"string","format":"uuid","title":"Id"},"activity_id":{"type":"string","format":"uuid","title":"Activity Id"}},"type":"object","required":["id","activity_id"],"title":"ActivityEvaluationRead","description":"Activity Evaluation read schema"},"ActivityEvaluationUpdate":{"properties":{"logged_evaluation":{"$ref":"#/components/schemas/EvaluationResult","default":"n/a"},"alerted_evaluation":{"$ref":"#/components/schemas/EvaluationResult","default":"n/a"},"prevented_evaluation":{"$ref":"#/components/schemas/EvaluationResult","default":"n/a"},"stakeholder_notified_evaluation":{"$ref":"#/components/schemas/EvaluationResult","default":"n/a"},"activity_coverage_score":{"type":"integer","title":"Activity Coverage Score","default":0},"event_to_alert_data":{"type":"string","title":"Event To Alert Data","default":""},"event_to_alert_evaluation_result":{"$ref":"#/components/schemas/EvaluationResult","default":"n/a"},"alert_to_stakeholder_data":{"type":"string","title":"Alert To Stakeholder Data","default":""},"alert_to_stakeholder_evaluation_result":{"$ref":"#/components/schemas/EvaluationResult","default":"n/a"},"alert_severity_data":{"type":"string","title":"Alert Severity Data","default":""},"alert_severity_evaluation_result":{"$ref":"#/components/schemas/EvaluationResult","default":"n/a"},"stakeholder_notification_severity_data":{"type":"string","title":"Stakeholder Notification Severity Data","default":""},"stakeholder_notification_severity_evaluation_result":{"$ref":"#/components/schemas/EvaluationResult","default":"n/a"},"dynamic_questions":{"anyOf":[{"items":{"$ref":"#/components/schemas/ActivityEvaluationDynamicQuestionsUpdate"},"type":"array"},{"type":"null"}],"title":"Dynamic Questions"}},"type":"object","title":"ActivityEvaluationUpdate","description":"Activity Evaluation update schema"},"ActivityGroupBase":{"properties":{"name":{"type":"string","title":"Name"},"visible":{"type":"boolean","title":"Visible","default":false}},"type":"object","required":["name"],"title":"ActivityGroupBase","description":"Shared properties for activity groups","example":{"name":"Example Activity Group","visible":false}},"ActivityGroupRead":{"properties":{"name":{"type":"string","title":"Name"},"visible":{"type":"boolean","title":"Visible","default":false},"id":{"type":"string","format":"uuid","title":"Id"},"deleted":{"type":"boolean","title":"Deleted"},"is_default":{"type":"boolean","title":"Is Default"},"activity_group_position":{"type":"integer","title":"Activity Group Position"}},"type":"object","required":["name","id","deleted","is_default","activity_group_position"],"title":"ActivityGroupRead","description":"Properties to return via API","example":{"activity_group_position":0,"deleted":false,"id":"00000000-0000-0000-0000-000000000000","is_default":false,"name":"Example Activity Group","visible":false}},"ActivityGroupReorder":{"properties":{"activity_group_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Activity Group Ids"}},"type":"object","required":["activity_group_ids"],"title":"ActivityGroupReorder","description":"Schema for reordering activities within a activity group","example":{"activity_group_ids":["3fa85f64-5717-4562-b3fc-2c963f66afa6","7c9e6679-7425-40de-944b-e07fc1f90ae7","a8098c1a-f86e-11da-bd1a-00112444be1e"]}},"ActivityGroupTemplateRead":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"activity_template_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Activity Template Ids","default":[]}},"type":"object","required":["id","name"],"title":"ActivityGroupTemplateRead","description":"Activity group template read model","example":{"activity_template_ids":["00000000-0000-0000-0000-000000000000"],"description":"Description 1","id":"00000000-0000-0000-0000-000000000000","name":"Group 1"}},"ActivityGroupUpdate":{"properties":{"activity_group_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Activity Group Id"}},"type":"object","title":"ActivityGroupUpdate","description":"Schema for assigning/updating an activity's group","example":{"activity_group_id":"3fa85f64-5717-4562-b3fc-2c963f66afa6"}},"ActivityHistoryRead":{"properties":{"activity_id":{"type":"string","format":"uuid","title":"Activity Id"},"version":{"type":"integer","title":"Version"},"saved_at":{"type":"string","format":"date-time","title":"Saved At"},"saved_by_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Saved By Id"},"snapshot":{"additionalProperties":true,"type":"object","title":"Snapshot"},"id":{"type":"string","format":"uuid","title":"Id"},"saved_by":{"anyOf":[{"$ref":"#/components/schemas/UserBase"},{"type":"null"}]}},"type":"object","required":["activity_id","version","saved_at","saved_by_id","snapshot","id"],"title":"ActivityHistoryRead","description":"Schema for reading a specific activity history, including the full snapshot.","example":{"activity_id":"00000000-0000-0000-0000-000000000000","saved_at":"2026-01-01T10:00:00Z","saved_by":{"disabled":false,"email":"user@raptr.app","role":"user"},"saved_by_id":"11111111-1111-1111-1111-111111111111","snapshot":{"name":"Test Activity"},"version":1}},"ActivityPriority":{"type":"string","enum":["Low","Medium","High","Critical"],"title":"ActivityPriority","description":"Possible activity priority levels"},"ActivityRead":{"properties":{"name":{"type":"string","title":"Name"},"mitre_tactic":{"type":"string","title":"Mitre Tactic"},"mitre_technique":{"type":"string","title":"Mitre Technique"},"provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"},"visible":{"type":"boolean","title":"Visible","default":false},"priority":{"anyOf":[{"$ref":"#/components/schemas/ActivityPriority"},{"type":"null"}]},"state":{"anyOf":[{"$ref":"#/components/schemas/ActivityState"},{"type":"null"}]},"tags":{"items":{"$ref":"#/components/schemas/TagRead"},"type":"array","title":"Tags","default":[]},"activity_group_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Activity Group Id"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"activity_rationale":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Activity Rationale"},"activity_actions":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Activity Actions"},"activity_requirements":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Activity Requirements"},"activity_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Activity Notes"},"activity_start_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Activity Start Time"},"activity_end_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Activity End Time"},"sources":{"items":{"$ref":"#/components/schemas/AssetRead"},"type":"array","title":"Sources","default":[]},"targets":{"items":{"$ref":"#/components/schemas/AssetRead"},"type":"array","title":"Targets","default":[]},"tools":{"items":{"$ref":"#/components/schemas/AssetRead"},"type":"array","title":"Tools","default":[]},"expected_logging":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Expected Logging"},"expected_prevention":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Expected Prevention"},"expected_alert_creation":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Expected Alert Creation"},"expected_stakeholder_notification":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Expected Stakeholder Notification"},"expected_severity":{"anyOf":[{"$ref":"#/components/schemas/ActivitySeverity"},{"type":"null"}]},"log_sources":{"items":{"$ref":"#/components/schemas/AssetRead"},"type":"array","title":"Log Sources","default":[]},"prevention_sources":{"items":{"$ref":"#/components/schemas/AssetRead"},"type":"array","title":"Prevention Sources","default":[]},"alert_sources":{"items":{"$ref":"#/components/schemas/AssetRead"},"type":"array","title":"Alert Sources","default":[]},"stakeholder_notification_sources":{"items":{"$ref":"#/components/schemas/AssetRead"},"type":"array","title":"Stakeholder Notification Sources","default":[]},"logged":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Logged"},"log_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Log Time"},"prevented":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Prevented"},"prevent_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Prevent Time"},"alerted":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Alerted"},"alert_severity":{"anyOf":[{"$ref":"#/components/schemas/ActivitySeverity"},{"type":"null"}]},"alert_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Alert Time"},"stakeholder_notification_created":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Stakeholder Notification Created"},"stakeholder_notification_severity":{"anyOf":[{"$ref":"#/components/schemas/ActivitySeverity"},{"type":"null"}]},"stakeholder_notification_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Stakeholder Notification Time"},"linked_knowledge_base_articles":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Linked Knowledge Base Articles"},"log_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Log Notes"},"alert_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Alert Notes"},"prevent_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prevent Notes"},"stakeholder_notification_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stakeholder Notification Notes"},"evaluation":{"anyOf":[{"$ref":"#/components/schemas/ActivityEvaluationRead"},{"type":"null"}]},"id":{"type":"string","format":"uuid","title":"Id"},"deleted":{"type":"boolean","title":"Deleted"},"activity_position":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Activity Position"},"activity_group":{"anyOf":[{"$ref":"#/components/schemas/ActivityGroupRead"},{"type":"null"}]},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"}},"type":"object","required":["name","mitre_tactic","mitre_technique","id","deleted"],"title":"ActivityRead","description":"Assessment activity read model","example":{"activity_actions":"","activity_end_time":"2026-01-01T11:00:00Z","activity_group_id":"00000000-0000-0000-0000-000000000000","activity_notes":"","activity_position":1,"activity_rationale":"Users or attackers might visit known malicious sites from the system.","activity_requirements":"Standard Windows workplace with Internet access.","activity_sources":"","activity_start_time":"2026-01-01T10:00:00Z","activity_targets":"","activity_tools":"","alert_notes":"","alert_severity":"Low","alert_sources":["77777777-7777-7777-7777-777777777777"],"alert_time":"2026-01-01T10:35:00Z","alerted":false,"deleted":false,"evaluation":{"activity_coverage_score":100,"alert_severity_applicable":true,"alert_severity_data":"2026-01-01T10:00:00Z","alert_severity_evaluation":true,"alert_to_stakeholder_applicable":true,"alert_to_stakeholder_data":"2026-01-01T10:00:00Z","alert_to_stakeholder_evaluation":true,"alerted_evaluation":true,"dynamic_questions":[{"applicable":true,"data":"Dynamic question data","evaluation":true,"evaluation_template_id":"00000000-0000-0000-0000-000000000000","position":1}],"event_to_alert_applicable":true,"event_to_alert_data":"2026-01-01T10:00:00Z","event_to_alert_evaluation":true,"logged_evaluation":true,"prevented_evaluation":true,"stakeholder_notification_severity_applicable":true,"stakeholder_notification_severity_data":"2026-01-01T10:00:00Z","stakeholder_notification_severity_evaluation":true,"stakeholder_notified_evaluation":true},"expected_alert_creation":true,"expected_prevention":true,"expected_severity":"Medium","expected_stakeholder_notification":false,"id":"00000000-0000-0000-0000-000000000000","linked_knowledge_base_articles":["88888888-8888-8888-8888-888888888888"],"log_notes":"","log_sources":["55555555-5555-5555-5555-555555555555"],"logged":false,"mitre_tactic":"TA0002","mitre_technique":"T1204.001","name":"Windows: Malicious Link Execution on Client","prevent_notes":"","prevent_time":"2026-01-01T10:30:00Z","prevented":false,"prevention_sources":["66666666-6666-6666-6666-666666666666"],"priority":"Medium","provider":"Compass Security","sources":["22222222-2222-2222-2222-222222222222","22222222-2222-2222-2222-333333333333"],"stakeholder_notification_created":false,"stakeholder_notification_notes":"","stakeholder_notification_severity":"Low","stakeholder_notification_sources":["88888888-8888-8888-8888-888888888888"],"stakeholder_notification_time":"2026-01-01T10:40:00Z","state":"Pending","tags":["11111111-1111-1111-1111-111111111111"],"targets":["33333333-3333-3333-3333-333333333333"],"tools":["44444444-4444-4444-4444-444444444444"],"visible":false}},"ActivityReorder":{"properties":{"activity_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Activity Ids"}},"type":"object","required":["activity_ids"],"title":"ActivityReorder","description":"Schema for reordering activities within a activity group","example":{"activity_ids":["3fa85f64-5717-4562-b3fc-2c963f66afa6","7c9e6679-7425-40de-944b-e07fc1f90ae7","a8098c1a-f86e-11da-bd1a-00112444be1e"]}},"ActivitySeverity":{"type":"string","enum":["Informational","Low","Medium","High","Critical"],"title":"ActivitySeverity","description":"Possible activity severity levels"},"ActivityState":{"type":"string","enum":["Pending","Waiting Red","Waiting Blue","Ready","In Progress","In Evaluation","Completed","Cancelled"],"title":"ActivityState","description":"Possible activity state levels"},"ActivityTagsUpdate":{"properties":{"tag_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Tag Ids","default":[]}},"type":"object","title":"ActivityTagsUpdate","description":"Schema for updating activity tags","example":{"tag_ids":["11111111-1111-1111-1111-111111111111","22222222-2222-2222-2222-222222222222"]}},"ActivityTemplateRead":{"properties":{"activity_actions":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Activity Actions"},"activity_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Activity Notes"},"activity_rationale":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Activity Rationale"},"activity_requirements":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Activity Requirements"},"expected_logging":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Expected Logging"},"expected_alert_creation":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Expected Alert Creation"},"expected_prevention":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Expected Prevention"},"expected_stakeholder_notification":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Expected Stakeholder Notification"},"expected_severity":{"anyOf":[{"$ref":"#/components/schemas/ActivitySeverity"},{"type":"null"}]},"mitre_tactic":{"type":"string","title":"Mitre Tactic"},"mitre_technique":{"type":"string","title":"Mitre Technique"},"name":{"type":"string","title":"Name"},"priority":{"anyOf":[{"$ref":"#/components/schemas/ActivityPriority"},{"type":"null"}]},"provider":{"type":"string","title":"Provider"},"linked_knowledge_base_articles":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Linked Knowledge Base Articles"},"id":{"type":"string","format":"uuid","title":"Id"}},"type":"object","required":["mitre_tactic","mitre_technique","name","provider","id"],"title":"ActivityTemplateRead","description":"Template activity read model","example":{"activity_actions":"","activity_notes":"","activity_rationale":"Users or attackers might visit known malicious sites from the system.","activity_requirements":"Standard Windows workplace with Internet access.","expected_alert_creation":true,"expected_logging":true,"expected_prevention":true,"expected_severity":"Medium","expected_stakeholder_notification":false,"id":"00000000-0000-0000-0000-000000000000","mitre_tactic":"Execution","mitre_technique":"T1204.001","name":"Windows: Malicious Link Execution on Client","priority":"Medium","provider":"Compass Security"}},"ActivityUpdate":{"properties":{"name":{"type":"string","title":"Name"},"mitre_tactic":{"type":"string","title":"Mitre Tactic"},"mitre_technique":{"type":"string","title":"Mitre Technique"},"provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"},"visible":{"type":"boolean","title":"Visible","default":false},"priority":{"anyOf":[{"$ref":"#/components/schemas/ActivityPriority"},{"type":"null"}]},"state":{"anyOf":[{"$ref":"#/components/schemas/ActivityState"},{"type":"null"}]},"tags":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Tags","default":[]},"activity_group_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Activity Group Id"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"activity_rationale":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Activity Rationale"},"activity_actions":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Activity Actions"},"activity_requirements":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Activity Requirements"},"activity_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Activity Notes"},"activity_start_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Activity Start Time"},"activity_end_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Activity End Time"},"sources":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Sources","default":[]},"targets":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Targets","default":[]},"tools":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Tools","default":[]},"expected_logging":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Expected Logging"},"expected_prevention":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Expected Prevention"},"expected_alert_creation":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Expected Alert Creation"},"expected_stakeholder_notification":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Expected Stakeholder Notification"},"expected_severity":{"anyOf":[{"$ref":"#/components/schemas/ActivitySeverity"},{"type":"null"}]},"log_sources":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Log Sources","default":[]},"prevention_sources":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Prevention Sources","default":[]},"alert_sources":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Alert Sources","default":[]},"stakeholder_notification_sources":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Stakeholder Notification Sources","default":[]},"logged":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Logged"},"log_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Log Time"},"prevented":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Prevented"},"prevent_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Prevent Time"},"alerted":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Alerted"},"alert_severity":{"anyOf":[{"$ref":"#/components/schemas/ActivitySeverity"},{"type":"null"}]},"alert_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Alert Time"},"stakeholder_notification_created":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Stakeholder Notification Created"},"stakeholder_notification_severity":{"anyOf":[{"$ref":"#/components/schemas/ActivitySeverity"},{"type":"null"}]},"stakeholder_notification_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Stakeholder Notification Time"},"linked_knowledge_base_articles":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Linked Knowledge Base Articles"},"log_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Log Notes"},"alert_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Alert Notes"},"prevent_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prevent Notes"},"stakeholder_notification_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stakeholder Notification Notes"},"evaluation":{"anyOf":[{"$ref":"#/components/schemas/ActivityEvaluationUpdate"},{"type":"null"}]}},"type":"object","required":["name","mitre_tactic","mitre_technique"],"title":"ActivityUpdate","description":"Assessment activity update model","example":{"activity_actions":"","activity_end_time":"2026-01-01T11:00:00Z","activity_group_id":"00000000-0000-0000-0000-000000000000","activity_notes":"","activity_rationale":"Users or attackers might visit known malicious sites from the system.","activity_requirements":"Standard Windows workplace with Internet access.","activity_sources":"","activity_start_time":"2026-01-01T10:00:00Z","activity_targets":"","activity_tools":"","alert_notes":"","alert_severity":"Low","alert_sources":["77777777-7777-7777-7777-777777777777"],"alert_time":"2026-01-01T10:35:00Z","alerted":false,"evaluation":{"activity_coverage_score":100,"alert_severity_applicable":true,"alert_severity_data":"2026-01-01T10:00:00Z","alert_severity_evaluation":true,"alert_to_stakeholder_applicable":true,"alert_to_stakeholder_data":"2026-01-01T10:00:00Z","alert_to_stakeholder_evaluation":true,"alerted_evaluation":true,"dynamic_questions":[{"applicable":true,"data":"Dynamic question data","evaluation":true,"evaluation_template_id":"00000000-0000-0000-0000-000000000000","position":1}],"event_to_alert_applicable":true,"event_to_alert_data":"2026-01-01T10:00:00Z","event_to_alert_evaluation":true,"logged_evaluation":true,"prevented_evaluation":true,"stakeholder_notification_severity_applicable":true,"stakeholder_notification_severity_data":"2026-01-01T10:00:00Z","stakeholder_notification_severity_evaluation":true,"stakeholder_notified_evaluation":true},"expected_alert_creation":true,"expected_prevention":true,"expected_severity":"Medium","expected_stakeholder_notification":false,"linked_knowledge_base_articles":["88888888-8888-8888-8888-888888888888"],"log_notes":"","log_sources":["55555555-5555-5555-5555-555555555555"],"logged":false,"mitre_tactic":"TA0002","mitre_technique":"T1204.001","name":"Windows: Malicious Link Execution on Client","prevent_notes":"","prevent_time":"2026-01-01T10:30:00Z","prevented":false,"prevention_sources":["66666666-6666-6666-6666-666666666666"],"priority":"Medium","provider":"Compass Security","sources":["22222222-2222-2222-2222-222222222222","22222222-2222-2222-2222-333333333333"],"stakeholder_notification_created":false,"stakeholder_notification_notes":"","stakeholder_notification_severity":"Low","stakeholder_notification_sources":["88888888-8888-8888-8888-888888888888"],"stakeholder_notification_time":"2026-01-01T10:40:00Z","state":"Pending","tags":["11111111-1111-1111-1111-111111111111"],"targets":["33333333-3333-3333-3333-333333333333"],"tools":["44444444-4444-4444-4444-444444444444"],"visible":false}},"AssessmentBase":{"properties":{"name":{"type":"string","minLength":1,"title":"Name"},"description":{"type":"string","minLength":1,"title":"Description"},"assessment_type":{"$ref":"#/components/schemas/AssessmentType","default":"PurpleTeam"}},"type":"object","required":["name","description"],"title":"AssessmentBase","description":"Shared properties for multiple assessment schemas","example":{"assessment_type":"PurpleTeam","description":"Atomic based Purple Team engagement","name":"Purple Team Assessment Example"}},"AssessmentRead":{"properties":{"name":{"type":"string","minLength":1,"title":"Name"},"description":{"type":"string","minLength":1,"title":"Description"},"assessment_type":{"$ref":"#/components/schemas/AssessmentType","default":"PurpleTeam"},"id":{"type":"string","format":"uuid","title":"Id"},"default_evaluation_templates":{"items":{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"object"},"type":"array","title":"Default Evaluation Templates"}},"type":"object","required":["name","description","id","default_evaluation_templates"],"title":"AssessmentRead","description":"Properties to return via API for general assessment requests","example":{"assessment_type":"PurpleTeam","default_evaluation_templates":[{"evaluation_template_id":"00000000-0000-0000-0000-000000000000","position":0}],"description":"Atomic based Purple Team engagement","id":"00000000-0000-0000-0000-000000000000","name":"Purple Team Assessment Example"}},"AssessmentStatisticsResponse":{"properties":{"state_distribution":{"items":{"$ref":"#/components/schemas/StateDistributionItem"},"type":"array","title":"State Distribution"},"priority_breakdown":{"items":{"$ref":"#/components/schemas/PriorityBreakdownItem"},"type":"array","title":"Priority Breakdown"},"average_coverage_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Average Coverage Score"},"average_coverage_scores_by_priority":{"items":{"$ref":"#/components/schemas/PriorityAverageScoreItem"},"type":"array","title":"Average Coverage Scores By Priority"},"mitre_overall_tactic_scores":{"items":{"$ref":"#/components/schemas/MitreOverallTacticScoreItem"},"type":"array","title":"Mitre Overall Tactic Scores"},"mitre_tactic_scores":{"items":{"$ref":"#/components/schemas/MitreTacticScoreItem"},"type":"array","title":"Mitre Tactic Scores"},"mean_time_metrics":{"items":{"$ref":"#/components/schemas/MeanTimeMetricsItem"},"type":"array","title":"Mean Time Metrics"},"severity_accuracy":{"items":{"$ref":"#/components/schemas/SeverityAccuracyItem"},"type":"array","title":"Severity Accuracy"}},"type":"object","required":["state_distribution","priority_breakdown","average_coverage_scores_by_priority","mitre_overall_tactic_scores","mitre_tactic_scores","mean_time_metrics","severity_accuracy"],"title":"AssessmentStatisticsResponse"},"AssessmentType":{"type":"string","enum":["PurpleTeam","RedTeam"],"title":"AssessmentType","description":"Possible assessment types"},"AssetBase":{"properties":{"name":{"type":"string","title":"Name"},"icon":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon"},"properties":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Properties","description":"Dynamic key-value properties for the asset","example":{"computer_name":"computer1","ip":"192.168.1.1","mac":"00:11:22:33:44:55"}}},"type":"object","required":["name"],"title":"AssetBase","description":"Asset base model","example":{"icon":"Computer","name":"Test Computer","properties":{"computer_name":"computer1","ip":"192.168.1.1","mac":"00:11:22:33:44:55"}}},"AssetRead":{"properties":{"name":{"type":"string","title":"Name"},"icon":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon"},"properties":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Properties","description":"Dynamic key-value properties for the asset","example":{"computer_name":"computer1","ip":"192.168.1.1","mac":"00:11:22:33:44:55"}},"id":{"type":"string","format":"uuid","title":"Id"},"deleted":{"type":"boolean","title":"Deleted"}},"type":"object","required":["name","id","deleted"],"title":"AssetRead","description":"Asset read model","example":{"assessment_id":"11111111-1111-1111-1111-111111111111","deleted":false,"icon":"Computer","id":"00000000-0000-0000-0000-000000000000","name":"Test Computer","properties":{"computer_name":"computer1","ip":"192.168.1.1","mac":"00:11:22:33:44:55"}}},"Body_import_assessment_api_v1_assessment_import_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_import_assessment_api_v1_assessment_import_post"},"Body_login_api_v1_auth_token_post":{"properties":{"grant_type":{"anyOf":[{"type":"string","pattern":"^password$"},{"type":"null"}],"title":"Grant Type"},"username":{"type":"string","title":"Username"},"password":{"type":"string","format":"password","title":"Password"},"scope":{"type":"string","title":"Scope","default":""},"client_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Id"},"client_secret":{"anyOf":[{"type":"string"},{"type":"null"}],"format":"password","title":"Client Secret"}},"type":"object","required":["username","password"],"title":"Body_login_api_v1_auth_token_post"},"Body_upload_file_api_v1_assessments__assessment_id__activity__activity_id__upload_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_file_api_v1_assessments__assessment_id__activity__activity_id__upload_post"},"CampaignTemplateItemRead":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"position":{"type":"integer","title":"Position"},"item_type":{"type":"string","title":"Item Type"},"activity_group_template_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Activity Group Template Id"},"activity_template_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Activity Template Id"}},"type":"object","required":["id","position","item_type"],"title":"CampaignTemplateItemRead","description":"Campaign template item read model"},"CampaignTemplateRead":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"items":{"items":{"$ref":"#/components/schemas/CampaignTemplateItemRead"},"type":"array","title":"Items","default":[]}},"type":"object","required":["id","name"],"title":"CampaignTemplateRead","description":"Campaign template read model","example":{"description":"Standard Active Directory assessment campaign","id":"00000000-0000-0000-0000-000000000000","items":[],"name":"Standard AD Campaign"}},"Configuration":{"properties":{"LOG_LEVEL":{"type":"string","enum":["DEBUG","INFO","WARNING","ERROR","CRITICAL"],"title":"Log Level"},"APPLICATION_NAME":{"type":"string","title":"Application Name"},"FASTAPI_DOCUMENTATION":{"type":"boolean","title":"Fastapi Documentation"},"ADMIN_EMAIL":{"type":"string","title":"Admin Email"},"MIN_PASSWORD_LENGTH":{"type":"integer","title":"Min Password Length"},"OTP_LOCAL_ENABLED":{"type":"boolean","title":"Otp Local Enabled"},"OTP_EXTERNAL_ENABLED":{"type":"boolean","title":"Otp External Enabled"},"CORS_ENABLED":{"type":"boolean","title":"Cors Enabled"},"CORS_ORIGINS":{"items":{"type":"string"},"type":"array","title":"Cors Origins"},"CORS_METHODS":{"items":{"type":"string"},"type":"array","title":"Cors Methods"},"CORS_HEADERS":{"items":{"type":"string"},"type":"array","title":"Cors Headers"},"CORS_CREDENTIALS":{"type":"boolean","title":"Cors Credentials"},"CORS_MAX_AGE":{"type":"integer","title":"Cors Max Age"},"DB_ENGINE":{"type":"string","enum":["postgres","sqlite"],"title":"Db Engine"},"SQLITE_DB_PATH":{"type":"string","title":"Sqlite Db Path"},"POSTGRES_USER":{"type":"string","title":"Postgres User"},"POSTGRES_DB":{"type":"string","title":"Postgres Db"},"POSTGRES_HOST":{"type":"string","title":"Postgres Host"},"POSTGRES_PORT":{"type":"integer","title":"Postgres Port"},"ALGORITHM":{"type":"string","title":"Algorithm"},"ACCESS_TOKEN_EXPIRE_MINUTES":{"type":"integer","title":"Access Token Expire Minutes"},"MITRE_JSON_URL":{"type":"string","title":"Mitre Json Url"},"CUSTOM_DATA_URL":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Custom Data Url"},"ATOMIC_RED_TEAM_URL":{"type":"string","title":"Atomic Red Team Url"},"EXTERNAL_AUTH_CONFIGS":{"anyOf":[{"items":{"$ref":"#/components/schemas/ExternalAuthConfig"},"type":"array"},{"type":"null"}],"title":"External Auth Configs"}},"type":"object","required":["LOG_LEVEL","APPLICATION_NAME","FASTAPI_DOCUMENTATION","ADMIN_EMAIL","MIN_PASSWORD_LENGTH","OTP_LOCAL_ENABLED","OTP_EXTERNAL_ENABLED","CORS_ENABLED","CORS_ORIGINS","CORS_METHODS","CORS_HEADERS","CORS_CREDENTIALS","CORS_MAX_AGE","DB_ENGINE","SQLITE_DB_PATH","POSTGRES_USER","POSTGRES_DB","POSTGRES_HOST","POSTGRES_PORT","ALGORITHM","ACCESS_TOKEN_EXPIRE_MINUTES","MITRE_JSON_URL","CUSTOM_DATA_URL","ATOMIC_RED_TEAM_URL","EXTERNAL_AUTH_CONFIGS"],"title":"Configuration","description":"Configuration model for RAPTR"},"DynamicEvaluationQuestionAssign":{"properties":{"evaluation_template_id":{"type":"string","format":"uuid","title":"Evaluation Template Id"},"position":{"type":"integer","title":"Position","default":0}},"type":"object","required":["evaluation_template_id"],"title":"DynamicEvaluationQuestionAssign","description":"Schema for assigning dynamic questions"},"EvaluationResult":{"type":"string","enum":["pass","fail","n/a"],"title":"EvaluationResult"},"EvaluationTemplateRead":{"properties":{"name":{"type":"string","title":"Name","default":""},"evaluation_criteria":{"type":"string","title":"Evaluation Criteria","default":""},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"id":{"type":"string","format":"uuid","title":"Id"}},"type":"object","required":["id"],"title":"EvaluationTemplateRead","description":"Schema for reading evaluation templates","example":{"description":"The provided information in the ticket/notification should be accurate.","evaluation_criteria":"Is the technical information provided accurate?","id":"00000000-0000-0000-0000-000000000000","name":"TechinfoAccurate"}},"ExternalAuthConfig":{"properties":{"name":{"type":"string","title":"Name"},"configuration":{"type":"string","title":"Configuration"},"issuer":{"type":"string","title":"Issuer"},"jwks_url":{"type":"string","title":"Jwks Url"},"audience":{"type":"string","title":"Audience"},"scope":{"type":"string","title":"Scope"},"username_claim":{"type":"string","title":"Username Claim"},"client_id":{"type":"string","title":"Client Id"},"trusted_email_domains":{"items":{"type":"string"},"type":"array","title":"Trusted Email Domains"}},"type":"object","required":["name","configuration","issuer","jwks_url","audience","scope","username_claim","client_id","trusted_email_domains"],"title":"ExternalAuthConfig","description":"Configuration for an external authentication provider"},"ExternalAuthProvider":{"properties":{"name":{"type":"string","title":"Name"},"authority":{"type":"string","title":"Authority"},"client_id":{"type":"string","title":"Client Id"},"scope":{"type":"string","title":"Scope"}},"type":"object","required":["name","authority","client_id","scope"],"title":"ExternalAuthProvider","description":"Configuration for an external authentication provider exposed to frontend"},"FileCategory":{"type":"string","enum":["red","blue"],"title":"FileCategory","description":"Possible file categories"},"FileRead":{"properties":{"filename":{"type":"string","title":"Filename"},"content_type":{"$ref":"#/components/schemas/FileType"},"size":{"type":"integer","title":"Size"},"category":{"$ref":"#/components/schemas/FileCategory"},"activity_id":{"type":"string","format":"uuid","title":"Activity Id"},"id":{"type":"string","format":"uuid","title":"Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"created_by":{"type":"string","format":"uuid","title":"Created By"}},"type":"object","required":["filename","content_type","size","category","activity_id","id","created_at","created_by"],"title":"FileRead","description":"Model for reading file information","example":{"created_at":"2022-01-01T00:00:00.000Z","created_by":"00000000-0000-0000-0000-000000000000","id":"00000000-0000-0000-0000-000000000000"}},"FileType":{"type":"string","enum":["image/png","image/jpeg","image/jpg","text/plain"],"title":"FileType","description":"Possible file types"},"FileUploadResponse":{"properties":{"message":{"type":"string","title":"Message"},"url":{"type":"string","title":"Url"},"file_id":{"type":"string","format":"uuid","title":"File Id"}},"type":"object","required":["message","url","file_id"],"title":"FileUploadResponse","description":"Response model for file uploads."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ImportResponse":{"properties":{"assessment_id":{"type":"string","format":"uuid","title":"Assessment Id"},"message":{"type":"string","title":"Message"},"warnings":{"items":{"type":"string"},"type":"array","title":"Warnings","default":[]}},"type":"object","required":["assessment_id","message"],"title":"ImportResponse"},"KnowledgeBaseRead":{"properties":{"name":{"type":"string","title":"Name"},"mitre_technique_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mitre Technique Id"},"content":{"anyOf":[{},{"type":"null"}],"title":"Content"},"id":{"type":"string","format":"uuid","title":"Id"}},"type":"object","required":["name","id"],"title":"KnowledgeBaseRead","description":"Knowledge Base Read Schema","example":{"content":{"sections":[{"content":"Attackers may dump LSASS locally...","tabs":[{"content":"Create dump file via Task Manager...","title":"Task Manager"},{"content":"sekurlsa::logonPasswords","title":"Mimikatz"}],"title":"Local Execution"}]},"id":"123e4567-e89b-12d3-a456-426614174000","mitre_technique_id":"T1003.001","name":"LSASS Dumping"}},"MFASetupResponse":{"properties":{"provisioning_uri":{"type":"string","title":"Provisioning Uri"},"message":{"type":"string","title":"Message"}},"type":"object","required":["provisioning_uri","message"],"title":"MFASetupResponse","description":"Response for MFA setup containing provisioning URI"},"MeanTimeMetricsItem":{"properties":{"priority":{"type":"string","title":"Priority"},"mean_time_to_detect_seconds":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Mean Time To Detect Seconds"},"mean_time_to_respond_seconds":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Mean Time To Respond Seconds"}},"type":"object","required":["priority","mean_time_to_detect_seconds","mean_time_to_respond_seconds"],"title":"MeanTimeMetricsItem"},"MessageResponse":{"properties":{"message":{"type":"string","title":"Message"}},"type":"object","required":["message"],"title":"MessageResponse","description":"Standard message response"},"MitreOverallTacticScoreItem":{"properties":{"tactic":{"type":"string","title":"Tactic"},"overall_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Overall Score"},"expected_logged_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Expected Logged Score"},"logged_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Logged Score"},"expected_prevented_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Expected Prevented Score"},"prevented_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Prevented Score"},"expected_alerted_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Expected Alerted Score"},"alerted_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Alerted Score"},"expected_stakeholder_notified_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Expected Stakeholder Notified Score"},"stakeholder_notified_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Stakeholder Notified Score"}},"type":"object","required":["tactic","overall_score","expected_logged_score","logged_score","expected_prevented_score","prevented_score","expected_alerted_score","alerted_score","expected_stakeholder_notified_score","stakeholder_notified_score"],"title":"MitreOverallTacticScoreItem"},"MitreTacticScoreItem":{"properties":{"tactic":{"type":"string","title":"Tactic"},"techniques":{"items":{"$ref":"#/components/schemas/MitreTechniqueScoreItem"},"type":"array","title":"Techniques"}},"type":"object","required":["tactic","techniques"],"title":"MitreTacticScoreItem"},"MitreTechniqueScoreItem":{"properties":{"technique":{"type":"string","title":"Technique"},"overall_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Overall Score"},"expected_logged_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Expected Logged Score"},"logged_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Logged Score"},"expected_prevented_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Expected Prevented Score"},"prevented_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Prevented Score"},"expected_alerted_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Expected Alerted Score"},"alerted_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Alerted Score"},"expected_stakeholder_notified_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Expected Stakeholder Notified Score"},"stakeholder_notified_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Stakeholder Notified Score"}},"type":"object","required":["technique","overall_score","expected_logged_score","logged_score","expected_prevented_score","prevented_score","expected_alerted_score","alerted_score","expected_stakeholder_notified_score","stakeholder_notified_score"],"title":"MitreTechniqueScoreItem"},"OTP":{"properties":{"otp":{"type":"string","maxLength":6,"minLength":6,"pattern":"^\\d{6}$","title":"Otp","description":"6-digit OTP code"}},"type":"object","required":["otp"],"title":"OTP","description":"OTP Schema","example":{"otp":"123456"}},"PaginatedResponse_ActivityGroupTemplateRead_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ActivityGroupTemplateRead"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"size":{"type":"integer","title":"Size"},"pages":{"type":"integer","title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"PaginatedResponse[ActivityGroupTemplateRead]"},"PaginatedResponse_ActivityRead_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ActivityRead"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"size":{"type":"integer","title":"Size"},"pages":{"type":"integer","title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"PaginatedResponse[ActivityRead]"},"PaginatedResponse_ActivityTemplateRead_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ActivityTemplateRead"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"size":{"type":"integer","title":"Size"},"pages":{"type":"integer","title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"PaginatedResponse[ActivityTemplateRead]"},"PaginatedResponse_AssessmentRead_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/AssessmentRead"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"size":{"type":"integer","title":"Size"},"pages":{"type":"integer","title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"PaginatedResponse[AssessmentRead]"},"PaginatedResponse_AssetRead_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/AssetRead"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"size":{"type":"integer","title":"Size"},"pages":{"type":"integer","title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"PaginatedResponse[AssetRead]"},"PaginatedResponse_CampaignTemplateRead_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/CampaignTemplateRead"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"size":{"type":"integer","title":"Size"},"pages":{"type":"integer","title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"PaginatedResponse[CampaignTemplateRead]"},"PaginatedResponse_EvaluationTemplateRead_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/EvaluationTemplateRead"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"size":{"type":"integer","title":"Size"},"pages":{"type":"integer","title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"PaginatedResponse[EvaluationTemplateRead]"},"PaginatedResponse_KnowledgeBaseRead_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/KnowledgeBaseRead"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"size":{"type":"integer","title":"Size"},"pages":{"type":"integer","title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"PaginatedResponse[KnowledgeBaseRead]"},"PaginatedResponse_TagRead_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/TagRead"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"size":{"type":"integer","title":"Size"},"pages":{"type":"integer","title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"PaginatedResponse[TagRead]"},"PaginatedResponse_UserRead_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/UserRead"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"size":{"type":"integer","title":"Size"},"pages":{"type":"integer","title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"PaginatedResponse[UserRead]"},"PriorityAverageScoreItem":{"properties":{"priority":{"type":"string","title":"Priority"},"average_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Average Score"}},"type":"object","required":["priority","average_score"],"title":"PriorityAverageScoreItem"},"PriorityBreakdownItem":{"properties":{"priority":{"type":"string","title":"Priority"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["priority","count"],"title":"PriorityBreakdownItem"},"ReportContextRequest":{"properties":{"sort_by":{"type":"string","enum":["activity_position","name","mitre_tactic","priority","state","start_time","coverage_score"],"title":"Sort By","default":"activity_position"},"sort_order":{"type":"string","enum":["asc","desc"],"title":"Sort Order","default":"asc"}},"type":"object","title":"ReportContextRequest","description":"Schema for report context (data layer) request"},"ReportGenerateRequest":{"properties":{"sort_by":{"type":"string","enum":["activity_position","name","mitre_tactic","priority","state","start_time","coverage_score"],"title":"Sort By","default":"activity_position"},"sort_order":{"type":"string","enum":["asc","desc"],"title":"Sort Order","default":"asc"},"template_id":{"type":"string","format":"uuid","title":"Template Id"}},"type":"object","required":["template_id"],"title":"ReportGenerateRequest","description":"Schema for report generation request"},"ReportTemplateFormat":{"type":"string","enum":["html","docx"],"title":"ReportTemplateFormat","description":"Possible report template formats"},"ReportTemplateRead":{"properties":{"filename":{"type":"string","title":"Filename"},"format":{"$ref":"#/components/schemas/ReportTemplateFormat"},"id":{"type":"string","format":"uuid","title":"Id"}},"type":"object","required":["filename","format","id"],"title":"ReportTemplateRead","description":"Schema for reading report template"},"SeverityAccuracyItem":{"properties":{"expected_severity":{"type":"string","title":"Expected Severity"},"actual_informational":{"type":"integer","title":"Actual Informational"},"actual_low":{"type":"integer","title":"Actual Low"},"actual_medium":{"type":"integer","title":"Actual Medium"},"actual_high":{"type":"integer","title":"Actual High"},"actual_critical":{"type":"integer","title":"Actual Critical"},"actual_none":{"type":"integer","title":"Actual None"}},"type":"object","required":["expected_severity","actual_informational","actual_low","actual_medium","actual_high","actual_critical","actual_none"],"title":"SeverityAccuracyItem"},"StateDistributionItem":{"properties":{"state":{"type":"string","title":"State"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["state","count"],"title":"StateDistributionItem"},"TacticBase":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"mitre_id":{"type":"string","title":"Mitre Id"},"name":{"type":"string","title":"Name"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"}},"type":"object","required":["id","mitre_id","name"],"title":"TacticBase","description":"Shared properties for multiple tactic schemas","example":{"id":"00000000-0000-0000-0000-000000000000","mitre_id":"T1001","name":"Data from local system","url":"https://attack.mitre.org/techniques/T1001"}},"TacticWithTechniques":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"mitre_id":{"type":"string","title":"Mitre Id"},"name":{"type":"string","title":"Name"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"},"techniques":{"items":{"$ref":"#/components/schemas/TechniqueBase"},"type":"array","title":"Techniques"}},"type":"object","required":["id","mitre_id","name","techniques"],"title":"TacticWithTechniques","description":"Properties of a tactic with its associated techniques","example":{"id":"00000000-0000-0000-0000-000000000000","mitre_id":"T1001","name":"Data from local system","url":"https://attack.mitre.org/techniques/T1001"}},"TagBase":{"properties":{"name":{"type":"string","title":"Name"},"color":{"type":"string","pattern":"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$","title":"Color","description":"Hex color code (e.g., #FF0000 or #F00)"}},"type":"object","required":["name","color"],"title":"TagBase","description":"Shared properties for multiple tag schemas","example":{"color":"#FF0000","name":"ToDo"}},"TagRead":{"properties":{"name":{"type":"string","title":"Name"},"color":{"type":"string","pattern":"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$","title":"Color","description":"Hex color code (e.g., #FF0000 or #F00)"},"id":{"type":"string","format":"uuid","title":"Id"},"deleted":{"type":"boolean","title":"Deleted"}},"type":"object","required":["name","color","id","deleted"],"title":"TagRead","description":"Properties to return via API for general tag requests","example":{"color":"#FF0000","deleted":false,"id":"00000000-0000-0000-0000-000000000000","name":"ToDo"}},"TechniqueBase":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"mitre_id":{"type":"string","title":"Mitre Id"},"name":{"type":"string","title":"Name"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"}},"type":"object","required":["id","mitre_id","name"],"title":"TechniqueBase","description":"Shared properties for multiple technique schemas","example":{"id":"00000000-0000-0000-0000-000000000000","mitre_id":"T1001","name":"Data from local system","url":"https://attack.mitre.org/techniques/T1001"}},"TechniqueWithTactics":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"mitre_id":{"type":"string","title":"Mitre Id"},"name":{"type":"string","title":"Name"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"},"tactics":{"items":{"$ref":"#/components/schemas/TacticBase"},"type":"array","title":"Tactics"}},"type":"object","required":["id","mitre_id","name","tactics"],"title":"TechniqueWithTactics","description":"Properties of a technique with its associated tactics","example":{"id":"00000000-0000-0000-0000-000000000000","mitre_id":"T1001","name":"Data from local system","url":"https://attack.mitre.org/techniques/T1001"}},"Token":{"properties":{"access_token":{"type":"string","title":"Access Token"},"token_type":{"type":"string","title":"Token Type"},"next_url":{"type":"string","title":"Next Url"}},"type":"object","required":["access_token","token_type","next_url"],"title":"Token","description":"JWT token response schema"},"UserBase":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"role":{"$ref":"#/components/schemas/UserRole"},"disabled":{"type":"boolean","title":"Disabled"}},"type":"object","required":["email","role","disabled"],"title":"UserBase","description":"Shared properties for multiple user schemas","example":{"disabled":false,"email":"user@raptr.app","role":"user"}},"UserCreate":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"role":{"$ref":"#/components/schemas/UserRole"},"disabled":{"type":"boolean","title":"Disabled"},"password":{"type":"string","title":"Password"}},"type":"object","required":["email","role","disabled","password"],"title":"UserCreate","description":"Properties to receive via API on user creation. Password is required","example":{"disabled":false,"email":"user@raptr.app","password":"Password.123","role":"user"}},"UserPasswordMfaReset":{"properties":{"password":{"type":"string","title":"Password"}},"type":"object","required":["password"],"title":"UserPasswordMfaReset","description":"Properties to receive via API on user password MFA reset","example":{"password":"Password.123"}},"UserPasswordReset":{"properties":{"new_password":{"type":"string","title":"New Password"}},"type":"object","required":["new_password"],"title":"UserPasswordReset","description":"Properties to receive via API on user password reset","example":{"new_password":"Password.123"}},"UserPasswordUpdate":{"properties":{"new_password":{"type":"string","title":"New Password"},"old_password":{"type":"string","title":"Old Password"}},"type":"object","required":["new_password","old_password"],"title":"UserPasswordUpdate","description":"Properties to receive via API on user password update","example":{"new_password":"Password.123","old_password":"Password.123"}},"UserRead":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"role":{"$ref":"#/components/schemas/UserRole"},"disabled":{"type":"boolean","title":"Disabled"},"id":{"type":"string","format":"uuid","title":"Id"},"mfa_verified":{"type":"boolean","title":"Mfa Verified"},"last_login_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Login At"},"last_logout_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Logout At"}},"type":"object","required":["email","role","disabled","id","mfa_verified","last_login_at","last_logout_at"],"title":"UserRead","description":"Properties to return via API for general user requests","example":{"disabled":false,"email":"user@raptr.app","id":"00000000-0000-0000-0000-000000000000","last_login_at":"2026-01-25T16:14:55.000Z","last_logout_at":"2026-01-25T16:14:55.000Z","mfa_verified":false,"role":"user"}},"UserReadAcl":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"role":{"$ref":"#/components/schemas/UserRole"},"disabled":{"type":"boolean","title":"Disabled"},"id":{"type":"string","format":"uuid","title":"Id"},"mfa_verified":{"type":"boolean","title":"Mfa Verified"},"last_login_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Login At"},"last_logout_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Logout At"},"acl":{"anyOf":[{"items":{"$ref":"#/components/schemas/AclBase"},"type":"array"},{"type":"null"}],"title":"Acl","default":[]}},"type":"object","required":["email","role","disabled","id","mfa_verified","last_login_at","last_logout_at"],"title":"UserReadAcl","description":"Properties to return via API for general user requests, including ACLs","example":{"disabled":false,"email":"user@raptr.app","id":"00000000-0000-0000-0000-000000000000","last_login_at":"2026-01-25T16:14:55.000Z","last_logout_at":"2026-01-25T16:14:55.000Z","mfa_verified":false,"role":"user"}},"UserRole":{"type":"string","enum":["admin","user"],"title":"UserRole","description":"Possible user roles"},"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"}},"securitySchemes":{"OAuth2PasswordBearer":{"type":"oauth2","flows":{"password":{"scopes":{},"tokenUrl":"/api/v1/auth/token"}}}}}} \ No newline at end of file +{"openapi":"3.1.0","info":{"title":"RAPTR Backend API","version":"0.1.0-beta.1"},"paths":{"/api/v1/health/":{"get":{"tags":["health"],"summary":"Health Check","description":"Check the health of the server and database.","operationId":"health_check_api_v1_health__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}}}}},"/api/v1/auth/token":{"post":{"tags":["auth"],"summary":"Login","description":"Login the user and issue a new token.","operationId":"login_api_v1_auth_token_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_login_api_v1_auth_token_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Token"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/auth/logout":{"post":{"tags":["auth"],"summary":"Logout","description":"Logout the authenticated user.","operationId":"logout_api_v1_auth_logout_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/auth/mfa/setup":{"post":{"tags":["auth"],"summary":"Setup Mfa","description":"Setup MFA for the authenticated user.\nReturns a provisioning URI for QR code generation.","operationId":"setup_mfa_api_v1_auth_mfa_setup_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MFASetupResponse"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/auth/mfa/setup/validate":{"post":{"tags":["auth"],"summary":"Validate Mfa Setup","description":"Validate MFA setup for the authenticated user.","operationId":"validate_mfa_setup_api_v1_auth_mfa_setup_validate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OTP"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Token"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/auth/mfa":{"post":{"tags":["auth"],"summary":"Validate Mfa","description":"Validate MFA token and issue a new jwt with MFA verified claim.","operationId":"validate_mfa_api_v1_auth_mfa_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OTP"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Token"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/auth/providers":{"get":{"tags":["auth"],"summary":"Get Providers","description":"Get a list of available external authentication providers.","operationId":"get_providers_api_v1_auth_providers_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ExternalAuthProvider"},"type":"array","title":"Response Get Providers Api V1 Auth Providers Get"}}}}}}},"/api/v1/auth/motd":{"get":{"tags":["auth"],"summary":"Get Motd","description":"Get the welcome message of the day.","operationId":"get_motd_api_v1_auth_motd_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}}}}},"/api/v1/acl/":{"get":{"tags":["acl"],"summary":"Get Acls","description":"Get all acls.","operationId":"get_acls_api_v1_acl__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/AclRead"},"type":"array","title":"Response Get Acls Api V1 Acl Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]},"post":{"tags":["acl"],"summary":"Create Acl","description":"Create a new acl.","operationId":"create_acl_api_v1_acl__post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AclBase"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AclRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/acl/{acl_id}":{"get":{"tags":["acl"],"summary":"Get Acl","description":"Get an acl by ID.","operationId":"get_acl_api_v1_acl__acl_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"acl_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Acl Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AclRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["acl"],"summary":"Update Acl","description":"Update an acl by ID.","operationId":"update_acl_api_v1_acl__acl_id__put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"acl_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Acl Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AclBase"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AclRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["acl"],"summary":"Delete Acl","description":"Delete an acl by ID.","operationId":"delete_acl_api_v1_acl__acl_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"acl_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Acl Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/acl/assessment/{assessment_id}":{"get":{"tags":["acl"],"summary":"Get Acls By Assessment","description":"Get all acls by assessment ID.","operationId":"get_acls_by_assessment_api_v1_acl_assessment__assessment_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AclRead"},"title":"Response Get Acls By Assessment Api V1 Acl Assessment Assessment Id Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/acl/user/{user_id}":{"get":{"tags":["acl"],"summary":"Get Acls By User","description":"Get all acls by user ID.","operationId":"get_acls_by_user_api_v1_acl_user__user_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AclRead"},"title":"Response Get Acls By User Api V1 Acl User User Id Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/activity_template/":{"get":{"tags":["activity_template"],"summary":"Get Activity Templates","description":"Get all activity templates.","operationId":"get_activity_templates_api_v1_activity_template__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"sort_order","in":"query","required":false,"schema":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"title":"Sort Order"}},{"name":"name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"}},{"name":"mitre_tactic","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mitre Tactic"}},{"name":"mitre_technique","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mitre Technique"}},{"name":"provider","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"}},{"name":"priority","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/ActivityPriority"}},{"type":"null"}],"title":"Priority"}},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"enum":["name","mitre_tactic","mitre_technique","provider","priority"],"type":"string"},{"type":"null"}],"title":"Sort By"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse_ActivityTemplateRead_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/activity_template/{activity_template_id}":{"get":{"tags":["activity_template"],"summary":"Get Activity Template","description":"Get an activity template by ID.","operationId":"get_activity_template_api_v1_activity_template__activity_template_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"activity_template_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Activity Template Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityTemplateRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/activity_group_template/":{"get":{"tags":["activity_group_template"],"summary":"Get Activity Group Templates","description":"Get all activity group templates.","operationId":"get_activity_group_templates_api_v1_activity_group_template__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"sort_order","in":"query","required":false,"schema":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"title":"Sort Order"}},{"name":"name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"}},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"const":"name","type":"string"},{"type":"null"}],"title":"Sort By"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse_ActivityGroupTemplateRead_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/campaign_template/":{"get":{"tags":["campaign_template"],"summary":"Get Campaign Templates","description":"Get all campaign templates.","operationId":"get_campaign_templates_api_v1_campaign_template__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"sort_order","in":"query","required":false,"schema":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"title":"Sort Order"}},{"name":"name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"}},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"const":"name","type":"string"},{"type":"null"}],"title":"Sort By"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse_CampaignTemplateRead_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/campaign_template/{campaign_template_id}":{"get":{"tags":["campaign_template"],"summary":"Get Campaign Template","description":"Get a single campaign template by ID.","operationId":"get_campaign_template_api_v1_campaign_template__campaign_template_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"campaign_template_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Campaign Template Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CampaignTemplateRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/evaluation_template/":{"get":{"tags":["evaluation_template"],"summary":"Get Evaluation Templates","description":"Get all evaluation question templates.","operationId":"get_evaluation_templates_api_v1_evaluation_template__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"sort_order","in":"query","required":false,"schema":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"title":"Sort Order"}},{"name":"name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"}},{"name":"evaluation_criteria","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Evaluation Criteria"}},{"name":"description","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"const":"name","type":"string"},{"type":"null"}],"title":"Sort By"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse_EvaluationTemplateRead_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/evaluation_template/{evaluation_template_id}":{"get":{"tags":["evaluation_template"],"summary":"Get Evaluation Template By Id","description":"Get evaluation question template by id.","operationId":"get_evaluation_template_by_id_api_v1_evaluation_template__evaluation_template_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"evaluation_template_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Evaluation Template Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvaluationTemplateRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/report_template/":{"get":{"tags":["report_template"],"summary":"Get Report Templates","description":"Get all report templates.","operationId":"get_report_templates_api_v1_report_template__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"filename","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Filename"}},{"name":"format","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/ReportTemplateFormat"},{"type":"null"}],"title":"Format"}},{"name":"sort_by","in":"query","required":false,"schema":{"enum":["filename","format"],"type":"string","default":"filename","title":"Sort By"}},{"name":"sort_order","in":"query","required":false,"schema":{"enum":["asc","desc"],"type":"string","default":"asc","title":"Sort Order"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ReportTemplateRead"},"title":"Response Get Report Templates Api V1 Report Template Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/knowledge-base/":{"get":{"tags":["knowledge-base"],"summary":"Get Knowledge Base Articles","description":"Get knowledge base articles.","operationId":"get_knowledge_base_articles_api_v1_knowledge_base__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"sort_order","in":"query","required":false,"schema":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"title":"Sort Order"}},{"name":"mitre_technique_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mitre Technique Id"}},{"name":"names","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Names"}},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"enum":["name","mitre_technique_id"],"type":"string"},{"type":"null"}],"title":"Sort By"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse_KnowledgeBaseRead_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/mitre/tactics":{"get":{"tags":["mitre"],"summary":"Read Tactics","description":"Get all tactics","operationId":"read_tactics_api_v1_mitre_tactics_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"}},{"name":"mitre_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mitre Id"}},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"enum":["name","mitre_id"],"type":"string"},{"type":"null"}],"title":"Sort By"}},{"name":"sort_order","in":"query","required":false,"schema":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"title":"Sort Order"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TacticBase"},"title":"Response Read Tactics Api V1 Mitre Tactics Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/mitre/tactics-with-techniques":{"get":{"tags":["mitre"],"summary":"Read Tactics With Techniques","description":"Get tactics with its associated techniques.","operationId":"read_tactics_with_techniques_api_v1_mitre_tactics_with_techniques_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"}},{"name":"mitre_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mitre Id"}},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"enum":["name","mitre_id"],"type":"string"},{"type":"null"}],"title":"Sort By"}},{"name":"sort_order","in":"query","required":false,"schema":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"title":"Sort Order"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TacticWithTechniques"},"title":"Response Read Tactics With Techniques Api V1 Mitre Tactics With Techniques Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/mitre/techniques":{"get":{"tags":["mitre"],"summary":"Read Techniques","description":"Get all techniques","operationId":"read_techniques_api_v1_mitre_techniques_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"}},{"name":"mitre_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mitre Id"}},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"enum":["name","mitre_id"],"type":"string"},{"type":"null"}],"title":"Sort By"}},{"name":"sort_order","in":"query","required":false,"schema":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"title":"Sort Order"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TechniqueBase"},"title":"Response Read Techniques Api V1 Mitre Techniques Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/mitre/techniques-with-tactics":{"get":{"tags":["mitre"],"summary":"Read Techniques With Tactics","description":"Get techniques with its associated tactics.","operationId":"read_techniques_with_tactics_api_v1_mitre_techniques_with_tactics_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"}},{"name":"mitre_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mitre Id"}},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"enum":["name","mitre_id"],"type":"string"},{"type":"null"}],"title":"Sort By"}},{"name":"sort_order","in":"query","required":false,"schema":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"title":"Sort Order"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TechniqueWithTactics"},"title":"Response Read Techniques With Tactics Api V1 Mitre Techniques With Tactics Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/users":{"get":{"tags":["admin"],"summary":"Read Users","description":"Get all users with pagination metadata.","operationId":"read_users_api_v1_admin_users_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"sort_order","in":"query","required":false,"schema":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"title":"Sort Order"}},{"name":"email","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"}},{"name":"role","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/UserRole"}},{"type":"null"}],"title":"Role"}},{"name":"disabled","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"boolean"}},{"type":"null"}],"title":"Disabled"}},{"name":"mfa_verified","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"boolean"}},{"type":"null"}],"title":"Mfa Verified"}},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"enum":["email","role","disabled","mfa_verified"],"type":"string"},{"type":"null"}],"title":"Sort By"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse_UserRead_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/users/{user_id}":{"get":{"tags":["admin"],"summary":"Read User","description":"Get a user by ID.","operationId":"read_user_api_v1_admin_users__user_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["admin"],"summary":"Update User","description":"Update a user by ID.","operationId":"update_user_api_v1_admin_users__user_id__put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserBase"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["admin"],"summary":"Delete User","description":"Delete a user by ID.","operationId":"delete_user_api_v1_admin_users__user_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/users/":{"post":{"tags":["admin"],"summary":"Create User","description":"Create a new user.","operationId":"create_user_api_v1_admin_users__post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserCreate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/admin/users/{user_id}/reset_password":{"post":{"tags":["admin"],"summary":"Reset User Password","description":"Reset a user's password.","operationId":"reset_user_password_api_v1_admin_users__user_id__reset_password_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserPasswordReset"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/users/{user_id}/reset_mfa":{"post":{"tags":["admin"],"summary":"Reset User Mfa","description":"Reset a user's MFA.","operationId":"reset_user_mfa_api_v1_admin_users__user_id__reset_mfa_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/seed/mitre/":{"post":{"tags":["admin"],"summary":"Import Mitre Techniques And Tactics","description":"Create MITRE ATT&CK data.","operationId":"import_mitre_techniques_and_tactics_api_v1_admin_seed_mitre__post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/admin/seed/custom":{"post":{"tags":["admin"],"summary":"Import Custom Data","description":"Import custom data from git repository.","operationId":"import_custom_data_api_v1_admin_seed_custom_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/admin/seed/ART":{"post":{"tags":["admin"],"summary":"Import Atomic Red Team Activity Templates","description":"Import Atomic Red Team templates from git repository.","operationId":"import_atomic_red_team_activity_templates_api_v1_admin_seed_ART_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/admin/configuration":{"get":{"tags":["admin"],"summary":"Get Configuration","description":"Get the configuration of the server.","operationId":"get_configuration_api_v1_admin_configuration_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Configuration"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/user/me":{"get":{"tags":["user"],"summary":"Read User Self","description":"Get the authenticated user, and the corresponding ACLs.","operationId":"read_user_self_api_v1_user_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserReadAcl"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/user/me/password":{"put":{"tags":["user"],"summary":"Update User Password Self","description":"Update the authenticated user's password.","operationId":"update_user_password_self_api_v1_user_me_password_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserPasswordUpdate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/user/me/mfa":{"put":{"tags":["user"],"summary":"Reset User Mfa Self","description":"Reset the authenticated user's MFA.","operationId":"reset_user_mfa_self_api_v1_user_me_mfa_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserPasswordMfaReset"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/assessment/":{"get":{"tags":["assessment"],"summary":"Get Assessments","description":"Get all assessments.","operationId":"get_assessments_api_v1_assessment__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"sort_order","in":"query","required":false,"schema":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"title":"Sort Order"}},{"name":"name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"}},{"name":"assessment_type","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/AssessmentType"}},{"type":"null"}],"title":"Assessment Type"}},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"enum":["name","assessment_type","description"],"type":"string"},{"type":"null"}],"title":"Sort By"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse_AssessmentRead_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["assessment"],"summary":"Create Assessment","description":"Create a new assessment.","operationId":"create_assessment_api_v1_assessment__post","security":[{"OAuth2PasswordBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssessmentBase"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssessmentRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessment/{assessment_id}":{"get":{"tags":["assessment"],"summary":"Get Assessment","description":"Get an assessment by ID.","operationId":"get_assessment_api_v1_assessment__assessment_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssessmentRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["assessment"],"summary":"Update Assessment","description":"Update an assessment by ID.","operationId":"update_assessment_api_v1_assessment__assessment_id__put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssessmentBase"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssessmentRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["assessment"],"summary":"Delete Assessment","description":"Delete an assessment by ID.","operationId":"delete_assessment_api_v1_assessment__assessment_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessment/import":{"post":{"tags":["assessment"],"summary":"Import Assessment","description":"Import an assessment from an exported zip archive.\nCreates a new assessment with all child data.","operationId":"import_assessment_api_v1_assessment_import_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_import_assessment_api_v1_assessment_import_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/assessment/{assessment_id}/default_evaluation_templates":{"put":{"tags":["assessment"],"summary":"Update Assessment Default Evaluation Templates","description":"Update an assessment's evaluation template.","operationId":"update_assessment_default_evaluation_templates_api_v1_assessment__assessment_id__default_evaluation_templates_put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DynamicEvaluationQuestionAssign"},"title":"Dynamic Evaluation Questions"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssessmentRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessments/{assessment_id}/activity_group/":{"get":{"tags":["activity_group"],"summary":"Get Activity Groups","description":"Get all activity groups for an assessment.","operationId":"get_activity_groups_api_v1_assessments__assessment_id__activity_group__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}},{"name":"name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"}},{"name":"activity_group_position","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Activity Group Position"}},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"enum":["name","activity_group_position"],"type":"string"},{"type":"null"}],"title":"Sort By"}},{"name":"sort_order","in":"query","required":false,"schema":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"title":"Sort Order"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ActivityGroupRead"},"title":"Response Get Activity Groups Api V1 Assessments Assessment Id Activity Group Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["activity_group"],"summary":"Create Activity Group","description":"Create a new activity group for an assessment.","operationId":"create_activity_group_api_v1_assessments__assessment_id__activity_group__post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityGroupBase"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityGroupRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessments/{assessment_id}/activity_group/{activity_group_id}":{"get":{"tags":["activity_group"],"summary":"Get Activity Group","description":"Get a specific activity group for an assessment.","operationId":"get_activity_group_api_v1_assessments__assessment_id__activity_group__activity_group_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"activity_group_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Activity Group Id"}},{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityGroupRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["activity_group"],"summary":"Update Activity Group","description":"Update an activity group for an assessment.","operationId":"update_activity_group_api_v1_assessments__assessment_id__activity_group__activity_group_id__put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"activity_group_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Activity Group Id"}},{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityGroupBase"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityGroupRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessments/{assessment_id}/activity_group/{activity_group_id}/activities":{"get":{"tags":["activity_group"],"summary":"Get Activity Group Activities","description":"Get all activities for a specific activity group.","operationId":"get_activity_group_activities_api_v1_assessments__assessment_id__activity_group__activity_group_id__activities_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"activity_group_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Activity Group Id"}},{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ActivityRead"},"title":"Response Get Activity Group Activities Api V1 Assessments Assessment Id Activity Group Activity Group Id Activities Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessments/{assessment_id}/activity_group/reorder":{"put":{"tags":["activity_group"],"summary":"Reorder Activity Groups","description":"Reorder activity groups within an assessment.\n\nProvide the activity group IDs in the desired order.\nThe first ID gets position 0, second gets position 1, etc.","operationId":"reorder_activity_groups_api_v1_assessments__assessment_id__activity_group_reorder_put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityGroupReorder"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessments/{assessment_id}/activity_group/{activity_group_id}/delete":{"put":{"tags":["activity_group"],"summary":"Toggle Activity Group Delete","description":"Toggle the deleted flag for an activity group for an assessment.","operationId":"toggle_activity_group_delete_api_v1_assessments__assessment_id__activity_group__activity_group_id__delete_put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"activity_group_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Activity Group Id"}},{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessments/{assessment_id}/activity_group/{activity_group_id}/visible":{"put":{"tags":["activity_group"],"summary":"Toggle Activity Group Visible","description":"Toggle the visible flag for an activity group for an assessment.","operationId":"toggle_activity_group_visible_api_v1_assessments__assessment_id__activity_group__activity_group_id__visible_put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"activity_group_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Activity Group Id"}},{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessments/{assessment_id}/activity_group/{activity_group_id}/reorder":{"put":{"tags":["activity_group"],"summary":"Reorder Activities","description":"Reorder activities within an activity group.\n\nProvide the activity IDs in the desired order.\nThe first ID gets position 0, second gets position 1, etc.","operationId":"reorder_activities_api_v1_assessments__assessment_id__activity_group__activity_group_id__reorder_put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"activity_group_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Activity Group Id"}},{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityReorder"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessments/{assessment_id}/activity/":{"get":{"tags":["activity"],"summary":"Get All Activities","description":"Get all activities for an assessment.","operationId":"get_all_activities_api_v1_assessments__assessment_id__activity__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"sort_order","in":"query","required":false,"schema":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"title":"Sort Order"}},{"name":"name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"}},{"name":"mitre_tactic","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mitre Tactic"}},{"name":"mitre_technique","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mitre Technique"}},{"name":"priority","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/ActivityPriority"}},{"type":"null"}],"title":"Priority"}},{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/ActivityState"}},{"type":"null"}],"title":"State"}},{"name":"visible","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Visible"}},{"name":"deleted","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Deleted"}},{"name":"tags","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string","format":"uuid"}},{"type":"null"}],"title":"Tags"}},{"name":"activity_group_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Activity Group Id"}},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"enum":["name","activity_position","mitre_tactic","mitre_technique","priority","state","visible","created_at","updated_at","activity_group.name","activity_coverage_score","activity_start_time","activity_end_time","tags"],"type":"string"},{"type":"null"}],"title":"Sort By"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse_ActivityRead_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["activity"],"summary":"Create Activity","description":"Create a new activity for an assessment.","operationId":"create_activity_api_v1_assessments__assessment_id__activity__post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityBase"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessments/{assessment_id}/activity/{activity_id}":{"get":{"tags":["activity"],"summary":"Get Activity By Id","description":"Get an activity by ID.","operationId":"get_activity_by_id_api_v1_assessments__assessment_id__activity__activity_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"activity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Activity Id"}},{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["activity"],"summary":"Update Activity","description":"Update an activity by ID.","operationId":"update_activity_api_v1_assessments__assessment_id__activity__activity_id__put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"activity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Activity Id"}},{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessments/{assessment_id}/activity/{activity_id}/delete":{"put":{"tags":["activity"],"summary":"Toggle Delete Activity State","description":"Toggle delete state of an activity by ID.","operationId":"toggle_delete_activity_state_api_v1_assessments__assessment_id__activity__activity_id__delete_put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"activity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Activity Id"}},{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessments/{assessment_id}/activity/{activity_id}/clone":{"put":{"tags":["activity"],"summary":"Clone Activity","description":"Clone an activity by ID.","operationId":"clone_activity_api_v1_assessments__assessment_id__activity__activity_id__clone_put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"activity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Activity Id"}},{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessments/{assessment_id}/activity/{activity_id}/tags":{"put":{"tags":["activity"],"summary":"Assign Update Activity Tags","description":"Update tags for an activity. Replaces all existing tags with the provided list.","operationId":"assign_update_activity_tags_api_v1_assessments__assessment_id__activity__activity_id__tags_put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"activity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Activity Id"}},{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityTagsUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessments/{assessment_id}/activity/{activity_id}/activity_group":{"put":{"tags":["activity"],"summary":"Assign Update Activity To Activity Group","description":"Assign an activity to a group or remove it.\nTo assign: Provide activity_group_id.\nTo remove: Provide activity_group_id as null.","operationId":"assign_update_activity_to_activity_group_api_v1_assessments__assessment_id__activity__activity_id__activity_group_put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"activity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Activity Id"}},{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityGroupUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessments/{assessment_id}/activity/{activity_id}/assets/{role}":{"put":{"tags":["activity"],"summary":"Assign Update Assets To Activity","description":"Assign assets to an activity for a specific role (source, target, tool, etc.).\nReplaces all existing assets for this role.","operationId":"assign_update_assets_to_activity_api_v1_assessments__assessment_id__activity__activity_id__assets__role__put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"activity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Activity Id"}},{"name":"role","in":"path","required":true,"schema":{"$ref":"#/components/schemas/ActivityAssetRole"}},{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityAssetUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessments/{assessment_id}/activity/{activity_id}/visible":{"put":{"tags":["activity"],"summary":"Toggle Visible Activity","operationId":"toggle_visible_activity_api_v1_assessments__assessment_id__activity__activity_id__visible_put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"activity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Activity Id"}},{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessments/{assessment_id}/activity/{activity_id}/dynamic_evaluation_questions":{"put":{"tags":["activity"],"summary":"Assign Dynamic Evaluation Questions","description":"Assign, update, remove dynamic evaluation questions to an activity.","operationId":"assign_dynamic_evaluation_questions_api_v1_assessments__assessment_id__activity__activity_id__dynamic_evaluation_questions_put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"activity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Activity Id"}},{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DynamicEvaluationQuestionAssign"},"title":"Dynamic Evaluation Questions"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessments/{assessment_id}/activity/{activity_id}/files":{"get":{"tags":["activity"],"summary":"Get Activity Files","description":"Get files for an activity.","operationId":"get_activity_files_api_v1_assessments__assessment_id__activity__activity_id__files_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"activity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Activity Id"}},{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}},{"name":"filename","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Filename"}},{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/FileCategory"},{"type":"null"}],"title":"Category"}},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"enum":["filename","created_at"],"type":"string"},{"type":"null"}],"title":"Sort By"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/FileRead"},"title":"Response Get Activity Files Api V1 Assessments Assessment Id Activity Activity Id Files Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessments/{assessment_id}/activity/{activity_id}/files/{file_id}":{"get":{"tags":["activity"],"summary":"Get Activity File","description":"Get a file for an activity.","operationId":"get_activity_file_api_v1_assessments__assessment_id__activity__activity_id__files__file_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"activity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Activity Id"}},{"name":"file_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"File Id"}},{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FileRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["activity"],"summary":"Delete Activity File","description":"Delete a file for an activity.","operationId":"delete_activity_file_api_v1_assessments__assessment_id__activity__activity_id__files__file_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"file_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"File Id"}},{"name":"activity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Activity Id"}},{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessments/{assessment_id}/activity/{activity_id}/files/{file_id}/download":{"get":{"tags":["activity"],"summary":"Download Activity File","description":"Download a file for an activity.","operationId":"download_activity_file_api_v1_assessments__assessment_id__activity__activity_id__files__file_id__download_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"activity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Activity Id"}},{"name":"file_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"File Id"}},{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessments/{assessment_id}/activity/{activity_id}/upload":{"post":{"tags":["activity"],"summary":"Upload File","description":"Upload a file to an activity.","operationId":"upload_file_api_v1_assessments__assessment_id__activity__activity_id__upload_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"activity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Activity Id"}},{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_file_api_v1_assessments__assessment_id__activity__activity_id__upload_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FileUploadResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessments/{assessment_id}/activity/{activity_id}/version":{"get":{"tags":["activity"],"summary":"Get Activity History List","description":"Get a list of all historical versions of an activity.","operationId":"get_activity_history_list_api_v1_assessments__assessment_id__activity__activity_id__version_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"activity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Activity Id"}},{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ActivityHistoryRead"},"title":"Response Get Activity History List Api V1 Assessments Assessment Id Activity Activity Id Version Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessments/{assessment_id}/activity/{activity_id}/version/{version_id}":{"get":{"tags":["activity"],"summary":"Get Activity History Version","description":"Get a specific historical version (snapshot) of an activity.","operationId":"get_activity_history_version_api_v1_assessments__assessment_id__activity__activity_id__version__version_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"activity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Activity Id"}},{"name":"version_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Version Id"}},{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityHistoryRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessments/{assessment_id}/asset/":{"get":{"tags":["asset"],"summary":"Get Assets","description":"Get all assets for an assessment.","operationId":"get_assets_api_v1_assessments__assessment_id__asset__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"sort_order","in":"query","required":false,"schema":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"title":"Sort Order"}},{"name":"name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"}},{"name":"deleted","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Deleted"}},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"enum":["name","deleted"],"type":"string"},{"type":"null"}],"title":"Sort By"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse_AssetRead_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["asset"],"summary":"Create Asset","description":"Create a new asset for an assessment.","operationId":"create_asset_api_v1_assessments__assessment_id__asset__post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetBase"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessments/{assessment_id}/asset/{asset_id}":{"get":{"tags":["asset"],"summary":"Get Asset","description":"Get a specific asset for an assessment.","operationId":"get_asset_api_v1_assessments__assessment_id__asset__asset_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"asset_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Asset Id"}},{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["asset"],"summary":"Update Asset","description":"Update a specific asset for an assessment.","operationId":"update_asset_api_v1_assessments__assessment_id__asset__asset_id__put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"asset_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Asset Id"}},{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetBase"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessments/{assessment_id}/asset/{asset_id}/delete":{"put":{"tags":["asset"],"summary":"Toggle Asset Delete","description":"Toggle the deleted flag for a specific asset for an assessment.","operationId":"toggle_asset_delete_api_v1_assessments__assessment_id__asset__asset_id__delete_put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"asset_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Asset Id"}},{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessments/{assessment_id}/tag/":{"get":{"tags":["tag"],"summary":"Get Tags","description":"Get all tags for an assessment.","operationId":"get_tags_api_v1_assessments__assessment_id__tag__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"sort_order","in":"query","required":false,"schema":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"title":"Sort Order"}},{"name":"name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"}},{"name":"deleted","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Deleted"}},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"enum":["name","color","deleted"],"type":"string"},{"type":"null"}],"title":"Sort By"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse_TagRead_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["tag"],"summary":"Create Tag","description":"Create a new tag for an assessment.","operationId":"create_tag_api_v1_assessments__assessment_id__tag__post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TagBase"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TagRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessments/{assessment_id}/tag/{tag_id}":{"get":{"tags":["tag"],"summary":"Get Tag","description":"Get a specific tag for an assessment.","operationId":"get_tag_api_v1_assessments__assessment_id__tag__tag_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"tag_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tag Id"}},{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TagRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["tag"],"summary":"Update Tag","description":"Update a specific tag for an assessment.","operationId":"update_tag_api_v1_assessments__assessment_id__tag__tag_id__put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"tag_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tag Id"}},{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TagBase"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TagRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessments/{assessment_id}/tag/{tag_id}/delete":{"put":{"tags":["tag"],"summary":"Toggle Tag Delete","description":"Toggle the deleted flag for a specific tag for an assessment.","operationId":"toggle_tag_delete_api_v1_assessments__assessment_id__tag__tag_id__delete_put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"tag_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tag Id"}},{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessments/{assessment_id}/imports/activity_templates":{"post":{"tags":["imports"],"summary":"Import From Activity Templates","description":"Import multiple activities from activity templates.","operationId":"import_from_activity_templates_api_v1_assessments__assessment_id__imports_activity_templates_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"array","items":{"type":"string","format":"uuid"},"title":"Activity Template Ids"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessments/{assessment_id}/imports/activity_group_templates":{"post":{"tags":["imports"],"summary":"Import From Activity Group Templates","description":"Import multiple activity groups from activity group templates.","operationId":"import_from_activity_group_templates_api_v1_assessments__assessment_id__imports_activity_group_templates_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"array","items":{"type":"string","format":"uuid"},"title":"Activity Group Template Ids"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessments/{assessment_id}/imports/campaign_template":{"post":{"tags":["imports"],"summary":"Import From Campaign Template","description":"Import all content from a campaign template into an assessment.\nCreates groups and activities with correct ordering.","operationId":"import_from_campaign_template_api_v1_assessments__assessment_id__imports_campaign_template_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}},{"name":"campaign_template_id","in":"query","required":true,"schema":{"type":"string","format":"uuid","title":"Campaign Template Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessments/{assessment_id}/export/report/context":{"post":{"tags":["export"],"summary":"Get Report Context","description":"Return the report data layer as JSON.","operationId":"get_report_context_api_v1_assessments__assessment_id__export_report_context_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportContextRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Report Context Api V1 Assessments Assessment Id Export Report Context Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessments/{assessment_id}/export/report/generate":{"post":{"tags":["export"],"summary":"Generate Report","description":"Generate a report for the assessment using the specified template.\nReturns a file download (HTML or DOCX).","operationId":"generate_report_api_v1_assessments__assessment_id__export_report_generate_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportGenerateRequest"}}}},"responses":{"200":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessments/{assessment_id}/export/mitre":{"post":{"tags":["export"],"summary":"Generate Mitre Attack Navigator Layer","description":"Generate a MITRE ATT&CK Navigator layer for the assessment.\nReturns a file download (JSON).","operationId":"generate_mitre_attack_navigator_layer_api_v1_assessments__assessment_id__export_mitre_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"responses":{"200":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessments/{assessment_id}/export/assessment":{"post":{"tags":["export"],"summary":"Export Assessment","description":"Export the entire assessment as a zip archive download.","operationId":"export_assessment_api_v1_assessments__assessment_id__export_assessment_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"responses":{"200":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/assessments/{assessment_id}/statistics/":{"get":{"tags":["statistics"],"summary":"Get Assessment Statistics Endpoint","description":"Get statistics for a single assessment.\n\nReturns metrics over visible, non-deleted activities in visible,\nnon-deleted groups. All roles see the same data.","operationId":"get_assessment_statistics_endpoint_api_v1_assessments__assessment_id__statistics__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"assessment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Assessment Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssessmentStatisticsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"AclBase":{"properties":{"assessment_role":{"$ref":"#/components/schemas/AclRole","default":"spectator"},"user_id":{"type":"string","format":"uuid","title":"User Id"},"assessment_id":{"type":"string","format":"uuid","title":"Assessment Id"}},"type":"object","required":["user_id","assessment_id"],"title":"AclBase","description":"Shared properties for multiple acl schemas","example":{"assessment_id":"10000000-0000-0000-0000-000000000001","assessment_role":"spectator","user_id":"00000000-0000-0000-0000-000000000004"}},"AclRead":{"properties":{"assessment_role":{"$ref":"#/components/schemas/AclRole","default":"spectator"},"user_id":{"type":"string","format":"uuid","title":"User Id"},"assessment_id":{"type":"string","format":"uuid","title":"Assessment Id"},"id":{"type":"string","format":"uuid","title":"Id"}},"type":"object","required":["user_id","assessment_id","id"],"title":"AclRead","description":"Properties to return via API for general acl requests","example":{"assessment_id":"10000000-0000-0000-0000-000000000001","assessment_role":"spectator","id":"50000000-0000-0000-0000-000000000001","user_id":"00000000-0000-0000-0000-000000000004"}},"AclRole":{"type":"string","enum":["red","blue","spectator"],"title":"AclRole","description":"Possible acl roles"},"ActivityAssetRole":{"type":"string","enum":["source","target","tool","log_source","prevention_source","alert_source","stakeholder_notification_source"],"title":"ActivityAssetRole","description":"Possible asset roles in an activity"},"ActivityAssetUpdate":{"properties":{"asset_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Asset Ids"}},"type":"object","required":["asset_ids"],"title":"ActivityAssetUpdate","description":"Schema for updating activity assets","example":{"asset_ids":["3fa85f64-5717-4562-b3fc-2c963f66afa6","7c9e6679-7425-40de-944b-e07fc1f90ae7"]}},"ActivityBase":{"properties":{"name":{"type":"string","title":"Name"},"mitre_tactic":{"type":"string","title":"Mitre Tactic"},"mitre_technique":{"type":"string","title":"Mitre Technique"}},"type":"object","required":["name","mitre_tactic","mitre_technique"],"title":"ActivityBase","description":"Assessment activity base model","example":{"mitre_tactic":"TA0002","mitre_technique":"T1204.001","name":"Windows: Malicious Link Execution on Client"}},"ActivityEvaluationDynamicQuestionsRead":{"properties":{"evaluation_template_id":{"type":"string","format":"uuid","title":"Evaluation Template Id"},"data":{"type":"string","title":"Data","default":""},"evaluation_result":{"$ref":"#/components/schemas/EvaluationResult","default":"n/a"},"position":{"type":"integer","title":"Position","default":0},"id":{"type":"string","format":"uuid","title":"Id"}},"type":"object","required":["evaluation_template_id","id"],"title":"ActivityEvaluationDynamicQuestionsRead","description":"Read schema for activity evaluation dynamic questions","example":{"data":"Yes, all relevant information are provided.","evaluation_result":"pass","evaluation_template_id":"00000000-0000-0000-0000-000000000000","id":"00000000-0000-0000-0000-000000000000","position":0}},"ActivityEvaluationDynamicQuestionsUpdate":{"properties":{"evaluation_template_id":{"type":"string","format":"uuid","title":"Evaluation Template Id"},"data":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Data"},"evaluation_result":{"anyOf":[{"$ref":"#/components/schemas/EvaluationResult"},{"type":"null"}]}},"type":"object","required":["evaluation_template_id"],"title":"ActivityEvaluationDynamicQuestionsUpdate","description":"Update schema for activity evaluation dynamic questions"},"ActivityEvaluationRead":{"properties":{"logged_evaluation":{"$ref":"#/components/schemas/EvaluationResult","default":"n/a"},"alerted_evaluation":{"$ref":"#/components/schemas/EvaluationResult","default":"n/a"},"prevented_evaluation":{"$ref":"#/components/schemas/EvaluationResult","default":"n/a"},"stakeholder_notified_evaluation":{"$ref":"#/components/schemas/EvaluationResult","default":"n/a"},"activity_coverage_score":{"type":"integer","title":"Activity Coverage Score","default":0},"event_to_alert_data":{"type":"string","title":"Event To Alert Data","default":""},"event_to_alert_evaluation_result":{"$ref":"#/components/schemas/EvaluationResult","default":"n/a"},"alert_to_stakeholder_data":{"type":"string","title":"Alert To Stakeholder Data","default":""},"alert_to_stakeholder_evaluation_result":{"$ref":"#/components/schemas/EvaluationResult","default":"n/a"},"alert_severity_data":{"type":"string","title":"Alert Severity Data","default":""},"alert_severity_evaluation_result":{"$ref":"#/components/schemas/EvaluationResult","default":"n/a"},"stakeholder_notification_severity_data":{"type":"string","title":"Stakeholder Notification Severity Data","default":""},"stakeholder_notification_severity_evaluation_result":{"$ref":"#/components/schemas/EvaluationResult","default":"n/a"},"dynamic_questions":{"items":{"$ref":"#/components/schemas/ActivityEvaluationDynamicQuestionsRead"},"type":"array","title":"Dynamic Questions","default":[]},"id":{"type":"string","format":"uuid","title":"Id"},"activity_id":{"type":"string","format":"uuid","title":"Activity Id"}},"type":"object","required":["id","activity_id"],"title":"ActivityEvaluationRead","description":"Activity Evaluation read schema"},"ActivityEvaluationUpdate":{"properties":{"logged_evaluation":{"$ref":"#/components/schemas/EvaluationResult","default":"n/a"},"alerted_evaluation":{"$ref":"#/components/schemas/EvaluationResult","default":"n/a"},"prevented_evaluation":{"$ref":"#/components/schemas/EvaluationResult","default":"n/a"},"stakeholder_notified_evaluation":{"$ref":"#/components/schemas/EvaluationResult","default":"n/a"},"activity_coverage_score":{"type":"integer","title":"Activity Coverage Score","default":0},"event_to_alert_data":{"type":"string","title":"Event To Alert Data","default":""},"event_to_alert_evaluation_result":{"$ref":"#/components/schemas/EvaluationResult","default":"n/a"},"alert_to_stakeholder_data":{"type":"string","title":"Alert To Stakeholder Data","default":""},"alert_to_stakeholder_evaluation_result":{"$ref":"#/components/schemas/EvaluationResult","default":"n/a"},"alert_severity_data":{"type":"string","title":"Alert Severity Data","default":""},"alert_severity_evaluation_result":{"$ref":"#/components/schemas/EvaluationResult","default":"n/a"},"stakeholder_notification_severity_data":{"type":"string","title":"Stakeholder Notification Severity Data","default":""},"stakeholder_notification_severity_evaluation_result":{"$ref":"#/components/schemas/EvaluationResult","default":"n/a"},"dynamic_questions":{"anyOf":[{"items":{"$ref":"#/components/schemas/ActivityEvaluationDynamicQuestionsUpdate"},"type":"array"},{"type":"null"}],"title":"Dynamic Questions"}},"type":"object","title":"ActivityEvaluationUpdate","description":"Activity Evaluation update schema"},"ActivityGroupBase":{"properties":{"name":{"type":"string","title":"Name"},"visible":{"type":"boolean","title":"Visible","default":false}},"type":"object","required":["name"],"title":"ActivityGroupBase","description":"Shared properties for activity groups","example":{"name":"Example Activity Group","visible":false}},"ActivityGroupRead":{"properties":{"name":{"type":"string","title":"Name"},"visible":{"type":"boolean","title":"Visible","default":false},"id":{"type":"string","format":"uuid","title":"Id"},"deleted":{"type":"boolean","title":"Deleted"},"is_default":{"type":"boolean","title":"Is Default"},"activity_group_position":{"type":"integer","title":"Activity Group Position"}},"type":"object","required":["name","id","deleted","is_default","activity_group_position"],"title":"ActivityGroupRead","description":"Properties to return via API","example":{"activity_group_position":0,"deleted":false,"id":"00000000-0000-0000-0000-000000000000","is_default":false,"name":"Example Activity Group","visible":false}},"ActivityGroupReorder":{"properties":{"activity_group_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Activity Group Ids"}},"type":"object","required":["activity_group_ids"],"title":"ActivityGroupReorder","description":"Schema for reordering activities within a activity group","example":{"activity_group_ids":["3fa85f64-5717-4562-b3fc-2c963f66afa6","7c9e6679-7425-40de-944b-e07fc1f90ae7","a8098c1a-f86e-11da-bd1a-00112444be1e"]}},"ActivityGroupTemplateRead":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"activity_template_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Activity Template Ids","default":[]}},"type":"object","required":["id","name"],"title":"ActivityGroupTemplateRead","description":"Activity group template read model","example":{"activity_template_ids":["00000000-0000-0000-0000-000000000000"],"description":"Description 1","id":"00000000-0000-0000-0000-000000000000","name":"Group 1"}},"ActivityGroupUpdate":{"properties":{"activity_group_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Activity Group Id"}},"type":"object","title":"ActivityGroupUpdate","description":"Schema for assigning/updating an activity's group","example":{"activity_group_id":"3fa85f64-5717-4562-b3fc-2c963f66afa6"}},"ActivityHistoryRead":{"properties":{"activity_id":{"type":"string","format":"uuid","title":"Activity Id"},"version":{"type":"integer","title":"Version"},"saved_at":{"type":"string","format":"date-time","title":"Saved At"},"saved_by_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Saved By Id"},"snapshot":{"additionalProperties":true,"type":"object","title":"Snapshot"},"id":{"type":"string","format":"uuid","title":"Id"},"saved_by":{"anyOf":[{"$ref":"#/components/schemas/UserBase"},{"type":"null"}]}},"type":"object","required":["activity_id","version","saved_at","saved_by_id","snapshot","id"],"title":"ActivityHistoryRead","description":"Schema for reading a specific activity history, including the full snapshot.","example":{"activity_id":"00000000-0000-0000-0000-000000000000","saved_at":"2026-01-01T10:00:00Z","saved_by":{"disabled":false,"email":"user@raptr.app","role":"user"},"saved_by_id":"11111111-1111-1111-1111-111111111111","snapshot":{"name":"Test Activity"},"version":1}},"ActivityPriority":{"type":"string","enum":["Low","Medium","High","Critical"],"title":"ActivityPriority","description":"Possible activity priority levels"},"ActivityRead":{"properties":{"name":{"type":"string","title":"Name"},"mitre_tactic":{"type":"string","title":"Mitre Tactic"},"mitre_technique":{"type":"string","title":"Mitre Technique"},"provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"},"visible":{"type":"boolean","title":"Visible","default":false},"priority":{"anyOf":[{"$ref":"#/components/schemas/ActivityPriority"},{"type":"null"}]},"state":{"anyOf":[{"$ref":"#/components/schemas/ActivityState"},{"type":"null"}]},"tags":{"items":{"$ref":"#/components/schemas/TagRead"},"type":"array","title":"Tags","default":[]},"activity_group_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Activity Group Id"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"activity_rationale":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Activity Rationale"},"activity_actions":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Activity Actions"},"activity_requirements":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Activity Requirements"},"activity_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Activity Notes"},"activity_start_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Activity Start Time"},"activity_end_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Activity End Time"},"sources":{"items":{"$ref":"#/components/schemas/AssetRead"},"type":"array","title":"Sources","default":[]},"targets":{"items":{"$ref":"#/components/schemas/AssetRead"},"type":"array","title":"Targets","default":[]},"tools":{"items":{"$ref":"#/components/schemas/AssetRead"},"type":"array","title":"Tools","default":[]},"expected_logging":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Expected Logging"},"expected_prevention":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Expected Prevention"},"expected_alert_creation":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Expected Alert Creation"},"expected_stakeholder_notification":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Expected Stakeholder Notification"},"expected_severity":{"anyOf":[{"$ref":"#/components/schemas/ActivitySeverity"},{"type":"null"}]},"log_sources":{"items":{"$ref":"#/components/schemas/AssetRead"},"type":"array","title":"Log Sources","default":[]},"prevention_sources":{"items":{"$ref":"#/components/schemas/AssetRead"},"type":"array","title":"Prevention Sources","default":[]},"alert_sources":{"items":{"$ref":"#/components/schemas/AssetRead"},"type":"array","title":"Alert Sources","default":[]},"stakeholder_notification_sources":{"items":{"$ref":"#/components/schemas/AssetRead"},"type":"array","title":"Stakeholder Notification Sources","default":[]},"logged":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Logged"},"log_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Log Time"},"prevented":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Prevented"},"prevent_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Prevent Time"},"alerted":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Alerted"},"alert_severity":{"anyOf":[{"$ref":"#/components/schemas/ActivitySeverity"},{"type":"null"}]},"alert_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Alert Time"},"stakeholder_notification_created":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Stakeholder Notification Created"},"stakeholder_notification_severity":{"anyOf":[{"$ref":"#/components/schemas/ActivitySeverity"},{"type":"null"}]},"stakeholder_notification_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Stakeholder Notification Time"},"linked_knowledge_base_articles":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Linked Knowledge Base Articles"},"log_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Log Notes"},"alert_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Alert Notes"},"prevent_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prevent Notes"},"stakeholder_notification_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stakeholder Notification Notes"},"evaluation":{"anyOf":[{"$ref":"#/components/schemas/ActivityEvaluationRead"},{"type":"null"}]},"id":{"type":"string","format":"uuid","title":"Id"},"deleted":{"type":"boolean","title":"Deleted"},"activity_position":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Activity Position"},"activity_group":{"anyOf":[{"$ref":"#/components/schemas/ActivityGroupRead"},{"type":"null"}]},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"}},"type":"object","required":["name","mitre_tactic","mitre_technique","id","deleted"],"title":"ActivityRead","description":"Assessment activity read model","example":{"activity_actions":"","activity_end_time":"2026-01-01T11:00:00Z","activity_group_id":"00000000-0000-0000-0000-000000000000","activity_notes":"","activity_position":1,"activity_rationale":"Users or attackers might visit known malicious sites from the system.","activity_requirements":"Standard Windows workplace with Internet access.","activity_sources":"","activity_start_time":"2026-01-01T10:00:00Z","activity_targets":"","activity_tools":"","alert_notes":"","alert_severity":"Low","alert_sources":["77777777-7777-7777-7777-777777777777"],"alert_time":"2026-01-01T10:35:00Z","alerted":false,"deleted":false,"evaluation":{"activity_coverage_score":100,"alert_severity_applicable":true,"alert_severity_data":"2026-01-01T10:00:00Z","alert_severity_evaluation":true,"alert_to_stakeholder_applicable":true,"alert_to_stakeholder_data":"2026-01-01T10:00:00Z","alert_to_stakeholder_evaluation":true,"alerted_evaluation":true,"dynamic_questions":[{"applicable":true,"data":"Dynamic question data","evaluation":true,"evaluation_template_id":"00000000-0000-0000-0000-000000000000","position":1}],"event_to_alert_applicable":true,"event_to_alert_data":"2026-01-01T10:00:00Z","event_to_alert_evaluation":true,"logged_evaluation":true,"prevented_evaluation":true,"stakeholder_notification_severity_applicable":true,"stakeholder_notification_severity_data":"2026-01-01T10:00:00Z","stakeholder_notification_severity_evaluation":true,"stakeholder_notified_evaluation":true},"expected_alert_creation":true,"expected_prevention":true,"expected_severity":"Medium","expected_stakeholder_notification":false,"id":"00000000-0000-0000-0000-000000000000","linked_knowledge_base_articles":["88888888-8888-8888-8888-888888888888"],"log_notes":"","log_sources":["55555555-5555-5555-5555-555555555555"],"logged":false,"mitre_tactic":"TA0002","mitre_technique":"T1204.001","name":"Windows: Malicious Link Execution on Client","prevent_notes":"","prevent_time":"2026-01-01T10:30:00Z","prevented":false,"prevention_sources":["66666666-6666-6666-6666-666666666666"],"priority":"Medium","provider":"Compass Security","sources":["22222222-2222-2222-2222-222222222222","22222222-2222-2222-2222-333333333333"],"stakeholder_notification_created":false,"stakeholder_notification_notes":"","stakeholder_notification_severity":"Low","stakeholder_notification_sources":["88888888-8888-8888-8888-888888888888"],"stakeholder_notification_time":"2026-01-01T10:40:00Z","state":"Pending","tags":["11111111-1111-1111-1111-111111111111"],"targets":["33333333-3333-3333-3333-333333333333"],"tools":["44444444-4444-4444-4444-444444444444"],"visible":false}},"ActivityReorder":{"properties":{"activity_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Activity Ids"}},"type":"object","required":["activity_ids"],"title":"ActivityReorder","description":"Schema for reordering activities within a activity group","example":{"activity_ids":["3fa85f64-5717-4562-b3fc-2c963f66afa6","7c9e6679-7425-40de-944b-e07fc1f90ae7","a8098c1a-f86e-11da-bd1a-00112444be1e"]}},"ActivitySeverity":{"type":"string","enum":["Informational","Low","Medium","High","Critical"],"title":"ActivitySeverity","description":"Possible activity severity levels"},"ActivityState":{"type":"string","enum":["Pending","Waiting Red","Waiting Blue","Ready","In Progress","In Evaluation","Completed","Cancelled"],"title":"ActivityState","description":"Possible activity state levels"},"ActivityTagsUpdate":{"properties":{"tag_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Tag Ids","default":[]}},"type":"object","title":"ActivityTagsUpdate","description":"Schema for updating activity tags","example":{"tag_ids":["11111111-1111-1111-1111-111111111111","22222222-2222-2222-2222-222222222222"]}},"ActivityTemplateRead":{"properties":{"activity_actions":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Activity Actions"},"activity_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Activity Notes"},"activity_rationale":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Activity Rationale"},"activity_requirements":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Activity Requirements"},"expected_logging":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Expected Logging"},"expected_alert_creation":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Expected Alert Creation"},"expected_prevention":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Expected Prevention"},"expected_stakeholder_notification":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Expected Stakeholder Notification"},"expected_severity":{"anyOf":[{"$ref":"#/components/schemas/ActivitySeverity"},{"type":"null"}]},"mitre_tactic":{"type":"string","title":"Mitre Tactic"},"mitre_technique":{"type":"string","title":"Mitre Technique"},"name":{"type":"string","title":"Name"},"priority":{"anyOf":[{"$ref":"#/components/schemas/ActivityPriority"},{"type":"null"}]},"provider":{"type":"string","title":"Provider"},"linked_knowledge_base_articles":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Linked Knowledge Base Articles"},"id":{"type":"string","format":"uuid","title":"Id"}},"type":"object","required":["mitre_tactic","mitre_technique","name","provider","id"],"title":"ActivityTemplateRead","description":"Template activity read model","example":{"activity_actions":"","activity_notes":"","activity_rationale":"Users or attackers might visit known malicious sites from the system.","activity_requirements":"Standard Windows workplace with Internet access.","expected_alert_creation":true,"expected_logging":true,"expected_prevention":true,"expected_severity":"Medium","expected_stakeholder_notification":false,"id":"00000000-0000-0000-0000-000000000000","mitre_tactic":"Execution","mitre_technique":"T1204.001","name":"Windows: Malicious Link Execution on Client","priority":"Medium","provider":"Compass Security"}},"ActivityUpdate":{"properties":{"name":{"type":"string","title":"Name"},"mitre_tactic":{"type":"string","title":"Mitre Tactic"},"mitre_technique":{"type":"string","title":"Mitre Technique"},"provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"},"visible":{"type":"boolean","title":"Visible","default":false},"priority":{"anyOf":[{"$ref":"#/components/schemas/ActivityPriority"},{"type":"null"}]},"state":{"anyOf":[{"$ref":"#/components/schemas/ActivityState"},{"type":"null"}]},"tags":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Tags","default":[]},"activity_group_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Activity Group Id"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"activity_rationale":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Activity Rationale"},"activity_actions":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Activity Actions"},"activity_requirements":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Activity Requirements"},"activity_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Activity Notes"},"activity_start_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Activity Start Time"},"activity_end_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Activity End Time"},"sources":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Sources","default":[]},"targets":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Targets","default":[]},"tools":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Tools","default":[]},"expected_logging":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Expected Logging"},"expected_prevention":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Expected Prevention"},"expected_alert_creation":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Expected Alert Creation"},"expected_stakeholder_notification":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Expected Stakeholder Notification"},"expected_severity":{"anyOf":[{"$ref":"#/components/schemas/ActivitySeverity"},{"type":"null"}]},"log_sources":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Log Sources","default":[]},"prevention_sources":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Prevention Sources","default":[]},"alert_sources":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Alert Sources","default":[]},"stakeholder_notification_sources":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Stakeholder Notification Sources","default":[]},"logged":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Logged"},"log_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Log Time"},"prevented":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Prevented"},"prevent_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Prevent Time"},"alerted":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Alerted"},"alert_severity":{"anyOf":[{"$ref":"#/components/schemas/ActivitySeverity"},{"type":"null"}]},"alert_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Alert Time"},"stakeholder_notification_created":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Stakeholder Notification Created"},"stakeholder_notification_severity":{"anyOf":[{"$ref":"#/components/schemas/ActivitySeverity"},{"type":"null"}]},"stakeholder_notification_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Stakeholder Notification Time"},"linked_knowledge_base_articles":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Linked Knowledge Base Articles"},"log_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Log Notes"},"alert_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Alert Notes"},"prevent_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prevent Notes"},"stakeholder_notification_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stakeholder Notification Notes"},"evaluation":{"anyOf":[{"$ref":"#/components/schemas/ActivityEvaluationUpdate"},{"type":"null"}]}},"type":"object","required":["name","mitre_tactic","mitre_technique"],"title":"ActivityUpdate","description":"Assessment activity update model","example":{"activity_actions":"","activity_end_time":"2026-01-01T11:00:00Z","activity_group_id":"00000000-0000-0000-0000-000000000000","activity_notes":"","activity_rationale":"Users or attackers might visit known malicious sites from the system.","activity_requirements":"Standard Windows workplace with Internet access.","activity_sources":"","activity_start_time":"2026-01-01T10:00:00Z","activity_targets":"","activity_tools":"","alert_notes":"","alert_severity":"Low","alert_sources":["77777777-7777-7777-7777-777777777777"],"alert_time":"2026-01-01T10:35:00Z","alerted":false,"evaluation":{"activity_coverage_score":100,"alert_severity_applicable":true,"alert_severity_data":"2026-01-01T10:00:00Z","alert_severity_evaluation":true,"alert_to_stakeholder_applicable":true,"alert_to_stakeholder_data":"2026-01-01T10:00:00Z","alert_to_stakeholder_evaluation":true,"alerted_evaluation":true,"dynamic_questions":[{"applicable":true,"data":"Dynamic question data","evaluation":true,"evaluation_template_id":"00000000-0000-0000-0000-000000000000","position":1}],"event_to_alert_applicable":true,"event_to_alert_data":"2026-01-01T10:00:00Z","event_to_alert_evaluation":true,"logged_evaluation":true,"prevented_evaluation":true,"stakeholder_notification_severity_applicable":true,"stakeholder_notification_severity_data":"2026-01-01T10:00:00Z","stakeholder_notification_severity_evaluation":true,"stakeholder_notified_evaluation":true},"expected_alert_creation":true,"expected_prevention":true,"expected_severity":"Medium","expected_stakeholder_notification":false,"linked_knowledge_base_articles":["88888888-8888-8888-8888-888888888888"],"log_notes":"","log_sources":["55555555-5555-5555-5555-555555555555"],"logged":false,"mitre_tactic":"TA0002","mitre_technique":"T1204.001","name":"Windows: Malicious Link Execution on Client","prevent_notes":"","prevent_time":"2026-01-01T10:30:00Z","prevented":false,"prevention_sources":["66666666-6666-6666-6666-666666666666"],"priority":"Medium","provider":"Compass Security","sources":["22222222-2222-2222-2222-222222222222","22222222-2222-2222-2222-333333333333"],"stakeholder_notification_created":false,"stakeholder_notification_notes":"","stakeholder_notification_severity":"Low","stakeholder_notification_sources":["88888888-8888-8888-8888-888888888888"],"stakeholder_notification_time":"2026-01-01T10:40:00Z","state":"Pending","tags":["11111111-1111-1111-1111-111111111111"],"targets":["33333333-3333-3333-3333-333333333333"],"tools":["44444444-4444-4444-4444-444444444444"],"visible":false}},"AssessmentBase":{"properties":{"name":{"type":"string","minLength":1,"title":"Name"},"description":{"type":"string","minLength":1,"title":"Description"},"assessment_type":{"$ref":"#/components/schemas/AssessmentType","default":"PurpleTeam"}},"type":"object","required":["name","description"],"title":"AssessmentBase","description":"Shared properties for multiple assessment schemas","example":{"assessment_type":"PurpleTeam","description":"Atomic based Purple Team engagement","name":"Purple Team Assessment Example"}},"AssessmentRead":{"properties":{"name":{"type":"string","minLength":1,"title":"Name"},"description":{"type":"string","minLength":1,"title":"Description"},"assessment_type":{"$ref":"#/components/schemas/AssessmentType","default":"PurpleTeam"},"id":{"type":"string","format":"uuid","title":"Id"},"default_evaluation_templates":{"items":{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"object"},"type":"array","title":"Default Evaluation Templates"}},"type":"object","required":["name","description","id","default_evaluation_templates"],"title":"AssessmentRead","description":"Properties to return via API for general assessment requests","example":{"assessment_type":"PurpleTeam","default_evaluation_templates":[{"evaluation_template_id":"00000000-0000-0000-0000-000000000000","position":0}],"description":"Atomic based Purple Team engagement","id":"00000000-0000-0000-0000-000000000000","name":"Purple Team Assessment Example"}},"AssessmentStatisticsResponse":{"properties":{"state_distribution":{"items":{"$ref":"#/components/schemas/StateDistributionItem"},"type":"array","title":"State Distribution"},"priority_breakdown":{"items":{"$ref":"#/components/schemas/PriorityBreakdownItem"},"type":"array","title":"Priority Breakdown"},"average_coverage_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Average Coverage Score"},"average_coverage_scores_by_priority":{"items":{"$ref":"#/components/schemas/PriorityAverageScoreItem"},"type":"array","title":"Average Coverage Scores By Priority"},"mitre_overall_tactic_scores":{"items":{"$ref":"#/components/schemas/MitreOverallTacticScoreItem"},"type":"array","title":"Mitre Overall Tactic Scores"},"mitre_tactic_scores":{"items":{"$ref":"#/components/schemas/MitreTacticScoreItem"},"type":"array","title":"Mitre Tactic Scores"},"mean_time_metrics":{"items":{"$ref":"#/components/schemas/MeanTimeMetricsItem"},"type":"array","title":"Mean Time Metrics"},"severity_accuracy":{"items":{"$ref":"#/components/schemas/SeverityAccuracyItem"},"type":"array","title":"Severity Accuracy"}},"type":"object","required":["state_distribution","priority_breakdown","average_coverage_scores_by_priority","mitre_overall_tactic_scores","mitre_tactic_scores","mean_time_metrics","severity_accuracy"],"title":"AssessmentStatisticsResponse"},"AssessmentType":{"type":"string","enum":["PurpleTeam","RedTeam"],"title":"AssessmentType","description":"Possible assessment types"},"AssetBase":{"properties":{"name":{"type":"string","title":"Name"},"icon":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon"},"properties":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Properties","description":"Dynamic key-value properties for the asset","example":{"computer_name":"computer1","ip":"192.168.1.1","mac":"00:11:22:33:44:55"}}},"type":"object","required":["name"],"title":"AssetBase","description":"Asset base model","example":{"icon":"Computer","name":"Test Computer","properties":{"computer_name":"computer1","ip":"192.168.1.1","mac":"00:11:22:33:44:55"}}},"AssetRead":{"properties":{"name":{"type":"string","title":"Name"},"icon":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon"},"properties":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Properties","description":"Dynamic key-value properties for the asset","example":{"computer_name":"computer1","ip":"192.168.1.1","mac":"00:11:22:33:44:55"}},"id":{"type":"string","format":"uuid","title":"Id"},"deleted":{"type":"boolean","title":"Deleted"}},"type":"object","required":["name","id","deleted"],"title":"AssetRead","description":"Asset read model","example":{"assessment_id":"11111111-1111-1111-1111-111111111111","deleted":false,"icon":"Computer","id":"00000000-0000-0000-0000-000000000000","name":"Test Computer","properties":{"computer_name":"computer1","ip":"192.168.1.1","mac":"00:11:22:33:44:55"}}},"Body_import_assessment_api_v1_assessment_import_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_import_assessment_api_v1_assessment_import_post"},"Body_login_api_v1_auth_token_post":{"properties":{"grant_type":{"anyOf":[{"type":"string","pattern":"^password$"},{"type":"null"}],"title":"Grant Type"},"username":{"type":"string","title":"Username"},"password":{"type":"string","format":"password","title":"Password"},"scope":{"type":"string","title":"Scope","default":""},"client_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Id"},"client_secret":{"anyOf":[{"type":"string"},{"type":"null"}],"format":"password","title":"Client Secret"}},"type":"object","required":["username","password"],"title":"Body_login_api_v1_auth_token_post"},"Body_upload_file_api_v1_assessments__assessment_id__activity__activity_id__upload_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_file_api_v1_assessments__assessment_id__activity__activity_id__upload_post"},"CampaignTemplateItemRead":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"position":{"type":"integer","title":"Position"},"item_type":{"type":"string","title":"Item Type"},"activity_group_template_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Activity Group Template Id"},"activity_template_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Activity Template Id"}},"type":"object","required":["id","position","item_type"],"title":"CampaignTemplateItemRead","description":"Campaign template item read model"},"CampaignTemplateRead":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"items":{"items":{"$ref":"#/components/schemas/CampaignTemplateItemRead"},"type":"array","title":"Items","default":[]}},"type":"object","required":["id","name"],"title":"CampaignTemplateRead","description":"Campaign template read model","example":{"description":"Standard Active Directory assessment campaign","id":"00000000-0000-0000-0000-000000000000","items":[],"name":"Standard AD Campaign"}},"Configuration":{"properties":{"LOG_LEVEL":{"type":"string","enum":["DEBUG","INFO","WARNING","ERROR","CRITICAL"],"title":"Log Level"},"APPLICATION_NAME":{"type":"string","title":"Application Name"},"FASTAPI_DOCUMENTATION":{"type":"boolean","title":"Fastapi Documentation"},"ADMIN_EMAIL":{"type":"string","title":"Admin Email"},"MIN_PASSWORD_LENGTH":{"type":"integer","title":"Min Password Length"},"OTP_LOCAL_ENABLED":{"type":"boolean","title":"Otp Local Enabled"},"OTP_EXTERNAL_ENABLED":{"type":"boolean","title":"Otp External Enabled"},"CORS_ENABLED":{"type":"boolean","title":"Cors Enabled"},"CORS_ORIGINS":{"items":{"type":"string"},"type":"array","title":"Cors Origins"},"CORS_METHODS":{"items":{"type":"string"},"type":"array","title":"Cors Methods"},"CORS_HEADERS":{"items":{"type":"string"},"type":"array","title":"Cors Headers"},"CORS_CREDENTIALS":{"type":"boolean","title":"Cors Credentials"},"CORS_MAX_AGE":{"type":"integer","title":"Cors Max Age"},"DB_ENGINE":{"type":"string","enum":["postgres","sqlite"],"title":"Db Engine"},"SQLITE_DB_PATH":{"type":"string","title":"Sqlite Db Path"},"POSTGRES_USER":{"type":"string","title":"Postgres User"},"POSTGRES_DB":{"type":"string","title":"Postgres Db"},"POSTGRES_HOST":{"type":"string","title":"Postgres Host"},"POSTGRES_PORT":{"type":"integer","title":"Postgres Port"},"ALGORITHM":{"type":"string","title":"Algorithm"},"ACCESS_TOKEN_EXPIRE_MINUTES":{"type":"integer","title":"Access Token Expire Minutes"},"MITRE_JSON_URL":{"type":"string","title":"Mitre Json Url"},"CUSTOM_DATA_URL":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Custom Data Url"},"ATOMIC_RED_TEAM_URL":{"type":"string","title":"Atomic Red Team Url"},"WELCOME_MESSAGE":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Welcome Message"},"EXTERNAL_AUTH_CONFIGS":{"anyOf":[{"items":{"$ref":"#/components/schemas/ExternalAuthConfig"},"type":"array"},{"type":"null"}],"title":"External Auth Configs"}},"type":"object","required":["LOG_LEVEL","APPLICATION_NAME","FASTAPI_DOCUMENTATION","ADMIN_EMAIL","MIN_PASSWORD_LENGTH","OTP_LOCAL_ENABLED","OTP_EXTERNAL_ENABLED","CORS_ENABLED","CORS_ORIGINS","CORS_METHODS","CORS_HEADERS","CORS_CREDENTIALS","CORS_MAX_AGE","DB_ENGINE","SQLITE_DB_PATH","POSTGRES_USER","POSTGRES_DB","POSTGRES_HOST","POSTGRES_PORT","ALGORITHM","ACCESS_TOKEN_EXPIRE_MINUTES","MITRE_JSON_URL","CUSTOM_DATA_URL","ATOMIC_RED_TEAM_URL","WELCOME_MESSAGE","EXTERNAL_AUTH_CONFIGS"],"title":"Configuration","description":"Configuration model for RAPTR"},"DynamicEvaluationQuestionAssign":{"properties":{"evaluation_template_id":{"type":"string","format":"uuid","title":"Evaluation Template Id"},"position":{"type":"integer","title":"Position","default":0}},"type":"object","required":["evaluation_template_id"],"title":"DynamicEvaluationQuestionAssign","description":"Schema for assigning dynamic questions"},"EvaluationResult":{"type":"string","enum":["pass","fail","n/a"],"title":"EvaluationResult"},"EvaluationTemplateRead":{"properties":{"name":{"type":"string","title":"Name","default":""},"evaluation_criteria":{"type":"string","title":"Evaluation Criteria","default":""},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"id":{"type":"string","format":"uuid","title":"Id"}},"type":"object","required":["id"],"title":"EvaluationTemplateRead","description":"Schema for reading evaluation templates","example":{"description":"The provided information in the ticket/notification should be accurate.","evaluation_criteria":"Is the technical information provided accurate?","id":"00000000-0000-0000-0000-000000000000","name":"TechinfoAccurate"}},"ExternalAuthConfig":{"properties":{"name":{"type":"string","title":"Name"},"configuration":{"type":"string","title":"Configuration"},"issuer":{"type":"string","title":"Issuer"},"jwks_url":{"type":"string","title":"Jwks Url"},"audience":{"type":"string","title":"Audience"},"scope":{"type":"string","title":"Scope"},"username_claim":{"type":"string","title":"Username Claim"},"client_id":{"type":"string","title":"Client Id"},"trusted_email_domains":{"items":{"type":"string"},"type":"array","title":"Trusted Email Domains"}},"type":"object","required":["name","configuration","issuer","jwks_url","audience","scope","username_claim","client_id","trusted_email_domains"],"title":"ExternalAuthConfig","description":"Configuration for an external authentication provider"},"ExternalAuthProvider":{"properties":{"name":{"type":"string","title":"Name"},"authority":{"type":"string","title":"Authority"},"client_id":{"type":"string","title":"Client Id"},"scope":{"type":"string","title":"Scope"}},"type":"object","required":["name","authority","client_id","scope"],"title":"ExternalAuthProvider","description":"Configuration for an external authentication provider exposed to frontend"},"FileCategory":{"type":"string","enum":["red","blue"],"title":"FileCategory","description":"Possible file categories"},"FileRead":{"properties":{"filename":{"type":"string","title":"Filename"},"content_type":{"$ref":"#/components/schemas/FileType"},"size":{"type":"integer","title":"Size"},"category":{"$ref":"#/components/schemas/FileCategory"},"activity_id":{"type":"string","format":"uuid","title":"Activity Id"},"id":{"type":"string","format":"uuid","title":"Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"created_by":{"type":"string","format":"uuid","title":"Created By"}},"type":"object","required":["filename","content_type","size","category","activity_id","id","created_at","created_by"],"title":"FileRead","description":"Model for reading file information","example":{"created_at":"2022-01-01T00:00:00.000Z","created_by":"00000000-0000-0000-0000-000000000000","id":"00000000-0000-0000-0000-000000000000"}},"FileType":{"type":"string","enum":["image/png","image/jpeg","image/jpg","text/plain"],"title":"FileType","description":"Possible file types"},"FileUploadResponse":{"properties":{"message":{"type":"string","title":"Message"},"url":{"type":"string","title":"Url"},"file_id":{"type":"string","format":"uuid","title":"File Id"}},"type":"object","required":["message","url","file_id"],"title":"FileUploadResponse","description":"Response model for file uploads."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ImportResponse":{"properties":{"assessment_id":{"type":"string","format":"uuid","title":"Assessment Id"},"message":{"type":"string","title":"Message"},"warnings":{"items":{"type":"string"},"type":"array","title":"Warnings","default":[]}},"type":"object","required":["assessment_id","message"],"title":"ImportResponse"},"KnowledgeBaseRead":{"properties":{"name":{"type":"string","title":"Name"},"mitre_technique_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mitre Technique Id"},"content":{"anyOf":[{},{"type":"null"}],"title":"Content"},"id":{"type":"string","format":"uuid","title":"Id"}},"type":"object","required":["name","id"],"title":"KnowledgeBaseRead","description":"Knowledge Base Read Schema","example":{"content":{"sections":[{"content":"Attackers may dump LSASS locally...","tabs":[{"content":"Create dump file via Task Manager...","title":"Task Manager"},{"content":"sekurlsa::logonPasswords","title":"Mimikatz"}],"title":"Local Execution"}]},"id":"123e4567-e89b-12d3-a456-426614174000","mitre_technique_id":"T1003.001","name":"LSASS Dumping"}},"MFASetupResponse":{"properties":{"provisioning_uri":{"type":"string","title":"Provisioning Uri"},"message":{"type":"string","title":"Message"}},"type":"object","required":["provisioning_uri","message"],"title":"MFASetupResponse","description":"Response for MFA setup containing provisioning URI"},"MeanTimeMetricsItem":{"properties":{"priority":{"type":"string","title":"Priority"},"mean_time_to_detect_seconds":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Mean Time To Detect Seconds"},"mean_time_to_respond_seconds":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Mean Time To Respond Seconds"}},"type":"object","required":["priority","mean_time_to_detect_seconds","mean_time_to_respond_seconds"],"title":"MeanTimeMetricsItem"},"MessageResponse":{"properties":{"message":{"type":"string","title":"Message"}},"type":"object","required":["message"],"title":"MessageResponse","description":"Standard message response"},"MitreOverallTacticScoreItem":{"properties":{"tactic":{"type":"string","title":"Tactic"},"overall_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Overall Score"},"expected_logged_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Expected Logged Score"},"logged_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Logged Score"},"expected_prevented_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Expected Prevented Score"},"prevented_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Prevented Score"},"expected_alerted_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Expected Alerted Score"},"alerted_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Alerted Score"},"expected_stakeholder_notified_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Expected Stakeholder Notified Score"},"stakeholder_notified_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Stakeholder Notified Score"}},"type":"object","required":["tactic","overall_score","expected_logged_score","logged_score","expected_prevented_score","prevented_score","expected_alerted_score","alerted_score","expected_stakeholder_notified_score","stakeholder_notified_score"],"title":"MitreOverallTacticScoreItem"},"MitreTacticScoreItem":{"properties":{"tactic":{"type":"string","title":"Tactic"},"techniques":{"items":{"$ref":"#/components/schemas/MitreTechniqueScoreItem"},"type":"array","title":"Techniques"}},"type":"object","required":["tactic","techniques"],"title":"MitreTacticScoreItem"},"MitreTechniqueScoreItem":{"properties":{"technique":{"type":"string","title":"Technique"},"overall_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Overall Score"},"expected_logged_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Expected Logged Score"},"logged_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Logged Score"},"expected_prevented_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Expected Prevented Score"},"prevented_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Prevented Score"},"expected_alerted_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Expected Alerted Score"},"alerted_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Alerted Score"},"expected_stakeholder_notified_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Expected Stakeholder Notified Score"},"stakeholder_notified_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Stakeholder Notified Score"}},"type":"object","required":["technique","overall_score","expected_logged_score","logged_score","expected_prevented_score","prevented_score","expected_alerted_score","alerted_score","expected_stakeholder_notified_score","stakeholder_notified_score"],"title":"MitreTechniqueScoreItem"},"OTP":{"properties":{"otp":{"type":"string","maxLength":6,"minLength":6,"pattern":"^\\d{6}$","title":"Otp","description":"6-digit OTP code"}},"type":"object","required":["otp"],"title":"OTP","description":"OTP Schema","example":{"otp":"123456"}},"PaginatedResponse_ActivityGroupTemplateRead_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ActivityGroupTemplateRead"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"size":{"type":"integer","title":"Size"},"pages":{"type":"integer","title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"PaginatedResponse[ActivityGroupTemplateRead]"},"PaginatedResponse_ActivityRead_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ActivityRead"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"size":{"type":"integer","title":"Size"},"pages":{"type":"integer","title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"PaginatedResponse[ActivityRead]"},"PaginatedResponse_ActivityTemplateRead_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ActivityTemplateRead"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"size":{"type":"integer","title":"Size"},"pages":{"type":"integer","title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"PaginatedResponse[ActivityTemplateRead]"},"PaginatedResponse_AssessmentRead_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/AssessmentRead"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"size":{"type":"integer","title":"Size"},"pages":{"type":"integer","title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"PaginatedResponse[AssessmentRead]"},"PaginatedResponse_AssetRead_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/AssetRead"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"size":{"type":"integer","title":"Size"},"pages":{"type":"integer","title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"PaginatedResponse[AssetRead]"},"PaginatedResponse_CampaignTemplateRead_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/CampaignTemplateRead"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"size":{"type":"integer","title":"Size"},"pages":{"type":"integer","title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"PaginatedResponse[CampaignTemplateRead]"},"PaginatedResponse_EvaluationTemplateRead_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/EvaluationTemplateRead"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"size":{"type":"integer","title":"Size"},"pages":{"type":"integer","title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"PaginatedResponse[EvaluationTemplateRead]"},"PaginatedResponse_KnowledgeBaseRead_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/KnowledgeBaseRead"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"size":{"type":"integer","title":"Size"},"pages":{"type":"integer","title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"PaginatedResponse[KnowledgeBaseRead]"},"PaginatedResponse_TagRead_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/TagRead"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"size":{"type":"integer","title":"Size"},"pages":{"type":"integer","title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"PaginatedResponse[TagRead]"},"PaginatedResponse_UserRead_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/UserRead"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"size":{"type":"integer","title":"Size"},"pages":{"type":"integer","title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"PaginatedResponse[UserRead]"},"PriorityAverageScoreItem":{"properties":{"priority":{"type":"string","title":"Priority"},"average_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Average Score"}},"type":"object","required":["priority","average_score"],"title":"PriorityAverageScoreItem"},"PriorityBreakdownItem":{"properties":{"priority":{"type":"string","title":"Priority"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["priority","count"],"title":"PriorityBreakdownItem"},"ReportContextRequest":{"properties":{"sort_by":{"type":"string","enum":["activity_position","name","mitre_tactic","priority","state","start_time","coverage_score"],"title":"Sort By","default":"activity_position"},"sort_order":{"type":"string","enum":["asc","desc"],"title":"Sort Order","default":"asc"}},"type":"object","title":"ReportContextRequest","description":"Schema for report context (data layer) request"},"ReportGenerateRequest":{"properties":{"sort_by":{"type":"string","enum":["activity_position","name","mitre_tactic","priority","state","start_time","coverage_score"],"title":"Sort By","default":"activity_position"},"sort_order":{"type":"string","enum":["asc","desc"],"title":"Sort Order","default":"asc"},"template_id":{"type":"string","format":"uuid","title":"Template Id"}},"type":"object","required":["template_id"],"title":"ReportGenerateRequest","description":"Schema for report generation request"},"ReportTemplateFormat":{"type":"string","enum":["html","docx"],"title":"ReportTemplateFormat","description":"Possible report template formats"},"ReportTemplateRead":{"properties":{"filename":{"type":"string","title":"Filename"},"format":{"$ref":"#/components/schemas/ReportTemplateFormat"},"id":{"type":"string","format":"uuid","title":"Id"}},"type":"object","required":["filename","format","id"],"title":"ReportTemplateRead","description":"Schema for reading report template"},"SeverityAccuracyItem":{"properties":{"expected_severity":{"type":"string","title":"Expected Severity"},"actual_informational":{"type":"integer","title":"Actual Informational"},"actual_low":{"type":"integer","title":"Actual Low"},"actual_medium":{"type":"integer","title":"Actual Medium"},"actual_high":{"type":"integer","title":"Actual High"},"actual_critical":{"type":"integer","title":"Actual Critical"},"actual_none":{"type":"integer","title":"Actual None"}},"type":"object","required":["expected_severity","actual_informational","actual_low","actual_medium","actual_high","actual_critical","actual_none"],"title":"SeverityAccuracyItem"},"StateDistributionItem":{"properties":{"state":{"type":"string","title":"State"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["state","count"],"title":"StateDistributionItem"},"TacticBase":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"mitre_id":{"type":"string","title":"Mitre Id"},"name":{"type":"string","title":"Name"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"}},"type":"object","required":["id","mitre_id","name"],"title":"TacticBase","description":"Shared properties for multiple tactic schemas","example":{"id":"00000000-0000-0000-0000-000000000000","mitre_id":"T1001","name":"Data from local system","url":"https://attack.mitre.org/techniques/T1001"}},"TacticWithTechniques":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"mitre_id":{"type":"string","title":"Mitre Id"},"name":{"type":"string","title":"Name"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"},"techniques":{"items":{"$ref":"#/components/schemas/TechniqueBase"},"type":"array","title":"Techniques"}},"type":"object","required":["id","mitre_id","name","techniques"],"title":"TacticWithTechniques","description":"Properties of a tactic with its associated techniques","example":{"id":"00000000-0000-0000-0000-000000000000","mitre_id":"T1001","name":"Data from local system","url":"https://attack.mitre.org/techniques/T1001"}},"TagBase":{"properties":{"name":{"type":"string","title":"Name"},"color":{"type":"string","pattern":"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$","title":"Color","description":"Hex color code (e.g., #FF0000 or #F00)"}},"type":"object","required":["name","color"],"title":"TagBase","description":"Shared properties for multiple tag schemas","example":{"color":"#FF0000","name":"ToDo"}},"TagRead":{"properties":{"name":{"type":"string","title":"Name"},"color":{"type":"string","pattern":"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$","title":"Color","description":"Hex color code (e.g., #FF0000 or #F00)"},"id":{"type":"string","format":"uuid","title":"Id"},"deleted":{"type":"boolean","title":"Deleted"}},"type":"object","required":["name","color","id","deleted"],"title":"TagRead","description":"Properties to return via API for general tag requests","example":{"color":"#FF0000","deleted":false,"id":"00000000-0000-0000-0000-000000000000","name":"ToDo"}},"TechniqueBase":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"mitre_id":{"type":"string","title":"Mitre Id"},"name":{"type":"string","title":"Name"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"}},"type":"object","required":["id","mitre_id","name"],"title":"TechniqueBase","description":"Shared properties for multiple technique schemas","example":{"id":"00000000-0000-0000-0000-000000000000","mitre_id":"T1001","name":"Data from local system","url":"https://attack.mitre.org/techniques/T1001"}},"TechniqueWithTactics":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"mitre_id":{"type":"string","title":"Mitre Id"},"name":{"type":"string","title":"Name"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"},"tactics":{"items":{"$ref":"#/components/schemas/TacticBase"},"type":"array","title":"Tactics"}},"type":"object","required":["id","mitre_id","name","tactics"],"title":"TechniqueWithTactics","description":"Properties of a technique with its associated tactics","example":{"id":"00000000-0000-0000-0000-000000000000","mitre_id":"T1001","name":"Data from local system","url":"https://attack.mitre.org/techniques/T1001"}},"Token":{"properties":{"access_token":{"type":"string","title":"Access Token"},"token_type":{"type":"string","title":"Token Type"},"next_url":{"type":"string","title":"Next Url"}},"type":"object","required":["access_token","token_type","next_url"],"title":"Token","description":"JWT token response schema"},"UserBase":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"role":{"$ref":"#/components/schemas/UserRole"},"disabled":{"type":"boolean","title":"Disabled"}},"type":"object","required":["email","role","disabled"],"title":"UserBase","description":"Shared properties for multiple user schemas","example":{"disabled":false,"email":"user@raptr.app","role":"user"}},"UserCreate":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"role":{"$ref":"#/components/schemas/UserRole"},"disabled":{"type":"boolean","title":"Disabled"},"password":{"type":"string","title":"Password"}},"type":"object","required":["email","role","disabled","password"],"title":"UserCreate","description":"Properties to receive via API on user creation. Password is required","example":{"disabled":false,"email":"user@raptr.app","password":"Password.123","role":"user"}},"UserPasswordMfaReset":{"properties":{"password":{"type":"string","title":"Password"}},"type":"object","required":["password"],"title":"UserPasswordMfaReset","description":"Properties to receive via API on user password MFA reset","example":{"password":"Password.123"}},"UserPasswordReset":{"properties":{"new_password":{"type":"string","title":"New Password"}},"type":"object","required":["new_password"],"title":"UserPasswordReset","description":"Properties to receive via API on user password reset","example":{"new_password":"Password.123"}},"UserPasswordUpdate":{"properties":{"new_password":{"type":"string","title":"New Password"},"old_password":{"type":"string","title":"Old Password"}},"type":"object","required":["new_password","old_password"],"title":"UserPasswordUpdate","description":"Properties to receive via API on user password update","example":{"new_password":"Password.123","old_password":"Password.123"}},"UserRead":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"role":{"$ref":"#/components/schemas/UserRole"},"disabled":{"type":"boolean","title":"Disabled"},"id":{"type":"string","format":"uuid","title":"Id"},"mfa_verified":{"type":"boolean","title":"Mfa Verified"},"last_login_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Login At"},"last_logout_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Logout At"}},"type":"object","required":["email","role","disabled","id","mfa_verified","last_login_at","last_logout_at"],"title":"UserRead","description":"Properties to return via API for general user requests","example":{"disabled":false,"email":"user@raptr.app","id":"00000000-0000-0000-0000-000000000000","last_login_at":"2026-01-25T16:14:55.000Z","last_logout_at":"2026-01-25T16:14:55.000Z","mfa_verified":false,"role":"user"}},"UserReadAcl":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"role":{"$ref":"#/components/schemas/UserRole"},"disabled":{"type":"boolean","title":"Disabled"},"id":{"type":"string","format":"uuid","title":"Id"},"mfa_verified":{"type":"boolean","title":"Mfa Verified"},"last_login_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Login At"},"last_logout_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Logout At"},"acl":{"anyOf":[{"items":{"$ref":"#/components/schemas/AclBase"},"type":"array"},{"type":"null"}],"title":"Acl","default":[]}},"type":"object","required":["email","role","disabled","id","mfa_verified","last_login_at","last_logout_at"],"title":"UserReadAcl","description":"Properties to return via API for general user requests, including ACLs","example":{"disabled":false,"email":"user@raptr.app","id":"00000000-0000-0000-0000-000000000000","last_login_at":"2026-01-25T16:14:55.000Z","last_logout_at":"2026-01-25T16:14:55.000Z","mfa_verified":false,"role":"user"}},"UserRole":{"type":"string","enum":["admin","user"],"title":"UserRole","description":"Possible user roles"},"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"}},"securitySchemes":{"OAuth2PasswordBearer":{"type":"oauth2","flows":{"password":{"scopes":{},"tokenUrl":"/api/v1/auth/token"}}}}}} \ No newline at end of file diff --git a/frontend/src/types/schema.ts b/frontend/src/types/schema.ts index 649d22c..6586a6b 100644 --- a/frontend/src/types/schema.ts +++ b/frontend/src/types/schema.ts @@ -145,6 +145,26 @@ export interface paths { patch?: never; trace?: never; }; + "/api/v1/auth/motd": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** + * Get Motd + * @description Get the welcome message of the day. + */ + get: operations["get_motd_api_v1_auth_motd_get"]; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; "/api/v1/acl/": { parameters: { query?: never; @@ -2832,6 +2852,8 @@ export interface components { CUSTOM_DATA_URL: string | null; /** Atomic Red Team Url */ ATOMIC_RED_TEAM_URL: string; + /** Welcome Message */ + WELCOME_MESSAGE: string | null; /** External Auth Configs */ EXTERNAL_AUTH_CONFIGS: components["schemas"]["ExternalAuthConfig"][] | null; }; @@ -3878,6 +3900,26 @@ export interface operations { }; }; }; + get_motd_api_v1_auth_motd_get: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Successful Response */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["MessageResponse"]; + }; + }; + }; + }; get_acls_api_v1_acl__get: { parameters: { query?: never; diff --git a/frontend/src/types/zod.ts b/frontend/src/types/zod.ts index 486e375..b46701e 100644 --- a/frontend/src/types/zod.ts +++ b/frontend/src/types/zod.ts @@ -320,6 +320,7 @@ const Configuration = z MITRE_JSON_URL: z.string(), CUSTOM_DATA_URL: z.union([z.string(), z.null()]), ATOMIC_RED_TEAM_URL: z.string(), + WELCOME_MESSAGE: z.union([z.string(), z.null()]), EXTERNAL_AUTH_CONFIGS: z.union([z.array(ExternalAuthConfig), z.null()]), }) .passthrough(); @@ -3228,6 +3229,14 @@ Returns a provisioning URI for QR code generation.`, }, ], }, + { + method: "get", + path: "/api/v1/auth/motd", + alias: "get_motd_api_v1_auth_motd_get", + description: `Get the welcome message of the day.`, + requestFormat: "json", + response: z.object({ message: z.string() }).passthrough(), + }, { method: "get", path: "/api/v1/auth/providers", diff --git a/frontend/src/views/LoginView.vue b/frontend/src/views/LoginView.vue index aebccdd..582bd85 100644 --- a/frontend/src/views/LoginView.vue +++ b/frontend/src/views/LoginView.vue @@ -3,6 +3,7 @@ import { toTypedSchema } from '@vee-validate/zod'; import { useForm } from 'vee-validate'; import { onMounted, ref } from 'vue'; import { useRouter } from 'vue-router'; +import { Info } from 'lucide-vue-next'; import { Button } from '@/components/ui/button'; import { Card, @@ -20,18 +21,31 @@ import { FormMessage, } from '@/components/ui/form'; import { Input } from '@/components/ui/input'; +import { api } from '@/services/api'; import { useAuthStore } from '@/stores/auth'; import { schemas } from '@/types/zod'; const router = useRouter(); const authStore = useAuthStore(); const loading = ref(false); +const motd = ref(null); const usernameInput = ref | null>(null); -onMounted(() => { +onMounted(async () => { authStore.fetchProviders(); usernameInput.value?.$el?.focus(); + + try { + const response = await api.get<{ message: string | null }>( + '/auth/motd', + ); + if (response.data.message) { + motd.value = response.data.message; + } + } catch (e) { + // Silently ignore if MOTD fetch fails + } }); const formSchema = toTypedSchema( @@ -68,7 +82,12 @@ const onSubmit = form.handleSubmit(async (values) => {