@lap v0.3
# Machine-readable API spec. Each @endpoint block is one API call.
@api Snyk API & Web's API Reference Documentation
@base https://api.probely.com/
@version 1.2.0
@auth ApiKey Authorization in header
@endpoints 378
@hint download_for_search
@toc account(22), api-user-roles(10), api-users(10), audit-log(2), credentials(6), credits-packs(2), dashboard(8), definitions(2), discovery(13), domains(7), events(2), findings(8), frameworks(2), integrations(28), labels(18), permissions(1), plans(1), profile(9), report(8), roles(6), scan-profiles(5), scanning-agents(8), scans(8), scheduledscans(5), stored-reports(8), targets(147), teams(7), user-roles(10), users(8), webhooks(6), wizard(1)

@group account
@endpoint GET /account/available-slots/
@returns(200) {available_slots: int?}
@errors {400, 401, 404, 500}

@endpoint GET /account/billing/
@returns(200) {first_name: str, last_name: str, company: str, email: str(email), address: str, city: str, country: str, state: str, zip: str, vat_number: str, reg_number: str, other: str, currency_code: str}
@errors {400, 401, 404, 500}

@endpoint PUT /account/billing/
@required {currency_code: str}
@optional {first_name: str=, last_name: str=, company: str=, email: str(email)=, address: str=, city: str=, country: str=, state: str=, zip: str=, vat_number: str, reg_number: str, other: str}
@returns(200) {first_name: str, last_name: str, company: str, email: str(email), address: str, city: str, country: str, state: str, zip: str, vat_number: str, reg_number: str, other: str, currency_code: str}
@errors {400, 401, 404, 500}

@endpoint PATCH /account/billing/
@optional {first_name: str=, last_name: str=, company: str=, email: str(email)=, address: str=, city: str=, country: str=, state: str=, zip: str=, vat_number: str, reg_number: str, other: str, currency_code: str}
@returns(200) {first_name: str, last_name: str, company: str, email: str(email), address: str, city: str, country: str, state: str, zip: str, vat_number: str, reg_number: str, other: str, currency_code: str}
@errors {400, 401, 404, 500}

@endpoint GET /account/credits/
@returns(200) {promotional_credits: int(int64), purchased_credits: int(int64), outstanding_credits: int(int64), on_hold_promotional: int(int64), on_hold_purchased: int(int64), promotional_expiration_date: str(date)?, purchased_expiration_date: str(date)?, balance: int}
@errors {400, 401, 500}

@endpoint POST /account/credits/top-up/
@required {pack_id: str}
@optional {coupon_ids: [str]}
@returns(200) {id: str, sub_total: int, total: int, amount_due: int, amount_paid: int, currency_code: str, credits_applied: int, line_items: [map], discounts: [map], taxes: [map]}
@errors {400, 401, 500}

@endpoint GET /account/credits/top-up/settings/
@returns(200) {auto_top_up_on_expiration: bool, auto_top_up_on_insufficient: bool, auto_top_up_credits_pack: any?}
@errors {400, 401, 500}

@endpoint PUT /account/credits/top-up/settings/
@optional {auto_top_up_on_expiration: bool, auto_top_up_on_insufficient: bool, auto_top_up_credits_pack: any}
@returns(201) {auto_top_up_on_expiration: bool, auto_top_up_on_insufficient: bool, auto_top_up_credits_pack: any?}
@errors {400, 401, 500}

@endpoint PATCH /account/credits/top-up/settings/
@optional {auto_top_up_on_expiration: bool, auto_top_up_on_insufficient: bool, auto_top_up_credits_pack: any}
@returns(201) {auto_top_up_on_expiration: bool, auto_top_up_on_insufficient: bool, auto_top_up_credits_pack: any?}
@errors {400, 401, 500}

@endpoint GET /account/credits/usage/
@optional {end_dt: str(date-time), length: int, operation: [str], ordering: str, page: int, scope__name: str, search: str, start_dt: str(date-time), target: [str], target__label: [str]}
@returns(200) {count: int, page_total: int, page: int, length: int, results: [map]}
@errors {400, 401, 500}

@endpoint GET /account/credits/usage/report/
@optional {end_dt: str(date-time), operation: str(earned/expired/purchased/used), start_dt: str(date-time), target: str, target__label: str}
@returns(200)
@errors {400, 401, 500}

@endpoint GET /account/entitlements/
@returns(200) {pool_size: int, allow_extra_users: bool, max_users: int, max_scan_freq: str, max_scan_number: int, max_credit_targets: int, allow_billing: bool, allow_create_and_destroy_targets: bool, max_ultd_targets: int, allow_scope_labels: bool, allowed_scope_types: [str], spa_limit: int, scanning_agent_limit: int, verify_target_ownership: bool, allowed_builtin_scan_profiles: [str], allow_custom_scan_profiles: bool, allow_bulk_scan: bool, allow_pause_and_resume_scan: bool, allow_partial_scan: bool, allow_scanning_2fa_targets: bool, allow_teams: bool, allow_bulk: bool, allow_dashboard: bool, allow_roles: bool, allow_scanning_agent: bool, allow_user_labels: bool, allow_custom_roles: bool, allow_sso: bool, allow_target_import_export: bool, allow_full_coverage_report: bool, allow_audit_log: bool, allow_discovery: bool, allow_aws: bool, allow_cloudflare: bool, allow_akamai: bool, allow_bola: bool, allow_self_findings_review: bool, allow_mtls: bool, allow_message_signature: bool, allow_mle: bool, allowed_signing_methods: [str], allow_ai_scanning_enhancements_switch: bool, allow_azure_devops: bool, allow_jira_cloud: bool, allow_jira_server: bool, allow_slack: bool, allow_defectdojo: bool, allow_webhooks: bool, allow_shortcut: bool, allow_heroku_sso: bool, allow_snyk_sast: bool, allowed_report_file_formats: [str], allowed_report_types: [str], allow_stored_reports: bool, allowed_stored_report_file_formats: [str], allowed_stored_report_types: [str], allow_buying_credits: bool, allow_credits: bool, allow_unlimited: bool, allow_ultd_change: bool, number_unused_slots: int, allowed_credits_packs: [map], credits_hourly_cost: int, credits_cap: int, credits_lightning_cost: int, credits_auth_cost: int, allowed_monthly_promotional_credits: int, number_available_ultd_targets_minus_team_quotas: int, allowed_builtin_roles: [str], allow_target_roles: bool, allow_dynamic_idp_roles_mapping: bool, is_snyk_customer: bool, allow_postman: bool}
@errors {400, 401, 404, 500}

@endpoint GET /account/invoices/
@optional {length: int, ordering: str, page: int, search: str}
@returns(200) {count: int, page_total: int, page: int, length: int, results: [map]}
@errors {400, 401, 500}

@endpoint GET /account/invoices/{id}/pdf/
@required {id: str}
@returns(202) {detail: str}
@errors {400, 401, 500}

@endpoint GET /account/settings/
@returns(200) {secrets_obfuscation: bool, require_expiration_date: bool, maximum_acceptance_period: int(int64)?, require_approver_name: bool, require_approval_date: bool, self_findings_review_enabled: bool}
@errors {400, 401, 500}

@endpoint PUT /account/settings/
@optional {secrets_obfuscation: bool, require_expiration_date: bool, maximum_acceptance_period: int(int64), require_approver_name: bool, require_approval_date: bool, self_findings_review_enabled: bool}
@returns(200) {secrets_obfuscation: bool, require_expiration_date: bool, maximum_acceptance_period: int(int64)?, require_approver_name: bool, require_approval_date: bool, self_findings_review_enabled: bool}
@errors {400, 401, 404, 500}

@endpoint PATCH /account/settings/
@optional {secrets_obfuscation: bool, require_expiration_date: bool, maximum_acceptance_period: int(int64), require_approver_name: bool, require_approval_date: bool, self_findings_review_enabled: bool}
@returns(200) {secrets_obfuscation: bool, require_expiration_date: bool, maximum_acceptance_period: int(int64)?, require_approver_name: bool, require_approval_date: bool, self_findings_review_enabled: bool}
@errors {400, 401, 404, 500}

@endpoint GET /account/subscription/
@returns(200) {plan: map{id: str, name: str, family: str?, description: str, is_trial: bool, charge_model: str, price: int, currency_code: str, period: int, period_unit: str, allowed_builtin_scan_profiles: [str], allowed_credits_packs: [map], discount: int, savings: int, tiers: any?}, subscription_status: str, has_used_trial: bool, trial_end: str(date-time)?, next_billing_at: str(date-time)?, next_billing_amount: int(int64), plan_amount: int(int64), auto_collection: bool, number_free_ultd_targets: int(int64), max_ultd_targets: int, number_paid_ultd_targets: int(int64), number_used_ultd_targets: int(int64), number_available_ultd_targets: int(int64), number_available_ultd_targets_minus_team_quotas: int(int64), number_used_credit_targets: int, number_available_credit_targets: int, past_year_ultd_target_changes: int, max_yearly_ultd_target_changes: int, next_allowed_ultd_target_change: str(date-time)?, channel: str?}
@errors {400, 401, 500}

@endpoint GET /account/unlimited/
@optional {exclude_team: [str], id: [str], label: [str], label_logical_operator: str(and/or), ordering: str, risk: [int], scan_profile: [str], search: str, team: [str], type: [str], unlimited: bool, verified: bool}
@returns(200)
@errors {400, 401, 500}

@endpoint PUT /account/unlimited/
@optional {exclude_team: [str], id: [str], label: [str], label_logical_operator: str(and/or), ordering: str, risk: [int], scan_profile: [str], search: str, team: [str], type: [str], unlimited: bool, verified: bool}
@returns(200)
@errors {400, 401, 500}

@endpoint PATCH /account/unlimited/
@optional {exclude_team: [str], id: [str], label: [str], label_logical_operator: str(and/or), ordering: str, risk: [int], scan_profile: [str], search: str, team: [str], type: [str], unlimited: bool, verified: bool}
@returns(200)
@errors {400, 401, 500}

@endpoint DELETE /account/unlimited/
@optional {exclude_team: [str], id: [str], label: [str], label_logical_operator: str(and/or), ordering: str, risk: [int], scan_profile: [str], search: str, team: [str], type: [str], unlimited: bool, verified: bool}
@returns(200)
@errors {400, 401, 500}

@endgroup

@group api-user-roles
@endpoint GET /api-user-roles/
@optional {account: bool, length: int, ordering: str, page: int, role: [str], target: [str], team: [str], user: [str]}
@returns(200) {count: int, page_total: int, page: int, length: int, results: [map]}
@errors {400, 401, 403, 500}

@endpoint POST /api-user-roles/
@required {user: map{id!: str}, role: map{id!: str}, scope: map{tier!: str, team: map, target: map}}
@returns(201) {id: str, user: map{id: str, email: str(email), name: str}, role: map{id: str, name: str, permissions: [map], custom: bool, description: str?}, scope: map{tier: str, target: map{id: str, name: str, url: str(uri)}, team: map{id: str, name: str}}}
@errors {400, 401, 403, 500}

@endpoint GET /api-user-roles/{id}/
@required {id: str}
@returns(200) {id: str, user: map{id: str, email: str(email), name: str}, role: map{id: str, name: str, permissions: [map], custom: bool, description: str?}, scope: map{tier: str, target: map{id: str, name: str, url: str(uri)}, team: map{id: str, name: str}}}
@errors {400, 401, 404, 500}

@endpoint PUT /api-user-roles/{id}/
@required {id: str, id: str, user: map{id!: str}, role: map{id!: str}, scope: map{tier!: str, team: map, target: map}}
@returns(200) {id: str, user: map{id: str, email: str(email), name: str}, role: map{id: str, name: str, permissions: [map], custom: bool, description: str?}, scope: map{tier: str, target: map{id: str, name: str, url: str(uri)}, team: map{id: str, name: str}}}
@errors {400, 401, 404, 500}

@endpoint PATCH /api-user-roles/{id}/
@required {id: str}
@optional {id: str, user: map{id!: str}, role: map{id!: str}, scope: map{tier!: str, team: map, target: map}}
@returns(200) {id: str, user: map{id: str, email: str(email), name: str}, role: map{id: str, name: str, permissions: [map], custom: bool, description: str?}, scope: map{tier: str, target: map{id: str, name: str, url: str(uri)}, team: map{id: str, name: str}}}
@errors {400, 401, 404, 500}

@endpoint DELETE /api-user-roles/{id}/
@required {id: str}
@returns(204)
@errors {400, 401, 404, 500}

@endpoint POST /api-user-roles/bulk/create/
@returns(201)
@errors {400, 401, 500}

@endpoint POST /api-user-roles/bulk/delete/
@required {ids: [str]}
@returns(200) {ids: [str]}
@errors {400, 401, 404, 500}

@endpoint POST /api-user-roles/bulk/operations/
@optional {create: [map{user!: map, role!: map, scope!: map}], update: [map{id!: str, user!: map, role!: map, scope!: map}], delete: [map{id!: str}]}
@returns(200) {create: [map], update: [map], delete: map{ids: [str]}}
@errors {400, 401, 500}

@endpoint POST /api-user-roles/bulk/update/
@returns(201)
@errors {400, 401, 500}

@endgroup

@group api-users
@endpoint GET /api-users/
@optional {account: bool, active: bool, creator: [str], exclude: [str], exclude_target: [str], exclude_team: [str], label: [str], label_logical_operator: str(and/or), length: int, mfa_enabled: bool, no_access: bool, ordering: str, page: int, role: [str], search: str, target: [str], team: [str]}
@returns(200) {count: int, page_total: int, page: int, length: int, results: [map]}
@errors {400, 401, 500}

@endpoint POST /api-users/
@required {name: str}
@optional {title: str(ceo/cto/cso/seceng/dev/devop/manager/other/), active: bool=true, labels: [any], user_roles: [map{id!: str, role!: map, scope!: map}], days_valid_for: int}
@returns(200) {id: str, name: str, changed_by: any, changed: str(date-time), active: bool, labels: [map], user_roles: [map], is_apiuser: bool, key: str, expiration_date: str(date-time)?, days_valid_for: int}
@errors {400, 401, 500}

@endpoint GET /api-users/{id}/
@required {id: str}
@returns(200) {id: str, name: str, changed_by: any, changed: str(date-time), active: bool, labels: [map], user_roles: [map], is_apiuser: bool, key: str, expiration_date: str(date-time)?, days_valid_for: int}
@errors {400, 401, 500}

@endpoint PUT /api-users/{id}/
@required {id: str, id: str, email: str(email), name: str, is_billing_admin: bool, changed_by: any, changed: str(date-time), labels: [map{id!: str, name!: str, color: str, changed_by!: any, changed!: str(date-time)}], user_roles: [map{role!: map, scope!: map}], last_login: str(date-time), is_apiuser: bool, mfa_enabled: bool}
@optional {title: str(ceo/cto/cso/seceng/dev/devop/manager/other/), active: bool=true}
@returns(200) {id: str, name: str, changed_by: any, changed: str(date-time), active: bool, labels: [map], user_roles: [map], is_apiuser: bool, key: str, expiration_date: str(date-time)?, days_valid_for: int}
@errors {400, 401, 500}

@endpoint PATCH /api-users/{id}/
@required {id: str}
@optional {id: str, email: str(email), name: str, title: str(ceo/cto/cso/seceng/dev/devop/manager/other/), is_billing_admin: bool, changed_by: any, changed: str(date-time), active: bool=true, labels: [map{id!: str, name!: str, color: str, changed_by!: any, changed!: str(date-time)}], user_roles: [map{role!: map, scope!: map}], last_login: str(date-time), is_apiuser: bool, mfa_enabled: bool}
@returns(200) {id: str, name: str, changed_by: any, changed: str(date-time), active: bool, labels: [map], user_roles: [map], is_apiuser: bool, key: str, expiration_date: str(date-time)?, days_valid_for: int}
@errors {400, 401, 500}

@endpoint DELETE /api-users/{id}/
@required {id: str}
@returns(200) {id: str, name: str, changed_by: any, changed: str(date-time), active: bool, labels: [map], user_roles: [map], is_apiuser: bool, key: str, expiration_date: str(date-time)?, days_valid_for: int}
@errors {400, 401, 500}

@endpoint GET /api-users/{user_id}/targets/
@required {user_id: str}
@optional {enabled: bool, exclude_team: [str], id: [str], label: [str], label_logical_operator: str(and/or), length: int, ordering: str, page: int, risk: [str], role: [str], scan_profile: [str], search: str, team: [str], type: [str], unlimited: bool, verified: bool}
@returns(200) {count: int, page_total: int, page: int, length: int, results: [map]}
@errors {400, 401, 500}

@endpoint POST /api-users/bulk/update/
@required {ids: [str], id: str, email: str(email), name: str, is_billing_admin: bool, changed_by: any, changed: str(date-time), labels: [map{id!: str, name!: str, color: str, changed_by!: any, changed!: str(date-time)}], user_roles: [map{role!: map, scope!: map}], last_login: str(date-time), is_apiuser: bool, mfa_enabled: bool}
@optional {title: str(ceo/cto/cso/seceng/dev/devop/manager/other/), active: bool=true}
@returns(200) {id: str, name: str, changed_by: any, changed: str(date-time), active: bool, labels: [map], user_roles: [map], is_apiuser: bool, key: str, expiration_date: str(date-time)?, days_valid_for: int}
@errors {400, 401, 500}

@endpoint GET /api-users/policy/
@returns(200) {max_api_key_duration_days: int(int64), enable_max_api_key_duration: bool, disable_keys_on_user_disabled: bool}
@errors {400, 401, 500}

@endpoint PUT /api-users/policy/
@optional {max_api_key_duration_days: int(int64), enable_max_api_key_duration: bool, disable_keys_on_user_disabled: bool}
@returns(200) {max_api_key_duration_days: int(int64), enable_max_api_key_duration: bool, disable_keys_on_user_disabled: bool}
@errors {400, 401, 500}

@endgroup

@group audit-log
@endpoint GET /audit-log/
@optional {end_dt: str(date-time), length: int, ordering: str, page: int, search: str, start_dt: str(date-time), user: str}
@returns(200) {count: int, page_total: int, page: int, length: int, results: [map]}
@errors {400, 401, 500}

@endpoint GET /audit-log/download/
@optional {end_dt: str(date-time), start_dt: str(date-time), user: str}
@returns(200)
@errors {400, 401, 500}

@endgroup

@group credentials
@endpoint GET /credentials/
@optional {creator: str, is_sensitive: bool, length: int, ordering: [str], page: int, search: str, team: [str]}
@returns(200) {count: int, page_total: int, page: int, length: int, results: [map]}
@errors {400, 401, 404, 500}

@endpoint POST /credentials/
@required {id: str, uri: str, name: str, value: any, created_at: str(date-time), updated_at: str(date-time), creator: any, usage_count: int, references: [map{root_object_id!: str, root_object_type!: str, root_object_display_name!: str, ui_reference_key!: str}]}
@optional {team: str, description: str, is_sensitive: bool}
@returns(201) {id: str, uri: str, name: str, team: str?, description: str, is_sensitive: bool, value: any?, created_at: str(date-time), updated_at: str(date-time), creator: any, usage_count: int, references: [map]}
@errors {400, 401, 404, 500}

@endpoint GET /credentials/{id}/
@required {id: str}
@returns(200) {id: str, uri: str, name: str, team: str?, description: str, is_sensitive: bool, value: any?, created_at: str(date-time), updated_at: str(date-time), creator: any, usage_count: int, references: [map]}
@errors {400, 401, 404, 500}

@endpoint PUT /credentials/{id}/
@required {id: str, id: str, uri: str, name: str, value: any, created_at: str(date-time), updated_at: str(date-time), creator: any, usage_count: int, references: [map{root_object_id!: str, root_object_type!: str, root_object_display_name!: str, ui_reference_key!: str}]}
@optional {team: str, description: str, is_sensitive: bool}
@returns(200) {id: str, uri: str, name: str, team: str?, description: str, is_sensitive: bool, value: any?, created_at: str(date-time), updated_at: str(date-time), creator: any, usage_count: int, references: [map]}
@errors {400, 401, 404, 500}

@endpoint PATCH /credentials/{id}/
@required {id: str}
@optional {id: str, uri: str, name: str, team: str, description: str, is_sensitive: bool, value: any, created_at: str(date-time), updated_at: str(date-time), creator: any, usage_count: int, references: [map{root_object_id!: str, root_object_type!: str, root_object_display_name!: str, ui_reference_key!: str}]}
@returns(200) {id: str, uri: str, name: str, team: str?, description: str, is_sensitive: bool, value: any?, created_at: str(date-time), updated_at: str(date-time), creator: any, usage_count: int, references: [map]}
@errors {400, 401, 404, 500}

@endpoint DELETE /credentials/{id}/
@required {id: str}
@returns(204)
@errors {400, 401, 404, 500}

@endgroup

@group credits-packs
@endpoint GET /credits-packs/
@optional {length: int, page: int}
@returns(200) {count: int, page_total: int, page: int, length: int, results: [map]}
@errors {400, 401, 500}

@endpoint GET /credits-packs/{id}/
@required {id: str}
@returns(200) {id: str, name: str, price: int, currency_code: str, pack_amount: int(int64), discount: int, savings: int}
@errors {400, 401, 500}

@endgroup

@group dashboard
@endpoint GET /dashboard/aggregated-risk-trend/
@optional {label: [str], ordering: str, search: str, severity: [int], target: [str], team: [str]}
@returns(200) {start: num, stop: num, step: num, results: num}
@errors {400, 401, 404, 500}

@endpoint GET /dashboard/average-fix-time/
@optional {format: str(csv/json), label: [str], ordering: str, search: str, severity: [int], target: [str], team: [str]}
@returns(200) {results: map{<vuln name>: str}}
@errors {400, 401, 404, 500}

@endpoint GET /dashboard/fixed-vulnerabilities-trend/
@optional {label: [str], ordering: str, search: str, severity: [int], target: [str], team: [str]}
@returns(200) {start: str(date-time), stop: str(date-time), step: num, results: map{fixed: [[any]], pending: [[any]]}}
@errors {400, 401, 404, 500}

@endpoint GET /dashboard/needs-attention-pie/
@optional {label: [str], ordering: str, search: str, severity: [int], target: [str], team: [str]}
@returns(200) {results: [[any]]}
@errors {400, 401, 404, 500}

@endpoint GET /dashboard/needs-attention-top/
@optional {format: str(csv/json), label: [str], ordering: str, search: str, severity: [int], target: [str], team: [str]}
@returns(200)
@errors {400, 401, 404, 500}

@endpoint GET /dashboard/risk-trend/
@optional {format: str(csv/json), label: [str], ordering: str, search: str, severity: [int], target: [str], team: [str]}
@returns(200)
@errors {400, 401, 404, 500}

@endpoint GET /dashboard/severity-trend/
@optional {format: str(csv/json), label: [str], ordering: str, search: str, severity: [int], target: [str], team: [str]}
@returns(200) {start: num, stop: num, step: num, results: num}
@errors {400, 401, 404, 500}

@endpoint GET /dashboard/top-vulnerabilities/
@optional {label: [str], ordering: str, search: str, severity: [int], target: [str], team: [str]}
@returns(200) {results: [int]}
@errors {400, 401, 404, 500}

@endgroup

@group definitions
@endpoint GET /definitions/
@optional {length: int, ordering: str, page: int, passive: bool, search: str, severity: [int]}
@returns(200) {count: int, page_total: int, page: int, length: int, results: [map]}
@errors {400, 401, 500}

@endpoint GET /definitions/{id}/
@required {id: str}
@returns(200) {id: str, name: str, desc: str?, changed: str(date-time), severity: int?, cvss_vector: str?, cwe_id: str?, cwe_name: str?, passive: bool}
@errors {400, 401, 404, 500}

@endgroup

@group discovery
@endpoint GET /discovery/assets/
@optional {has_target: bool, label: [str], label_logical_operator: str(and/or), length: int, ordering: str, owner: [str], owner_logical_operator: str(and/or), page: int, risk: [any], score: [str], search: str, source: [str], state: [str], technology: str, type: [str]}
@returns(200) {count: int, page_total: int, page: int, length: int, results: [map]}
@errors {400, 401, 500}

@endpoint GET /discovery/assets/{discovery_asset_id}/logs/
@required {discovery_asset_id: str}
@optional {event_type: [str], length: int, ordering: str, page: int, search: str}
@returns(200) {count: int, page_total: int, page: int, length: int, results: [map]}
@errors {400, 401, 500}

@endpoint GET /discovery/assets/{id}/
@required {id: str}
@returns(200) {id: str, account: str, name: str, url: str, type: str, last_seen: str(date-time), first_seen: str(date-time), sources: [map], technologies: [map], authorities: str, risk: any?, score: str, security_headers_url: str, state: str, screenshot: str(uri)?, target: any, owners: [any], comment: str?, labels: [any], redirect_from: any?, redirect_to: str, api_schema_file: str(uri)?}
@errors {400, 401, 404, 500}

@endpoint PUT /discovery/assets/{id}/
@required {id: str, id: str, account: str, name: str, url: str, type: str(web/api), last_seen: str(date-time), first_seen: str(date-time), sources: [map{id!: str, name!: str}], technologies: [map{id: str, name: str, desc: str}], authorities: str, risk: any(0/10/20/30/40), score: str(/A+/A/B/C/D/E/F/R), security_headers_url: str, screenshot: str(uri), target: any, redirect_from: any, redirect_to: str, api_schema_file: str(uri)}
@optional {state: str(NEW/ACTIVE/HIDDEN/ARCHIVED), owners: [any], comment: str, labels: [any]}
@returns(200) {id: str, account: str, name: str, url: str, type: str, last_seen: str(date-time), first_seen: str(date-time), sources: [map], technologies: [map], authorities: str, risk: any?, score: str, security_headers_url: str, state: str, screenshot: str(uri)?, target: any, owners: [any], comment: str?, labels: [any], redirect_from: any?, redirect_to: str, api_schema_file: str(uri)?}
@errors {400, 401, 404, 500}

@endpoint PATCH /discovery/assets/{id}/
@required {id: str}
@optional {id: str, account: str, name: str, url: str, type: str(web/api), last_seen: str(date-time), first_seen: str(date-time), sources: [map{id!: str, name!: str}], technologies: [map{id: str, name: str, desc: str}], authorities: str, risk: any(0/10/20/30/40), score: str(/A+/A/B/C/D/E/F/R), security_headers_url: str, state: str(NEW/ACTIVE/HIDDEN/ARCHIVED), screenshot: str(uri), target: any, owners: [any], comment: str, labels: [any], redirect_from: any, redirect_to: str, api_schema_file: str(uri)}
@returns(200) {id: str, account: str, name: str, url: str, type: str, last_seen: str(date-time), first_seen: str(date-time), sources: [map], technologies: [map], authorities: str, risk: any?, score: str, security_headers_url: str, state: str, screenshot: str(uri)?, target: any, owners: [any], comment: str?, labels: [any], redirect_from: any?, redirect_to: str, api_schema_file: str(uri)?}
@errors {400, 401, 404, 500}

@endpoint POST /discovery/assets/{id}/create_target/
@required {id: str}
@optional {is_create_and_scan: bool=false, target: any}
@returns(200) {target: map{id: str, site: any, lows: int?, mediums: int?, highs: int?, criticals: int?, risk: int?, last_scan: any, running_scan: any, next_scan: any, assets: [map], scan_profile: str, type: str, unlimited: bool, report_type: str, report_fileformat: str, allowed_scan_profiles: [map], labels: [any], scanning_agent: any?, include_deduplicated_endpoints: bool?, teams: [map], blackout_period: any, fail_fast: bool, login_video: str, changed: str(date-time), changed_by: any, incremental: bool, reduced_scope: bool, schedule_incremental: bool, schedule_reduced_scope: bool, crawl_sequences_only: bool, schedule_crawl_sequences_only: bool, cancel_scan_on_nav_seq_failure: bool}, scan: map{id: str, target: any, status: str, started: str(date-time)?, completed: str(date-time)?, scan_profile: str, lows: int?, mediums: int?, highs: int?, criticals: int?, created: str(date-time), unlimited: bool, changed: str(date-time), changed_by: any, stack: [any], crawler: any, fingerprinter: any, scanner: any, target_options: any, has_sequence_navigation: bool, incremental: bool, reduced_scope: bool, crawl_sequences_only: bool, ignore_blackout_period: bool, runtime: str, duration: str, sast_job_id: str?, sast_job_status: str?, user_data: str, login_video: str, warnings: [map], scheduled: bool}}
@errors {400, 401, 404, 500}

@endpoint GET /discovery/assets/{id}/download_api_schema_file/
@required {id: str}
@returns(200)
@errors {400, 401, 404, 500}

@endpoint GET /discovery/assets/stats/
@returns(200) {discovery_assets_count: int, new_state_discovery_assets_count: int, scanned_discovery_assets_percentage: int, high_risk_discovery_assets_percentage: int, low_score_discovery_assets_percentage: int}
@errors {400, 401, 404, 500}

@endpoint GET /discovery/settings/
@returns(200) {archive_discovery_asset_after: int, archive_discovery_asset_enabled: bool}
@errors {400, 401, 500}

@endpoint PUT /discovery/settings/
@optional {archive_discovery_asset_after: int, archive_discovery_asset_enabled: bool}
@returns(200) {archive_discovery_asset_after: int, archive_discovery_asset_enabled: bool}
@errors {400, 401, 500}

@endpoint PATCH /discovery/settings/
@optional {archive_discovery_asset_after: int, archive_discovery_asset_enabled: bool}
@returns(200) {archive_discovery_asset_after: int, archive_discovery_asset_enabled: bool}
@errors {400, 401, 500}

@endpoint GET /discovery/sources/
@optional {length: int, page: int}
@returns(200) {count: int, page_total: int, page: int, length: int, results: [map]}
@errors {400, 401, 500}

@endpoint GET /discovery/status/
@returns(200) {running_scans_count: int, last_complete_scan: any, next_scheduled_scan_at: str(date-time)}
@errors {400, 401, 500}

@endgroup

@group domains
@endpoint GET /domains/
@optional {discovery_enabled: bool, length: int, ordering: str, page: int, search: str, search_fld: str, source: [str], verified: bool}
@returns(200) {count: int, page_total: int, page: int, length: int, results: [map]}
@errors {400, 401, 500}

@endpoint POST /domains/
@required {hostname: str, id: str, verification_token: str(uuid), verification_date: str(date-time), verification_method: str(file/back_office/existing_domain/dns_txt/dns/dns_cname/meta_tag/whitelist/email/aws_route53/cloudflare/waved/akamai), verification_last_error: str, verified: bool, source: any}
@optional {basic_auth_username: str, basic_auth_password: str, basic_auth_password_is_sensitive: bool, port: int, discovery_enabled: bool}
@returns(201) {hostname: str, id: str, verification_token: str(uuid), verification_date: str(date-time)?, verification_method: str, verification_last_error: str?, verified: bool, basic_auth_username: str?, basic_auth_password: str?, basic_auth_password_is_sensitive: bool, port: int?, discovery_enabled: bool, source: any}
@errors {400, 401, 500}

@endpoint GET /domains/{id}/
@required {id: str}
@returns(200) {hostname: str, id: str, verification_token: str(uuid), verification_date: str(date-time)?, verification_method: str, verification_last_error: str?, verified: bool, basic_auth_username: str?, basic_auth_password: str?, basic_auth_password_is_sensitive: bool, port: int?, discovery_enabled: bool, source: any}
@errors {400, 401, 404, 500}

@endpoint PUT /domains/{id}/
@required {id: str, hostname: str, id: str, verification_token: str(uuid), verification_date: str(date-time), verification_method: str(file/back_office/existing_domain/dns_txt/dns/dns_cname/meta_tag/whitelist/email/aws_route53/cloudflare/waved/akamai), verification_last_error: str, verified: bool, source: any}
@optional {basic_auth_username: str, basic_auth_password: str, basic_auth_password_is_sensitive: bool, port: int, discovery_enabled: bool}
@returns(200) {hostname: str, id: str, verification_token: str(uuid), verification_date: str(date-time)?, verification_method: str, verification_last_error: str?, verified: bool, basic_auth_username: str?, basic_auth_password: str?, basic_auth_password_is_sensitive: bool, port: int?, discovery_enabled: bool, source: any}
@errors {400, 401, 404, 500}

@endpoint PATCH /domains/{id}/
@required {id: str}
@optional {hostname: str, id: str, verification_token: str(uuid), verification_date: str(date-time), verification_method: str(file/back_office/existing_domain/dns_txt/dns/dns_cname/meta_tag/whitelist/email/aws_route53/cloudflare/waved/akamai), verification_last_error: str, verified: bool, basic_auth_username: str, basic_auth_password: str, basic_auth_password_is_sensitive: bool, port: int, discovery_enabled: bool, source: any}
@returns(200) {hostname: str, id: str, verification_token: str(uuid), verification_date: str(date-time)?, verification_method: str, verification_last_error: str?, verified: bool, basic_auth_username: str?, basic_auth_password: str?, basic_auth_password_is_sensitive: bool, port: int?, discovery_enabled: bool, source: any}
@errors {400, 401, 404, 500}

@endpoint DELETE /domains/{id}/
@required {id: str}
@returns(204)
@errors {400, 401, 404, 500}

@endpoint POST /domains/{id}/verify/
@required {id: str, type: str(file/dns_txt/dns/dns_cname/meta_tag)}
@returns(200) {hostname: str, id: str, verification_token: str(uuid), verification_date: str(date-time)?, verification_method: str, verification_last_error: str?, verified: bool, basic_auth_username: str?, basic_auth_password: str?, basic_auth_password_is_sensitive: bool, port: int?, discovery_enabled: bool, source: any}
@errors {400, 401, 404, 500}

@endgroup

@group events
@endpoint GET /events/
@optional {length: int, ordering: str, page: int, search: str}
@returns(200) {count: int, page_total: int, page: int, length: int, results: [map]}
@errors {400, 401, 500}

@endpoint GET /events/{id}/
@required {id: str}
@returns(200) {id: str, event_type: str, occurred_at: str(date-time), object_type: str, content: str, webhooks: [map]}
@errors {400, 401, 404, 500}

@endgroup

@group findings
@endpoint GET /findings/
@optional {approval_date: str(date), assignee: [str], changed_after: str(date-time), changed_before: str(date-time), expiration_date: str(date), id: [int], include: str, is_id_404_validation: bool=false, label: [str], label_logical_operator: str(and/or), lastfound_after: str(date-time), lastfound_before: str(date-time), length: int, new: bool, ordering: str, page: int, review_status: [str], scan: [str], search: str, severity: [int], snyk_sast: bool, state: [str], target: [str], target_label: [str], target_label_logical_operator: str(and/or), team: [str]}
@returns(200) {count: int, page_total: int, page: int, length: int, results: [map]}
@errors {400, 401, 500}

@endpoint GET /findings/{id}/
@required {id: int}
@optional {include: str}
@returns(200) {id: str, target: any, scans: str, labels: [map], fix: str, requests: [map], evidence: str, extra: str, definition: map{id: str, name: str, desc: str?, cwe_id: str?, cwe_name: str?}, url: str, path: str, method: str, insertion_point: str, parameter: str, value: str?, params: str, assignee: map{id: str, email: str(email), name: str}, state: str, severity: int, cvss_score: num(double)?, cvss_vector: str, last_found: str(date-time), retesting: bool, new: bool, review_status: str, review_reason: str, created_at: str(date-time)?, changed: str(date-time), changed_by: any, comment: str?, change_reason: str, expiration_date: str(date)?, approver_name: str, approval_date: str(date)?}
@errors {400, 401, 404, 500}

@endpoint PUT /findings/{id}/
@required {id: int, id: str, target: any, scans: str, labels: [map{id!: str, name!: str, color: str, changed_by!: any, changed!: str(date-time)}], fix: str, requests: [map{request: str, response: str}], evidence: str, extra: str, definition: map{id!: str, name: str, desc: str, cwe_id: str, cwe_name: str}, url: str, path: str, method: str(get/post/trace/options/put/delete), insertion_point: str(cookie/parameter/arbitrary_url_param/header/url_folder/url_filename/json_parameter/request_body/multipart_parameter/graphql_parameter/non_standard_parameter), parameter: str, value: str, params: str, assignee: map{id!: str, email: str(email), name!: str}, cvss_score: num(double), cvss_vector: str, retesting: bool, new: bool, created_at: str(date-time), changed: str(date-time), changed_by: any}
@optional {state: str(notfixed/invalid/accepted/fixed), severity: int(10/20/30/40), last_found: str(date-time), review_status: str(notrequired/pending/rejected/accepted/), review_reason: str, comment: str, change_reason: str, expiration_date: str(date), approver_name: str, approval_date: str(date)}
@returns(200) {id: str, target: any, scans: str, labels: [map], fix: str, requests: [map], evidence: str, extra: str, definition: map{id: str, name: str, desc: str?, cwe_id: str?, cwe_name: str?}, url: str, path: str, method: str, insertion_point: str, parameter: str, value: str?, params: str, assignee: map{id: str, email: str(email), name: str}, state: str, severity: int, cvss_score: num(double)?, cvss_vector: str, last_found: str(date-time), retesting: bool, new: bool, review_status: str, review_reason: str, created_at: str(date-time)?, changed: str(date-time), changed_by: any, comment: str?, change_reason: str, expiration_date: str(date)?, approver_name: str, approval_date: str(date)?}
@errors {400, 401, 404, 500}

@endpoint PATCH /findings/{id}/
@required {id: int}
@optional {id: int, target: str, scans: str, labels: [any], fix: str, requests: [map{request: str, response: str}], evidence: str, extra: str, definition: str, url: str, path: str, method: str(get/post/trace/options/put/delete), insertion_point: str(cookie/parameter/arbitrary_url_param/header/url_folder/url_filename/json_parameter/request_body/multipart_parameter/graphql_parameter/non_standard_parameter), parameter: str, value: str, params: str, assignee: str, state: str(notfixed/invalid/accepted/fixed), severity: int(10/20/30/40), cvss_score: num(double), cvss_vector: str, last_found: str(date-time), retesting: bool, new: bool, review_status: str(notrequired/pending/rejected/accepted/), review_reason: str, created_at: str(date-time), changed: str(date-time), changed_by: any, comment: str, change_reason: str, expiration_date: str(date), approver_name: str, approval_date: str(date)}
@returns(200) {id: str, target: any, scans: str, labels: [map], fix: str, requests: [map], evidence: str, extra: str, definition: map{id: str, name: str, desc: str?, cwe_id: str?, cwe_name: str?}, url: str, path: str, method: str, insertion_point: str, parameter: str, value: str?, params: str, assignee: map{id: str, email: str(email), name: str}, state: str, severity: int, cvss_score: num(double)?, cvss_vector: str, last_found: str(date-time), retesting: bool, new: bool, review_status: str, review_reason: str, created_at: str(date-time)?, changed: str(date-time), changed_by: any, comment: str?, change_reason: str, expiration_date: str(date)?, approver_name: str, approval_date: str(date)?}
@errors {400, 401, 404, 500}

@endpoint POST /findings/bulk/report/
@required {ids: [map{target_id!: str, finding_id!: int}]}
@returns(200) {token: str}
@errors {400, 401, 500}

@endpoint POST /findings/bulk/retest/
@required {ids: [str]}
@optional {ignore_blackout_period: bool, scan_profile: str, reduced_scopes: [map{id!: str, url!: str(uri), enabled: bool}]}
@returns(200) {ids: [str]}
@errors {400, 401, 500}

@endpoint POST /findings/bulk/update/
@required {ids: [str], id: int, target: str, scans: str, fix: str, requests: [map{request: str, response: str}], evidence: str, extra: str, definition: str, url: str, path: str, method: str(get/post/trace/options/put/delete), insertion_point: str(cookie/parameter/arbitrary_url_param/header/url_folder/url_filename/json_parameter/request_body/multipart_parameter/graphql_parameter/non_standard_parameter), parameter: str, value: str, params: str, cvss_score: num(double), cvss_vector: str, retesting: bool, new: bool, created_at: str(date-time), changed: str(date-time), changed_by: any}
@optional {labels: [any], assignee: str, state: str(notfixed/invalid/accepted/fixed), severity: int(10/20/30/40), last_found: str(date-time), review_status: str(notrequired/pending/rejected/accepted/), review_reason: str, comment: str, change_reason: str, expiration_date: str(date), approver_name: str, approval_date: str(date)}
@returns(200) {ids: [str]}
@errors {400, 401, 500}

@endpoint GET /findings/report/
@returns(200)
@errors {400, 401, 404, 500}

@endgroup

@group frameworks
@endpoint GET /frameworks/
@optional {ordering: str, search: str}
@returns(200)
@errors {400, 401, 500}

@endpoint GET /frameworks/{id}/
@required {id: str}
@returns(200) {id: str, name: str, desc: str?}
@errors {400, 401, 404, 500}

@endgroup

@group integrations
@endpoint GET /integrations/akamai/
@returns(200) {client_id: str, server_host: str, client_secret: str, enabled: bool}
@errors {400, 401, 404, 500}

@endpoint PUT /integrations/akamai/
@required {client_id: str, server_host: str, client_secret: str}
@optional {enabled: bool}
@returns(200) {client_id: str, server_host: str, client_secret: str, enabled: bool}
@errors {400, 401, 404, 500}

@endpoint PATCH /integrations/akamai/
@optional {client_id: str, server_host: str, client_secret: str, enabled: bool}
@returns(200) {client_id: str, server_host: str, client_secret: str, enabled: bool}
@errors {400, 401, 404, 500}

@endpoint DELETE /integrations/akamai/
@returns(204)
@errors {400, 401, 404, 500}

@endpoint POST /integrations/akamai/refresh/
@returns(200) {detail: str}
@errors {400, 401, 404, 422, 500}

@endpoint GET /integrations/aws/
@returns(200) {access_key: str, secret_key: str, enabled: bool, list_zones_permission: bool, list_record_sets_permission: bool}
@errors {400, 401, 404, 500}

@endpoint PUT /integrations/aws/
@required {access_key: str, secret_key: str, list_zones_permission: bool, list_record_sets_permission: bool}
@optional {enabled: bool}
@returns(200) {access_key: str, secret_key: str, enabled: bool, list_zones_permission: bool, list_record_sets_permission: bool}
@errors {400, 401, 404, 500}

@endpoint PATCH /integrations/aws/
@optional {access_key: str, secret_key: str, enabled: bool, list_zones_permission: bool, list_record_sets_permission: bool}
@returns(200) {access_key: str, secret_key: str, enabled: bool, list_zones_permission: bool, list_record_sets_permission: bool}
@errors {400, 401, 404, 500}

@endpoint DELETE /integrations/aws/
@returns(204)
@errors {400, 401, 404, 500}

@endpoint POST /integrations/aws/refresh/
@returns(200) {detail: str}
@errors {400, 401, 404, 422, 500}

@endpoint GET /integrations/azure-devops/
@returns(200) {organization_name: str, connected: bool, reauthentication_failed: bool?}
@errors {400, 401, 404, 500}

@endpoint PUT /integrations/azure-devops/
@required {connected: bool, reauthentication_failed: bool}
@optional {organization_name: str}
@returns(200) {organization_name: str, connected: bool, reauthentication_failed: bool?}
@errors {400, 401, 404, 500}

@endpoint PATCH /integrations/azure-devops/
@optional {organization_name: str, connected: bool, reauthentication_failed: bool}
@returns(200) {organization_name: str, connected: bool, reauthentication_failed: bool?}
@errors {400, 401, 404, 500}

@endpoint DELETE /integrations/azure-devops/
@returns(204)
@errors {400, 401, 404, 500}

@endpoint GET /integrations/cloudflare/
@returns(200) {token: str, token_name: str, enabled: bool, zone_read_permission: bool, dns_read_permission: bool}
@errors {400, 401, 404, 500}

@endpoint PUT /integrations/cloudflare/
@required {token: str, token_name: str, zone_read_permission: bool, dns_read_permission: bool}
@optional {enabled: bool}
@returns(200) {token: str, token_name: str, enabled: bool, zone_read_permission: bool, dns_read_permission: bool}
@errors {400, 401, 404, 500}

@endpoint PATCH /integrations/cloudflare/
@optional {token: str, token_name: str, enabled: bool, zone_read_permission: bool, dns_read_permission: bool}
@returns(200) {token: str, token_name: str, enabled: bool, zone_read_permission: bool, dns_read_permission: bool}
@errors {400, 401, 404, 500}

@endpoint DELETE /integrations/cloudflare/
@returns(204)
@errors {400, 401, 404, 500}

@endpoint POST /integrations/cloudflare/refresh/
@returns(200) {detail: str}
@errors {400, 401, 404, 422, 500}

@endpoint GET /integrations/jira-server/
@returns(200) {base_url: str(uri), consumer_key: str, consumer_secret: str, verify_tls: bool, skip_jira_webhooks: bool}
@errors {400, 401, 404, 500}

@endpoint PUT /integrations/jira-server/
@required {base_url: str(uri), consumer_key: str, consumer_secret: str, verify_tls: bool}
@optional {skip_jira_webhooks: bool}
@returns(200) {base_url: str(uri), consumer_key: str, consumer_secret: str, verify_tls: bool, skip_jira_webhooks: bool}
@errors {400, 401, 404, 500}

@endpoint PATCH /integrations/jira-server/
@optional {base_url: str(uri), consumer_key: str, consumer_secret: str, verify_tls: bool, skip_jira_webhooks: bool}
@returns(200) {base_url: str(uri), consumer_key: str, consumer_secret: str, verify_tls: bool, skip_jira_webhooks: bool}
@errors {400, 401, 404, 500}

@endpoint DELETE /integrations/jira-server/
@returns(204)
@errors {400, 401, 404, 500}

@endpoint GET /integrations/postman/
@returns(200) {enabled: bool, client_id: str, client_secret: str, api_key: str}
@errors {400, 401, 404, 500}

@endpoint POST /integrations/postman/
@required {client_id: str, client_secret: str, api_key: str}
@optional {enabled: bool}
@returns(201) {enabled: bool, client_id: str, client_secret: str, api_key: str}
@errors {400, 401, 404, 500}

@endpoint PUT /integrations/postman/
@required {client_id: str, client_secret: str, api_key: str}
@optional {enabled: bool}
@returns(200) {enabled: bool, client_id: str, client_secret: str, api_key: str}
@errors {400, 401, 404, 500}

@endpoint PATCH /integrations/postman/
@optional {enabled: bool, client_id: str, client_secret: str, api_key: str}
@returns(200) {enabled: bool, client_id: str, client_secret: str, api_key: str}
@errors {400, 401, 404, 500}

@endpoint DELETE /integrations/postman/
@returns(204)
@errors {400, 401, 404, 500}

@endgroup

@group labels
@endpoint GET /labels/findings/
@optional {length: int, ordering: str, page: int, search: str}
@returns(200) {count: int, page_total: int, page: int, length: int, results: [map]}
@errors {400, 401, 500}

@endpoint POST /labels/findings/
@required {id: str, name: str, changed_by: any, changed: str(date-time)}
@optional {color: str}
@returns(201) {id: str, name: str, color: str, changed_by: any, changed: str(date-time)}
@errors {400, 401, 500}

@endpoint GET /labels/findings/{id}/
@required {id: str}
@returns(200) {id: str, name: str, color: str, changed_by: any, changed: str(date-time)}
@errors {400, 401, 404, 500}

@endpoint PUT /labels/findings/{id}/
@required {id: str, id: str, name: str, changed_by: any, changed: str(date-time)}
@optional {color: str}
@returns(200) {id: str, name: str, color: str, changed_by: any, changed: str(date-time)}
@errors {400, 401, 404, 500}

@endpoint PATCH /labels/findings/{id}/
@required {id: str}
@optional {id: str, name: str, color: str, changed_by: any, changed: str(date-time)}
@returns(200) {id: str, name: str, color: str, changed_by: any, changed: str(date-time)}
@errors {400, 401, 404, 500}

@endpoint DELETE /labels/findings/{id}/
@required {id: str}
@returns(204)
@errors {400, 401, 404, 500}

@endpoint GET /labels/targets/
@optional {assigned: bool, id: [str], is_id_404_validation: bool=false, length: int, ordering: str, page: int, search: str, team: [str]}
@returns(200) {count: int, page_total: int, page: int, length: int, results: [map]}
@errors {400, 401, 500}

@endpoint POST /labels/targets/
@required {id: str, name: str, changed_by: any, changed: str(date-time)}
@optional {color: str}
@returns(201) {id: str, name: str, color: str, changed_by: any, changed: str(date-time)}
@errors {400, 401, 500}

@endpoint GET /labels/targets/{id}/
@required {id: str}
@returns(200) {id: str, name: str, color: str, changed_by: any, changed: str(date-time)}
@errors {400, 401, 404, 500}

@endpoint PUT /labels/targets/{id}/
@required {id: str, id: str, name: str, changed_by: any, changed: str(date-time)}
@optional {color: str}
@returns(200) {id: str, name: str, color: str, changed_by: any, changed: str(date-time)}
@errors {400, 401, 404, 500}

@endpoint PATCH /labels/targets/{id}/
@required {id: str}
@optional {id: str, name: str, color: str, changed_by: any, changed: str(date-time)}
@returns(200) {id: str, name: str, color: str, changed_by: any, changed: str(date-time)}
@errors {400, 401, 404, 500}

@endpoint DELETE /labels/targets/{id}/
@required {id: str}
@returns(204)
@errors {400, 401, 404, 500}

@endpoint GET /labels/users/
@optional {length: int, ordering: str, page: int, search: str}
@returns(200) {count: int, page_total: int, page: int, length: int, results: [map]}
@errors {400, 401, 500}

@endpoint POST /labels/users/
@required {id: str, name: str, changed_by: any, changed: str(date-time)}
@optional {color: str}
@returns(201) {id: str, name: str, color: str, changed_by: any, changed: str(date-time)}
@errors {400, 401, 500}

@endpoint GET /labels/users/{id}/
@required {id: str}
@returns(200) {id: str, name: str, color: str, changed_by: any, changed: str(date-time)}
@errors {400, 401, 404, 500}

@endpoint PUT /labels/users/{id}/
@required {id: str, id: str, name: str, changed_by: any, changed: str(date-time)}
@optional {color: str}
@returns(200) {id: str, name: str, color: str, changed_by: any, changed: str(date-time)}
@errors {400, 401, 404, 500}

@endpoint PATCH /labels/users/{id}/
@required {id: str}
@optional {id: str, name: str, color: str, changed_by: any, changed: str(date-time)}
@returns(200) {id: str, name: str, color: str, changed_by: any, changed: str(date-time)}
@errors {400, 401, 404, 500}

@endpoint DELETE /labels/users/{id}/
@required {id: str}
@returns(204)
@errors {400, 401, 404, 500}

@endgroup

@group permissions
@endpoint GET /permissions/
@optional {length: int, ordering: str, page: int, search: str}
@returns(200) {count: int, page_total: int, page: int, length: int, results: [map]}
@errors {400, 401, 500}

@endgroup

@group plans
@endpoint GET /plans/
@optional {length: int, page: int}
@returns(200) {count: int, page_total: int, page: int, length: int, results: [map]}
@errors {400, 401, 500}

@endgroup

@group profile
@endpoint GET /profile/
@optional {ordering: str, search: str}
@returns(200)
@errors {400, 401, 500}

@endpoint POST /profile/accept_tos/
@required {accept: bool}
@returns(200) {detail: str}
@errors {400, 401, 500}

@endpoint POST /profile/change_password/
@required {password: str, confpassword: str, current_password: str}
@returns(200) {message: str}
@errors {400, 401, 500}

@endpoint GET /profile/notifications/
@returns(200) {end_scan_emails: str, promotional_topup_notification: bool, expired_acceptance_findings_notification: bool}
@errors {400, 401, 500}

@endpoint PUT /profile/notifications/
@optional {end_scan_emails: str(new_findings/always/started_by/never/), promotional_topup_notification: bool, expired_acceptance_findings_notification: bool}
@returns(200) {end_scan_emails: str, promotional_topup_notification: bool, expired_acceptance_findings_notification: bool}
@errors {400, 401, 500}

@endpoint PATCH /profile/notifications/
@optional {end_scan_emails: str(new_findings/always/started_by/never/), promotional_topup_notification: bool, expired_acceptance_findings_notification: bool}
@returns(200) {end_scan_emails: str, promotional_topup_notification: bool, expired_acceptance_findings_notification: bool}
@errors {400, 401, 500}

@endpoint GET /profile/permissions/
@returns(200) {account: [map], targets: map, teams: map}
@errors {400, 401, 500}

@endpoint GET /profile/roles/
@optional {length: int, ordering: str, page: int, role: str, search: str}
@returns(200) {count: int, page_total: int, page: int, length: int, results: [map]}
@errors {400, 401, 500}

@endpoint GET /profile/targets/
@optional {enabled: bool, exclude_team: [str], id: [str], label: [str], label_logical_operator: str(and/or), length: int, ordering: str, page: int, risk: [str], role: [str], scan_profile: [str], search: str, team: [str], type: [str], unlimited: bool, verified: bool}
@returns(200) {count: int, page_total: int, page: int, length: int, results: [map]}
@errors {400, 401, 500}

@endgroup

@group report
@endpoint GET /report/
@optional {length: int, ordering: str, page: int, search: str}
@returns(200) {count: int, page_total: int, page: int, length: int, results: [map]}
@errors {400, 401, 404, 500}

@endpoint POST /report/
@optional {severity: [int], state: [str], assignee: [str], label: [str], new: bool, target_label: [str], target: [str], team: [str], search: str, assessment: str, findings: [str], report_type: str(default/executive_summary/owasp/pci/pci4/iso27001/hipaa), report_fileformat: str(pdf/docx), finding_target_ids: [map{finding_id!: str, target_id!: str}]}
@returns(200) {id: str, user: str, submitted_at: str(date-time), generated_at: str(date-time)?, is_email_notification_enabled: bool, filters: str, ttl: str, timezone: str}
@errors {400, 401, 404, 500}

@endpoint GET /report/{id}/
@required {id: str}
@returns(200)
@errors {400, 401, 404, 500}

@endpoint PUT /report/{id}/
@required {id: str, id: str, user: str, submitted_at: str(date-time), generated_at: str(date-time), filters: str, ttl: str}
@optional {is_email_notification_enabled: bool, timezone: str}
@returns(200) {id: str, user: str, submitted_at: str(date-time), generated_at: str(date-time)?, is_email_notification_enabled: bool, filters: str, ttl: str, timezone: str}
@errors {400, 401, 404, 500}

@endpoint PATCH /report/{id}/
@required {id: str}
@optional {id: str, user: str, submitted_at: str(date-time), generated_at: str(date-time), is_email_notification_enabled: bool, filters: str, ttl: str, timezone: str}
@returns(200) {id: str, user: str, submitted_at: str(date-time), generated_at: str(date-time)?, is_email_notification_enabled: bool, filters: str, ttl: str, timezone: str}
@errors {400, 401, 404, 500}

@endpoint GET /report/{id}/download/
@required {id: str}
@returns(200)
@returns(202) {msg: str}
@errors {400, 401, 404, 500}

@endpoint GET /report/{id}/status/
@required {id: str}
@returns(200) {id: str, user: str, submitted_at: str(date-time), generated_at: str(date-time)?, is_email_notification_enabled: bool, filters: str, ttl: str, timezone: str}
@returns(202) {id: str, user: str, submitted_at: str(date-time), generated_at: str(date-time)?, is_email_notification_enabled: bool, filters: str, ttl: str, timezone: str}
@errors {400, 401, 404, 500}

@endpoint GET /report/types/
@returns(200) {results: [map]}
@errors {400, 401, 404, 500}

@endgroup

@group roles
@endpoint GET /roles/
@optional {assignable_to: map, custom: bool, length: int, ordering: str, page: int, search: str}
@returns(200) {count: int, page_total: int, page: int, length: int, results: [map]}
@errors {400, 401, 500}

@endpoint POST /roles/
@required {id: str, name: str, custom: bool}
@optional {permissions: [map{id!: str, name!: str}], description: str}
@returns(201) {id: str, name: str, permissions: [map], custom: bool, description: str?}
@errors {400, 401, 500}

@endpoint GET /roles/{id}/
@required {id: str}
@returns(200) {id: str, name: str, permissions: [map], custom: bool, description: str?}
@errors {400, 401, 404, 500}

@endpoint PUT /roles/{id}/
@required {id: str, id: str, name: str, custom: bool}
@optional {permissions: [map{id!: str, name!: str}], description: str}
@returns(200) {id: str, name: str, permissions: [map], custom: bool, description: str?}
@errors {400, 401, 404, 500}

@endpoint PATCH /roles/{id}/
@required {id: str}
@optional {id: str, name: str, permissions: [map{id!: str, name!: str}], custom: bool, description: str}
@returns(200) {id: str, name: str, permissions: [map], custom: bool, description: str?}
@errors {400, 401, 404, 500}

@endpoint DELETE /roles/{id}/
@required {id: str}
@returns(204)
@errors {400, 401, 404, 500}

@endgroup

@group scan-profiles
@endpoint GET /scan-profiles/
@optional {archived: bool, builtin: bool, length: int, ordering: str, page: int, search: str, type: str(api/web), verified: bool}
@returns(200) {count: int, page_total: int, page: int, length: int, results: [map]}
@errors {400, 401, 500}

@endpoint POST /scan-profiles/
@required {id: str, type: str(web/api), vulnerabilities: [map{id!: str, name: str, desc: str, cwe_id: str, cwe_name: str}], can_scan_unverified: bool, builtin: bool}
@optional {name: str, description: str, archived: bool, speed: int(10/20/30), payloads: int(10/20/30), methods: str(all/safe/), delay: int, max_run_time: any, dedup_enabled: bool, auto_patterns_enabled: bool, max_urls: int}
@returns(200) {id: str, name: str, description: str?, archived: bool, type: str, speed: int, payloads: int, vulnerabilities: [map], methods: str, can_scan_unverified: bool, delay: int?, max_run_time: any?, dedup_enabled: bool, auto_patterns_enabled: bool, max_urls: int, builtin: bool}
@errors {400, 401, 500}

@endpoint GET /scan-profiles/{id}/
@required {id: str}
@returns(200) {id: str, name: str, description: str?, archived: bool, type: str, speed: int, payloads: int, vulnerabilities: [map], methods: str, can_scan_unverified: bool, delay: int?, max_run_time: any?, dedup_enabled: bool, auto_patterns_enabled: bool, max_urls: int, builtin: bool}
@errors {400, 401, 500}

@endpoint PUT /scan-profiles/{id}/
@required {id: str, id: str, type: str(web/api), vulnerabilities: [map{id!: str, name: str, desc: str, cwe_id: str, cwe_name: str}], can_scan_unverified: bool, builtin: bool}
@optional {name: str, description: str, archived: bool, speed: int(10/20/30), payloads: int(10/20/30), methods: str(all/safe/), delay: int, max_run_time: any, dedup_enabled: bool, auto_patterns_enabled: bool, max_urls: int}
@returns(200) {id: str, name: str, description: str?, archived: bool, type: str, speed: int, payloads: int, vulnerabilities: [map], methods: str, can_scan_unverified: bool, delay: int?, max_run_time: any?, dedup_enabled: bool, auto_patterns_enabled: bool, max_urls: int, builtin: bool}
@errors {400, 401, 500}

@endpoint PATCH /scan-profiles/{id}/
@required {id: str}
@optional {id: str, name: str, description: str, archived: bool, type: str(web/api), speed: int(10/20/30), payloads: int(10/20/30), vulnerabilities: [map{id!: str, name: str, desc: str, cwe_id: str, cwe_name: str}], methods: str(all/safe/), can_scan_unverified: bool, delay: int, max_run_time: any, dedup_enabled: bool, auto_patterns_enabled: bool, max_urls: int, builtin: bool}
@returns(200) {id: str, name: str, description: str?, archived: bool, type: str, speed: int, payloads: int, vulnerabilities: [map], methods: str, can_scan_unverified: bool, delay: int?, max_run_time: any?, dedup_enabled: bool, auto_patterns_enabled: bool, max_urls: int, builtin: bool}
@errors {400, 401, 500}

@endgroup

@group scanning-agents
@endpoint GET /scanning-agents/
@optional {length: int, ordering: str, page: int, scopes_logical_operator: str(and/or), search: str, status: [int], team: [str]}
@returns(200) {count: int, page_total: int, page: int, length: int, results: [map]}
@errors {400, 401, 500}

@endpoint POST /scanning-agents/
@required {id: str, name: str, installer_generated: bool, online: bool, fallback: bool, rx_bytes: int, tx_bytes: int, latest_handshake: int}
@optional {teams: [any]}
@returns(201) {id: str, name: str, installer_generated: bool, teams: [any]?, online: bool, fallback: bool, rx_bytes: int, tx_bytes: int, latest_handshake: int}
@errors {400, 401, 500}

@endpoint GET /scanning-agents/{hek}/config-files/
@required {hek: str}
@returns(200) {filename: str, content: str}
@errors {400, 401, 404, 500}

@endpoint GET /scanning-agents/{id}/
@required {id: str}
@returns(200) {id: str, name: str, installer_generated: bool, teams: [any]?, online: bool, fallback: bool, rx_bytes: int, tx_bytes: int, latest_handshake: int}
@errors {400, 401, 404, 500}

@endpoint PUT /scanning-agents/{id}/
@required {id: str, id: str, name: str, installer_generated: bool, online: bool, fallback: bool, rx_bytes: int, tx_bytes: int, latest_handshake: int}
@optional {teams: [any]}
@returns(200) {id: str, name: str, installer_generated: bool, teams: [any]?, online: bool, fallback: bool, rx_bytes: int, tx_bytes: int, latest_handshake: int}
@errors {400, 401, 404, 500}

@endpoint PATCH /scanning-agents/{id}/
@required {id: str}
@optional {id: str, name: str, installer_generated: bool, teams: [any], online: bool, fallback: bool, rx_bytes: int, tx_bytes: int, latest_handshake: int}
@returns(200) {id: str, name: str, installer_generated: bool, teams: [any]?, online: bool, fallback: bool, rx_bytes: int, tx_bytes: int, latest_handshake: int}
@errors {400, 401, 404, 500}

@endpoint DELETE /scanning-agents/{id}/
@required {id: str}
@returns(204)
@errors {400, 401, 404, 500}

@endpoint POST /scanning-agents/{id}/generate/
@required {id: str, name: str, installer_generated: bool, online: bool, fallback: bool, rx_bytes: int, tx_bytes: int, latest_handshake: int}
@optional {id: str}
@returns(200) {token: str}
@errors {400, 401, 404, 500}

@endgroup

@group scans
@endpoint GET /scans/
@optional {completed__gt: str(date-time), completed__gte: str(date-time), completed__lt: str(date-time), completed__lte: str(date-time), id: [str], is_id_404_validation: bool=false, label: [str], length: int, ordering: str, page: int, partial: bool, scan_profile: [str], search: str, started__gt: str(date-time), started__gte: str(date-time), started__lt: str(date-time), started__lte: str(date-time), started_after: str(date-time), started_before: str(date-time), status: [str], target: [str], team: [str], warning: [str]}
@returns(200) {count: int, page_total: int, page: int, length: int, results: [map]}
@errors {400, 401, 500}

@endpoint GET /scans/{id}/
@required {id: str}
@returns(200) {id: str, target: any, status: str, started: str(date-time)?, completed: str(date-time)?, scan_profile: str, lows: int?, mediums: int?, highs: int?, criticals: int?, created: str(date-time), unlimited: bool, changed: str(date-time), changed_by: any, stack: [any], crawler: any, fingerprinter: any, scanner: any, target_options: any, has_sequence_navigation: bool, incremental: bool, reduced_scope: bool, crawl_sequences_only: bool, ignore_blackout_period: bool, runtime: str, duration: str, sast_job_id: str?, sast_job_status: str?, user_data: str, login_video: str, warnings: [map], scheduled: bool}
@errors {400, 401, 500}

@endpoint POST /scans/bulk/cancel/
@required {scans: [map{id!: str}]}
@optional {is_id_404_validation: bool=false}
@returns(200)
@errors {400, 401, 404, 500}

@endpoint POST /scans/bulk/pause/
@required {scans: [map{id!: str}]}
@optional {is_id_404_validation: bool=false}
@returns(200)
@errors {400, 401, 404, 500}

@endpoint POST /scans/bulk/resume/
@required {scans: [map{id!: str}]}
@optional {is_id_404_validation: bool=false, overrides: map{ignore_blackout_period: bool}}
@returns(200)
@errors {400, 401, 404, 500}

@endpoint POST /scans/bulk/start/
@required {targets: [map{id!: str}]}
@optional {is_id_404_validation: bool=false, overrides: map{ignore_blackout_period: bool, scan_profile: str, reduced_scopes: [map]}}
@returns(200)
@errors {400, 401, 404, 500}

@endpoint GET /scans/warnings/
@optional {length: int, page: int}
@returns(200) {count: int, page_total: int, page: int, length: int, results: [map]}
@errors {400, 401, 500}

@endpoint GET /scans/warnings/{id}/
@required {id: str(disabled_http_get/env_error/extra_hosts/invalid_cookie/local_ip/login_failed/network_error/target_redirect/target_status/test_request_error/timeout_error/navigation_sequence_failure)}
@returns(200) {id: str, name: str}
@errors {400, 401, 500}

@endgroup

@group scheduledscans
@endpoint GET /scheduledscans/
@optional {id: [str], is_id_404_validation: bool=false, label: [str], length: int, ordering: str, page: int, search: str, target: [str], team: [str]}
@returns(200) {count: int, page_total: int, page: int, length: int, results: [map]}
@errors {400, 401, 500}

@endpoint POST /scheduledscans/bulk/
@required {targets: [map{id!: str}], scheduledscan: map{id!: str, target!: any, date_time!: str(date-time), recurrence: str, changed!: str(date-time), changed_by!: any, blackout_period!: any, timezone: str, run_on_day_of_week: bool, scheduled_day_of_week: int, week_index: str, partial_scan: bool, override_target_settings: bool, incremental: bool, reduced_scope: bool, scan_profile: str, unlimited!: str}}
@returns(200)
@errors {400, 401, 500}

@endpoint PUT /scheduledscans/bulk/
@required {scheduledscans: [map{id!: str}], scheduledscan: map{id!: str, target!: any, date_time!: str(date-time), recurrence: str, changed!: str(date-time), changed_by!: any, blackout_period!: any, timezone: str, run_on_day_of_week: bool, scheduled_day_of_week: int, week_index: str, partial_scan: bool, override_target_settings: bool, incremental: bool, reduced_scope: bool, scan_profile: str, unlimited!: str}}
@returns(200)
@errors {400, 401, 500}

@endpoint PATCH /scheduledscans/bulk/
@optional {scheduledscans: [map{id!: str}], scheduledscan: map{id!: str, target!: any, date_time!: str(date-time), recurrence: str, changed!: str(date-time), changed_by!: any, blackout_period!: any, timezone: str, run_on_day_of_week: bool, scheduled_day_of_week: int, week_index: str, partial_scan: bool, override_target_settings: bool, incremental: bool, reduced_scope: bool, scan_profile: str, unlimited!: str}}
@returns(200)
@errors {400, 401, 500}

@endpoint DELETE /scheduledscans/bulk/
@returns(204)
@errors {400, 401, 500}

@endgroup

@group stored-reports
@endpoint GET /stored-reports/
@optional {length: int, ordering: str, page: int, search: str}
@returns(200) {count: int, page_total: int, page: int, length: int, results: [map]}
@errors {400, 401, 404, 500}

@endpoint POST /stored-reports/
@required {id: str, name: str, filters: map{severity: [int], state: [str], assignee: [str], label: [str], new: bool, target_label: [str], target: [str], team: [str], search: str, assessment: str, findings: [str], report_type: str, report_fileformat: str, finding_target_ids: [map]}, enabled: bool}
@optional {date_time: str(date-time), recurrence: str(h/d/w/m/q/), timezone: str, on_day_of_week: bool, scheduled_day_of_week: int(1/2/3/4/5/6/7), week_index: str(first/second/third/fourth/last/), report_type: str=default, report_fileformat: str=pdf}
@returns(201) {id: str, name: str, date_time: str(date-time)?, recurrence: str, timezone: str, on_day_of_week: bool, scheduled_day_of_week: int?, week_index: str?, filters: map{severity: [int], state: [str], assignee: [str], label: [str], new: bool?, target_label: [str], target: [str], team: [str], search: str, assessment: str, findings: [str], report_type: str, report_fileformat: str, finding_target_ids: [map]}, report_type: str, report_fileformat: str, enabled: bool}
@errors {400, 401, 404, 500}

@endpoint GET /stored-reports/{id}/
@required {id: str}
@returns(200) {id: str, name: str, date_time: str(date-time)?, recurrence: str, timezone: str, on_day_of_week: bool, scheduled_day_of_week: int?, week_index: str?, filters: map{severity: [int], state: [str], assignee: [str], label: [str], new: bool?, target_label: [str], target: [str], team: [str], search: str, assessment: str, findings: [str], report_type: str, report_fileformat: str, finding_target_ids: [map]}, report_type: str, report_fileformat: str, enabled: bool}
@errors {400, 401, 404, 500}

@endpoint PUT /stored-reports/{id}/
@required {id: str, id: str, name: str, filters: map{severity: [int], state: [str], assignee: [str], label: [str], new: bool, target_label: [str], target: [str], team: [str], search: str, assessment: str, findings: [str], report_type: str, report_fileformat: str, finding_target_ids: [map]}, enabled: bool}
@optional {date_time: str(date-time), recurrence: str(h/d/w/m/q/), timezone: str, on_day_of_week: bool, scheduled_day_of_week: int(1/2/3/4/5/6/7), week_index: str(first/second/third/fourth/last/), report_type: str=default, report_fileformat: str=pdf}
@returns(200) {id: str, name: str, date_time: str(date-time)?, recurrence: str, timezone: str, on_day_of_week: bool, scheduled_day_of_week: int?, week_index: str?, filters: map{severity: [int], state: [str], assignee: [str], label: [str], new: bool?, target_label: [str], target: [str], team: [str], search: str, assessment: str, findings: [str], report_type: str, report_fileformat: str, finding_target_ids: [map]}, report_type: str, report_fileformat: str, enabled: bool}
@errors {400, 401, 404, 500}

@endpoint PATCH /stored-reports/{id}/
@required {id: str}
@optional {id: str, name: str, date_time: str(date-time), recurrence: str(h/d/w/m/q/), timezone: str, on_day_of_week: bool, scheduled_day_of_week: int(1/2/3/4/5/6/7), week_index: str(first/second/third/fourth/last/), filters: map{severity: [int], state: [str], assignee: [str], label: [str], new: bool, target_label: [str], target: [str], team: [str], search: str, assessment: str, findings: [str], report_type: str, report_fileformat: str, finding_target_ids: [map]}, report_type: str=default, report_fileformat: str=pdf, enabled: bool}
@returns(200) {id: str, name: str, date_time: str(date-time)?, recurrence: str, timezone: str, on_day_of_week: bool, scheduled_day_of_week: int?, week_index: str?, filters: map{severity: [int], state: [str], assignee: [str], label: [str], new: bool?, target_label: [str], target: [str], team: [str], search: str, assessment: str, findings: [str], report_type: str, report_fileformat: str, finding_target_ids: [map]}, report_type: str, report_fileformat: str, enabled: bool}
@errors {400, 401, 404, 500}

@endpoint DELETE /stored-reports/{id}/
@required {id: str}
@returns(204)
@errors {400, 401, 404, 500}

@endpoint POST /stored-reports/{id}/generate/
@required {id: str}
@returns(200) {results: [map]}
@errors {400, 401, 404, 500}

@endpoint POST /stored-reports/preview/
@required {id: str, name: str, filters: map{severity: [int], state: [str], assignee: [str], label: [str], new: bool, target_label: [str], target: [str], team: [str], search: str, assessment: str, findings: [str], report_type: str, report_fileformat: str, finding_target_ids: [map]}, enabled: bool}
@optional {date_time: str(date-time), recurrence: str(h/d/w/m/q/), timezone: str, on_day_of_week: bool, scheduled_day_of_week: int(1/2/3/4/5/6/7), week_index: str(first/second/third/fourth/last/), report_type: str=default, report_fileformat: str=pdf}
@returns(200)
@errors {400, 401, 404, 500}

@endgroup

@group targets
@endpoint GET /targets/
@optional {exclude: [str], exclude_team: str, id: [str], is_id_404_validation: bool=false, label: str, label_logical_operator: str(and/or), length: int, ordering: str(changed/latest_scan_date/name/risk/target__name), page: int, risk: [int], scan_profile: [str], search: str, team: str, type: str, unlimited: bool, verified: bool}
@returns(200) {count: int, page_total: int, page: int, length: int, results: [map]}
@errors {400, 401, 500}

@endpoint POST /targets/
@required {id: str, site: any, lows: int, mediums: int, highs: int, criticals: int, risk: int, last_scan: any, running_scan: any, next_scan: any, assets: [map{id!: str, account!: str, name!: str, host!: str, desc!: str, stack: [any], verified: bool, verification_token!: str(uuid), verification_date!: str(date-time), verification_method!: str, verification_last_error!: str, changed!: str(date-time), changed_by!: any, headers!: [map], cookies: [map], include!: bool}], allowed_scan_profiles: [map{id!: str, name: str, description: str, builtin!: str}], login_video: str, changed: str(date-time), changed_by: any}
@optional {check_fullpath: str, duplicate_check: str, skip_fullpath_warning: str, skip_reachability_check: str, skip_redirect_check: str, scan_profile: str, type: str, unlimited: bool, report_type: str(default/executive_summary/owasp/pci/pci4/iso27001/hipaa), report_fileformat: str(pdf/docx), labels: [any], scanning_agent: any, include_deduplicated_endpoints: bool, teams: [map{id: str, name!: str}], blackout_period: any, fail_fast: bool, incremental: bool, reduced_scope: bool, schedule_incremental: bool, schedule_reduced_scope: bool, crawl_sequences_only: bool, schedule_crawl_sequences_only: bool, cancel_scan_on_nav_seq_failure: bool}
@returns(201) {id: str, site: map{id: str, name: str, desc: str?, url: str(uri), host: str, has_form_login: bool, form_login_url: str(uri), form_login_check_pattern: str, form_login: [map], logout_detection_enabled: bool, has_sequence_login: bool, has_basic_auth: bool, basic_auth: any, headers: [map], cookies: [map], whitelist: any, blacklist: any, changed: str(date-time), changed_by: any, auth_enabled: bool, logout_condition: str, check_session_url: str, has_otp: bool, otp_secret: str, otp_secret_is_sensitive: bool, otp_algorithm: str, otp_digits: int, otp_field: str, otp_submit: str, otp_login_sequence_totp_value: str, otp_type: str, otp_url: str, is_mtls_active: bool, is_signature_active: bool, is_mle_active: bool, postman_authentication_enabled: bool, postman_check_session_folder: str, stack: [any], verified: bool, verification_token: str, verification_date: str(date-time), verification_method: str, verification_last_error: str, api_scan_settings: any, openapi_check_session_method: str, openapi_check_session_media_type: str, openapi_check_session_expired_payload: str?}, lows: int?, mediums: int?, highs: int?, criticals: int?, risk: int?, last_scan: any, running_scan: any, next_scan: any, assets: [map], scan_profile: map{id: str, name: str, description: str?, builtin: str}, type: str, unlimited: bool, report_type: str, report_fileformat: str, allowed_scan_profiles: [map], labels: [map], scanning_agent: any?, include_deduplicated_endpoints: bool?, teams: [map], blackout_period: any, fail_fast: bool, login_video: str, changed: str(date-time), changed_by: any, incremental: bool, reduced_scope: bool, schedule_incremental: bool, schedule_reduced_scope: bool, crawl_sequences_only: bool, schedule_crawl_sequences_only: bool, cancel_scan_on_nav_seq_failure: bool}
@errors {400, 401, 500}

@endpoint GET /targets/{id}/
@required {id: str}
@returns(200) {id: str, site: map{id: str, name: str, desc: str?, url: str(uri), host: str, has_form_login: bool, form_login_url: str(uri), form_login_check_pattern: str, form_login: [map], logout_detection_enabled: bool, has_sequence_login: bool, has_basic_auth: bool, basic_auth: any, headers: [map], cookies: [map], whitelist: any, blacklist: any, changed: str(date-time), changed_by: any, auth_enabled: bool, logout_condition: str, check_session_url: str, has_otp: bool, otp_secret: str, otp_secret_is_sensitive: bool, otp_algorithm: str, otp_digits: int, otp_field: str, otp_submit: str, otp_login_sequence_totp_value: str, otp_type: str, otp_url: str, is_mtls_active: bool, is_signature_active: bool, is_mle_active: bool, postman_authentication_enabled: bool, postman_check_session_folder: str, stack: [any], verified: bool, verification_token: str, verification_date: str(date-time), verification_method: str, verification_last_error: str, api_scan_settings: any, openapi_check_session_method: str, openapi_check_session_media_type: str, openapi_check_session_expired_payload: str?}, lows: int?, mediums: int?, highs: int?, criticals: int?, risk: int?, last_scan: any, running_scan: any, next_scan: any, assets: [map], scan_profile: map{id: str, name: str, description: str?, builtin: str}, type: str, unlimited: bool, report_type: str, report_fileformat: str, allowed_scan_profiles: [map], labels: [map], scanning_agent: any?, include_deduplicated_endpoints: bool?, teams: [map], blackout_period: any, fail_fast: bool, login_video: str, changed: str(date-time), changed_by: any, incremental: bool, reduced_scope: bool, schedule_incremental: bool, schedule_reduced_scope: bool, crawl_sequences_only: bool, schedule_crawl_sequences_only: bool, cancel_scan_on_nav_seq_failure: bool}
@errors {400, 401, 404, 500}

@endpoint PUT /targets/{id}/
@required {id: str, id: str, site: any, lows: int, mediums: int, highs: int, criticals: int, risk: int, last_scan: any, running_scan: any, next_scan: any, assets: [map{id!: str, account!: str, name!: str, host!: str, desc!: str, stack: [any], verified: bool, verification_token!: str(uuid), verification_date!: str(date-time), verification_method!: str, verification_last_error!: str, changed!: str(date-time), changed_by!: any, headers!: [map], cookies: [map], include!: bool}], unlimited: bool, allowed_scan_profiles: [map{id!: str, name: str, description: str, builtin!: str}], teams: [any], login_video: str, changed: str(date-time), changed_by: any}
@optional {scan_profile: str, type: str, report_type: str(default/executive_summary/owasp/pci/pci4/iso27001/hipaa), report_fileformat: str(pdf/docx), labels: [any], scanning_agent: any, include_deduplicated_endpoints: bool, blackout_period: any, fail_fast: bool, incremental: bool, reduced_scope: bool, schedule_incremental: bool, schedule_reduced_scope: bool, crawl_sequences_only: bool, schedule_crawl_sequences_only: bool, cancel_scan_on_nav_seq_failure: bool}
@returns(200) {id: str, site: map{id: str, name: str, desc: str?, url: str(uri), host: str, has_form_login: bool, form_login_url: str(uri), form_login_check_pattern: str, form_login: [map], logout_detection_enabled: bool, has_sequence_login: bool, has_basic_auth: bool, basic_auth: any, headers: [map], cookies: [map], whitelist: any, blacklist: any, changed: str(date-time), changed_by: any, auth_enabled: bool, logout_condition: str, check_session_url: str, has_otp: bool, otp_secret: str, otp_secret_is_sensitive: bool, otp_algorithm: str, otp_digits: int, otp_field: str, otp_submit: str, otp_login_sequence_totp_value: str, otp_type: str, otp_url: str, is_mtls_active: bool, is_signature_active: bool, is_mle_active: bool, postman_authentication_enabled: bool, postman_check_session_folder: str, stack: [any], verified: bool, verification_token: str, verification_date: str(date-time), verification_method: str, verification_last_error: str, api_scan_settings: any, openapi_check_session_method: str, openapi_check_session_media_type: str, openapi_check_session_expired_payload: str?}, lows: int?, mediums: int?, highs: int?, criticals: int?, risk: int?, last_scan: any, running_scan: any, next_scan: any, assets: [map], scan_profile: map{id: str, name: str, description: str?, builtin: str}, type: str, unlimited: bool, report_type: str, report_fileformat: str, allowed_scan_profiles: [map], labels: [map], scanning_agent: any?, include_deduplicated_endpoints: bool?, teams: [map], blackout_period: any, fail_fast: bool, login_video: str, changed: str(date-time), changed_by: any, incremental: bool, reduced_scope: bool, schedule_incremental: bool, schedule_reduced_scope: bool, crawl_sequences_only: bool, schedule_crawl_sequences_only: bool, cancel_scan_on_nav_seq_failure: bool}
@errors {400, 401, 404, 500}

@endpoint PATCH /targets/{id}/
@required {id: str}
@optional {id: str, site: any, lows: int, mediums: int, highs: int, criticals: int, risk: int, last_scan: any, running_scan: any, next_scan: any, assets: [map{id!: str, account!: str, name!: str, host!: str, desc!: str, stack: [any], verified: bool, verification_token!: str(uuid), verification_date!: str(date-time), verification_method!: str, verification_last_error!: str, changed!: str(date-time), changed_by!: any, headers!: [map], cookies: [map], include!: bool}], scan_profile: str, type: str, unlimited: bool, report_type: str(default/executive_summary/owasp/pci/pci4/iso27001/hipaa), report_fileformat: str(pdf/docx), allowed_scan_profiles: [map{id!: str, name: str, description: str, builtin!: str}], labels: [any], scanning_agent: any, include_deduplicated_endpoints: bool, teams: [any], blackout_period: any, fail_fast: bool, login_video: str, changed: str(date-time), changed_by: any, incremental: bool, reduced_scope: bool, schedule_incremental: bool, schedule_reduced_scope: bool, crawl_sequences_only: bool, schedule_crawl_sequences_only: bool, cancel_scan_on_nav_seq_failure: bool}
@returns(200) {id: str, site: map{id: str, name: str, desc: str?, url: str(uri), host: str, has_form_login: bool, form_login_url: str(uri), form_login_check_pattern: str, form_login: [map], logout_detection_enabled: bool, has_sequence_login: bool, has_basic_auth: bool, basic_auth: any, headers: [map], cookies: [map], whitelist: any, blacklist: any, changed: str(date-time), changed_by: any, auth_enabled: bool, logout_condition: str, check_session_url: str, has_otp: bool, otp_secret: str, otp_secret_is_sensitive: bool, otp_algorithm: str, otp_digits: int, otp_field: str, otp_submit: str, otp_login_sequence_totp_value: str, otp_type: str, otp_url: str, is_mtls_active: bool, is_signature_active: bool, is_mle_active: bool, postman_authentication_enabled: bool, postman_check_session_folder: str, stack: [any], verified: bool, verification_token: str, verification_date: str(date-time), verification_method: str, verification_last_error: str, api_scan_settings: any, openapi_check_session_method: str, openapi_check_session_media_type: str, openapi_check_session_expired_payload: str?}, lows: int?, mediums: int?, highs: int?, criticals: int?, risk: int?, last_scan: any, running_scan: any, next_scan: any, assets: [map], scan_profile: map{id: str, name: str, description: str?, builtin: str}, type: str, unlimited: bool, report_type: str, report_fileformat: str, allowed_scan_profiles: [map], labels: [map], scanning_agent: any?, include_deduplicated_endpoints: bool?, teams: [map], blackout_period: any, fail_fast: bool, login_video: str, changed: str(date-time), changed_by: any, incremental: bool, reduced_scope: bool, schedule_incremental: bool, schedule_reduced_scope: bool, crawl_sequences_only: bool, schedule_crawl_sequences_only: bool, cancel_scan_on_nav_seq_failure: bool}
@errors {400, 401, 404, 500}

@endpoint DELETE /targets/{id}/
@required {id: str}
@returns(204)
@errors {400, 401, 404, 500}

@endpoint DELETE /targets/{id}/api-auth/
@required {id: str}
@returns(200) {id: str, site: any, lows: int?, mediums: int?, highs: int?, criticals: int?, risk: int?, last_scan: any, running_scan: any, next_scan: any, assets: [map], scan_profile: str, type: str, unlimited: bool, report_type: str, report_fileformat: str, allowed_scan_profiles: [map], labels: [any], scanning_agent: any?, include_deduplicated_endpoints: bool?, teams: [map], blackout_period: any, fail_fast: bool, login_video: str, changed: str(date-time), changed_by: any, incremental: bool, reduced_scope: bool, schedule_incremental: bool, schedule_reduced_scope: bool, crawl_sequences_only: bool, schedule_crawl_sequences_only: bool, cancel_scan_on_nav_seq_failure: bool}
@errors {400, 401, 500}

@endpoint GET /targets/{id}/average_fix_time/
@required {id: str}
@returns(200) {results: map{<vuln name>: str}}
@errors {400, 401, 404, 500}

@endpoint DELETE /targets/{id}/basic-auth/
@required {id: str}
@returns(200) {id: str, site: any, lows: int?, mediums: int?, highs: int?, criticals: int?, risk: int?, last_scan: any, running_scan: any, next_scan: any, assets: [map], scan_profile: str, type: str, unlimited: bool, report_type: str, report_fileformat: str, allowed_scan_profiles: [map], labels: [any], scanning_agent: any?, include_deduplicated_endpoints: bool?, teams: [map], blackout_period: any, fail_fast: bool, login_video: str, changed: str(date-time), changed_by: any, incremental: bool, reduced_scope: bool, schedule_incremental: bool, schedule_reduced_scope: bool, crawl_sequences_only: bool, schedule_crawl_sequences_only: bool, cancel_scan_on_nav_seq_failure: bool}
@errors {400, 401, 500}

@endpoint POST /targets/{id}/check_api_login/
@required {id: str, token_parameter_location: str(cookie/header)}
@optional {media_type: str(application/json/application/x-www-form-urlencoded), api_login_url: str, api_login_payload: str, api_login_payload_is_sensitive: bool, api_login_token_field: str, token_prefix: str, token_parameter_name: str}
@returns(200)
@errors {400, 401, 404, 500}

@endpoint GET /targets/{id}/download_api_schema_file/
@required {id: str}
@returns(200)
@errors {400, 401, 404, 500}

@endpoint DELETE /targets/{id}/form-login/
@required {id: str}
@returns(200) {id: str, site: any, lows: int?, mediums: int?, highs: int?, criticals: int?, risk: int?, last_scan: any, running_scan: any, next_scan: any, assets: [map], scan_profile: str, type: str, unlimited: bool, report_type: str, report_fileformat: str, allowed_scan_profiles: [map], labels: [any], scanning_agent: any?, include_deduplicated_endpoints: bool?, teams: [map], blackout_period: any, fail_fast: bool, login_video: str, changed: str(date-time), changed_by: any, incremental: bool, reduced_scope: bool, schedule_incremental: bool, schedule_reduced_scope: bool, crawl_sequences_only: bool, schedule_crawl_sequences_only: bool, cancel_scan_on_nav_seq_failure: bool}
@errors {400, 401, 500}

@endpoint GET /targets/{id}/get_postman_collection_folders/
@required {id: str}
@returns(200) {id: str, site: any, lows: int?, mediums: int?, highs: int?, criticals: int?, risk: int?, last_scan: any, running_scan: any, next_scan: any, assets: [map], scan_profile: str, type: str, unlimited: bool, report_type: str, report_fileformat: str, allowed_scan_profiles: [map], labels: [any], scanning_agent: any?, include_deduplicated_endpoints: bool?, teams: [map], blackout_period: any, fail_fast: bool, login_video: str, changed: str(date-time), changed_by: any, incremental: bool, reduced_scope: bool, schedule_incremental: bool, schedule_reduced_scope: bool, crawl_sequences_only: bool, schedule_crawl_sequences_only: bool, cancel_scan_on_nav_seq_failure: bool}

@endpoint GET /targets/{id}/integrations/azure-devops/
@required {id: str}
@returns(200) {project: map, work_item_type: str, auto_sync: bool, auto_sync_closed: bool}
@errors {400, 401, 404, 500}

@endpoint PUT /targets/{id}/integrations/azure-devops/
@required {id: str, project: map, work_item_type: str}
@optional {auto_sync: bool, auto_sync_closed: bool=false}
@returns(200) {project: map, work_item_type: str, auto_sync: bool, auto_sync_closed: bool}
@errors {400, 401, 404, 500}

@endpoint PATCH /targets/{id}/integrations/azure-devops/
@required {id: str}
@optional {project: map, work_item_type: str, auto_sync: bool, auto_sync_closed: bool=false}
@returns(200) {project: map, work_item_type: str, auto_sync: bool, auto_sync_closed: bool}
@errors {400, 401, 404, 500}

@endpoint DELETE /targets/{id}/integrations/azure-devops/
@required {id: str}
@returns(204)
@errors {400, 401, 404, 500}

@endpoint GET /targets/{id}/integrations/jira-cloud/
@required {id: str}
@returns(200) {auto_sync: bool, auto_sync_closed: bool, project_id: str, issue_type_id: str, status_mapping: map?, priority_mapping: map?}
@errors {400, 401, 404, 500}

@endpoint PUT /targets/{id}/integrations/jira-cloud/
@required {id: str, project_id: str, issue_type_id: str}
@optional {auto_sync: bool, auto_sync_closed: bool=false, status_mapping: map, priority_mapping: map}
@returns(200) {auto_sync: bool, auto_sync_closed: bool, project_id: str, issue_type_id: str, status_mapping: map?, priority_mapping: map?}
@errors {400, 401, 404, 500}

@endpoint PATCH /targets/{id}/integrations/jira-cloud/
@required {id: str}
@optional {auto_sync: bool, auto_sync_closed: bool=false, project_id: str, issue_type_id: str, status_mapping: map, priority_mapping: map}
@returns(200) {auto_sync: bool, auto_sync_closed: bool, project_id: str, issue_type_id: str, status_mapping: map?, priority_mapping: map?}
@errors {400, 401, 404, 500}

@endpoint DELETE /targets/{id}/integrations/jira-cloud/
@required {id: str}
@returns(204)
@errors {400, 401, 404, 500}

@endpoint GET /targets/{id}/integrations/jira-server/
@required {id: str}
@returns(200) {auto_sync: bool, auto_sync_closed: bool, project_id: str, issue_type_id: str, status_mapping: map?, priority_mapping: map?}
@errors {400, 401, 404, 500}

@endpoint PUT /targets/{id}/integrations/jira-server/
@required {id: str, project_id: str, issue_type_id: str}
@optional {auto_sync: bool, auto_sync_closed: bool=false, status_mapping: map, priority_mapping: map}
@returns(200) {auto_sync: bool, auto_sync_closed: bool, project_id: str, issue_type_id: str, status_mapping: map?, priority_mapping: map?}
@errors {400, 401, 404, 500}

@endpoint PATCH /targets/{id}/integrations/jira-server/
@required {id: str}
@optional {auto_sync: bool, auto_sync_closed: bool=false, project_id: str, issue_type_id: str, status_mapping: map, priority_mapping: map}
@returns(200) {auto_sync: bool, auto_sync_closed: bool, project_id: str, issue_type_id: str, status_mapping: map?, priority_mapping: map?}
@errors {400, 401, 404, 500}

@endpoint DELETE /targets/{id}/integrations/jira-server/
@required {id: str}
@returns(204)
@errors {400, 401, 404, 500}

@endpoint GET /targets/{id}/integrations/slack/
@required {id: str}
@returns(200) {webhook_url: str, notify_scan_started: bool, notify_scan_completed: bool, notify_critical_findings: bool, notify_high_findings: bool, notify_medium_findings: bool, notify_low_findings: bool, notify_finding_fixed: bool, notify_login_failed: bool, notify_retest_completed: bool, notify_navseq_failed: bool, notify_finding_pending_review: bool}
@errors {400, 401, 403, 404, 500}

@endpoint PUT /targets/{id}/integrations/slack/
@required {id: str}
@optional {webhook_url: str, notify_scan_started: bool, notify_scan_completed: bool, notify_critical_findings: bool, notify_high_findings: bool, notify_medium_findings: bool, notify_low_findings: bool, notify_finding_fixed: bool, notify_login_failed: bool=false, notify_retest_completed: bool, notify_navseq_failed: bool, notify_finding_pending_review: bool}
@returns(200) {webhook_url: str, notify_scan_started: bool, notify_scan_completed: bool, notify_critical_findings: bool, notify_high_findings: bool, notify_medium_findings: bool, notify_low_findings: bool, notify_finding_fixed: bool, notify_login_failed: bool, notify_retest_completed: bool, notify_navseq_failed: bool, notify_finding_pending_review: bool}
@errors {400, 401, 403, 404, 500}

@endpoint PATCH /targets/{id}/integrations/slack/
@required {id: str}
@optional {webhook_url: str, notify_scan_started: bool, notify_scan_completed: bool, notify_critical_findings: bool, notify_high_findings: bool, notify_medium_findings: bool, notify_low_findings: bool, notify_finding_fixed: bool, notify_login_failed: bool=false, notify_retest_completed: bool, notify_navseq_failed: bool, notify_finding_pending_review: bool}
@returns(200) {webhook_url: str, notify_scan_started: bool, notify_scan_completed: bool, notify_critical_findings: bool, notify_high_findings: bool, notify_medium_findings: bool, notify_low_findings: bool, notify_finding_fixed: bool, notify_login_failed: bool, notify_retest_completed: bool, notify_navseq_failed: bool, notify_finding_pending_review: bool}
@errors {400, 401, 403, 404, 500}

@endpoint DELETE /targets/{id}/integrations/slack/
@required {id: str}
@returns(204)
@errors {400, 401, 404, 500}

@endpoint GET /targets/{id}/login-video/
@required {id: str}
@returns(200)
@errors {404}

@endpoint DELETE /targets/{id}/logout-detection/
@required {id: str}
@returns(200) {id: str, site: any, lows: int?, mediums: int?, highs: int?, criticals: int?, risk: int?, last_scan: any, running_scan: any, next_scan: any, assets: [map], scan_profile: str, type: str, unlimited: bool, report_type: str, report_fileformat: str, allowed_scan_profiles: [map], labels: [any], scanning_agent: any?, include_deduplicated_endpoints: bool?, teams: [map], blackout_period: any, fail_fast: bool, login_video: str, changed: str(date-time), changed_by: any, incremental: bool, reduced_scope: bool, schedule_incremental: bool, schedule_reduced_scope: bool, crawl_sequences_only: bool, schedule_crawl_sequences_only: bool, cancel_scan_on_nav_seq_failure: bool}
@errors {400, 401, 404, 500}

@endpoint GET /targets/{id}/mle/
@required {id: str}
@returns(200) {configured: bool, enabled: bool, key_id: str?, scope: [str]?}
@errors {403, 404}

@endpoint PUT /targets/{id}/mle/
@required {id: str}
@returns(200) {configured: bool, enabled: bool, key_id: str?, scope: [str]?}
@errors {400, 403, 404}

@endpoint PATCH /targets/{id}/mle/
@required {id: str}
@optional {enabled: bool, key_id: str, scope: [str(uri)]}
@returns(200) {configured: bool, enabled: bool, key_id: str?, scope: [str]?}
@errors {400, 403, 404}

@endpoint DELETE /targets/{id}/mle/
@required {id: str}
@returns(204)
@errors {400, 403, 404}

@endpoint POST /targets/{id}/move-team/
@required {id: str, teams: [map{id!: str}]}
@returns(200) {id: str, name: str}
@errors {400, 401, 404, 500}

@endpoint GET /targets/{id}/mtls/
@required {id: str}
@returns(200) {configured: bool, enabled: bool}
@errors {403, 404}

@endpoint PUT /targets/{id}/mtls/
@required {id: str}
@returns(200) {configured: bool, enabled: bool}
@errors {400, 403, 404}

@endpoint PATCH /targets/{id}/mtls/
@required {id: str}
@optional {enabled: bool}
@returns(200) {configured: bool, enabled: bool}
@errors {400, 403, 404}

@endpoint DELETE /targets/{id}/mtls/
@required {id: str}
@returns(204)
@errors {400, 403, 404}

@endpoint DELETE /targets/{id}/otp/
@required {id: str}
@returns(200) {id: str, site: any, lows: int?, mediums: int?, highs: int?, criticals: int?, risk: int?, last_scan: any, running_scan: any, next_scan: any, assets: [map], scan_profile: str, type: str, unlimited: bool, report_type: str, report_fileformat: str, allowed_scan_profiles: [map], labels: [any], scanning_agent: any?, include_deduplicated_endpoints: bool?, teams: [map], blackout_period: any, fail_fast: bool, login_video: str, changed: str(date-time), changed_by: any, incremental: bool, reduced_scope: bool, schedule_incremental: bool, schedule_reduced_scope: bool, crawl_sequences_only: bool, schedule_crawl_sequences_only: bool, cancel_scan_on_nav_seq_failure: bool}
@errors {400, 401, 500}

@endpoint POST /targets/{id}/otp/{otp_url_token}/
@required {id: str, otp_url_token: str, otp: str}
@returns(200) {detail: str}
@errors {400, 401, 404, 500}

@endpoint POST /targets/{id}/otp/reset/
@required {id: str}
@returns(200) {detail: map{otp_url: str}}
@errors {400, 401, 404, 500}

@endpoint GET /targets/{id}/postman-authentication/
@required {id: str}
@returns(200) {postman_auth_folder: str, postman_auth_var_mapping: any?, postman_authentication_enabled: bool, postman_authentication_configured: str, fail_fast: bool}
@errors {400, 401, 500}

@endpoint PUT /targets/{id}/postman-authentication/
@required {id: str, postman_authentication_configured: str}
@optional {postman_auth_folder: str, postman_auth_var_mapping: any, postman_authentication_enabled: bool, fail_fast: bool=false}
@returns(200) {postman_auth_folder: str, postman_auth_var_mapping: any?, postman_authentication_enabled: bool, postman_authentication_configured: str, fail_fast: bool}
@errors {400, 401, 500}

@endpoint PATCH /targets/{id}/postman-authentication/
@required {id: str}
@optional {postman_auth_folder: str, postman_auth_var_mapping: any, postman_authentication_enabled: bool, postman_authentication_configured: str, fail_fast: bool=false}
@returns(200) {postman_auth_folder: str, postman_auth_var_mapping: any?, postman_authentication_enabled: bool, postman_authentication_configured: str, fail_fast: bool}
@errors {400, 401, 500}

@endpoint DELETE /targets/{id}/postman-authentication/
@required {id: str}
@returns(204)
@errors {400, 401, 500}

@endpoint GET /targets/{id}/risk_trend/
@required {id: str}
@returns(200) {start: str, stop: str, step: str, results: str}
@errors {400, 401, 404, 500}

@endpoint POST /targets/{id}/scan_now/
@required {id: str}
@optional {ignore_blackout_period: bool, scan_profile: str, reduced_scopes: [map{id!: str, url!: str(uri), enabled: bool}]}
@returns(200) {id: str, target: any, status: str, started: str(date-time)?, completed: str(date-time)?, scan_profile: str, lows: int?, mediums: int?, highs: int?, criticals: int?, created: str(date-time), unlimited: bool, changed: str(date-time), changed_by: any, stack: [any], crawler: any, fingerprinter: any, scanner: any, target_options: any, has_sequence_navigation: bool, incremental: bool, reduced_scope: bool, crawl_sequences_only: bool, ignore_blackout_period: bool, runtime: str, duration: str, sast_job_id: str?, sast_job_status: str?, user_data: str, login_video: str, warnings: [map], scheduled: bool}
@errors {400, 401, 404, 500}

@endpoint DELETE /targets/{id}/sequence-login/
@required {id: str}
@returns(200) {id: str, site: any, lows: int?, mediums: int?, highs: int?, criticals: int?, risk: int?, last_scan: any, running_scan: any, next_scan: any, assets: [map], scan_profile: str, type: str, unlimited: bool, report_type: str, report_fileformat: str, allowed_scan_profiles: [map], labels: [any], scanning_agent: any?, include_deduplicated_endpoints: bool?, teams: [map], blackout_period: any, fail_fast: bool, login_video: str, changed: str(date-time), changed_by: any, incremental: bool, reduced_scope: bool, schedule_incremental: bool, schedule_reduced_scope: bool, crawl_sequences_only: bool, schedule_crawl_sequences_only: bool, cancel_scan_on_nav_seq_failure: bool}
@errors {400, 401, 500}

@endpoint GET /targets/{id}/severity_trend/
@required {id: str}
@returns(200) {start: str, stop: str, step: str, results: str}
@errors {400, 401, 404, 500}

@endpoint GET /targets/{id}/signature/
@required {id: str}
@returns(200) {configured: bool, enabled: bool, signature_method: str?}
@errors {400, 401, 403, 404, 500}

@endpoint PUT /targets/{id}/signature/
@required {id: str, signature_method: str}
@returns(200) {configured: bool, enabled: bool, signature_method: str?}
@errors {400, 401, 403, 404, 500}

@endpoint PATCH /targets/{id}/signature/
@required {id: str}
@optional {enabled: bool}
@returns(200) {configured: bool, enabled: bool, signature_method: str?}
@errors {400, 401, 403, 404, 500}

@endpoint DELETE /targets/{id}/signature/
@required {id: str}
@returns(204)
@errors {400, 401, 403, 404, 500}

@endpoint GET /targets/{id}/top_vulns/
@required {id: str}
@returns(200) {results: [int]}
@errors {400, 401, 404, 500}

@endpoint POST /targets/{id}/upload_api_schema_file/
@required {id: str}
@returns(201) {id: str, site: map{id: str, name: str, desc: str?, url: str(uri), host: str, has_form_login: bool, form_login_url: str(uri), form_login_check_pattern: str, form_login: [map], logout_detection_enabled: bool, has_sequence_login: bool, has_basic_auth: bool, basic_auth: any, headers: [map], cookies: [map], whitelist: any, blacklist: any, changed: str(date-time), changed_by: any, auth_enabled: bool, logout_condition: str, check_session_url: str, has_otp: bool, otp_secret: str, otp_secret_is_sensitive: bool, otp_algorithm: str, otp_digits: int, otp_field: str, otp_submit: str, otp_login_sequence_totp_value: str, otp_type: str, otp_url: str, is_mtls_active: bool, is_signature_active: bool, is_mle_active: bool, postman_authentication_enabled: bool, postman_check_session_folder: str, stack: [any], verified: bool, verification_token: str, verification_date: str(date-time), verification_method: str, verification_last_error: str, api_scan_settings: any, openapi_check_session_method: str, openapi_check_session_media_type: str, openapi_check_session_expired_payload: str?}, lows: int?, mediums: int?, highs: int?, criticals: int?, risk: int?, last_scan: any, running_scan: any, next_scan: any, assets: [map], scan_profile: map{id: str, name: str, description: str?, builtin: str}, type: str, unlimited: bool, report_type: str, report_fileformat: str, allowed_scan_profiles: [map], labels: [map], scanning_agent: any?, include_deduplicated_endpoints: bool?, teams: [map], blackout_period: any, fail_fast: bool, login_video: str, changed: str(date-time), changed_by: any, incremental: bool, reduced_scope: bool, schedule_incremental: bool, schedule_reduced_scope: bool, crawl_sequences_only: bool, schedule_crawl_sequences_only: bool, cancel_scan_on_nav_seq_failure: bool}
@errors {400, 401, 404, 500}

@endpoint GET /targets/{scope}/findings/{id}/integrations/azure-devops/
@required {id: str, scope: str}
@returns(200) {selective_sync: bool, work_item_id: int?}
@errors {400, 401, 404, 500}

@endpoint PUT /targets/{scope}/findings/{id}/integrations/azure-devops/
@required {id: str, scope: str, work_item_id: int}
@optional {selective_sync: bool}
@returns(200) {selective_sync: bool, work_item_id: int?}
@errors {400, 401, 404, 500}

@endpoint PATCH /targets/{scope}/findings/{id}/integrations/azure-devops/
@required {id: str, scope: str}
@optional {selective_sync: bool, work_item_id: int}
@returns(200) {selective_sync: bool, work_item_id: int?}
@errors {400, 401, 404, 500}

@endpoint GET /targets/{scope}/findings/{id}/integrations/jira-cloud/
@required {id: str, scope: str}
@returns(200) {selective_sync: bool, issue_id: str, link: str, key: str}
@errors {400, 401, 404, 500}

@endpoint PUT /targets/{scope}/findings/{id}/integrations/jira-cloud/
@required {id: str, scope: str, issue_id: str, link: str}
@optional {selective_sync: bool, key: str}
@returns(200) {selective_sync: bool, issue_id: str, link: str, key: str}
@errors {400, 401, 404, 500}

@endpoint PATCH /targets/{scope}/findings/{id}/integrations/jira-cloud/
@required {id: str, scope: str}
@optional {selective_sync: bool, issue_id: str, link: str, key: str}
@returns(200) {selective_sync: bool, issue_id: str, link: str, key: str}
@errors {400, 401, 404, 500}

@endpoint GET /targets/{scope}/findings/{id}/integrations/jira-server/
@required {id: str, scope: str}
@returns(200) {selective_sync: bool, issue_id: str}
@errors {400, 401, 404, 500}

@endpoint PUT /targets/{scope}/findings/{id}/integrations/jira-server/
@required {id: str, scope: str, issue_id: str}
@optional {selective_sync: bool}
@returns(200) {selective_sync: bool, issue_id: str}
@errors {400, 401, 404, 500}

@endpoint PATCH /targets/{scope}/findings/{id}/integrations/jira-server/
@required {id: str, scope: str}
@optional {selective_sync: bool, issue_id: str}
@returns(200) {selective_sync: bool, issue_id: str}
@errors {400, 401, 404, 500}

@endpoint GET /targets/{target_id}/assets/
@required {target_id: str}
@optional {include: str, length: int, ordering: str, page: int, search: str}
@returns(200) {count: int, page_total: int, page: int, length: int, results: [map]}
@errors {400, 401, 404, 500}

@endpoint POST /targets/{target_id}/assets/
@required {target_id: str, id: str, verified: bool, verification_token: str(uuid), verification_date: str(date-time), verification_method: str(file/back_office/existing_domain/dns_txt/dns/dns_cname/meta_tag/whitelist/email/aws_route53/cloudflare/waved/akamai), verification_last_error: str, changed: str(date-time), changed_by: any, host: str}
@optional {include: str, skip_reachability_check: str, name: str, desc: str, stack: [any], headers: [map{value_is_sensitive: bool, name!: str, value!: str, allow_testing: bool, authentication: bool, authentication_secondary: bool}], cookies: [map{value_is_sensitive: bool, name!: str, value!: str, allow_testing: bool, authentication: bool, authentication_secondary: bool}], include: bool}
@returns(201) {id: str, name: str, desc: str?, stack: [any], verified: bool, verification_token: str(uuid), verification_date: str(date-time), verification_method: str, verification_last_error: str, changed: str(date-time), changed_by: any, headers: [map], cookies: [map], include: bool, host: str}
@errors {400, 401, 404, 500}

@endpoint GET /targets/{target_id}/assets/{id}/
@required {id: str, target_id: str}
@optional {include: str}
@returns(200) {id: str, name: str, desc: str?, stack: [any], verified: bool, verification_token: str(uuid), verification_date: str(date-time), verification_method: str, verification_last_error: str, changed: str(date-time), changed_by: any, headers: [map], cookies: [map], include: bool, host: str}
@errors {400, 401, 404, 500}

@endpoint PUT /targets/{target_id}/assets/{id}/
@required {id: str, target_id: str, id: str, verified: bool, verification_token: str(uuid), verification_date: str(date-time), verification_method: str(file/back_office/existing_domain/dns_txt/dns/dns_cname/meta_tag/whitelist/email/aws_route53/cloudflare/waved/akamai), verification_last_error: str, changed: str(date-time), changed_by: any, host: str}
@optional {include: str, name: str, desc: str, stack: [any], headers: [map{value_is_sensitive: bool, name!: str, value!: str, allow_testing: bool, authentication: bool, authentication_secondary: bool}], cookies: [map{value_is_sensitive: bool, name!: str, value!: str, allow_testing: bool, authentication: bool, authentication_secondary: bool}], include: bool}
@returns(200) {id: str, name: str, desc: str?, stack: [any], verified: bool, verification_token: str(uuid), verification_date: str(date-time), verification_method: str, verification_last_error: str, changed: str(date-time), changed_by: any, headers: [map], cookies: [map], include: bool, host: str}
@errors {400, 401, 404, 500}

@endpoint PATCH /targets/{target_id}/assets/{id}/
@required {id: str, target_id: str}
@optional {include: str, id: str, name: str, desc: str, stack: [any], verified: bool, verification_token: str(uuid), verification_date: str(date-time), verification_method: str(file/back_office/existing_domain/dns_txt/dns/dns_cname/meta_tag/whitelist/email/aws_route53/cloudflare/waved/akamai), verification_last_error: str, changed: str(date-time), changed_by: any, headers: [map{value_is_sensitive: bool, name!: str, value!: str, allow_testing: bool, authentication: bool, authentication_secondary: bool}], cookies: [map{value_is_sensitive: bool, name!: str, value!: str, allow_testing: bool, authentication: bool, authentication_secondary: bool}], include: bool, host: str}
@returns(200) {id: str, name: str, desc: str?, stack: [any], verified: bool, verification_token: str(uuid), verification_date: str(date-time), verification_method: str, verification_last_error: str, changed: str(date-time), changed_by: any, headers: [map], cookies: [map], include: bool, host: str}
@errors {400, 401, 404, 500}

@endpoint DELETE /targets/{target_id}/assets/{id}/
@required {id: str, target_id: str}
@returns(204)
@errors {400, 401, 404, 500}

@endpoint GET /targets/{target_id}/events/
@required {target_id: str}
@optional {length: int, ordering: str, page: int, search: str}
@returns(200) {count: int, page_total: int, page: int, length: int, results: [map]}
@errors {400, 401, 404, 500}

@endpoint GET /targets/{target_id}/events/{id}/
@required {id: str, target_id: str}
@returns(200) {id: str, event_type: str, occurred_at: str(date-time), object_type: str, content: str, webhooks: [map]}
@errors {400, 401, 404, 500}

@endpoint GET /targets/{target_id}/findings/
@required {target_id: str}
@optional {approval_date: str(date), assignee: [str], changed_after: str(date-time), changed_before: str(date-time), exclude: [str], expiration_date: str(date), include: str, label: [str], label_logical_operator: str(and/or), lastfound_after: str(date-time), lastfound_before: str(date-time), length: int, new: bool, ordering: str, page: int, review_status: [str], scan: [str], search: str, severity: [int], snyk_sast: bool, state: [str]}
@returns(200) {count: int, page_total: int, page: int, length: int, results: [map]}
@errors {400, 401, 404, 500}

@endpoint GET /targets/{target_id}/findings/{finding_id}/logs/
@required {finding_id: str, target_id: str}
@optional {length: int, message_type: [str], ordering: str, page: int, search: str}
@returns(200) {count: int, page_total: int, page: int, length: int, results: [map]}
@errors {400, 401, 500}

@endpoint GET /targets/{target_id}/findings/{id}/
@required {id: int, target_id: str}
@optional {include: str}
@returns(200) {id: str, target: any, scans: str, labels: [map], fix: str, requests: [map], evidence: str, extra: str, definition: map{id: str, name: str, desc: str?, cwe_id: str?, cwe_name: str?}, url: str, path: str, method: str, insertion_point: str, parameter: str, value: str?, params: str, assignee: map{id: str, email: str(email), name: str}, state: str, severity: int, cvss_score: num(double)?, cvss_vector: str, last_found: str(date-time), retesting: bool, new: bool, review_status: str, review_reason: str, created_at: str(date-time)?, changed: str(date-time), changed_by: any, comment: str?, change_reason: str, expiration_date: str(date)?, approver_name: str, approval_date: str(date)?}
@errors {400, 401, 404, 500}

@endpoint PUT /targets/{target_id}/findings/{id}/
@required {id: int, target_id: str, id: str, target: any, scans: str, labels: [map{id!: str, name!: str, color: str, changed_by!: any, changed!: str(date-time)}], fix: str, requests: [map{request: str, response: str}], evidence: str, extra: str, definition: map{id!: str, name: str, desc: str, cwe_id: str, cwe_name: str}, url: str, path: str, method: str(get/post/trace/options/put/delete), insertion_point: str(cookie/parameter/arbitrary_url_param/header/url_folder/url_filename/json_parameter/request_body/multipart_parameter/graphql_parameter/non_standard_parameter), parameter: str, value: str, params: str, assignee: map{id!: str, email: str(email), name!: str}, cvss_score: num(double), cvss_vector: str, retesting: bool, new: bool, created_at: str(date-time), changed: str(date-time), changed_by: any}
@optional {state: str(notfixed/invalid/accepted/fixed), severity: int(10/20/30/40), last_found: str(date-time), review_status: str(notrequired/pending/rejected/accepted/), review_reason: str, comment: str, change_reason: str, expiration_date: str(date), approver_name: str, approval_date: str(date)}
@returns(200) {id: str, target: any, scans: str, labels: [map], fix: str, requests: [map], evidence: str, extra: str, definition: map{id: str, name: str, desc: str?, cwe_id: str?, cwe_name: str?}, url: str, path: str, method: str, insertion_point: str, parameter: str, value: str?, params: str, assignee: map{id: str, email: str(email), name: str}, state: str, severity: int, cvss_score: num(double)?, cvss_vector: str, last_found: str(date-time), retesting: bool, new: bool, review_status: str, review_reason: str, created_at: str(date-time)?, changed: str(date-time), changed_by: any, comment: str?, change_reason: str, expiration_date: str(date)?, approver_name: str, approval_date: str(date)?}
@errors {400, 401, 404, 500}

@endpoint PATCH /targets/{target_id}/findings/{id}/
@required {id: int, target_id: str}
@optional {id: int, target: str, scans: str, labels: [any], fix: str, requests: [map{request: str, response: str}], evidence: str, extra: str, definition: str, url: str, path: str, method: str(get/post/trace/options/put/delete), insertion_point: str(cookie/parameter/arbitrary_url_param/header/url_folder/url_filename/json_parameter/request_body/multipart_parameter/graphql_parameter/non_standard_parameter), parameter: str, value: str, params: str, assignee: str, state: str(notfixed/invalid/accepted/fixed), severity: int(10/20/30/40), cvss_score: num(double), cvss_vector: str, last_found: str(date-time), retesting: bool, new: bool, review_status: str(notrequired/pending/rejected/accepted/), review_reason: str, created_at: str(date-time), changed: str(date-time), changed_by: any, comment: str, change_reason: str, expiration_date: str(date), approver_name: str, approval_date: str(date)}
@returns(200) {id: str, target: any, scans: str, labels: [map], fix: str, requests: [map], evidence: str, extra: str, definition: map{id: str, name: str, desc: str?, cwe_id: str?, cwe_name: str?}, url: str, path: str, method: str, insertion_point: str, parameter: str, value: str?, params: str, assignee: map{id: str, email: str(email), name: str}, state: str, severity: int, cvss_score: num(double)?, cvss_vector: str, last_found: str(date-time), retesting: bool, new: bool, review_status: str, review_reason: str, created_at: str(date-time)?, changed: str(date-time), changed_by: any, comment: str?, change_reason: str, expiration_date: str(date)?, approver_name: str, approval_date: str(date)?}
@errors {400, 401, 404, 500}

@endpoint POST /targets/{target_id}/findings/{id}/retest/
@required {id: int, target_id: str}
@returns(200) {id: str, target: any, status: str, started: str(date-time)?, completed: str(date-time)?, scan_profile: str, lows: int?, mediums: int?, highs: int?, criticals: int?, created: str(date-time), unlimited: bool, changed: str(date-time), changed_by: any, stack: [any], crawler: any, fingerprinter: any, scanner: any, target_options: any, has_sequence_navigation: bool, incremental: bool, reduced_scope: bool, crawl_sequences_only: bool, ignore_blackout_period: bool, runtime: str, duration: str, sast_job_id: str?, sast_job_status: str?, user_data: str, login_video: str, warnings: [map], scheduled: bool}
@errors {400, 401, 404, 500}

@endpoint POST /targets/{target_id}/findings/bulk/report/
@required {target_id: str, ids: [map{target_id!: str, finding_id!: int}]}
@returns(200) {token: str}
@errors {400, 401, 404, 500}

@endpoint POST /targets/{target_id}/findings/bulk/retest/
@required {target_id: str, ids: [str]}
@optional {ignore_blackout_period: bool, scan_profile: str, reduced_scopes: [map{id!: str, url!: str(uri), enabled: bool}]}
@returns(200) {ids: [str]}
@errors {400, 401, 404, 500}

@endpoint POST /targets/{target_id}/findings/bulk/update/
@required {target_id: str, ids: [str], id: int, target: str, scans: str, fix: str, requests: [map{request: str, response: str}], evidence: str, extra: str, definition: str, url: str, path: str, method: str(get/post/trace/options/put/delete), insertion_point: str(cookie/parameter/arbitrary_url_param/header/url_folder/url_filename/json_parameter/request_body/multipart_parameter/graphql_parameter/non_standard_parameter), parameter: str, value: str, params: str, cvss_score: num(double), cvss_vector: str, retesting: bool, new: bool, created_at: str(date-time), changed: str(date-time), changed_by: any}
@optional {labels: [any], assignee: str, state: str(notfixed/invalid/accepted/fixed), severity: int(10/20/30/40), last_found: str(date-time), review_status: str(notrequired/pending/rejected/accepted/), review_reason: str, comment: str, change_reason: str, expiration_date: str(date), approver_name: str, approval_date: str(date)}
@returns(200) {ids: [str]}
@errors {400, 401, 404, 500}

@endpoint GET /targets/{target_id}/findings/report/
@required {target_id: str}
@returns(200) {id: str, name: str, date_time: str(date-time)?, recurrence: str, timezone: str, on_day_of_week: bool, scheduled_day_of_week: int?, week_index: str?, filters: map{severity: [int], state: [str], assignee: [str], label: [str], new: bool?, target_label: [str], target: [str], team: [str], search: str, assessment: str, findings: [str], report_type: str, report_fileformat: str, finding_target_ids: [map]}, report_type: str, report_fileformat: str, enabled: bool}
@errors {400, 401, 404, 500}

@endpoint DELETE /targets/{target_id}/integrations/snyk-sast/code-projects/{id}/
@required {id: str, target_id: str(uuid)}
@returns(204)

@endpoint GET /targets/{target_id}/logout/
@required {target_id: str}
@optional {length: int, ordering: str, page: int, search: str}
@returns(200) {count: int, page_total: int, page: int, length: int, results: [map]}
@errors {400, 401, 404, 500}

@endpoint POST /targets/{target_id}/logout/
@required {target_id: str, id: str, value: str}
@optional {type: str(text/url/sel/status_code/body_contains/header)}
@returns(200) {id: str, type: str, value: str}
@errors {400, 401, 404, 500}

@endpoint GET /targets/{target_id}/logout/{id}/
@required {id: str, target_id: str}
@returns(200) {id: str, type: str, value: str}
@errors {400, 401, 404, 500}

@endpoint PUT /targets/{target_id}/logout/{id}/
@required {id: str, target_id: str, id: str, value: str}
@optional {type: str(text/url/sel/status_code/body_contains/header)}
@returns(200) {id: str, type: str, value: str}
@errors {400, 401, 404, 500}

@endpoint PATCH /targets/{target_id}/logout/{id}/
@required {id: str, target_id: str}
@optional {id: str, type: str(text/url/sel/status_code/body_contains/header), value: str}
@returns(200) {id: str, type: str, value: str}
@errors {400, 401, 404, 500}

@endpoint DELETE /targets/{target_id}/logout/{id}/
@required {id: str, target_id: str}
@returns(204)
@errors {400, 401, 404, 500}

@endpoint GET /targets/{target_id}/reduced-scopes/
@required {target_id: str}
@optional {enabled: bool, length: int, ordering: str, page: int, search: str}
@returns(200) {count: int, page_total: int, page: int, length: int, results: [map]}
@errors {400, 401, 404, 500}

@endpoint POST /targets/{target_id}/reduced-scopes/
@required {target_id: str, id: str, url: str(uri)}
@optional {enabled: bool}
@returns(201) {id: str, url: str(uri), enabled: bool}
@errors {400, 401, 404, 500}

@endpoint GET /targets/{target_id}/reduced-scopes/{id}/
@required {id: str, target_id: str}
@returns(200) {id: str, url: str(uri), enabled: bool}
@errors {400, 401, 404, 500}

@endpoint PUT /targets/{target_id}/reduced-scopes/{id}/
@required {id: str, target_id: str, id: str, url: str(uri)}
@optional {enabled: bool}
@returns(200) {id: str, url: str(uri), enabled: bool}
@errors {400, 401, 404, 500}

@endpoint PATCH /targets/{target_id}/reduced-scopes/{id}/
@required {id: str, target_id: str}
@optional {id: str, url: str(uri), enabled: bool}
@returns(200) {id: str, url: str(uri), enabled: bool}
@errors {400, 401, 404, 500}

@endpoint DELETE /targets/{target_id}/reduced-scopes/{id}/
@required {id: str, target_id: str}
@returns(204)
@errors {400, 401, 404, 500}

@endpoint GET /targets/{target_id}/scan/
@required {target_id: str}
@optional {exclude: [str], length: int, page: int}
@returns(200) {id: str, target: any, status: str, started: str(date-time)?, completed: str(date-time)?, scan_profile: str, lows: int?, mediums: int?, highs: int?, criticals: int?, created: str(date-time), unlimited: bool, changed: str(date-time), changed_by: any, stack: [any], crawler: any, fingerprinter: any, scanner: any, target_options: any, has_sequence_navigation: bool, incremental: bool, reduced_scope: bool, crawl_sequences_only: bool, ignore_blackout_period: bool, runtime: str, duration: str, sast_job_id: str?, sast_job_status: str?, user_data: str, login_video: str, warnings: [map], scheduled: bool}
@errors {400, 401, 404, 500}

@endpoint POST /targets/{target_id}/scan/cancel/
@required {target_id: str}
@returns(200) {id: str, target: any, status: str, started: str(date-time)?, completed: str(date-time)?, scan_profile: str, lows: int?, mediums: int?, highs: int?, criticals: int?, created: str(date-time), unlimited: bool, changed: str(date-time), changed_by: any, stack: [any], crawler: any, fingerprinter: any, scanner: any, target_options: any, has_sequence_navigation: bool, incremental: bool, reduced_scope: bool, crawl_sequences_only: bool, ignore_blackout_period: bool, runtime: str, duration: str, sast_job_id: str?, sast_job_status: str?, user_data: str, login_video: str, warnings: [map], scheduled: bool}
@errors {400, 401, 404, 500}

@endpoint POST /targets/{target_id}/scan/pause/
@required {target_id: str}
@returns(200) {id: str, target: any, status: str, started: str(date-time)?, completed: str(date-time)?, scan_profile: str, lows: int?, mediums: int?, highs: int?, criticals: int?, created: str(date-time), unlimited: bool, changed: str(date-time), changed_by: any, stack: [any], crawler: any, fingerprinter: any, scanner: any, target_options: any, has_sequence_navigation: bool, incremental: bool, reduced_scope: bool, crawl_sequences_only: bool, ignore_blackout_period: bool, runtime: str, duration: str, sast_job_id: str?, sast_job_status: str?, user_data: str, login_video: str, warnings: [map], scheduled: bool}
@errors {400, 401, 404, 500}

@endpoint POST /targets/{target_id}/scan/resume/
@required {target_id: str}
@optional {ignore_blackout_period: bool}
@returns(200) {id: str, target: any, status: str, started: str(date-time)?, completed: str(date-time)?, scan_profile: str, lows: int?, mediums: int?, highs: int?, criticals: int?, created: str(date-time), unlimited: bool, changed: str(date-time), changed_by: any, stack: [any], crawler: any, fingerprinter: any, scanner: any, target_options: any, has_sequence_navigation: bool, incremental: bool, reduced_scope: bool, crawl_sequences_only: bool, ignore_blackout_period: bool, runtime: str, duration: str, sast_job_id: str?, sast_job_status: str?, user_data: str, login_video: str, warnings: [map], scheduled: bool}
@errors {400, 401, 404, 500}

@endpoint GET /targets/{target_id}/scans/
@required {target_id: str}
@optional {completed__gt: str(date-time), completed__gte: str(date-time), completed__lt: str(date-time), completed__lte: str(date-time), label: [str], length: int, ordering: str, page: int, partial: bool, scan_profile: [str], search: str, started__gt: str(date-time), started__gte: str(date-time), started__lt: str(date-time), started__lte: str(date-time), started_after: str(date-time), started_before: str(date-time), status: [str], target: [str], team: [str], warning: [str]}
@returns(200) {count: int, page_total: int, page: int, length: int, results: [map]}
@errors {400, 401, 404, 500}

@endpoint GET /targets/{target_id}/scans/{id}/
@required {id: str, target_id: str}
@returns(200) {id: str, target: any, status: str, started: str(date-time)?, completed: str(date-time)?, scan_profile: str, lows: int?, mediums: int?, highs: int?, criticals: int?, created: str(date-time), unlimited: bool, changed: str(date-time), changed_by: any, stack: [any], crawler: any, fingerprinter: any, scanner: any, target_options: any, has_sequence_navigation: bool, incremental: bool, reduced_scope: bool, crawl_sequences_only: bool, ignore_blackout_period: bool, runtime: str, duration: str, sast_job_id: str?, sast_job_status: str?, user_data: str, login_video: str, warnings: [map], scheduled: bool}
@errors {400, 401, 404, 500}

@endpoint PUT /targets/{target_id}/scans/{id}/
@required {id: str, target_id: str, id: str, target: any, status: str(canceled/canceling/completed/completed_with_errors/failed/paused/pausing/queued/resuming/started/under_review/finishing_up), started: str(date-time), completed: str(date-time), scan_profile: str, lows: int, mediums: int, highs: int, criticals: int, created: str(date-time), unlimited: bool, changed: str(date-time), changed_by: any, stack: [any], crawler: any, fingerprinter: any, scanner: any, target_options: any, incremental: bool, reduced_scope: bool, crawl_sequences_only: bool, ignore_blackout_period: bool, sast_job_id: str, sast_job_status: str, login_video: str, warnings: [map{id!: str, name!: str, message: str, detail: any}], scheduled: bool}
@optional {has_sequence_navigation: bool, runtime: str, duration: str, user_data: str}
@returns(200) {id: str, target: any, status: str, started: str(date-time)?, completed: str(date-time)?, scan_profile: str, lows: int?, mediums: int?, highs: int?, criticals: int?, created: str(date-time), unlimited: bool, changed: str(date-time), changed_by: any, stack: [any], crawler: any, fingerprinter: any, scanner: any, target_options: any, has_sequence_navigation: bool, incremental: bool, reduced_scope: bool, crawl_sequences_only: bool, ignore_blackout_period: bool, runtime: str, duration: str, sast_job_id: str?, sast_job_status: str?, user_data: str, login_video: str, warnings: [map], scheduled: bool}
@errors {400, 401, 404, 500}

@endpoint PATCH /targets/{target_id}/scans/{id}/
@required {id: str, target_id: str}
@optional {id: str, target: any, status: str(canceled/canceling/completed/completed_with_errors/failed/paused/pausing/queued/resuming/started/under_review/finishing_up), started: str(date-time), completed: str(date-time), scan_profile: str, lows: int, mediums: int, highs: int, criticals: int, created: str(date-time), unlimited: bool, changed: str(date-time), changed_by: any, stack: [any], crawler: any, fingerprinter: any, scanner: any, target_options: any, has_sequence_navigation: bool, incremental: bool, reduced_scope: bool, crawl_sequences_only: bool, ignore_blackout_period: bool, runtime: str, duration: str, sast_job_id: str, sast_job_status: str, user_data: str, login_video: str, warnings: [map{id!: str, name!: str, message: str, detail: any}], scheduled: bool}
@returns(200) {id: str, target: any, status: str, started: str(date-time)?, completed: str(date-time)?, scan_profile: str, lows: int?, mediums: int?, highs: int?, criticals: int?, created: str(date-time), unlimited: bool, changed: str(date-time), changed_by: any, stack: [any], crawler: any, fingerprinter: any, scanner: any, target_options: any, has_sequence_navigation: bool, incremental: bool, reduced_scope: bool, crawl_sequences_only: bool, ignore_blackout_period: bool, runtime: str, duration: str, sast_job_id: str?, sast_job_status: str?, user_data: str, login_video: str, warnings: [map], scheduled: bool}
@errors {400, 401, 404, 500}

@endpoint POST /targets/{target_id}/scans/{id}/cancel/
@required {id: str, target_id: str}
@returns(200) {id: str, target: any, status: str, started: str(date-time)?, completed: str(date-time)?, scan_profile: str, lows: int?, mediums: int?, highs: int?, criticals: int?, created: str(date-time), unlimited: bool, changed: str(date-time), changed_by: any, stack: [any], crawler: any, fingerprinter: any, scanner: any, target_options: any, has_sequence_navigation: bool, incremental: bool, reduced_scope: bool, crawl_sequences_only: bool, ignore_blackout_period: bool, runtime: str, duration: str, sast_job_id: str?, sast_job_status: str?, user_data: str, login_video: str, warnings: [map], scheduled: bool}
@errors {400, 401, 404, 500}

@endpoint GET /targets/{target_id}/scans/{id}/endpoints/
@required {id: str, target_id: str}
@returns(200)
@errors {400, 401, 404, 500}

@endpoint POST /targets/{target_id}/scans/{id}/pause/
@required {id: str, target_id: str}
@returns(200) {id: str, target: any, status: str, started: str(date-time)?, completed: str(date-time)?, scan_profile: str, lows: int?, mediums: int?, highs: int?, criticals: int?, created: str(date-time), unlimited: bool, changed: str(date-time), changed_by: any, stack: [any], crawler: any, fingerprinter: any, scanner: any, target_options: any, has_sequence_navigation: bool, incremental: bool, reduced_scope: bool, crawl_sequences_only: bool, ignore_blackout_period: bool, runtime: str, duration: str, sast_job_id: str?, sast_job_status: str?, user_data: str, login_video: str, warnings: [map], scheduled: bool}
@errors {400, 401, 404, 500}

@endpoint GET /targets/{target_id}/scans/{id}/report/
@required {id: str, target_id: str}
@optional {report_type: str(default/executive_summary/hipaa/iso27001/owasp/pci/pci4)}
@returns(200)
@errors {400, 401, 404, 500}

@endpoint POST /targets/{target_id}/scans/{id}/resume/
@required {id: str, target_id: str}
@optional {ignore_blackout_period: bool}
@returns(200) {id: str, target: any, status: str, started: str(date-time)?, completed: str(date-time)?, scan_profile: str, lows: int?, mediums: int?, highs: int?, criticals: int?, created: str(date-time), unlimited: bool, changed: str(date-time), changed_by: any, stack: [any], crawler: any, fingerprinter: any, scanner: any, target_options: any, has_sequence_navigation: bool, incremental: bool, reduced_scope: bool, crawl_sequences_only: bool, ignore_blackout_period: bool, runtime: str, duration: str, sast_job_id: str?, sast_job_status: str?, user_data: str, login_video: str, warnings: [map], scheduled: bool}
@errors {400, 401, 404, 500}

@endpoint GET /targets/{target_id}/scans/dates/
@required {target_id: str}
@returns(200)
@errors {400, 401, 404, 500}

@endpoint GET /targets/{target_id}/scans/retrieve_page/
@required {target_id: str}
@returns(200) {page: int}
@errors {400, 401, 404, 500}

@endpoint GET /targets/{target_id}/scheduledscans/
@required {target_id: str}
@optional {length: int, ordering: str, page: int, search: str}
@returns(200) {count: int, page_total: int, page: int, length: int, results: [map]}
@errors {400, 401, 404, 500}

@endpoint POST /targets/{target_id}/scheduledscans/
@required {target_id: str, id: str, target: any, date_time: str(date-time), changed: str(date-time), changed_by: any, blackout_period: any, unlimited: str}
@optional {recurrence: str(h/d/w/m/q/), timezone: str, run_on_day_of_week: bool, scheduled_day_of_week: int(1/2/3/4/5/6/7), week_index: str(first/second/third/fourth/last/), partial_scan: bool, override_target_settings: bool, incremental: bool, reduced_scope: bool, scan_profile: str}
@returns(201) {id: str, target: any, date_time: str(date-time), recurrence: str, changed: str(date-time), changed_by: any, blackout_period: any, timezone: str, run_on_day_of_week: bool, scheduled_day_of_week: int?, week_index: str?, partial_scan: bool, override_target_settings: bool, incremental: bool, reduced_scope: bool, scan_profile: str?, unlimited: str}
@errors {400, 401, 404, 500}

@endpoint GET /targets/{target_id}/scheduledscans/{id}/
@required {id: str, target_id: str}
@returns(200) {id: str, target: any, date_time: str(date-time), recurrence: str, changed: str(date-time), changed_by: any, blackout_period: any, timezone: str, run_on_day_of_week: bool, scheduled_day_of_week: int?, week_index: str?, partial_scan: bool, override_target_settings: bool, incremental: bool, reduced_scope: bool, scan_profile: str?, unlimited: str}
@errors {400, 401, 404, 500}

@endpoint PUT /targets/{target_id}/scheduledscans/{id}/
@required {id: str, target_id: str, id: str, target: any, date_time: str(date-time), changed: str(date-time), changed_by: any, blackout_period: any, unlimited: str}
@optional {recurrence: str(h/d/w/m/q/), timezone: str, run_on_day_of_week: bool, scheduled_day_of_week: int(1/2/3/4/5/6/7), week_index: str(first/second/third/fourth/last/), partial_scan: bool, override_target_settings: bool, incremental: bool, reduced_scope: bool, scan_profile: str}
@returns(200) {id: str, target: any, date_time: str(date-time), recurrence: str, changed: str(date-time), changed_by: any, blackout_period: any, timezone: str, run_on_day_of_week: bool, scheduled_day_of_week: int?, week_index: str?, partial_scan: bool, override_target_settings: bool, incremental: bool, reduced_scope: bool, scan_profile: str?, unlimited: str}
@errors {400, 401, 404, 500}

@endpoint PATCH /targets/{target_id}/scheduledscans/{id}/
@required {id: str, target_id: str}
@optional {id: str, target: any, date_time: str(date-time), recurrence: str(h/d/w/m/q/), changed: str(date-time), changed_by: any, blackout_period: any, timezone: str, run_on_day_of_week: bool, scheduled_day_of_week: int(1/2/3/4/5/6/7), week_index: str(first/second/third/fourth/last/), partial_scan: bool, override_target_settings: bool, incremental: bool, reduced_scope: bool, scan_profile: str, unlimited: str}
@returns(200) {id: str, target: any, date_time: str(date-time), recurrence: str, changed: str(date-time), changed_by: any, blackout_period: any, timezone: str, run_on_day_of_week: bool, scheduled_day_of_week: int?, week_index: str?, partial_scan: bool, override_target_settings: bool, incremental: bool, reduced_scope: bool, scan_profile: str?, unlimited: str}
@errors {400, 401, 404, 500}

@endpoint DELETE /targets/{target_id}/scheduledscans/{id}/
@required {id: str, target_id: str}
@returns(204)
@errors {400, 401, 404, 500}

@endpoint GET /targets/{target_id}/scheduledscans/expanded/
@required {target_id: str}
@returns(200) {results: [map]}
@errors {400, 401, 404, 500}

@endpoint GET /targets/{target_id}/sequences/
@required {target_id: str}
@optional {enabled: bool, include: str(content/target), length: int, name: str, ordering: str, page: int, search: str, type: str(login/navigation)}
@returns(200) {count: int, page_total: int, page: int, length: int, results: [map]}
@errors {400, 401, 404, 500}

@endpoint POST /targets/{target_id}/sequences/
@required {target_id: str, id: str, name: str, index: int, content: str}
@optional {include: str, requires_authentication: bool, type: str(login/navigation), enabled: bool, custom_field_mappings: [map{name!: str, value!: str, value_is_sensitive: bool}]}
@returns(201) {id: str, name: str?, requires_authentication: bool, type: str, enabled: bool, index: int?, custom_field_mappings: [map], content: str}
@errors {400, 401, 404, 500}

@endpoint GET /targets/{target_id}/sequences/{id}/
@required {id: str, target_id: str}
@optional {include: str(content/target)}
@returns(200) {id: str, name: str?, requires_authentication: bool, type: str, enabled: bool, index: int?, custom_field_mappings: [map], content: str}
@errors {400, 401, 404, 500}

@endpoint PUT /targets/{target_id}/sequences/{id}/
@required {id: str, target_id: str, id: str, name: str, index: int, content: str}
@optional {include: str, requires_authentication: bool, type: str(login/navigation), enabled: bool, custom_field_mappings: [map{name!: str, value!: str, value_is_sensitive: bool}]}
@returns(200) {id: str, name: str?, requires_authentication: bool, type: str, enabled: bool, index: int?, custom_field_mappings: [map], content: str}
@errors {400, 401, 404, 500}

@endpoint PATCH /targets/{target_id}/sequences/{id}/
@required {id: str, target_id: str}
@optional {include: str, id: str, name: str, requires_authentication: bool, type: str(login/navigation), enabled: bool, index: int, custom_field_mappings: [map{name!: str, value!: str, value_is_sensitive: bool}], content: str}
@returns(200) {id: str, name: str?, requires_authentication: bool, type: str, enabled: bool, index: int?, custom_field_mappings: [map], content: str}
@errors {400, 401, 404, 500}

@endpoint DELETE /targets/{target_id}/sequences/{id}/
@required {id: str, target_id: str}
@returns(204)
@errors {400, 401, 404, 500}

@endpoint POST /targets/{target_id}/sequences/{id}/order/
@required {id: str, target_id: str, id: str, name: str, index: int, content: str}
@optional {requires_authentication: bool, type: str(login/navigation), enabled: bool, custom_field_mappings: [map{name!: str, value!: str, value_is_sensitive: bool}]}
@returns(200) {id: str, name: str?, requires_authentication: bool, type: str, enabled: bool, index: int?, custom_field_mappings: [map], content: str}
@errors {400, 401, 404, 500}

@endpoint GET /targets/{target_id}/webhooks/
@required {target_id: str}
@optional {length: int, ordering: str, page: int, search: str}
@returns(200) {count: int, page_total: int, page: int, length: int, results: [map]}
@errors {400, 401, 404, 500}

@endpoint POST /targets/{target_id}/webhooks/
@required {target_id: str, id: str, name: str, url: str(uri), created: str(date-time), created_by: any, changed: str(date-time), changed_by: any}
@optional {check_cert: bool, api_version: str}
@returns(200) {id: str, event_type: str, occurred_at: str(date-time), object_type: str, content: str, webhooks: [map]}
@errors {400, 401, 404, 500}

@endpoint GET /targets/{target_id}/webhooks/{id}/
@required {id: str, target_id: str}
@returns(200) {id: str, event_type: str, occurred_at: str(date-time), object_type: str, content: str, webhooks: [map]}
@errors {400, 401, 404, 500}

@endpoint PUT /targets/{target_id}/webhooks/{id}/
@required {id: str, target_id: str, id: str, name: str, url: str(uri), created: str(date-time), created_by: any, changed: str(date-time), changed_by: any}
@optional {check_cert: bool, api_version: str}
@returns(200) {id: str, event_type: str, occurred_at: str(date-time), object_type: str, content: str, webhooks: [map]}
@errors {400, 401, 404, 500}

@endpoint PATCH /targets/{target_id}/webhooks/{id}/
@required {id: str, target_id: str}
@optional {id: str, name: str, url: str(uri), check_cert: bool, api_version: str, created: str(date-time), created_by: any, changed: str(date-time), changed_by: any}
@returns(200) {id: str, event_type: str, occurred_at: str(date-time), object_type: str, content: str, webhooks: [map]}
@errors {400, 401, 404, 500}

@endpoint DELETE /targets/{target_id}/webhooks/{id}/
@required {id: str, target_id: str}
@returns(204)
@errors {400, 401, 404, 500}

@endpoint GET /targets/all/average_fix_time/
@returns(200) {results: map{<vuln name>: str}}
@errors {400, 401, 404, 500}

@endpoint GET /targets/all/needs_attention_pie/
@returns(200) {results: [[any]]}
@errors {400, 401, 404, 500}

@endpoint GET /targets/all/needs_attention_top/
@returns(200)
@errors {400, 401, 404, 500}

@endpoint GET /targets/all/risk_trend/
@returns(200) {start: str, stop: str, step: str, results: str}
@errors {400, 401, 404, 500}

@endpoint GET /targets/all/scans/
@returns(200) {id: str, target: any, status: str, started: str(date-time)?, completed: str(date-time)?, scan_profile: str, lows: int?, mediums: int?, highs: int?, criticals: int?, created: str(date-time), unlimited: bool, changed: str(date-time), changed_by: any, stack: [any], crawler: any, fingerprinter: any, scanner: any, target_options: any, has_sequence_navigation: bool, incremental: bool, reduced_scope: bool, crawl_sequences_only: bool, ignore_blackout_period: bool, runtime: str, duration: str, sast_job_id: str?, sast_job_status: str?, user_data: str, login_video: str, warnings: [map], scheduled: bool}
@errors {400, 401, 500}

@endpoint GET /targets/all/scheduledscans/expanded/
@returns(200) {results: [map]}
@errors {400, 401, 404, 500}

@endpoint GET /targets/all/severity_trend/
@returns(200) {start: str, stop: str, step: str, results: str}
@errors {400, 401, 404, 500}

@endpoint GET /targets/all/top_vulns/
@returns(200) {results: [int]}
@errors {400, 401, 404, 500}

@endpoint GET /targets/assets/
@optional {id: [str], is_id_404_validation: bool=false, length: int, ordering: str, page: int, search: str, target: [str]}
@returns(200) {count: int, page_total: int, page: int, length: int, results: [map]}
@errors {400, 401, 404, 500}

@endpoint POST /targets/bulk/delete/
@required {ids: [str]}
@optional {is_id_404_validation: bool=false}
@returns(200) {ids: [str]}
@errors {400, 401, 500}

@endpoint POST /targets/bulk/move-team/
@required {teams: [map{id!: str}], ids: [str]}
@returns(200) {teams: [map], ids: [str]}
@errors {400, 401, 500}

@endpoint POST /targets/bulk/update/
@required {ids: [str], id: str, site: any, lows: int, mediums: int, highs: int, criticals: int, risk: int, last_scan: any, running_scan: any, next_scan: any, assets: [map{id!: str, account!: str, name!: str, host!: str, desc!: str, stack: [any], verified: bool, verification_token!: str(uuid), verification_date!: str(date-time), verification_method!: str, verification_last_error!: str, changed!: str(date-time), changed_by!: any, headers!: [map], cookies: [map], include!: bool}], unlimited: bool, allowed_scan_profiles: [map{id!: str, name: str, description: str, builtin!: str}], teams: [any], login_video: str, changed: str(date-time), changed_by: any}
@optional {is_id_404_validation: bool=false, scan_profile: str, type: str, report_type: str(default/executive_summary/owasp/pci/pci4/iso27001/hipaa), report_fileformat: str(pdf/docx), labels: [any], scanning_agent: any, include_deduplicated_endpoints: bool, blackout_period: any, fail_fast: bool, incremental: bool, reduced_scope: bool, schedule_incremental: bool, schedule_reduced_scope: bool, crawl_sequences_only: bool, schedule_crawl_sequences_only: bool, cancel_scan_on_nav_seq_failure: bool}
@returns(200) {ids: [str]}
@errors {400, 401, 500}

@endpoint GET /targets/download/
@returns(200)
@errors {400, 401, 500}

@endpoint GET /targets/sequences/
@optional {enabled: bool, id: [str], include: str, is_id_404_validation: bool=false, length: int, name: str, ordering: str, page: int, search: str, target: [str], type: str(login/navigation)}
@returns(200) {count: int, page_total: int, page: int, length: int, results: [map]}
@errors {400, 401, 404, 500}

@endpoint POST /targets/upload/
@required {id: str, site: any, lows: int, mediums: int, highs: int, criticals: int, risk: int, last_scan: any, running_scan: any, next_scan: any, assets: [map{id!: str, account!: str, name!: str, host!: str, desc!: str, stack: [any], verified: bool, verification_token!: str(uuid), verification_date!: str(date-time), verification_method!: str, verification_last_error!: str, changed!: str(date-time), changed_by!: any, headers!: [map], cookies: [map], include!: bool}], allowed_scan_profiles: [map{id!: str, name: str, description: str, builtin!: str}], login_video: str, changed: str(date-time), changed_by: any}
@optional {scan_profile: str, type: str, unlimited: bool, report_type: str(default/executive_summary/owasp/pci/pci4/iso27001/hipaa), report_fileformat: str(pdf/docx), labels: [any], scanning_agent: any, include_deduplicated_endpoints: bool, teams: [map{id: str, name!: str}], blackout_period: any, fail_fast: bool, incremental: bool, reduced_scope: bool, schedule_incremental: bool, schedule_reduced_scope: bool, crawl_sequences_only: bool, schedule_crawl_sequences_only: bool, cancel_scan_on_nav_seq_failure: bool}
@returns(201) {target_ids: [str], scan_ids: [str]}
@errors {400, 401, 500}

@endgroup

@group teams
@endpoint GET /teams/
@optional {can_create_target: bool, can_move: bool, length: int, ordering: str, page: int, search: str, user: [str]}
@returns(200) {count: int, page_total: int, page: int, length: int, results: [map]}
@errors {400, 401, 500}

@endpoint POST /teams/
@required {id: str, name: str, num_api_keys: int, num_users: int, num_targets: int, num_available_targets: int}
@optional {quota: int(int64), reserve: bool, targets: [any], scanning_agents: [any]}
@returns(201) {id: str, name: str, num_api_keys: int, num_users: int, num_targets: int, quota: int(int64)?, reserve: bool, targets: [any], scanning_agents: [any], num_available_targets: int}
@errors {400, 401, 500}

@endpoint GET /teams/{id}/
@required {id: str}
@returns(200) {id: str, name: str, num_api_keys: int, num_users: int, num_targets: int, quota: int(int64)?, reserve: bool, targets: [any], scanning_agents: [any], num_available_targets: int}
@errors {400, 401, 404, 500}

@endpoint PUT /teams/{id}/
@required {id: str, id: str, name: str, num_api_keys: int, num_users: int, num_targets: int, num_available_targets: int}
@optional {quota: int(int64), reserve: bool, targets: [any], scanning_agents: [any]}
@returns(200) {id: str, name: str, num_api_keys: int, num_users: int, num_targets: int, quota: int(int64)?, reserve: bool, targets: [any], scanning_agents: [any], num_available_targets: int}
@errors {400, 401, 404, 500}

@endpoint PATCH /teams/{id}/
@required {id: str}
@optional {id: str, name: str, num_api_keys: int, num_users: int, num_targets: int, quota: int(int64), reserve: bool, targets: [any], scanning_agents: [any], num_available_targets: int}
@returns(200) {id: str, name: str, num_api_keys: int, num_users: int, num_targets: int, quota: int(int64)?, reserve: bool, targets: [any], scanning_agents: [any], num_available_targets: int}
@errors {400, 401, 404, 500}

@endpoint DELETE /teams/{id}/
@required {id: str}
@returns(204)
@errors {400, 401, 404, 500}

@endpoint GET /teams/available-slots/
@returns(200) {slots: int}
@errors {400, 401, 404, 500}

@endgroup

@group user-roles
@endpoint GET /user-roles/
@optional {account: bool, length: int, ordering: str, page: int, role: [str], target: [str], team: [str], user: [str]}
@returns(200) {count: int, page_total: int, page: int, length: int, results: [map]}
@errors {400, 401, 403, 500}

@endpoint POST /user-roles/
@required {user: map{id!: str}, role: map{id!: str}, scope: map{tier!: str, team: map, target: map}}
@returns(201) {id: str, user: map{id: str, email: str(email), name: str}, role: map{id: str, name: str, permissions: [map], custom: bool, description: str?}, scope: map{tier: str, target: map{id: str, name: str, url: str(uri)}, team: map{id: str, name: str}}}
@errors {400, 401, 403, 500}

@endpoint GET /user-roles/{id}/
@required {id: str}
@returns(200) {id: str, user: map{id: str, email: str(email), name: str}, role: map{id: str, name: str, permissions: [map], custom: bool, description: str?}, scope: map{tier: str, target: map{id: str, name: str, url: str(uri)}, team: map{id: str, name: str}}}
@errors {400, 401, 404, 500}

@endpoint PUT /user-roles/{id}/
@required {id: str, id: str, user: map{id!: str}, role: map{id!: str}, scope: map{tier!: str, team: map, target: map}}
@returns(200) {id: str, user: map{id: str, email: str(email), name: str}, role: map{id: str, name: str, permissions: [map], custom: bool, description: str?}, scope: map{tier: str, target: map{id: str, name: str, url: str(uri)}, team: map{id: str, name: str}}}
@errors {400, 401, 404, 500}

@endpoint PATCH /user-roles/{id}/
@required {id: str}
@optional {id: str, user: map{id!: str}, role: map{id!: str}, scope: map{tier!: str, team: map, target: map}}
@returns(200) {id: str, user: map{id: str, email: str(email), name: str}, role: map{id: str, name: str, permissions: [map], custom: bool, description: str?}, scope: map{tier: str, target: map{id: str, name: str, url: str(uri)}, team: map{id: str, name: str}}}
@errors {400, 401, 404, 500}

@endpoint DELETE /user-roles/{id}/
@required {id: str}
@returns(204)
@errors {400, 401, 404, 500}

@endpoint POST /user-roles/bulk/create/
@returns(201)
@errors {400, 401, 500}

@endpoint POST /user-roles/bulk/delete/
@required {ids: [str]}
@returns(200) {ids: [str]}
@errors {400, 401, 404, 500}

@endpoint POST /user-roles/bulk/operations/
@optional {create: [map{user!: map, role!: map, scope!: map}], update: [map{id!: str, user!: map, role!: map, scope!: map}], delete: [map{id!: str}]}
@returns(200) {create: [map], update: [map], delete: map{ids: [str]}}
@errors {400, 401, 500}

@endpoint POST /user-roles/bulk/update/
@returns(201)
@errors {400, 401, 500}

@endgroup

@group users
@endpoint GET /users/
@optional {account: bool, active: bool, exclude: [str], exclude_target: [str], exclude_team: [str], label: [str], label_logical_operator: str(and/or), length: int, mfa_enabled: bool, no_access: bool, ordering: str, page: int, role: [str], search: str, target: [str], team: [str]}
@returns(200) {count: int, page_total: int, page: int, length: int, results: [map]}
@errors {400, 401, 500}

@endpoint POST /users/
@required {id: str, email: str(email), name: str, is_billing_admin: bool, changed_by: any, changed: str(date-time), labels: [map{id!: str, name!: str, color: str, changed_by!: any, changed!: str(date-time)}], last_login: str(date-time), is_apiuser: bool, mfa_enabled: bool}
@optional {title: str(ceo/cto/cso/seceng/dev/devop/manager/other/), active: bool=true, user_roles: [map{role!: map, scope!: map}]}
@returns(201) {id: str, email: str(email), name: str, title: str, is_billing_admin: bool, changed_by: any, changed: str(date-time), active: bool, labels: [map], user_roles: [map], last_login: str(date-time)?, is_apiuser: bool, mfa_enabled: bool}
@errors {400, 401, 500}

@endpoint GET /users/{id}/
@required {id: str}
@returns(200) {id: str, email: str(email), name: str, title: str, is_billing_admin: bool, changed_by: any, changed: str(date-time), active: bool, labels: [map], user_roles: [map], last_login: str(date-time)?, is_apiuser: bool, mfa_enabled: bool}
@errors {400, 401, 404, 500}

@endpoint PUT /users/{id}/
@required {id: str, id: str, email: str(email), name: str, is_billing_admin: bool, changed_by: any, changed: str(date-time), labels: [map{id!: str, name!: str, color: str, changed_by!: any, changed!: str(date-time)}], user_roles: [map{role!: map, scope!: map}], last_login: str(date-time), is_apiuser: bool, mfa_enabled: bool}
@optional {title: str(ceo/cto/cso/seceng/dev/devop/manager/other/), active: bool=true}
@returns(200) {id: str, email: str(email), name: str, title: str, is_billing_admin: bool, changed_by: any, changed: str(date-time), active: bool, labels: [map], user_roles: [map], last_login: str(date-time)?, is_apiuser: bool, mfa_enabled: bool}
@errors {400, 401, 404, 500}

@endpoint PATCH /users/{id}/
@required {id: str}
@optional {id: str, email: str(email), name: str, title: str(ceo/cto/cso/seceng/dev/devop/manager/other/), is_billing_admin: bool, changed_by: any, changed: str(date-time), active: bool=true, labels: [map{id!: str, name!: str, color: str, changed_by!: any, changed!: str(date-time)}], user_roles: [map{role!: map, scope!: map}], last_login: str(date-time), is_apiuser: bool, mfa_enabled: bool}
@returns(200) {id: str, email: str(email), name: str, title: str, is_billing_admin: bool, changed_by: any, changed: str(date-time), active: bool, labels: [map], user_roles: [map], last_login: str(date-time)?, is_apiuser: bool, mfa_enabled: bool}
@errors {400, 401, 404, 500}

@endpoint DELETE /users/{id}/
@required {id: str}
@returns(204)
@errors {400, 401, 404, 500}

@endpoint GET /users/{user_id}/targets/
@required {user_id: str}
@optional {enabled: bool, exclude_team: [str], id: [str], label: [str], label_logical_operator: str(and/or), length: int, ordering: str, page: int, risk: [str], role: [str], scan_profile: [str], search: str, team: [str], type: [str], unlimited: bool, verified: bool}
@returns(200) {count: int, page_total: int, page: int, length: int, results: [map]}
@errors {400, 401, 500}

@endpoint POST /users/bulk/update/
@required {ids: [str], id: str, email: str(email), name: str, is_billing_admin: bool, changed_by: any, changed: str(date-time), labels: [map{id!: str, name!: str, color: str, changed_by!: any, changed!: str(date-time)}], user_roles: [map{role!: map, scope!: map}], last_login: str(date-time), is_apiuser: bool, mfa_enabled: bool}
@optional {title: str(ceo/cto/cso/seceng/dev/devop/manager/other/), active: bool=true}
@returns(200) {ids: [str]}
@errors {400, 401, 500}

@endgroup

@group webhooks
@endpoint GET /webhooks/
@optional {length: int, ordering: str, page: int, search: str}
@returns(200) {count: int, page_total: int, page: int, length: int, results: [map]}
@errors {400, 401, 500}

@endpoint POST /webhooks/
@required {id: str, name: str, url: str(uri), created: str(date-time), created_by: any, changed: str(date-time), changed_by: any}
@optional {check_cert: bool, api_version: str}
@returns(201) {id: str, name: str, url: str(uri), check_cert: bool, api_version: str, created: str(date-time), created_by: any, changed: str(date-time), changed_by: any}
@errors {400, 401, 500}

@endpoint GET /webhooks/{id}/
@required {id: str}
@returns(200) {id: str, name: str, url: str(uri), check_cert: bool, api_version: str, created: str(date-time), created_by: any, changed: str(date-time), changed_by: any}
@errors {400, 401, 404, 500}

@endpoint PUT /webhooks/{id}/
@required {id: str, id: str, name: str, url: str(uri), created: str(date-time), created_by: any, changed: str(date-time), changed_by: any}
@optional {check_cert: bool, api_version: str}
@returns(200) {id: str, name: str, url: str(uri), check_cert: bool, api_version: str, created: str(date-time), created_by: any, changed: str(date-time), changed_by: any}
@errors {400, 401, 404, 500}

@endpoint PATCH /webhooks/{id}/
@required {id: str}
@optional {id: str, name: str, url: str(uri), check_cert: bool, api_version: str, created: str(date-time), created_by: any, changed: str(date-time), changed_by: any}
@returns(200) {id: str, name: str, url: str(uri), check_cert: bool, api_version: str, created: str(date-time), created_by: any, changed: str(date-time), changed_by: any}
@errors {400, 401, 404, 500}

@endpoint DELETE /webhooks/{id}/
@required {id: str}
@returns(204)
@errors {400, 401, 404, 500}

@endgroup

@group wizard
@endpoint GET /wizard/targets
@optional {length: int, ordering: str, page: int, search: str}
@returns(200) {count: int, page_total: int, page: int, length: int, results: [map]}
@errors {400, 401, 500}

@endgroup

@end
