@lap v0.3
# Machine-readable API spec. Each @endpoint block is one API call.
@api Cloudflare API
@base https://api.cloudflare.com/client/v4
@version 4.0.0
@auth ApiKey X-Auth-Email in header | ApiKey X-Auth-Key in header | Bearer bearer | ApiKey X-Auth-User-Service-Key in header
@endpoints 3540
@hint download_for_search
@toc accounts(2487), analytics(3), api(1), billing(2), certificates(4), internal(1), ips(1), live(1), memberships(4), oauth(1), organizations(17), pages(3), radar(279), ready(1), signed-url(1), tenants(8), user(55), workers(1), zones(670)

@group accounts
@endpoint GET /accounts
@optional {name: str, page: num=1, per_page: num=20, direction: str(asc/desc)}
@returns(200)
@errors {4XX}

@endpoint POST /accounts
@required {name: str}
@optional {Idempotency-Key: str, standalone: bool, type: any(standard/enterprise), unit: map{id: str}}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/move
@required {account_ids: [str], destination_organization_id: str}
@returns(200) {errors: [map], messages: [map], result: map{statuses: map{message: str, moved: bool, tag: str}}, success: bool}
@errors {4XX}

@endpoint GET /accounts/{accountId}/v1/images
@required {accountId: str}
@optional {per_page: int=1000, continuation_token: str, creator: str, sort_order: str(asc/desc)=desc}
@returns(200) {result: map{continuation_token: str?, images: [map]}, success: bool}
@errors {4XX}

@endpoint POST /accounts/{accountId}/v1/images
@required {accountId: str}
@returns(200) {result: map{creator: str, filename: str, id: str, meta: map, requireSignedURLs: bool, uploaded: str(date-time), variants: [str]}, success: bool}
@errors {4XX}

@endpoint DELETE /accounts/{accountId}/v1/images/{imageId}
@required {accountId: str, imageId: str}
@returns(200) {result: map, success: bool}
@errors {4XX}

@endpoint GET /accounts/{accountId}/v1/images/{imageId}
@required {accountId: str, imageId: str}
@returns(200) {result: map{creator: str, filename: str, id: str, meta: map, requireSignedURLs: bool, uploaded: str(date-time), variants: [str]}, success: bool}
@errors {4XX}

@endpoint PATCH /accounts/{accountId}/v1/images/{imageId}
@required {accountId: str, imageId: str}
@optional {creator: str, metadata: any, requireSignedURLs: bool}
@returns(200) {result: map, success: bool}
@errors {4XX}

@endpoint PUT /accounts/{accountId}/v1/images/{imageId}
@required {accountId: str, imageId: str}
@returns(200) {result: map{creator: str, filename: str, id: str, meta: map, requireSignedURLs: bool, uploaded: str(date-time), variants: [str]}, success: bool}
@errors {4XX}

@endpoint GET /accounts/{accountId}/v1/images/{imageId}/blob
@required {accountId: str, imageId: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{accountId}/v2/images
@required {accountId: str}
@optional {per_page: int=1000, continuation_token: str, creator: str, sort_order: str(asc/desc)=desc}
@returns(200) {result: map{continuation_token: str?, images: [map]}, success: bool}
@errors {4XX}

@endpoint POST /accounts/{accountId}/v2/images/direct_upload
@required {accountId: str}
@returns(200) {result: map{id: str, uploadURL: str}, success: bool}
@errors {4XX}

@endpoint GET /accounts/{accountId}/zones/{zoneId}/v1/images/flows
@required {accountId: str, zoneId: str}
@returns(200) {result: map{etag: str, flows: [any], version: num}, success: bool}
@errors {4XX}

@endpoint PUT /accounts/{accountId}/zones/{zoneId}/v1/images/flows
@required {accountId: str, zoneId: str, flows: [any], version: num}
@optional {etag: str}
@returns(200) {result: map{etag: str, flows: [any], version: num}, success: bool}
@errors {4XX}

@endpoint GET /accounts/{account_identifier}/custom_pages
@required {account_identifier: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_identifier}/custom_pages/assets
@required {account_identifier: str}
@optional {page: int=1, per_page: int=20}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_identifier}/custom_pages/assets
@required {account_identifier: str, description: str, name: str, url: str(uri)}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_identifier}/custom_pages/assets/{asset_name}
@required {asset_name: str, account_identifier: str}
@returns(204)
@errors {4XX}

@endpoint GET /accounts/{account_identifier}/custom_pages/assets/{asset_name}
@required {asset_name: str, account_identifier: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_identifier}/custom_pages/assets/{asset_name}
@required {asset_name: str, account_identifier: str, description: str, url: str(uri)}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_identifier}/custom_pages/preview_tokens
@required {account_identifier: str, act: str, target: str, url: str(uri)}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_identifier}/custom_pages/{identifier}
@required {identifier: str, account_identifier: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_identifier}/custom_pages/{identifier}
@required {identifier: str, account_identifier: str, state: str(default/customized), url: str(uri)=}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}
@required {account_id: any}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}
@required {account_id: any}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/abuse-reports
@required {account_id: str}
@optional {page: int, per_page: int, sort: str, domain: str, created_before: str, created_after: str, status: str, type: str, mitigation_status: str}
@returns(200) {errors: [map], messages: [map], result: map{reports: [map]}, result_info: map{count: num, page: num, per_page: num, total_count: num, total_pages: num}, success: bool}
@errors {401, 500}

@endpoint GET /accounts/{account_id}/abuse-reports/submitted
@required {account_id: str}
@optional {page: int=1, per_page: int=100, sort: str, id: str, domain: [str], created_before: str(date-time), created_after: str(date-time), status: [str], type: [str]}
@returns(200) {errors: [map], messages: [map], result: map{reports: [map]}, result_info: map{count: num, page: num, per_page: num, total_count: num, total_pages: num}, success: bool}
@errors {400, 401, 500}

@endpoint GET /accounts/{account_id}/abuse-reports/submitted/{report_id}
@required {account_id: str, report_id: str}
@returns(200) {errors: [map], messages: [map], result: any, success: bool}
@errors {400, 401, 404, 500}

@endpoint GET /accounts/{account_id}/abuse-reports/submitted/{report_id}/emails
@required {account_id: str, report_id: str}
@optional {page: int, per_page: int}
@returns(200) {errors: [map], messages: [map], result: map{emails: [map]}, result_info: map{count: num, page: num, per_page: num, total_count: num, total_pages: num}, success: bool}
@errors {400, 401, 404, 500}

@endpoint GET /accounts/{account_id}/abuse-reports/{report_id}/appeals/eligibility
@required {account_id: str, report_id: str}
@returns(200) {errors: [map], messages: [map], result: map{appeal_count: int, appealable: bool, has_appealable_mitigations: bool, has_open_appeal: bool, max_appeals: int}, success: bool}
@errors {401, 404, 500}

@endpoint GET /accounts/{account_id}/abuse-reports/{report_id}/emails
@required {account_id: str, report_id: str}
@optional {page: int, per_page: int}
@returns(200) {errors: [map], messages: [map], result: map{emails: [map]}, result_info: map{count: num, page: num, per_page: num, total_count: num, total_pages: num}, success: bool}
@errors {400, 401, 500}

@endpoint GET /accounts/{account_id}/abuse-reports/{report_id}/mitigations
@required {account_id: str, report_id: str}
@optional {page: int, per_page: int, sort: str(type,asc/type,desc/effective_date,asc/effective_date,desc/status,asc/status,desc/entity_type,asc/entity_type,desc), type: str, effective_before: str, effective_after: str, status: str, entity_type: str}
@returns(200) {errors: [map], messages: [map], result: map{mitigations: [map]}, result_info: map{count: num, page: num, per_page: num, total_count: num, total_pages: num}, success: bool}
@errors {401, 500}

@endpoint POST /accounts/{account_id}/abuse-reports/{report_id}/mitigations/appeal
@required {account_id: str, report_id: str}
@optional {appeals: [map{id!: str, reason!: str}], data: map{city!: str, company: str, counter_notice_response: str, country!: str, email!: str(email), full_name!: str, jurisdiction_consent!: bool, perjury_attestation!: bool, phone_number!: str, signature!: str, state!: str, street_address!: str, urls!: [str(uri)], zip_code!: str}, type: str(counter_notice/content_removed)}
@returns(200) {errors: [map], messages: [map], result: [map], result_info: map{count: num, page: num, per_page: num, total_count: num, total_pages: num}, success: bool}
@returns(207) {errors: [map], messages: [map], result: [map], result_info: map{count: num, page: num, per_page: num, total_count: num, total_pages: num}, success: bool}
@errors {401, 500}

@endpoint GET /accounts/{account_id}/abuse-reports/{report_param}
@required {account_id: str, report_param: str}
@returns(200) {errors: [map], messages: [map], result: map{cdate: str, domain: str, id: str, justification: str, mitigation_summary: map{accepted_url_count: int, active_count: int, external_host_notified: bool, in_review_count: int, pending_count: int}, original_work: str, status: str, submitter: map{company: str, email: str, name: str, telephone: str}, type: str, urls: [str]}, success: bool}
@errors {400, 401, 500}

@endpoint POST /accounts/{account_id}/abuse-reports/{report_param}
@required {account_id: str, report_param: str}
@returns(200) {abuse_rand: str, request: map{act: str}, result: str}
@errors {400, 401, 500}

@endpoint GET /accounts/{account_id}/access/ai-controls/mcp/analytics/portals/{portal_id}/tool-calls/timeseries
@required {account_id: str, portal_id: str}
@optional {granularity: str(daily/monthly)=daily, aggregate: str(true/false)=false, tz: str=utc, days: int}
@returns(200) {result: map{aggregate: bool, end: int, granularity: str, series: [map], start: int, total: int, tz: str}, success: bool}
@errors {400}

@endpoint GET /accounts/{account_id}/access/ai-controls/mcp/analytics/servers/{server_id}/tool-calls/timeseries
@required {account_id: str, server_id: str}
@optional {granularity: str(daily/monthly)=daily, aggregate: str(true/false)=false, tz: str=utc, days: int}
@returns(200) {result: map{aggregate: bool, end: int, granularity: str, series: [map], start: int, total: int, tz: str}, success: bool}
@errors {400}

@endpoint GET /accounts/{account_id}/access/ai-controls/mcp/analytics/tool-calls/timeseries
@required {account_id: str}
@optional {granularity: str(daily/monthly)=daily, aggregate: str(true/false)=false, tz: str=utc, days: int}
@returns(200) {result: map{aggregate: bool, end: int, granularity: str, series: [map], start: int, total: int, tz: str}, success: bool}
@errors {400}

@endpoint GET /accounts/{account_id}/access/ai-controls/mcp/portals
@required {account_id: str}
@optional {page: int=1, per_page: int=20, search: str}
@returns(200) {result: [map], success: bool}
@errors {400}

@endpoint POST /accounts/{account_id}/access/ai-controls/mcp/portals
@required {account_id: str, hostname: str, id: str, name: str}
@optional {allow_code_mode: bool, code_mode: str(off/opt_in/default_on/enforced), description: str, secure_web_gateway: bool=false, servers: [map{default_disabled: bool, on_behalf: bool, server_id!: str, updated_prompts: [map], updated_tools: [map]}]}
@returns(201) {result: map{allow_code_mode: bool, code_mode: str, created_at: str(date-time), created_by: str, description: str, hostname: str, id: str, modified_at: str(date-time), modified_by: str, name: str, secure_web_gateway: bool, servers: [map]}, success: bool}
@errors {400}

@endpoint DELETE /accounts/{account_id}/access/ai-controls/mcp/portals/{id}
@required {account_id: str, id: str}
@returns(200) {result: map{allow_code_mode: bool, code_mode: str, created_at: str(date-time), created_by: str, description: str, hostname: str, id: str, modified_at: str(date-time), modified_by: str, name: str, secure_web_gateway: bool}, success: bool}
@errors {404}

@endpoint GET /accounts/{account_id}/access/ai-controls/mcp/portals/{id}
@required {id: str, account_id: str}
@returns(200) {result: map{allow_code_mode: bool, code_mode: str, created_at: str(date-time), created_by: str, description: str, hostname: str, id: str, modified_at: str(date-time), modified_by: str, name: str, secure_web_gateway: bool, servers: [map]}, success: bool}
@errors {404}

@endpoint PUT /accounts/{account_id}/access/ai-controls/mcp/portals/{id}
@required {id: str, account_id: str}
@optional {allow_code_mode: bool, code_mode: str(off/opt_in/default_on/enforced), description: str, hostname: str, name: str, secure_web_gateway: bool=false, servers: [map{default_disabled: bool, on_behalf: bool, server_id!: str, updated_prompts: [map], updated_tools: [map]}]}
@returns(200) {result: map{allow_code_mode: bool, code_mode: str, created_at: str(date-time), created_by: str, description: str, hostname: str, id: str, modified_at: str(date-time), modified_by: str, name: str, secure_web_gateway: bool, servers: [map]}, success: bool}
@errors {400, 404}

@endpoint GET /accounts/{account_id}/access/ai-controls/mcp/portals/{portal_id}/servers/{server_id}/effective-redirect-uri
@required {portal_id: str, server_id: str, account_id: str}
@returns(200) {result: map{redirect_uri: str(uri), source: str}, success: bool}
@errors {404}

@endpoint GET /accounts/{account_id}/access/ai-controls/mcp/servers
@required {account_id: str}
@optional {page: int=1, per_page: int=20, search: str}
@returns(200) {result: [map], success: bool}
@errors {400}

@endpoint POST /accounts/{account_id}/access/ai-controls/mcp/servers
@required {account_id: str, auth_type: str(oauth/bearer/unauthenticated), hostname: str(uri), id: str, name: str}
@optional {auth_credentials: str, client_secret: str, description: str, is_shared_oauth_callback_enabled: bool=false, secure_web_gateway: bool=false, updated_prompts: [map{alias: str, description: str, enabled: bool, name!: str}], updated_tools: [map{alias: str, description: str, enabled: bool, name!: str}]}
@returns(201) {result: map{auth_config_summary: map{auth_mode: str, client_secret_version: num, config: map{authorization_endpoint: str, issuer: str, resource: str, revocation_endpoint: str, token_endpoint: str}, has_client_secret: bool, registration_info: map{client_id: str, redirect_uris: [str], scope: str, token_endpoint_auth_method: str}}, auth_type: str, authentication_status: str, created_at: str(date-time), created_by: str, description: str?, error: str, error_details: map{cause: str, is_upstream: bool, mcp_code: num, retryable: bool, status_code: num}, hostname: str(uri), id: str, is_shared_oauth_callback_enabled: bool, last_successful_sync: str(date-time), last_synced: str(date-time), modified_at: str(date-time), modified_by: str, name: str, prompts: [map], secure_web_gateway: bool, status: str, tools: [map], updated_prompts: [map], updated_tools: [map]}, success: bool}
@errors {400}

@endpoint DELETE /accounts/{account_id}/access/ai-controls/mcp/servers/{id}
@required {account_id: str, id: str}
@returns(200) {result: map{auth_config_summary: map{auth_mode: str, client_secret_version: num, config: map{authorization_endpoint: str, issuer: str, resource: str, revocation_endpoint: str, token_endpoint: str}, has_client_secret: bool, registration_info: map{client_id: str, redirect_uris: [str], scope: str, token_endpoint_auth_method: str}}, auth_type: str, authentication_status: str, created_at: str(date-time), created_by: str, description: str?, error: str, error_details: map{cause: str, is_upstream: bool, mcp_code: num, retryable: bool, status_code: num}, hostname: str(uri), id: str, is_shared_oauth_callback_enabled: bool, last_successful_sync: str(date-time), last_synced: str(date-time), modified_at: str(date-time), modified_by: str, name: str, prompts: [map], secure_web_gateway: bool, status: str, tools: [map], updated_prompts: [map], updated_tools: [map]}, success: bool}
@errors {404}

@endpoint GET /accounts/{account_id}/access/ai-controls/mcp/servers/{id}
@required {account_id: str, id: str}
@returns(200) {result: map{auth_config_summary: map{auth_mode: str, client_secret_version: num, config: map{authorization_endpoint: str, issuer: str, resource: str, revocation_endpoint: str, token_endpoint: str}, has_client_secret: bool, registration_info: map{client_id: str, redirect_uris: [str], scope: str, token_endpoint_auth_method: str}}, auth_type: str, authentication_status: str, created_at: str(date-time), created_by: str, description: str?, error: str, error_details: map{cause: str, is_upstream: bool, mcp_code: num, retryable: bool, status_code: num}, hostname: str(uri), id: str, is_shared_oauth_callback_enabled: bool, last_successful_sync: str(date-time), last_synced: str(date-time), modified_at: str(date-time), modified_by: str, name: str, prompts: [map], secure_web_gateway: bool, status: str, tools: [map], updated_prompts: [map], updated_tools: [map]}, success: bool}
@errors {404}

@endpoint PUT /accounts/{account_id}/access/ai-controls/mcp/servers/{id}
@required {id: str, account_id: str}
@optional {auth_credentials: str, client_secret: str, description: str, is_shared_oauth_callback_enabled: bool=false, name: str, secure_web_gateway: bool=false, updated_prompts: [map{alias: str, description: str, enabled: bool, name!: str}], updated_tools: [map{alias: str, description: str, enabled: bool, name!: str}]}
@returns(200) {result: map{auth_config_summary: map{auth_mode: str, client_secret_version: num, config: map{authorization_endpoint: str, issuer: str, resource: str, revocation_endpoint: str, token_endpoint: str}, has_client_secret: bool, registration_info: map{client_id: str, redirect_uris: [str], scope: str, token_endpoint_auth_method: str}}, auth_type: str, authentication_status: str, created_at: str(date-time), created_by: str, description: str?, error: str, error_details: map{cause: str, is_upstream: bool, mcp_code: num, retryable: bool, status_code: num}, hostname: str(uri), id: str, is_shared_oauth_callback_enabled: bool, last_successful_sync: str(date-time), last_synced: str(date-time), modified_at: str(date-time), modified_by: str, name: str, prompts: [map], secure_web_gateway: bool, status: str, tools: [map], updated_prompts: [map], updated_tools: [map]}, success: bool}
@errors {400, 404}

@endpoint POST /accounts/{account_id}/access/ai-controls/mcp/servers/{id}/sync
@required {id: str, account_id: str}
@returns(200) {result: map{error: str, error_details: map{cause: str, is_upstream: bool, mcp_code: num, retryable: bool, status_code: num}, status: str}, success: bool}
@errors {404}

@endpoint GET /accounts/{account_id}/access/apps
@required {account_id: str}
@optional {name: str, domain: str, aud: str, target_attributes: str, exact: bool, search: str, page: int=1, per_page: int=1000}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/access/apps
@required {account_id: str}
@returns(201)
@errors {4XX}

@endpoint GET /accounts/{account_id}/access/apps/ca
@required {account_id: str}
@optional {page: int=1, per_page: int=100}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/access/apps/{app_id}
@required {app_id: any, account_id: str}
@returns(202)
@errors {4XX}

@endpoint GET /accounts/{account_id}/access/apps/{app_id}
@required {app_id: any, account_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/access/apps/{app_id}
@required {app_id: any, account_id: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/access/apps/{app_id}/ca
@required {app_id: str, account_id: str}
@returns(202)
@errors {4XX}

@endpoint GET /accounts/{account_id}/access/apps/{app_id}/ca
@required {app_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/access/apps/{app_id}/ca
@required {app_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/access/apps/{app_id}/policies
@required {app_id: str, account_id: str}
@optional {page: int=1, per_page: int=200}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/access/apps/{app_id}/policies
@required {app_id: str, account_id: str}
@returns(201)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/access/apps/{app_id}/policies/{policy_id}
@required {app_id: str, policy_id: str, account_id: str}
@returns(202)
@errors {4XX}

@endpoint GET /accounts/{account_id}/access/apps/{app_id}/policies/{policy_id}
@required {app_id: str, policy_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/access/apps/{app_id}/policies/{policy_id}
@required {app_id: str, policy_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/access/apps/{app_id}/policies/{policy_id}/make_reusable
@required {app_id: str, policy_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/access/apps/{app_id}/revoke_tokens
@required {app_id: any, account_id: str}
@returns(202)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/access/apps/{app_id}/settings
@required {app_id: any, account_id: str}
@optional {allow_iframe: bool, skip_interstitial: bool}
@returns(202)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/access/apps/{app_id}/settings
@required {app_id: any, account_id: str}
@optional {allow_iframe: bool, skip_interstitial: bool}
@returns(202)
@errors {4XX}

@endpoint GET /accounts/{account_id}/access/apps/{app_id}/user_policy_checks
@required {app_id: any, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/access/authenticator_device_aaguids
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/access/bookmarks
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/access/bookmarks/{bookmark_id}
@required {bookmark_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/access/bookmarks/{bookmark_id}
@required {bookmark_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/access/bookmarks/{bookmark_id}
@required {bookmark_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/access/bookmarks/{bookmark_id}
@required {bookmark_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/access/certificates
@required {account_id: str}
@optional {page: int=1, per_page: int=50}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/access/certificates
@required {account_id: str, certificate: str, name: str}
@optional {associated_hostnames: [str]}
@returns(201)
@errors {4XX}

@endpoint GET /accounts/{account_id}/access/certificates/settings
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/access/certificates/settings
@required {account_id: str, settings: [map{china_network!: bool, client_certificate_forwarding!: bool, hostname!: str}]}
@returns(202)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/access/certificates/{certificate_id}
@required {certificate_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/access/certificates/{certificate_id}
@required {certificate_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/access/certificates/{certificate_id}
@required {certificate_id: str, account_id: str, associated_hostnames: [str]}
@optional {name: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/access/custom_pages
@required {account_id: str}
@optional {page: int=1, per_page: int=50}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/access/custom_pages
@required {account_id: str, custom_html: str, name: str, type: str(identity_denied/forbidden/login/interstitial)}
@optional {app_count: int, contract_version: int, created_at: any, uid: str, updated_at: any}
@returns(201)
@errors {422, 4XX}

@endpoint POST /accounts/{account_id}/access/custom_pages/validate
@required {account_id: str, template: str, type: str(identity_denied/forbidden/login/interstitial)}
@optional {version: int}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/access/custom_pages/{custom_page_id}
@required {custom_page_id: str, account_id: str}
@returns(202)
@errors {4XX}

@endpoint GET /accounts/{account_id}/access/custom_pages/{custom_page_id}
@required {custom_page_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/access/custom_pages/{custom_page_id}
@required {custom_page_id: str, account_id: str, custom_html: str, name: str, type: str(identity_denied/forbidden/login/interstitial)}
@optional {app_count: int, contract_version: int, created_at: any, uid: str, updated_at: any}
@returns(200)
@errors {422, 4XX}

@endpoint GET /accounts/{account_id}/access/gateway_ca
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/access/gateway_ca
@required {account_id: str}
@returns(201)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/access/gateway_ca/{certificate_id}
@required {certificate_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/access/groups
@required {account_id: str}
@optional {name: str, search: str, page: int=1, per_page: int=1000}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/access/groups
@required {account_id: str, include: [map], name: str}
@optional {exclude: [map], is_default: bool, require: [map]}
@returns(201)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/access/groups/{group_id}
@required {group_id: str, account_id: str}
@returns(202)
@errors {4XX}

@endpoint GET /accounts/{account_id}/access/groups/{group_id}
@required {group_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/access/groups/{group_id}
@required {group_id: str, account_id: str, include: [map], name: str}
@optional {exclude: [map], is_default: bool, require: [map]}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/access/identity_providers
@required {account_id: str}
@optional {scim_enabled: str, page: int=1, per_page: int=200}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/access/identity_providers
@required {account_id: str}
@returns(201)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/access/identity_providers/{identity_provider_id}
@required {identity_provider_id: str, account_id: str}
@returns(202)
@errors {4XX}

@endpoint GET /accounts/{account_id}/access/identity_providers/{identity_provider_id}
@required {identity_provider_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/access/identity_providers/{identity_provider_id}
@required {identity_provider_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/access/identity_providers/{identity_provider_id}/saml_certificate
@required {account_id: str, identity_provider_id: str}
@returns(200)
@returns(201)
@errors {403, 404, 4XX}

@endpoint GET /accounts/{account_id}/access/identity_providers/{identity_provider_id}/scim/groups
@required {identity_provider_id: str, account_id: str}
@optional {cf_resource_id: [str], idp_resource_id: [str], name: str, page: int=1, per_page: int=100}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/access/identity_providers/{identity_provider_id}/scim/users
@required {identity_provider_id: str, account_id: str}
@optional {cf_resource_id: [str], idp_resource_id: [str], username: str, email: str, name: str, page: int=1, per_page: int=100}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/access/idp_federation_grants
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/access/idp_federation_grants
@required {account_id: str, idp_id: str(uuid)}
@returns(201)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/access/idp_federation_grants/{grant_id}
@required {account_id: str, grant_id: str}
@returns(202)
@errors {404, 4XX}

@endpoint GET /accounts/{account_id}/access/idp_federation_grants/{grant_id}
@required {account_id: str, grant_id: str}
@returns(200)
@errors {404, 4XX}

@endpoint GET /accounts/{account_id}/access/keys
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/access/keys
@required {account_id: str, key_rotation_interval_days: num}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/access/keys/rotate
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/access/logs/access_requests
@required {account_id: str}
@optional {limit: int=25, direction: str(desc/asc)=desc, since: str(date-time), until: str(date-time), page: int=1, per_page: int=25, email: str(email), email_exact: bool=false, user_id: str(uuid), allowedOp: str(eq/neq)=eq, country_codeOp: str(eq/neq)=eq, app_typeOp: str(eq/neq)=eq, app_uidOp: str(eq/neq)=eq, ray_idOp: str(eq/neq)=eq, emailOp: str(eq/neq/contains)=eq, idpOp: str(eq/neq)=eq, non_identityOp: str(eq/neq)=eq, user_idOp: str(eq/neq)=eq, fields: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/access/logs/jit_requests
@required {account_id: str}
@optional {page: int=1, per_page: int=25, status: str, search: str, since: str(date-time), until: str(date-time)}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/access/logs/jit_requests/{knock_request_id}
@required {account_id: str, knock_request_id: str(uuid)}
@returns(200)
@errors {404, 4XX}

@endpoint GET /accounts/{account_id}/access/logs/scim/updates
@required {account_id: str, idp_id: [str]}
@optional {limit: int, direction: str, since: str(date-time), until: str(date-time), status: [str], resource_type: [str], request_method: [str], resource_user_email: [str(email)], resource_group_name: [str], cf_resource_id: [str], idp_resource_id: [str], page: int=1, per_page: int=20}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/access/organizations
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/access/organizations
@required {account_id: str, auth_domain: str, name: str}
@optional {allow_authenticate_via_warp: bool=false, auto_redirect_to_identity: bool=false, deny_unmatched_requests: bool, deny_unmatched_requests_exempted_zone_names: [str], is_ui_read_only: bool=false, login_design: map{background_color: str, footer_text: str, header_text: str, logo_path: str, text_color: str}, mfa_config: map{allowed_authenticators: [str], amr_matching_session_duration: str, required_aaguids: str(uuid), session_duration: str}, mfa_piv_key_requirements: map{pin_policy: str, require_fips_device: bool, ssh_key_size: [int], ssh_key_type: [str], touch_policy: str}, mfa_required_for_all_apps: bool=false, session_duration: str, ui_read_only_toggle_reason: str, user_seat_expiration_inactive_time: str, warp_auth_non_browser_401: bool=false, warp_auth_session_duration: str}
@returns(201)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/access/organizations
@required {account_id: str}
@optional {allow_authenticate_via_warp: bool=false, auth_domain: str, auto_redirect_to_identity: bool=false, custom_pages: map{forbidden: str, identity_denied: str}, deny_unmatched_requests: bool, deny_unmatched_requests_exempted_zone_names: [str], is_ui_read_only: bool=false, login_design: map{background_color: str, footer_text: str, header_text: str, logo_path: str, text_color: str}, mfa_config: map{allowed_authenticators: [str], amr_matching_session_duration: str, required_aaguids: str(uuid), session_duration: str}, mfa_piv_key_requirements: map{pin_policy: str, require_fips_device: bool, ssh_key_size: [int], ssh_key_type: [str], touch_policy: str}, mfa_required_for_all_apps: bool=false, name: str, session_duration: str, ui_read_only_toggle_reason: str, user_seat_expiration_inactive_time: str, warp_auth_non_browser_401: bool=false, warp_auth_session_duration: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/access/organizations/doh
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/access/organizations/doh
@required {account_id: str}
@optional {doh_jwt_duration: str, service_token_id: str}
@returns(201)
@errors {4XX}

@endpoint POST /accounts/{account_id}/access/organizations/revoke_user
@required {account_id: str, email: str}
@optional {devices: bool, devices: bool, user_uid: str, warp_session_reauth: bool}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/access/policies
@required {account_id: str}
@optional {page: int=1, per_page: int=100}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/access/policies
@required {account_id: str}
@optional {approval_groups: [map{approvals_needed!: num, email_addresses: [str], email_list_uuid: str}], approval_required: bool, connection_rules: map{rdp: map}, isolation_required: bool, mfa_config: map{allowed_authenticators: [str], mfa_disabled: bool, session_duration: str}, purpose_justification_prompt: str, purpose_justification_required: bool, session_duration: str}
@returns(201)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/access/policies/{policy_id}
@required {account_id: str, policy_id: str}
@returns(202)
@errors {4XX}

@endpoint GET /accounts/{account_id}/access/policies/{policy_id}
@required {account_id: str, policy_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/access/policies/{policy_id}
@required {account_id: str, policy_id: str}
@optional {approval_groups: [map{approvals_needed!: num, email_addresses: [str], email_list_uuid: str}], approval_required: bool, connection_rules: map{rdp: map}, isolation_required: bool, mfa_config: map{allowed_authenticators: [str], mfa_disabled: bool, session_duration: str}, purpose_justification_prompt: str, purpose_justification_required: bool, session_duration: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/access/policy-tests
@required {account_id: str}
@optional {policies: [any]}
@returns(200)
@errors {400}

@endpoint GET /accounts/{account_id}/access/policy-tests/{policy_test_id}
@required {account_id: str, policy_test_id: str}
@returns(200)
@errors {400}

@endpoint GET /accounts/{account_id}/access/policy-tests/{policy_test_id}/users
@required {account_id: str, policy_test_id: str}
@optional {page: int=1, per_page: int=25, status: str(success/fail/error)}
@returns(200)
@errors {400}

@endpoint GET /accounts/{account_id}/access/saml_certificates
@required {account_id: str}
@optional {page: int=1, per_page: int=25, id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/access/saml_certificates/{saml_cert_set_id}
@required {account_id: str, saml_cert_set_id: str}
@returns(200)
@errors {404, 4XX}

@endpoint GET /accounts/{account_id}/access/saml_certificates/{saml_cert_set_id}/pem
@required {account_id: str, saml_cert_set_id: str}
@returns(200)
@errors {404, 4XX}

@endpoint POST /accounts/{account_id}/access/saml_certificates/{saml_cert_set_id}/rotate
@required {account_id: str, saml_cert_set_id: str}
@returns(200)
@errors {404, 4XX}

@endpoint PATCH /accounts/{account_id}/access/seats
@required {account_id: any}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/access/service_tokens
@required {account_id: str}
@optional {name: str, search: str, page: int=1, per_page: int=1000}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/access/service_tokens
@required {account_id: str, name: str}
@optional {client_secret_version: num=1, duration: str=8760h, enabled: bool, previous_client_secret_expires_at: str(date-time)}
@returns(201)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/access/service_tokens/{service_token_id}
@required {service_token_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/access/service_tokens/{service_token_id}
@required {service_token_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/access/service_tokens/{service_token_id}
@required {service_token_id: str, account_id: str}
@optional {client_secret_version: num=1, duration: str=8760h, enabled: bool, name: str, previous_client_secret_expires_at: str(date-time)}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/access/service_tokens/{service_token_id}/refresh
@required {service_token_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/access/service_tokens/{service_token_id}/rotate
@required {service_token_id: str, account_id: str}
@optional {previous_client_secret_expires_at: str(date-time)}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/access/tags
@required {account_id: str}
@optional {page: int=1, per_page: int=50}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/access/tags
@required {account_id: str}
@optional {name: str}
@returns(201)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/access/tags/{tag_name}
@required {account_id: str, tag_name: str}
@returns(202)
@errors {4XX}

@endpoint GET /accounts/{account_id}/access/tags/{tag_name}
@required {account_id: str, tag_name: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/access/tags/{tag_name}
@required {account_id: str, tag_name: str, name: str}
@optional {created_at: any, updated_at: any}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/access/users
@required {account_id: str}
@optional {name: str, email: str, search: str, page: int=1, per_page: int=1000}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/access/users
@required {account_id: str, email: str(email)}
@optional {name: str}
@returns(201)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/access/users/{user_id}
@required {user_id: str, account_id: str}
@returns(202)
@errors {4XX}

@endpoint GET /accounts/{account_id}/access/users/{user_id}
@required {user_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/access/users/{user_id}
@required {user_id: str, account_id: str, email: str(email), name: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/access/users/{user_id}/active_sessions
@required {user_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/access/users/{user_id}/active_sessions/{nonce}
@required {user_id: str, account_id: str, nonce: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/access/users/{user_id}/failed_logins
@required {user_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/access/users/{user_id}/last_seen_identity
@required {user_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/access/users/{user_id}/mfa_authenticators/{authenticator_id}
@required {user_id: str, account_id: str, authenticator_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/addressing/address_maps
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/addressing/address_maps
@required {account_id: str}
@optional {description: str, enabled: bool=false, ips: [str], memberships: [map{identifier: str, kind: str}]}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/addressing/address_maps/{address_map_id}
@required {address_map_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/addressing/address_maps/{address_map_id}
@required {address_map_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/addressing/address_maps/{address_map_id}
@required {address_map_id: str, account_id: str}
@optional {default_sni: str, description: str, enabled: bool=false}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/addressing/address_maps/{address_map_id}/accounts/{member_account_id}
@required {account_id: str, address_map_id: str, member_account_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/addressing/address_maps/{address_map_id}/accounts/{member_account_id}
@required {account_id: str, address_map_id: str, member_account_id: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/addressing/address_maps/{address_map_id}/ips/{ip_address}
@required {ip_address: str, address_map_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/addressing/address_maps/{address_map_id}/ips/{ip_address}
@required {ip_address: str, address_map_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/addressing/address_maps/{address_map_id}/zones/{zone_id}
@required {zone_id: str, address_map_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/addressing/address_maps/{address_map_id}/zones/{zone_id}
@required {zone_id: str, address_map_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/addressing/leases
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/addressing/loa_documents
@required {account_id: str}
@returns(201)
@errors {4XX}

@endpoint GET /accounts/{account_id}/addressing/loa_documents/{loa_document_id}/download
@required {loa_document_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/addressing/prefixes
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/addressing/prefixes
@required {account_id: str, asn: int, cidr: str}
@optional {delegate_loa_creation: bool=false, description: str, loa_document_id: str}
@returns(201)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/addressing/prefixes/{prefix_id}
@required {prefix_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/addressing/prefixes/{prefix_id}
@required {prefix_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/addressing/prefixes/{prefix_id}
@required {prefix_id: str, account_id: str, description: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/addressing/prefixes/{prefix_id}/bgp/prefixes
@required {account_id: str, prefix_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/addressing/prefixes/{prefix_id}/bgp/prefixes
@required {account_id: str, prefix_id: str, cidr: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/addressing/prefixes/{prefix_id}/bgp/prefixes/{bgp_prefix_id}
@required {account_id: str, prefix_id: str, bgp_prefix_id: str}
@returns(200) {errors: [map], messages: [map], success: bool}
@errors {4XX}

@endpoint GET /accounts/{account_id}/addressing/prefixes/{prefix_id}/bgp/prefixes/{bgp_prefix_id}
@required {account_id: str, prefix_id: str, bgp_prefix_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/addressing/prefixes/{prefix_id}/bgp/prefixes/{bgp_prefix_id}
@required {account_id: str, prefix_id: str, bgp_prefix_id: str}
@optional {asn_prepend_count: int=0, auto_advertise_withdraw: bool=false, on_demand: map{advertised: bool}}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/addressing/prefixes/{prefix_id}/bgp/status
@required {prefix_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/addressing/prefixes/{prefix_id}/bgp/status
@required {prefix_id: str, account_id: str, advertised: bool}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/addressing/prefixes/{prefix_id}/bindings
@required {account_id: str, prefix_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/addressing/prefixes/{prefix_id}/bindings
@required {account_id: str, prefix_id: str, cidr: str, service_id: str}
@returns(201)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/addressing/prefixes/{prefix_id}/bindings/{binding_id}
@required {account_id: str, prefix_id: str, binding_id: str}
@returns(200) {errors: [map], messages: [map], success: bool}
@errors {4XX}

@endpoint GET /accounts/{account_id}/addressing/prefixes/{prefix_id}/bindings/{binding_id}
@required {account_id: str, prefix_id: str, binding_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/addressing/prefixes/{prefix_id}/delegations
@required {prefix_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/addressing/prefixes/{prefix_id}/delegations
@required {prefix_id: str, account_id: str, cidr: str, delegated_account_id: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/addressing/prefixes/{prefix_id}/delegations/{delegation_id}
@required {delegation_id: str, prefix_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/addressing/prefixes/{prefix_id}/validate
@required {prefix_id: str, account_id: str}
@returns(202)
@errors {4XX}

@endpoint GET /accounts/{account_id}/addressing/regional_hostnames/regions
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/addressing/services
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/agent-memory/namespaces
@optional {per_page: int, order: str(id/name), direction: str(asc/desc), cursor: str}
@returns(200) {errors: [map], messages: [map], result: [map], result_info: map{count: int, cursor: str, per_page: int}, success: bool}
@errors {4XX}

@endpoint POST /accounts/{account_id}/agent-memory/namespaces
@required {name: str}
@returns(201) {errors: [map], messages: [map], result: map{created_at: str(date-time), id: str, name: str, updated_at: str(date-time)}, success: bool}
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/agent-memory/namespaces/{namespace_name}
@required {namespace_name: str}
@returns(200) {errors: [map], messages: [map], result: map?, success: bool}
@errors {4XX}

@endpoint GET /accounts/{account_id}/agent-memory/namespaces/{namespace_name}
@required {namespace_name: str}
@returns(200) {errors: [map], messages: [map], result: map{created_at: str(date-time), id: str, name: str, updated_at: str(date-time)}, success: bool}
@errors {4XX}

@endpoint GET /accounts/{account_id}/agent-memory/namespaces/{namespace_name}/profiles
@required {namespace_name: str}
@optional {per_page: int, cursor: str}
@returns(200) {errors: [map], messages: [map], result: [map], result_info: map{count: int, cursor: str, per_page: int}, success: bool}
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/agent-memory/namespaces/{namespace_name}/profiles/{profile_name}
@required {namespace_name: str, profile_name: str}
@returns(200) {errors: [map], messages: [map], result: map?, success: bool}
@errors {4XX}

@endpoint POST /accounts/{account_id}/agent-memory/namespaces/{namespace_name}/profiles/{profile_name}/ingest
@required {namespace_name: str, profile_name: str, messages: [map{content!: str, role!: str, timestamp: str}]}
@optional {sessionId: str}
@returns(200) {errors: [map], messages: [map], result: map?, success: bool}
@errors {4XX}

@endpoint GET /accounts/{account_id}/agent-memory/namespaces/{namespace_name}/profiles/{profile_name}/memories
@required {namespace_name: str, profile_name: str}
@optional {per_page: int, cursor: str, session_id: str, type: str(fact/event/instruction/task)}
@returns(200) {errors: [map], messages: [map], result: [map], result_info: map{count: int, cursor: str, per_page: int}, success: bool}
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/agent-memory/namespaces/{namespace_name}/profiles/{profile_name}/memories/{memory_id}
@required {namespace_name: str, profile_name: str, memory_id: str}
@returns(200) {errors: [map], messages: [map], result: map{content: str, createdAt: str(date-time), id: str, sessionId: str?, summary: str, type: str, updatedAt: str(date-time)}, success: bool}
@errors {4XX}

@endpoint GET /accounts/{account_id}/agent-memory/namespaces/{namespace_name}/profiles/{profile_name}/memories/{memory_id}
@required {namespace_name: str, profile_name: str, memory_id: str}
@returns(200) {errors: [map], messages: [map], result: map{content: str, createdAt: str(date-time), id: str, sessionId: str?, summary: str, type: str, updatedAt: str(date-time)}, success: bool}
@errors {4XX}

@endpoint POST /accounts/{account_id}/agent-memory/namespaces/{namespace_name}/profiles/{profile_name}/recall
@required {namespace_name: str, profile_name: str, query: str}
@optional {referenceDate: str, responseLength: str(short/medium/long), thinkingLevel: str(low/medium/high)}
@returns(200) {errors: [map], messages: [map], result: map{answer: str, candidates: [map], count: num}, success: bool}
@errors {4XX}

@endpoint POST /accounts/{account_id}/agent-memory/namespaces/{namespace_name}/profiles/{profile_name}/remember
@required {namespace_name: str, profile_name: str, content: str}
@optional {sessionId: str}
@returns(200) {errors: [map], messages: [map], result: map{content: str, createdAt: str(date-time), id: str, sessionId: str?, summary: str, type: str, updatedAt: str(date-time)}, success: bool}
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/agent-memory/namespaces/{namespace_name}/profiles/{profile_name}/sessions/{session_id}
@required {namespace_name: str, profile_name: str, session_id: str}
@returns(200) {errors: [map], messages: [map], result: map?, success: bool}
@errors {4XX}

@endpoint POST /accounts/{account_id}/agent-memory/namespaces/{namespace_name}/profiles/{profile_name}/summary
@required {namespace_name: str, profile_name: str}
@optional {sessionId: str}
@returns(200) {errors: [map], messages: [map], result: map{summary: str}, success: bool}
@errors {4XX}

@endpoint GET /accounts/{account_id}/ai-gateway/billing/credit-balance
@required {account_id: str}
@returns(200) {errors: [map], messages: [map], result: map{balance: num, first_topup_success: bool, has_default_payment_method: bool, payment_method: map?{brand: str, last4: str}, topup_config: map{amount: num?, disabledReason: str?, error: str?, lastFailedAt: num?, threshold: num?}}, result_info: map{has_more: bool, page: num, per_page: num, total_count: num}, success: bool}
@errors {400, 403, 404}

@endpoint GET /accounts/{account_id}/ai-gateway/billing/invoice-history
@required {account_id: str}
@optional {type: str(auto/all/manual)=all}
@returns(200) {errors: [map], messages: [map], result: map{invoices: [map], pagination: map{has_more: bool, page: num, per_page: num, total_count: num}}, result_info: map{has_more: bool, page: num, per_page: num, total_count: num}, success: bool}
@errors {400, 403, 404}

@endpoint GET /accounts/{account_id}/ai-gateway/billing/invoice-preview
@required {account_id: str}
@returns(200) {errors: [map], messages: [map], result: map{amount_due: num, amount_paid: num, amount_remaining: num, currency: str, id: str, invoice_lines: [map], period_end: num, period_start: num, status: str}, result_info: map{has_more: bool, page: num, per_page: num, total_count: num}, success: bool}
@errors {400, 403, 404}

@endpoint DELETE /accounts/{account_id}/ai-gateway/billing/spending-limit
@required {account_id: str}
@returns(200) {errors: [map], messages: [map], result: map, result_info: map{has_more: bool, page: num, per_page: num, total_count: num}, success: bool}
@errors {400, 403, 404}

@endpoint GET /accounts/{account_id}/ai-gateway/billing/spending-limit
@required {account_id: str}
@returns(200) {errors: [map], messages: [map], result: map{config: map{amount: num?, duration: str?, strategy: str?}, enabled: bool}, result_info: map{has_more: bool, page: num, per_page: num, total_count: num}, success: bool}
@errors {400, 403, 404}

@endpoint POST /accounts/{account_id}/ai-gateway/billing/spending-limit
@required {account_id: str, amount: int, duration: str(daily/weekly/monthly), strategy: str(fixed/sliding)}
@returns(201) {errors: [map], messages: [map], result: map, result_info: map{has_more: bool, page: num, per_page: num, total_count: num}, success: bool}
@errors {400, 403, 404}

@endpoint POST /accounts/{account_id}/ai-gateway/billing/topup
@required {account_id: str, amount: int}
@returns(200) {errors: [map], messages: [map], result: map{brand: str, client_secret: str?, last4: str, onboarding: bool, payment_intent_id: str}, result_info: map{has_more: bool, page: num, per_page: num, total_count: num}, success: bool}
@errors {400, 402, 403, 404}

@endpoint DELETE /accounts/{account_id}/ai-gateway/billing/topup/config
@required {account_id: str}
@returns(200) {errors: [map], messages: [map], result: map, result_info: map{has_more: bool, page: num, per_page: num, total_count: num}, success: bool}
@errors {400, 403, 404}

@endpoint GET /accounts/{account_id}/ai-gateway/billing/topup/config
@required {account_id: str}
@returns(200) {errors: [map], messages: [map], result: map{amount: num?, disabledReason: str?, error: str?, lastFailedAt: num?, threshold: num?}, result_info: map{has_more: bool, page: num, per_page: num, total_count: num}, success: bool}
@errors {400, 403, 404}

@endpoint POST /accounts/{account_id}/ai-gateway/billing/topup/config
@required {account_id: str, amount: int, threshold: int}
@returns(200) {errors: [map], messages: [map], result: map{amount: num, threshold: num}, result_info: map{has_more: bool, page: num, per_page: num, total_count: num}, success: bool}
@errors {400, 403, 404}

@endpoint POST /accounts/{account_id}/ai-gateway/billing/topup/eligibility
@required {account_id: str}
@optional {payment_methods: [map{default: bool, last_four: str, type: str}]}
@returns(200) {errors: [map], messages: [map], result: map{account_payment_method_state: str, aig_customer_state: str, aig_default_payment_method_state: str, display_payment_method: map?{brand: str, last4: str}, eligible: bool, reason: str, recommended_action: str, recoverable: bool}, result_info: map{has_more: bool, page: num, per_page: num, total_count: num}, success: bool}
@errors {400, 403, 404}

@endpoint GET /accounts/{account_id}/ai-gateway/billing/topup/limits
@required {account_id: str}
@returns(200) {errors: [map], messages: [map], result: map{currency: str, max_cents: int, min_cents: int}, result_info: map{has_more: bool, page: num, per_page: num, total_count: num}, success: bool}
@errors {400, 403, 404}

@endpoint POST /accounts/{account_id}/ai-gateway/billing/topup/status
@required {account_id: str, payment_intent_id: str}
@returns(200) {errors: [map], messages: [map], result: map{payment_intent_id: str, status: str}, result_info: map{has_more: bool, page: num, per_page: num, total_count: num}, success: bool}
@errors {400, 403, 404}

@endpoint GET /accounts/{account_id}/ai-gateway/billing/usage-history
@required {account_id: str, value_grouping_window: str(day/hour)}
@optional {start_time: num, end_time: num}
@returns(200) {errors: [map], messages: [map], result: map{history: [map]}, result_info: map{has_more: bool, page: num, per_page: num, total_count: num}, success: bool}
@errors {400, 403, 404}

@endpoint GET /accounts/{account_id}/ai-gateway/custom-providers
@required {account_id: str}
@optional {page: int=1, per_page: int=20, beta: bool, enable: bool, search: str}
@returns(200) {result: [map], success: bool}
@errors {400}

@endpoint POST /accounts/{account_id}/ai-gateway/custom-providers
@required {account_id: str, base_url: str(uri), name: str, slug: str}
@optional {beta: bool, curl_example: str, description: str, enable: bool, headers: str, js_example: str, link: str, position: int}
@returns(200) {result: map{base_url: str(uri), beta: bool, created_at: str(date-time), curl_example: str, description: str, enable: bool, headers: str, id: str(uuid), js_example: str, link: str, logo: str, modified_at: str(date-time), name: str, position: int, slug: str}, success: bool}
@errors {400}

@endpoint GET /accounts/{account_id}/ai-gateway/custom-providers/costs
@required {account_id: str}
@optional {page: int=1, per_page: int=20, enable: bool, account_provider_id: str(uuid), model_rule: str(equals/starts-with/contains)=equals, cost_type: str=tokens, search: str}
@returns(200) {result: [map], success: bool}
@errors {400}

@endpoint POST /accounts/{account_id}/ai-gateway/custom-providers/costs
@required {account_id: str, account_provider_id: str(uuid), model: str}
@optional {cost_in: num, cost_out: num, cost_type: str=tokens, enable: bool, model_rule: str(equals/starts-with/contains)=equals, token_pricing: map{input_audio_tokens: num, input_cache_creation_tokens: num, input_cached_tokens: num, input_image_count: num, input_image_tokens: num, input_text_tokens: num, input_tokens: num, input_video_tokens: num, output_image_count: num, output_reasoning_tokens: num, output_tokens: num, total_tokens: num}}
@returns(200) {result: map{account_provider_id: str(uuid), changed_by: str, cost_in: num, cost_out: num, cost_type: str, created_at: str(date-time), enable: bool, id: str(uuid), model: str, model_rule: str, modified_at: str(date-time), token_pricing: str, weight: int}, success: bool}
@errors {400}

@endpoint DELETE /accounts/{account_id}/ai-gateway/custom-providers/costs/{id}
@required {account_id: str, id: str(uuid)}
@returns(200) {result: map{account_provider_id: str(uuid), changed_by: str, cost_in: num, cost_out: num, cost_type: str, created_at: str(date-time), enable: bool, id: str(uuid), model: str, model_rule: str, modified_at: str(date-time), token_pricing: str, weight: int}, success: bool}
@errors {404}

@endpoint GET /accounts/{account_id}/ai-gateway/custom-providers/costs/{id}
@required {account_id: str, id: str(uuid)}
@returns(200) {result: map{account_provider_id: str(uuid), changed_by: str, cost_in: num, cost_out: num, cost_type: str, created_at: str(date-time), enable: bool, id: str(uuid), model: str, model_rule: str, modified_at: str(date-time), token_pricing: str, weight: int}, success: bool}
@errors {404}

@endpoint PATCH /accounts/{account_id}/ai-gateway/custom-providers/costs/{id}
@required {account_id: str, id: str(uuid)}
@optional {cost_in: num, cost_out: num, cost_type: str=tokens, enable: bool, model: str, model_rule: str(equals/starts-with/contains)=equals, token_pricing: map{input_audio_tokens: num, input_cache_creation_tokens: num, input_cached_tokens: num, input_image_count: num, input_image_tokens: num, input_text_tokens: num, input_tokens: num, input_video_tokens: num, output_image_count: num, output_reasoning_tokens: num, output_tokens: num, total_tokens: num}}
@returns(200) {result: map{account_provider_id: str(uuid), changed_by: str, cost_in: num, cost_out: num, cost_type: str, created_at: str(date-time), enable: bool, id: str(uuid), model: str, model_rule: str, modified_at: str(date-time), token_pricing: str, weight: int}, success: bool}
@errors {400, 404}

@endpoint DELETE /accounts/{account_id}/ai-gateway/custom-providers/{id}
@required {account_id: str, id: str(uuid)}
@returns(200) {result: map{base_url: str(uri), beta: bool, created_at: str(date-time), curl_example: str, description: str, enable: bool, headers: str, id: str(uuid), js_example: str, link: str, logo: str, modified_at: str(date-time), name: str, position: int, slug: str}, success: bool}
@errors {404}

@endpoint GET /accounts/{account_id}/ai-gateway/custom-providers/{id}
@required {account_id: str, id: str(uuid)}
@returns(200) {result: map{base_url: str(uri), beta: bool, created_at: str(date-time), curl_example: str, description: str, enable: bool, headers: str, id: str(uuid), js_example: str, link: str, logo: str, modified_at: str(date-time), name: str, position: int, slug: str}, success: bool}
@errors {404}

@endpoint PATCH /accounts/{account_id}/ai-gateway/custom-providers/{id}
@required {account_id: str, id: str(uuid)}
@optional {base_url: str(uri), beta: bool, curl_example: str, description: str, enable: bool, headers: str, js_example: str, link: str, logo: str, name: str, position: int, slug: str}
@returns(200) {result: map{base_url: str(uri), beta: bool, created_at: str(date-time), curl_example: str, description: str, enable: bool, headers: str, id: str(uuid), js_example: str, link: str, logo: str, modified_at: str(date-time), name: str, position: int, slug: str}, success: bool}
@errors {400, 404}

@endpoint GET /accounts/{account_id}/ai-gateway/evaluation-types
@required {account_id: str}
@optional {page: int=1, per_page: int=20, order_by: str=mandatory, order_by_direction: str(asc/desc)=desc}
@returns(200) {result: [map], result_info: map{count: num, page: num, per_page: num, total_count: num}, success: bool}
@errors {400}

@endpoint GET /accounts/{account_id}/ai-gateway/gateways
@required {account_id: str}
@optional {page: int=1, per_page: int=20, search: str}
@returns(200) {result: [map], success: bool}
@errors {400}

@endpoint POST /accounts/{account_id}/ai-gateway/gateways
@required {account_id: str, cache_invalidate_on_update: bool, cache_ttl: int, collect_logs: bool, id: str, rate_limiting_interval: int, rate_limiting_limit: int}
@optional {authentication: bool, byok_only: bool, log_management: int, log_management_strategy: str(STOP_INSERTING/DELETE_OLDEST), logpush: bool, logpush_public_key: str, rate_limiting_technique: str(fixed/sliding), retry_backoff: str(constant/linear/exponential), retry_delay: int, retry_max_attempts: int, store_id: str, workers_ai_billing_mode: str(postpaid/unified)=postpaid, zdr: bool}
@returns(200) {result: map{authentication: bool, byok_only: bool, cache_invalidate_on_update: bool, cache_ttl: int?, collect_logs: bool, created_at: str(date-time), dlp: any, guardrails: map?{prompt: map{P1: str, S1: str, S10: str, S11: str, S12: str, S13: str, S2: str, S3: str, S4: str, S5: str, S6: str, S7: str, S8: str, S9: str}, response: map{P1: str, S1: str, S10: str, S11: str, S12: str, S13: str, S2: str, S3: str, S4: str, S5: str, S6: str, S7: str, S8: str, S9: str}}, id: str, is_default: bool, log_classification: bool, log_management: int?, log_management_strategy: str?, logpush: bool, logpush_public_key: str?, modified_at: str(date-time), otel: [map]?, rate_limiting_interval: int?, rate_limiting_limit: int?, rate_limiting_technique: str?, retry_backoff: str?, retry_delay: int?, retry_max_attempts: int?, spend_limits: map?{enabled: bool, rules: [map]}, store_id: str?, stripe: map?{authorization: str, usage_events: [map]}, workers_ai_billing_mode: str, zdr: bool}, success: bool}
@errors {400}

@endpoint GET /accounts/{account_id}/ai-gateway/gateways/{gateway_id}/custom-domains
@required {account_id: str, gateway_id: str}
@optional {page: int=1, per_page: int=20, status: str(initializing/pending_dcv/active/blocked/error), search: str}
@returns(200) {result: [map], success: bool}
@errors {400}

@endpoint POST /accounts/{account_id}/ai-gateway/gateways/{gateway_id}/custom-domains
@required {account_id: str, gateway_id: str, domain: str, zone_id: str}
@optional {minTLS: str(1.0/1.1/1.2/1.3)}
@returns(200) {result: map{cname_target: str, created_at: int, gateway_id: str, hostname: str, modified_at: int, status: str}, success: bool}
@errors {400}

@endpoint DELETE /accounts/{account_id}/ai-gateway/gateways/{gateway_id}/custom-domains/{hostname}
@required {account_id: str, gateway_id: str, hostname: str}
@returns(200) {result: map{created_at: int, gateway_id: str, hostname: str, modified_at: int, ssl_hostname_id: str?, status: str}, success: bool}
@errors {404}

@endpoint GET /accounts/{account_id}/ai-gateway/gateways/{gateway_id}/custom-domains/{hostname}
@required {account_id: str, gateway_id: str, hostname: str}
@returns(200) {result: map{created_at: int, gateway_id: str, hostname: str, modified_at: int, ssl_hostname_id: str?, status: str}, success: bool}
@errors {404}

@endpoint GET /accounts/{account_id}/ai-gateway/gateways/{gateway_id}/datasets
@required {account_id: str, gateway_id: str}
@optional {page: int=1, per_page: int=20, name: str, enable: bool, search: str}
@returns(200) {result: [map], success: bool}
@errors {400}

@endpoint POST /accounts/{account_id}/ai-gateway/gateways/{gateway_id}/datasets
@required {gateway_id: str, account_id: str, enable: bool, filters: [map{key!: str, operator!: str, value!: [any]}], name: str}
@returns(200) {result: map{created_at: str(date-time), enable: bool, filters: [map], gateway_id: str, id: str, modified_at: str(date-time), name: str}, success: bool}
@errors {400}

@endpoint DELETE /accounts/{account_id}/ai-gateway/gateways/{gateway_id}/datasets/{id}
@required {account_id: str, gateway_id: str, id: str}
@returns(200) {result: map{created_at: str(date-time), enable: bool, filters: [map], gateway_id: str, id: str, modified_at: str(date-time), name: str}, success: bool}
@errors {404}

@endpoint GET /accounts/{account_id}/ai-gateway/gateways/{gateway_id}/datasets/{id}
@required {account_id: str, gateway_id: str, id: str}
@returns(200) {result: map{created_at: str(date-time), enable: bool, filters: [map], gateway_id: str, id: str, modified_at: str(date-time), name: str}, success: bool}
@errors {404}

@endpoint PUT /accounts/{account_id}/ai-gateway/gateways/{gateway_id}/datasets/{id}
@required {account_id: str, gateway_id: str, id: str, enable: bool, filters: [map{key!: str, operator!: str, value!: [any]}], name: str}
@returns(200) {result: map{created_at: str(date-time), enable: bool, filters: [map], gateway_id: str, id: str, modified_at: str(date-time), name: str}, success: bool}
@errors {400, 404}

@endpoint GET /accounts/{account_id}/ai-gateway/gateways/{gateway_id}/evaluations
@required {account_id: str, gateway_id: str}
@optional {page: int=1, per_page: int=20, name: str, processed: bool, search: str}
@returns(200) {result: [map], success: bool}
@errors {400}

@endpoint POST /accounts/{account_id}/ai-gateway/gateways/{gateway_id}/evaluations
@required {gateway_id: str, account_id: str, dataset_ids: [str], evaluation_type_ids: [str], name: str}
@returns(200) {result: map{created_at: str(date-time), datasets: [map], gateway_id: str, id: str, modified_at: str(date-time), name: str, processed: bool, results: [map], total_logs: num}, success: bool}
@errors {400}

@endpoint DELETE /accounts/{account_id}/ai-gateway/gateways/{gateway_id}/evaluations/{id}
@required {account_id: str, gateway_id: str, id: str}
@returns(200) {result: map{created_at: str(date-time), datasets: [map], gateway_id: str, id: str, modified_at: str(date-time), name: str, processed: bool, results: [map], total_logs: num}, success: bool}
@errors {404}

@endpoint GET /accounts/{account_id}/ai-gateway/gateways/{gateway_id}/evaluations/{id}
@required {account_id: str, gateway_id: str, id: str}
@returns(200) {result: map{created_at: str(date-time), datasets: [map], gateway_id: str, id: str, modified_at: str(date-time), name: str, processed: bool, results: [map], total_logs: num}, success: bool}
@errors {404}

@endpoint DELETE /accounts/{account_id}/ai-gateway/gateways/{gateway_id}/logs
@required {account_id: str, gateway_id: str}
@optional {order_by: str(created_at/provider/model/model_type/success/cached/cost/tokens_in/tokens_out/duration/feedback)=created_at, order_by_direction: str(asc/desc)=asc, filters: [map], limit: int=10000}
@returns(200) {success: bool}
@errors {400}

@endpoint GET /accounts/{account_id}/ai-gateway/gateways/{gateway_id}/logs
@required {account_id: str, gateway_id: str}
@optional {search: str, page: int=1, per_page: int=20, order_by: str(created_at/provider/model/model_type/success/cached)=created_at, order_by_direction: str(asc/desc)=desc, filters: [map], meta_info: bool, direction: str(asc/desc), start_date: str(date-time), end_date: str(date-time), min_cost: num, max_cost: num, min_tokens_in: num, max_tokens_in: num, min_tokens_out: num, max_tokens_out: num, min_total_tokens: num, max_total_tokens: num, min_duration: num, max_duration: num, feedback: any, success: bool, cached: bool, model: str, model_type: str, provider: str, request_content_type: str, response_content_type: str}
@returns(200) {result: [map], result_info: map{count: num, max_cost: num, max_duration: num, max_tokens_in: num, max_tokens_out: num, max_total_tokens: num, min_cost: num, min_duration: num, min_tokens_in: num, min_tokens_out: num, min_total_tokens: num, page: num, per_page: num, total_count: num}, success: bool}
@errors {400}

@endpoint GET /accounts/{account_id}/ai-gateway/gateways/{gateway_id}/logs/{id}
@required {id: str, gateway_id: str, account_id: str}
@returns(200) {result: map{cached: bool, cost: num, created_at: str(date-time), custom_cost: bool, duration: int, id: str, metadata: str, model: str, model_type: str, path: str, provider: str, request_content_type: str, request_head: str, request_head_complete: bool, request_size: int, request_type: str, response_content_type: str, response_head: str, response_head_complete: bool, response_size: int, status_code: int, step: int, success: bool, tokens_in: int?, tokens_out: int?}, success: bool}
@errors {404}

@endpoint PATCH /accounts/{account_id}/ai-gateway/gateways/{gateway_id}/logs/{id}
@required {id: str, gateway_id: str, account_id: str}
@optional {feedback: num, metadata: map, score: num}
@returns(200) {result: map, success: bool}
@errors {404}

@endpoint GET /accounts/{account_id}/ai-gateway/gateways/{gateway_id}/logs/{id}/request
@required {id: str, gateway_id: str, account_id: str}
@returns(200)
@errors {404}

@endpoint GET /accounts/{account_id}/ai-gateway/gateways/{gateway_id}/logs/{id}/response
@required {id: str, gateway_id: str, account_id: str}
@returns(200)
@errors {404}

@endpoint GET /accounts/{account_id}/ai-gateway/gateways/{gateway_id}/provider_configs
@required {account_id: str, gateway_id: str}
@optional {page: int=1, per_page: int=20}
@returns(200) {result: [map], success: bool}
@errors {400}

@endpoint POST /accounts/{account_id}/ai-gateway/gateways/{gateway_id}/provider_configs
@required {account_id: str, gateway_id: str, alias: str, default_config: bool, provider_slug: str}
@optional {rate_limit: num, rate_limit_period: num=60, secret: str, secret_id: str}
@returns(200) {result: map{alias: str, default_config: bool, gateway_id: str, id: str, modified_at: str(date-time), provider_slug: str, rate_limit: num, rate_limit_period: num, secret_id: str, secret_preview: str}, success: bool}
@errors {400}

@endpoint DELETE /accounts/{account_id}/ai-gateway/gateways/{gateway_id}/provider_configs/{id}
@required {account_id: str, gateway_id: str, id: str}
@returns(200) {result: map{alias: str, default_config: bool, gateway_id: str, id: str, modified_at: str(date-time), provider_slug: str, rate_limit: num, rate_limit_period: num, secret_id: str, secret_preview: str}, success: bool}
@errors {404}

@endpoint PUT /accounts/{account_id}/ai-gateway/gateways/{gateway_id}/provider_configs/{id}
@required {account_id: str, gateway_id: str, id: str, secret: str}
@returns(200) {result: map{alias: str, default_config: bool, gateway_id: str, id: str, modified_at: str(date-time), provider_slug: str, rate_limit: num, rate_limit_period: num, secret_id: str, secret_preview: str}, success: bool}
@errors {400, 404}

@endpoint GET /accounts/{account_id}/ai-gateway/gateways/{gateway_id}/routes
@required {account_id: str, gateway_id: str}
@optional {page: int, per_page: int}
@returns(200) {data: map{order_by: str, order_by_direction: str, page: num, per_page: num, routes: [map]}, success: bool}
@errors {400}

@endpoint POST /accounts/{account_id}/ai-gateway/gateways/{gateway_id}/routes
@required {account_id: str, gateway_id: str, elements: [any], name: str}
@returns(200) {result: map{created_at: str(date-time), deployment: map{created_at: str, deployment_id: str, version_id: str}, elements: [any], gateway_id: str, id: str, modified_at: str(date-time), name: str, version: map{active: str, created_at: str, data: str, is_valid: bool, version_id: str}}, success: bool}
@errors {400}

@endpoint DELETE /accounts/{account_id}/ai-gateway/gateways/{gateway_id}/routes/{id}
@required {account_id: str, gateway_id: str, id: str}
@returns(200) {result: map{created_at: str(date-time), elements: [any], gateway_id: str, id: str, modified_at: str(date-time), name: str}, success: bool}
@errors {400}

@endpoint GET /accounts/{account_id}/ai-gateway/gateways/{gateway_id}/routes/{id}
@required {account_id: str, gateway_id: str, id: str}
@returns(200) {result: map{created_at: str(date-time), deployment: map{created_at: str, deployment_id: str, version_id: str}, elements: [any], gateway_id: str, id: str, modified_at: str(date-time), name: str, version: map{active: str, created_at: str, data: str, is_valid: bool, version_id: str}}, success: bool}
@errors {400}

@endpoint PATCH /accounts/{account_id}/ai-gateway/gateways/{gateway_id}/routes/{id}
@required {account_id: str, gateway_id: str, id: str, name: str}
@returns(200) {route: map{account_tag: str, created_at: str(date-time), deployment: map{created_at: str, deployment_id: str, version_id: str}, elements: [any], gateway_id: str, id: str, modified_at: str(date-time), name: str, version: map{active: str, created_at: str, data: str, is_valid: bool, version_id: str}}, success: bool}
@errors {400}

@endpoint GET /accounts/{account_id}/ai-gateway/gateways/{gateway_id}/routes/{id}/deployments
@required {account_id: str, gateway_id: str, id: str}
@returns(200) {data: map{deployments: [map], order_by: str, order_by_direction: str, page: num, per_page: num}, success: bool}
@errors {400}

@endpoint POST /accounts/{account_id}/ai-gateway/gateways/{gateway_id}/routes/{id}/deployments
@required {account_id: str, gateway_id: str, id: str, version_id: str}
@returns(200) {result: map{created_at: str(date-time), elements: [any], gateway_id: str, id: str, modified_at: str(date-time), name: str}, success: bool}
@errors {400}

@endpoint GET /accounts/{account_id}/ai-gateway/gateways/{gateway_id}/routes/{id}/versions
@required {account_id: str, gateway_id: str, id: str}
@returns(200) {data: map{order_by: str, order_by_direction: str, page: num, per_page: num, versions: [map]}, success: bool}
@errors {400}

@endpoint POST /accounts/{account_id}/ai-gateway/gateways/{gateway_id}/routes/{id}/versions
@required {account_id: str, gateway_id: str, id: str, elements: [any]}
@returns(200) {result: map{created_at: str(date-time), elements: [any], gateway_id: str, id: str, modified_at: str(date-time), name: str}, success: bool}
@errors {400}

@endpoint GET /accounts/{account_id}/ai-gateway/gateways/{gateway_id}/routes/{id}/versions/{version_id}
@required {account_id: str, gateway_id: str, id: str, version_id: str}
@returns(200) {result: map{active: str, created_at: str, data: str, elements: [any], gateway_id: str, id: str, is_valid: bool, modified_at: str(date-time), name: str, version_id: str}, success: bool}
@errors {400}

@endpoint GET /accounts/{account_id}/ai-gateway/gateways/{gateway_id}/url/{provider}
@required {gateway_id: str, account_id: str, provider: str}
@returns(200) {result: str, success: bool}
@errors {400}

@endpoint DELETE /accounts/{account_id}/ai-gateway/gateways/{id}
@required {account_id: str, id: str}
@returns(200) {result: map{authentication: bool, byok_only: bool, cache_invalidate_on_update: bool, cache_ttl: int?, collect_logs: bool, created_at: str(date-time), dlp: any, guardrails: map?{prompt: map{P1: str, S1: str, S10: str, S11: str, S12: str, S13: str, S2: str, S3: str, S4: str, S5: str, S6: str, S7: str, S8: str, S9: str}, response: map{P1: str, S1: str, S10: str, S11: str, S12: str, S13: str, S2: str, S3: str, S4: str, S5: str, S6: str, S7: str, S8: str, S9: str}}, id: str, is_default: bool, log_classification: bool, log_management: int?, log_management_strategy: str?, logpush: bool, logpush_public_key: str?, modified_at: str(date-time), otel: [map]?, rate_limiting_interval: int?, rate_limiting_limit: int?, rate_limiting_technique: str?, retry_backoff: str?, retry_delay: int?, retry_max_attempts: int?, spend_limits: map?{enabled: bool, rules: [map]}, store_id: str?, stripe: map?{authorization: str, usage_events: [map]}, workers_ai_billing_mode: str, zdr: bool}, success: bool}
@errors {404}

@endpoint GET /accounts/{account_id}/ai-gateway/gateways/{id}
@required {account_id: str, id: str}
@returns(200) {result: map{authentication: bool, byok_only: bool, cache_invalidate_on_update: bool, cache_ttl: int?, collect_logs: bool, created_at: str(date-time), dlp: any, guardrails: map?{prompt: map{P1: str, S1: str, S10: str, S11: str, S12: str, S13: str, S2: str, S3: str, S4: str, S5: str, S6: str, S7: str, S8: str, S9: str}, response: map{P1: str, S1: str, S10: str, S11: str, S12: str, S13: str, S2: str, S3: str, S4: str, S5: str, S6: str, S7: str, S8: str, S9: str}}, id: str, is_default: bool, log_classification: bool, log_management: int?, log_management_strategy: str?, logpush: bool, logpush_public_key: str?, modified_at: str(date-time), otel: [map]?, rate_limiting_interval: int?, rate_limiting_limit: int?, rate_limiting_technique: str?, retry_backoff: str?, retry_delay: int?, retry_max_attempts: int?, spend_limits: map?{enabled: bool, rules: [map]}, store_id: str?, stripe: map?{authorization: str, usage_events: [map]}, workers_ai_billing_mode: str, zdr: bool}, success: bool}
@errors {404}

@endpoint PUT /accounts/{account_id}/ai-gateway/gateways/{id}
@required {account_id: str, id: str, cache_invalidate_on_update: bool, cache_ttl: int, collect_logs: bool, rate_limiting_interval: int, rate_limiting_limit: int}
@optional {authentication: bool, byok_only: bool, dlp: any, guardrails: map{prompt!: map, response!: map}, log_classification: bool, log_management: int, log_management_strategy: str(STOP_INSERTING/DELETE_OLDEST), logpush: bool, logpush_public_key: str, otel: [map{authorization: str, content_type: str, headers!: map, url!: str(uri)}], rate_limiting_technique: str(fixed/sliding), retry_backoff: str(constant/linear/exponential), retry_delay: int, retry_max_attempts: int, spend_limits: map{enabled: bool, rules: [map]}, store_id: str, stripe: map{authorization!: str, usage_events!: [map]}, workers_ai_billing_mode: str(postpaid/unified)=postpaid, zdr: bool}
@returns(200) {result: map{authentication: bool, byok_only: bool, cache_invalidate_on_update: bool, cache_ttl: int?, collect_logs: bool, created_at: str(date-time), dlp: any, guardrails: map?{prompt: map{P1: str, S1: str, S10: str, S11: str, S12: str, S13: str, S2: str, S3: str, S4: str, S5: str, S6: str, S7: str, S8: str, S9: str}, response: map{P1: str, S1: str, S10: str, S11: str, S12: str, S13: str, S2: str, S3: str, S4: str, S5: str, S6: str, S7: str, S8: str, S9: str}}, id: str, is_default: bool, log_classification: bool, log_management: int?, log_management_strategy: str?, logpush: bool, logpush_public_key: str?, modified_at: str(date-time), otel: [map]?, rate_limiting_interval: int?, rate_limiting_limit: int?, rate_limiting_technique: str?, retry_backoff: str?, retry_delay: int?, retry_max_attempts: int?, spend_limits: map?{enabled: bool, rules: [map]}, store_id: str?, stripe: map?{authorization: str, usage_events: [map]}, workers_ai_billing_mode: str, zdr: bool}, success: bool}
@errors {400, 404}

@endpoint GET /accounts/{account_id}/ai-gateway/logging-state
@required {account_id: str}
@returns(200) {result: map{migrated_at: int?, migration_available: bool, platform: str}, success: bool}
@errors {400, 503}

@endpoint PATCH /accounts/{account_id}/ai-gateway/logging-state
@required {account_id: str}
@returns(200) {result: map{migrated_at: int?, migration_available: bool, platform: str}, success: bool}
@errors {409, 503}

@endpoint GET /accounts/{account_id}/ai-search/instances
@required {account_id: str}
@optional {page: int=1, per_page: int=20, search: str, namespace: str, order_by: str=created_at, order_by_direction: str(asc/desc)=desc}
@returns(200) {result: [map], result_info: map{count: num, page: num, per_page: num, total_count: num}, success: bool}
@errors {400}

@endpoint POST /accounts/{account_id}/ai-search/instances
@required {account_id: str, id: str}
@optional {ai_gateway_id: str, ai_search_model: str, cache: bool=true, cache_threshold: str(super_strict_match/close_enough/flexible_friend/anything_goes)=close_enough, cache_ttl: any=172800, chunk: bool=true, chunk_overlap: int=10, chunk_size: int, custom_metadata: [map{data_type!: str, field_name!: str}], embedding_model: str, fusion_method: str(max/rrf)=rrf, hybrid_search_enabled: bool=false, index_method: map{keyword!: bool, vector!: bool}=[object Object], indexing_options: map{keyword_tokenizer: str, use_ocr: bool}, max_num_results: int=10, metadata: map{created_from_aisearch_wizard: bool, worker_domain: str}, public_endpoint_params: map{authorized_hosts: [str], chat_completions_endpoint: map, custom_domains: [str], default_domain_enabled: bool, enabled: bool, mcp: map, rate_limit: map, search_endpoint: map}, reranking: bool=false, reranking_model: str, retrieval_options: map{boost_by: [map], keyword_match_mode: str}, rewrite_model: str, rewrite_query: bool=false, score_threshold: num=0.4, source: str, source_params: map{exclude_items: [str], include_items: [str], prefix: str, r2_jurisdiction: str, web_crawler: map}, sync_interval: any=21600, token_id: str(uuid), type: str(r2/web-crawler)}
@returns(201) {result: map{ai_gateway_id: str?, ai_search_model: str?, cache: bool, cache_threshold: str, cache_ttl: any, chunk_overlap: int, chunk_size: int, created_at: str(date-time), created_by: str?, custom_metadata: [map], embedding_model: str?, enable: bool, engine_version: num, fusion_method: str, hybrid_search_enabled: bool, id: str, index_method: map{keyword: bool, vector: bool}, indexing_options: map?{keyword_tokenizer: str, use_ocr: bool}, last_activity: str(date-time)?, max_num_results: int, metadata: map{created_from_aisearch_wizard: bool, worker_domain: str}, modified_at: str(date-time), modified_by: str?, namespace: str?, paused: bool, public_endpoint_id: str?, public_endpoint_params: map{authorized_hosts: [str], chat_completions_endpoint: map{disabled: bool}, custom_domains: [str]?, default_domain_enabled: bool, enabled: bool, mcp: map{description: str, disabled: bool}, rate_limit: map{period_ms: int, requests: int, technique: str}, search_endpoint: map{disabled: bool}}, reranking: bool, reranking_model: str?, retrieval_options: map?{boost_by: [map], keyword_match_mode: str}, rewrite_model: str?, rewrite_query: bool, score_threshold: num, source: str?, source_params: map?{exclude_items: [str], include_items: [str], prefix: str, r2_jurisdiction: str, web_crawler: map{discover_options: map, parse_options: map, parse_type: str}}, status: str, sync_interval: any, token_id: str(uuid), type: str?}, success: bool}
@errors {400, 403}

@endpoint DELETE /accounts/{account_id}/ai-search/instances/{id}
@required {account_id: str, id: str}
@returns(200) {result: map{ai_gateway_id: str?, ai_search_model: str?, cache: bool, cache_threshold: str, cache_ttl: any, chunk_overlap: int, chunk_size: int, created_at: str(date-time), created_by: str?, custom_metadata: [map], embedding_model: str?, enable: bool, engine_version: num, fusion_method: str, hybrid_search_enabled: bool, id: str, index_method: map{keyword: bool, vector: bool}, indexing_options: map?{keyword_tokenizer: str, use_ocr: bool}, last_activity: str(date-time)?, max_num_results: int, metadata: map{created_from_aisearch_wizard: bool, worker_domain: str}, modified_at: str(date-time), modified_by: str?, namespace: str?, paused: bool, public_endpoint_id: str?, public_endpoint_params: map{authorized_hosts: [str], chat_completions_endpoint: map{disabled: bool}, custom_domains: [str]?, default_domain_enabled: bool, enabled: bool, mcp: map{description: str, disabled: bool}, rate_limit: map{period_ms: int, requests: int, technique: str}, search_endpoint: map{disabled: bool}}, reranking: bool, reranking_model: str?, retrieval_options: map?{boost_by: [map], keyword_match_mode: str}, rewrite_model: str?, rewrite_query: bool, score_threshold: num, source: str?, source_params: map?{exclude_items: [str], include_items: [str], prefix: str, r2_jurisdiction: str, web_crawler: map{discover_options: map, parse_options: map, parse_type: str}}, status: str, sync_interval: any, token_id: str(uuid), type: str?}, success: bool}
@errors {404, 409}

@endpoint GET /accounts/{account_id}/ai-search/instances/{id}
@required {account_id: str, id: str}
@returns(200) {result: map{ai_gateway_id: str?, ai_search_model: str?, cache: bool, cache_threshold: str, cache_ttl: any, chunk_overlap: int, chunk_size: int, created_at: str(date-time), created_by: str?, custom_metadata: [map], embedding_model: str?, enable: bool, engine_version: num, fusion_method: str, hybrid_search_enabled: bool, id: str, index_method: map{keyword: bool, vector: bool}, indexing_options: map?{keyword_tokenizer: str, use_ocr: bool}, last_activity: str(date-time)?, max_num_results: int, metadata: map{created_from_aisearch_wizard: bool, worker_domain: str}, modified_at: str(date-time), modified_by: str?, namespace: str?, paused: bool, public_endpoint_id: str?, public_endpoint_params: map{authorized_hosts: [str], chat_completions_endpoint: map{disabled: bool}, custom_domains: [str]?, default_domain_enabled: bool, enabled: bool, mcp: map{description: str, disabled: bool}, rate_limit: map{period_ms: int, requests: int, technique: str}, search_endpoint: map{disabled: bool}}, reranking: bool, reranking_model: str?, retrieval_options: map?{boost_by: [map], keyword_match_mode: str}, rewrite_model: str?, rewrite_query: bool, score_threshold: num, source: str?, source_params: map?{exclude_items: [str], include_items: [str], prefix: str, r2_jurisdiction: str, web_crawler: map{discover_options: map, parse_options: map, parse_type: str}}, status: str, sync_interval: any, token_id: str(uuid), type: str?}, success: bool}
@errors {404}

@endpoint PUT /accounts/{account_id}/ai-search/instances/{id}
@required {account_id: str, id: str}
@optional {ai_gateway_id: str, ai_search_model: str, cache: bool=true, cache_threshold: str(super_strict_match/close_enough/flexible_friend/anything_goes)=close_enough, cache_ttl: any=172800, chunk: bool=true, chunk_overlap: int=10, chunk_size: int, custom_metadata: [map{data_type!: str, field_name!: str}], embedding_model: str, fusion_method: str(max/rrf)=rrf, index_method: map{keyword!: bool, vector!: bool}=[object Object], indexing_options: map{keyword_tokenizer: str, use_ocr: bool}, max_num_results: int=10, metadata: map{created_from_aisearch_wizard: bool, worker_domain: str}, paused: bool=false, public_endpoint_params: map{authorized_hosts: [str], chat_completions_endpoint: map, custom_domains: [str], default_domain_enabled: bool, enabled: bool, mcp: map, rate_limit: map, search_endpoint: map}, reranking: bool=false, reranking_model: str, retrieval_options: map{boost_by: [map], keyword_match_mode: str}, rewrite_model: str, rewrite_query: bool=false, score_threshold: num=0.4, source: str, source_params: map{exclude_items: [str], include_items: [str], prefix: str, r2_jurisdiction: str, web_crawler: map}, summarization: bool=false, summarization_model: str, sync_interval: any=21600, system_prompt_ai_search: str, system_prompt_index_summarization: str, system_prompt_rewrite_query: str, token_id: str(uuid)}
@returns(200) {result: map{ai_gateway_id: str?, ai_search_model: str?, cache: bool, cache_threshold: str, cache_ttl: any, chunk_overlap: int, chunk_size: int, created_at: str(date-time), created_by: str?, custom_metadata: [map], embedding_model: str?, enable: bool, engine_version: num, fusion_method: str, hybrid_search_enabled: bool, id: str, index_method: map{keyword: bool, vector: bool}, indexing_options: map?{keyword_tokenizer: str, use_ocr: bool}, last_activity: str(date-time)?, max_num_results: int, metadata: map{created_from_aisearch_wizard: bool, worker_domain: str}, modified_at: str(date-time), modified_by: str?, namespace: str?, paused: bool, public_endpoint_id: str?, public_endpoint_params: map{authorized_hosts: [str], chat_completions_endpoint: map{disabled: bool}, custom_domains: [str]?, default_domain_enabled: bool, enabled: bool, mcp: map{description: str, disabled: bool}, rate_limit: map{period_ms: int, requests: int, technique: str}, search_endpoint: map{disabled: bool}}, reranking: bool, reranking_model: str?, retrieval_options: map?{boost_by: [map], keyword_match_mode: str}, rewrite_model: str?, rewrite_query: bool, score_threshold: num, source: str?, source_params: map?{exclude_items: [str], include_items: [str], prefix: str, r2_jurisdiction: str, web_crawler: map{discover_options: map, parse_options: map, parse_type: str}}, status: str, sync_interval: any, token_id: str(uuid), type: str?}, success: bool}
@errors {400, 404, 409}

@endpoint POST /accounts/{account_id}/ai-search/instances/{id}/chat/completions
@required {id: str, account_id: str, messages: [map{content!: any, role!: str}]}
@optional {ai_search_options: map{cache: map, custom_metadata: map, query_rewrite: map, reranking: map, retrieval: map}, model: str, stream: bool}
@returns(200) {choices: [map], chunks: [map], id: str, model: str, object: str}
@errors {400, 404}

@endpoint GET /accounts/{account_id}/ai-search/instances/{id}/jobs
@required {id: str, account_id: str}
@optional {page: int=1, per_page: int=20}
@returns(200) {result: [map], result_info: map{count: int, page: int, per_page: int, total_count: int}, success: bool}
@errors {400, 404, 503}

@endpoint POST /accounts/{account_id}/ai-search/instances/{id}/jobs
@required {id: str, account_id: str}
@optional {description: str}
@returns(200) {result: map{description: str, end_reason: str, ended_at: str, id: str, last_seen_at: str, source: str, started_at: str}, success: bool}
@errors {400, 404, 429, 503}

@endpoint GET /accounts/{account_id}/ai-search/instances/{id}/jobs/{job_id}
@required {id: str, job_id: str, account_id: str}
@returns(200) {result: map{description: str, end_reason: str, ended_at: str, id: str, last_seen_at: str, source: str, started_at: str}, success: bool}
@errors {404, 503}

@endpoint PATCH /accounts/{account_id}/ai-search/instances/{id}/jobs/{job_id}
@required {id: str, job_id: str, account_id: str, action: str}
@returns(200) {result: map{description: str, end_reason: str, ended_at: str, id: str, last_seen_at: str, source: str, started_at: str}, success: bool}
@errors {400, 404, 503}

@endpoint GET /accounts/{account_id}/ai-search/instances/{id}/jobs/{job_id}/logs
@required {id: str, job_id: str, account_id: str}
@optional {page: int=1, per_page: int=20}
@returns(200) {result: [map], result_info: map{count: int, page: int, per_page: int, total_count: int}, success: bool}
@errors {400, 404, 503}

@endpoint POST /accounts/{account_id}/ai-search/instances/{id}/search
@required {id: str, account_id: str}
@optional {ai_search_options: map{cache: map, custom_metadata: map, query_rewrite: map, reranking: map, retrieval: map}, messages: [map{content!: any, role!: str}], query: str}
@returns(200) {result: map{chunks: [map], query_kind: str, search_query: str}, success: bool}
@errors {400, 404}

@endpoint GET /accounts/{account_id}/ai-search/instances/{id}/stats
@required {id: str, account_id: str}
@returns(200) {result: map{completed: int, degraded: bool, engine: map{r2: map{metadataSizeBytes: int, objectCount: int, payloadSizeBytes: int}, vectorize: map{dimensions: int, vectorsCount: int}}, error: int, file_embed_errors: map, index_source_errors: map, last_activity: str(date-time), outdated: int, queued: int, running: int, skipped: int}, success: bool}
@errors {404}

@endpoint GET /accounts/{account_id}/ai-search/namespaces
@required {account_id: str}
@optional {page: int=1, per_page: int=20, search: str}
@returns(200) {result: [map], result_info: map{count: num, page: num, per_page: num, total_count: num}, success: bool}
@errors {400}

@endpoint POST /accounts/{account_id}/ai-search/namespaces
@required {account_id: str, name: str}
@optional {description: str, public_endpoint_params: map{authorized_hosts: [str], chat_completions_endpoint: map, custom_domains: [str], default_domain_enabled: bool, enabled: bool, instances_allowed: [str], mcp: map, rate_limit: map, search_endpoint: map}}
@returns(201) {result: map{created_at: str(date-time)?, description: str?, name: str, public_endpoint_id: str?, public_endpoint_params: map?{authorized_hosts: [str], chat_completions_endpoint: map{disabled: bool}, custom_domains: [str]?, default_domain_enabled: bool, enabled: bool, instances_allowed: [str], mcp: map{description: str, disabled: bool}, rate_limit: map{period_ms: int, requests: int, technique: str}, search_endpoint: map{disabled: bool}}}, success: bool}
@errors {400, 403, 409}

@endpoint DELETE /accounts/{account_id}/ai-search/namespaces/{name}
@required {account_id: str, name: str}
@returns(200) {result: map, success: bool}
@errors {400, 404}

@endpoint GET /accounts/{account_id}/ai-search/namespaces/{name}
@required {account_id: str, name: str}
@returns(200) {result: map{created_at: str(date-time)?, description: str?, name: str, public_endpoint_id: str?, public_endpoint_params: map?{authorized_hosts: [str], chat_completions_endpoint: map{disabled: bool}, custom_domains: [str]?, default_domain_enabled: bool, enabled: bool, instances_allowed: [str], mcp: map{description: str, disabled: bool}, rate_limit: map{period_ms: int, requests: int, technique: str}, search_endpoint: map{disabled: bool}}}, success: bool}
@errors {404}

@endpoint PUT /accounts/{account_id}/ai-search/namespaces/{name}
@required {account_id: str, name: str}
@optional {description: str, public_endpoint_params: map{authorized_hosts: [str], chat_completions_endpoint: map, custom_domains: [str], default_domain_enabled: bool, enabled: bool, instances_allowed: [str], mcp: map, rate_limit: map, search_endpoint: map}}
@returns(200) {result: map{created_at: str(date-time)?, description: str?, name: str, public_endpoint_id: str?, public_endpoint_params: map?{authorized_hosts: [str], chat_completions_endpoint: map{disabled: bool}, custom_domains: [str]?, default_domain_enabled: bool, enabled: bool, instances_allowed: [str], mcp: map{description: str, disabled: bool}, rate_limit: map{period_ms: int, requests: int, technique: str}, search_endpoint: map{disabled: bool}}}, success: bool}
@errors {400, 404, 409}

@endpoint POST /accounts/{account_id}/ai-search/namespaces/{name}/chat/completions
@required {account_id: str, name: str, ai_search_options: map{cache: map, custom_metadata: map, instance_ids!: [str], query_rewrite: map, reranking: map, retrieval: map}, messages: [map{content!: any, role!: str}]}
@optional {model: str, stream: bool}
@returns(200) {choices: [map], chunks: [map], errors: [map], id: str, model: str, object: str}
@errors {400, 404}

@endpoint GET /accounts/{account_id}/ai-search/namespaces/{name}/instances
@required {account_id: str, name: str}
@optional {page: int=1, per_page: int=20, search: str, namespace: str, order_by: str=created_at, order_by_direction: str(asc/desc)=desc}
@returns(200) {result: [map], result_info: map{count: num, page: num, per_page: num, total_count: num}, success: bool}
@errors {400}

@endpoint POST /accounts/{account_id}/ai-search/namespaces/{name}/instances
@required {account_id: str, name: str, id: str}
@optional {ai_gateway_id: str, ai_search_model: str, cache: bool=true, cache_threshold: str(super_strict_match/close_enough/flexible_friend/anything_goes)=close_enough, cache_ttl: any=172800, chunk: bool=true, chunk_overlap: int=10, chunk_size: int, custom_metadata: [map{data_type!: str, field_name!: str}], embedding_model: str, fusion_method: str(max/rrf)=rrf, hybrid_search_enabled: bool=false, index_method: map{keyword!: bool, vector!: bool}=[object Object], indexing_options: map{keyword_tokenizer: str, use_ocr: bool}, max_num_results: int=10, metadata: map{created_from_aisearch_wizard: bool, worker_domain: str}, public_endpoint_params: map{authorized_hosts: [str], chat_completions_endpoint: map, custom_domains: [str], default_domain_enabled: bool, enabled: bool, mcp: map, rate_limit: map, search_endpoint: map}, reranking: bool=false, reranking_model: str, retrieval_options: map{boost_by: [map], keyword_match_mode: str}, rewrite_model: str, rewrite_query: bool=false, score_threshold: num=0.4, source: str, source_params: map{exclude_items: [str], include_items: [str], prefix: str, r2_jurisdiction: str, web_crawler: map}, sync_interval: any=21600, token_id: str(uuid), type: str(r2/web-crawler)}
@returns(201) {result: map{ai_gateway_id: str?, ai_search_model: str?, cache: bool, cache_threshold: str, cache_ttl: any, chunk_overlap: int, chunk_size: int, created_at: str(date-time), created_by: str?, custom_metadata: [map], embedding_model: str?, enable: bool, engine_version: num, fusion_method: str, hybrid_search_enabled: bool, id: str, index_method: map{keyword: bool, vector: bool}, indexing_options: map?{keyword_tokenizer: str, use_ocr: bool}, last_activity: str(date-time)?, max_num_results: int, metadata: map{created_from_aisearch_wizard: bool, worker_domain: str}, modified_at: str(date-time), modified_by: str?, namespace: str?, paused: bool, public_endpoint_id: str?, public_endpoint_params: map{authorized_hosts: [str], chat_completions_endpoint: map{disabled: bool}, custom_domains: [str]?, default_domain_enabled: bool, enabled: bool, mcp: map{description: str, disabled: bool}, rate_limit: map{period_ms: int, requests: int, technique: str}, search_endpoint: map{disabled: bool}}, reranking: bool, reranking_model: str?, retrieval_options: map?{boost_by: [map], keyword_match_mode: str}, rewrite_model: str?, rewrite_query: bool, score_threshold: num, source: str?, source_params: map?{exclude_items: [str], include_items: [str], prefix: str, r2_jurisdiction: str, web_crawler: map{discover_options: map, parse_options: map, parse_type: str}}, status: str, sync_interval: any, token_id: str(uuid), type: str?}, success: bool}
@errors {400, 403}

@endpoint DELETE /accounts/{account_id}/ai-search/namespaces/{name}/instances/{id}
@required {account_id: str, id: str, name: str}
@returns(200) {result: map{ai_gateway_id: str?, ai_search_model: str?, cache: bool, cache_threshold: str, cache_ttl: any, chunk_overlap: int, chunk_size: int, created_at: str(date-time), created_by: str?, custom_metadata: [map], embedding_model: str?, enable: bool, engine_version: num, fusion_method: str, hybrid_search_enabled: bool, id: str, index_method: map{keyword: bool, vector: bool}, indexing_options: map?{keyword_tokenizer: str, use_ocr: bool}, last_activity: str(date-time)?, max_num_results: int, metadata: map{created_from_aisearch_wizard: bool, worker_domain: str}, modified_at: str(date-time), modified_by: str?, namespace: str?, paused: bool, public_endpoint_id: str?, public_endpoint_params: map{authorized_hosts: [str], chat_completions_endpoint: map{disabled: bool}, custom_domains: [str]?, default_domain_enabled: bool, enabled: bool, mcp: map{description: str, disabled: bool}, rate_limit: map{period_ms: int, requests: int, technique: str}, search_endpoint: map{disabled: bool}}, reranking: bool, reranking_model: str?, retrieval_options: map?{boost_by: [map], keyword_match_mode: str}, rewrite_model: str?, rewrite_query: bool, score_threshold: num, source: str?, source_params: map?{exclude_items: [str], include_items: [str], prefix: str, r2_jurisdiction: str, web_crawler: map{discover_options: map, parse_options: map, parse_type: str}}, status: str, sync_interval: any, token_id: str(uuid), type: str?}, success: bool}
@errors {404, 409}

@endpoint GET /accounts/{account_id}/ai-search/namespaces/{name}/instances/{id}
@required {account_id: str, id: str, name: str}
@returns(200) {result: map{ai_gateway_id: str?, ai_search_model: str?, cache: bool, cache_threshold: str, cache_ttl: any, chunk_overlap: int, chunk_size: int, created_at: str(date-time), created_by: str?, custom_metadata: [map], embedding_model: str?, enable: bool, engine_version: num, fusion_method: str, hybrid_search_enabled: bool, id: str, index_method: map{keyword: bool, vector: bool}, indexing_options: map?{keyword_tokenizer: str, use_ocr: bool}, last_activity: str(date-time)?, max_num_results: int, metadata: map{created_from_aisearch_wizard: bool, worker_domain: str}, modified_at: str(date-time), modified_by: str?, namespace: str?, paused: bool, public_endpoint_id: str?, public_endpoint_params: map{authorized_hosts: [str], chat_completions_endpoint: map{disabled: bool}, custom_domains: [str]?, default_domain_enabled: bool, enabled: bool, mcp: map{description: str, disabled: bool}, rate_limit: map{period_ms: int, requests: int, technique: str}, search_endpoint: map{disabled: bool}}, reranking: bool, reranking_model: str?, retrieval_options: map?{boost_by: [map], keyword_match_mode: str}, rewrite_model: str?, rewrite_query: bool, score_threshold: num, source: str?, source_params: map?{exclude_items: [str], include_items: [str], prefix: str, r2_jurisdiction: str, web_crawler: map{discover_options: map, parse_options: map, parse_type: str}}, status: str, sync_interval: any, token_id: str(uuid), type: str?}, success: bool}
@errors {404}

@endpoint PATCH /accounts/{account_id}/ai-search/namespaces/{name}/instances/{id}
@required {account_id: str, name: str, id: str, new_namespace: str}
@returns(200) {result: map, success: bool}
@errors {400, 404}

@endpoint PUT /accounts/{account_id}/ai-search/namespaces/{name}/instances/{id}
@required {account_id: str, id: str, name: str}
@optional {ai_gateway_id: str, ai_search_model: str, cache: bool=true, cache_threshold: str(super_strict_match/close_enough/flexible_friend/anything_goes)=close_enough, cache_ttl: any=172800, chunk: bool=true, chunk_overlap: int=10, chunk_size: int, custom_metadata: [map{data_type!: str, field_name!: str}], embedding_model: str, fusion_method: str(max/rrf)=rrf, index_method: map{keyword!: bool, vector!: bool}=[object Object], indexing_options: map{keyword_tokenizer: str, use_ocr: bool}, max_num_results: int=10, metadata: map{created_from_aisearch_wizard: bool, worker_domain: str}, paused: bool=false, public_endpoint_params: map{authorized_hosts: [str], chat_completions_endpoint: map, custom_domains: [str], default_domain_enabled: bool, enabled: bool, mcp: map, rate_limit: map, search_endpoint: map}, reranking: bool=false, reranking_model: str, retrieval_options: map{boost_by: [map], keyword_match_mode: str}, rewrite_model: str, rewrite_query: bool=false, score_threshold: num=0.4, source: str, source_params: map{exclude_items: [str], include_items: [str], prefix: str, r2_jurisdiction: str, web_crawler: map}, summarization: bool=false, summarization_model: str, sync_interval: any=21600, system_prompt_ai_search: str, system_prompt_index_summarization: str, system_prompt_rewrite_query: str, token_id: str(uuid)}
@returns(200) {result: map{ai_gateway_id: str?, ai_search_model: str?, cache: bool, cache_threshold: str, cache_ttl: any, chunk_overlap: int, chunk_size: int, created_at: str(date-time), created_by: str?, custom_metadata: [map], embedding_model: str?, enable: bool, engine_version: num, fusion_method: str, hybrid_search_enabled: bool, id: str, index_method: map{keyword: bool, vector: bool}, indexing_options: map?{keyword_tokenizer: str, use_ocr: bool}, last_activity: str(date-time)?, max_num_results: int, metadata: map{created_from_aisearch_wizard: bool, worker_domain: str}, modified_at: str(date-time), modified_by: str?, namespace: str?, paused: bool, public_endpoint_id: str?, public_endpoint_params: map{authorized_hosts: [str], chat_completions_endpoint: map{disabled: bool}, custom_domains: [str]?, default_domain_enabled: bool, enabled: bool, mcp: map{description: str, disabled: bool}, rate_limit: map{period_ms: int, requests: int, technique: str}, search_endpoint: map{disabled: bool}}, reranking: bool, reranking_model: str?, retrieval_options: map?{boost_by: [map], keyword_match_mode: str}, rewrite_model: str?, rewrite_query: bool, score_threshold: num, source: str?, source_params: map?{exclude_items: [str], include_items: [str], prefix: str, r2_jurisdiction: str, web_crawler: map{discover_options: map, parse_options: map, parse_type: str}}, status: str, sync_interval: any, token_id: str(uuid), type: str?}, success: bool}
@errors {400, 404, 409}

@endpoint POST /accounts/{account_id}/ai-search/namespaces/{name}/instances/{id}/chat/completions
@required {id: str, account_id: str, name: str, messages: [map{content!: any, role!: str}]}
@optional {ai_search_options: map{cache: map, custom_metadata: map, query_rewrite: map, reranking: map, retrieval: map}, model: str, stream: bool}
@returns(200) {choices: [map], chunks: [map], id: str, model: str, object: str}
@errors {400, 404}

@endpoint GET /accounts/{account_id}/ai-search/namespaces/{name}/instances/{id}/items
@required {id: str, account_id: str, name: str}
@optional {page: int=1, per_page: int=20, search: str, sort_by: str(status/modified_at)=status, status: str(queued/running/completed/error/skipped/outdated), source: str, metadata_filter: str, item_id: str, key: str}
@returns(200) {result: [map], result_info: map{count: int, page: int, per_page: int, total_count: int}, success: bool}
@errors {400, 404, 503}

@endpoint POST /accounts/{account_id}/ai-search/namespaces/{name}/instances/{id}/items
@required {id: str, account_id: str, name: str}
@returns(200) {result: map{checksum: str, chunks_count: int?, created_at: str(date-time), error: str, file_size: num?, id: str, key: str, last_seen_at: str(date-time), metadata: map?, namespace: str, next_action: str?, source_id: str?, status: str, warnings: [any]}, success: bool}
@errors {400, 404, 409, 413, 429}

@endpoint PUT /accounts/{account_id}/ai-search/namespaces/{name}/instances/{id}/items
@required {id: str, account_id: str, name: str, key: str, next_action: str}
@optional {wait_for_completion: bool=false}
@returns(200) {result: map{checksum: str, chunks_count: int?, created_at: str(date-time), error: str, file_size: num?, id: str, key: str, last_seen_at: str(date-time), metadata: map?, namespace: str, next_action: str?, source_id: str?, status: str}, success: bool}
@errors {400, 404, 409, 503}

@endpoint DELETE /accounts/{account_id}/ai-search/namespaces/{name}/instances/{id}/items/{item_id}
@required {id: str, item_id: str, account_id: str, name: str}
@returns(200) {result: map{key: str}, success: bool}
@errors {400, 404}

@endpoint GET /accounts/{account_id}/ai-search/namespaces/{name}/instances/{id}/items/{item_id}
@required {id: str, item_id: str, account_id: str, name: str}
@returns(200) {result: map{checksum: str, chunks_count: int?, created_at: str(date-time), error: str, file_size: num?, id: str, key: str, last_seen_at: str(date-time), metadata: map?, namespace: str, next_action: str?, source_id: str?, status: str}, success: bool}
@errors {404, 503}

@endpoint PATCH /accounts/{account_id}/ai-search/namespaces/{name}/instances/{id}/items/{item_id}
@required {id: str, item_id: str, account_id: str, name: str, next_action: str}
@optional {wait_for_completion: bool=false}
@returns(200) {result: map{checksum: str, chunks_count: int?, created_at: str(date-time), error: str, file_size: num?, id: str, key: str, last_seen_at: str(date-time), metadata: map?, namespace: str, next_action: str?, source_id: str?, status: str}, success: bool}
@errors {400, 404, 503}

@endpoint GET /accounts/{account_id}/ai-search/namespaces/{name}/instances/{id}/items/{item_id}/chunks
@required {id: str, item_id: str, account_id: str, name: str}
@optional {limit: int=20, offset: int=0}
@returns(200) {result: [map], result_info: map{count: int, limit: int, offset: int, total: int}, success: bool}
@errors {400, 404, 503}

@endpoint GET /accounts/{account_id}/ai-search/namespaces/{name}/instances/{id}/items/{item_id}/download
@required {id: str, item_id: str, account_id: str, name: str}
@returns(200)
@errors {400, 403, 404, 503}

@endpoint GET /accounts/{account_id}/ai-search/namespaces/{name}/instances/{id}/items/{item_id}/logs
@required {id: str, item_id: str, account_id: str, name: str}
@optional {limit: int=50, cursor: str}
@returns(200) {result: [map], result_info: map{count: int, cursor: str?, per_page: int, truncated: bool}, success: bool}
@errors {400, 404, 503}

@endpoint GET /accounts/{account_id}/ai-search/namespaces/{name}/instances/{id}/jobs
@required {id: str, account_id: str, name: str}
@optional {page: int=1, per_page: int=20}
@returns(200) {result: [map], result_info: map{count: int, page: int, per_page: int, total_count: int}, success: bool}
@errors {400, 404, 503}

@endpoint POST /accounts/{account_id}/ai-search/namespaces/{name}/instances/{id}/jobs
@required {id: str, account_id: str, name: str}
@optional {description: str}
@returns(200) {result: map{description: str, end_reason: str, ended_at: str, id: str, last_seen_at: str, source: str, started_at: str}, success: bool}
@errors {400, 404, 429, 503}

@endpoint GET /accounts/{account_id}/ai-search/namespaces/{name}/instances/{id}/jobs/{job_id}
@required {id: str, job_id: str, account_id: str, name: str}
@returns(200) {result: map{description: str, end_reason: str, ended_at: str, id: str, last_seen_at: str, source: str, started_at: str}, success: bool}
@errors {404, 503}

@endpoint PATCH /accounts/{account_id}/ai-search/namespaces/{name}/instances/{id}/jobs/{job_id}
@required {id: str, job_id: str, account_id: str, name: str, action: str}
@returns(200) {result: map{description: str, end_reason: str, ended_at: str, id: str, last_seen_at: str, source: str, started_at: str}, success: bool}
@errors {400, 404, 503}

@endpoint GET /accounts/{account_id}/ai-search/namespaces/{name}/instances/{id}/jobs/{job_id}/logs
@required {id: str, job_id: str, account_id: str, name: str}
@optional {page: int=1, per_page: int=20}
@returns(200) {result: [map], result_info: map{count: int, page: int, per_page: int, total_count: int}, success: bool}
@errors {400, 404, 503}

@endpoint POST /accounts/{account_id}/ai-search/namespaces/{name}/instances/{id}/purge_cache
@required {account_id: str, id: str, name: str}
@returns(200) {success: bool}
@errors {404}

@endpoint POST /accounts/{account_id}/ai-search/namespaces/{name}/instances/{id}/search
@required {id: str, account_id: str, name: str}
@optional {ai_search_options: map{cache: map, custom_metadata: map, query_rewrite: map, reranking: map, retrieval: map}, messages: [map{content!: any, role!: str}], query: str}
@returns(200) {result: map{chunks: [map], query_kind: str, search_query: str}, success: bool}
@errors {400, 404}

@endpoint GET /accounts/{account_id}/ai-search/namespaces/{name}/instances/{id}/stats
@required {id: str, account_id: str, name: str}
@returns(200) {result: map{completed: int, degraded: bool, engine: map{r2: map{metadataSizeBytes: int, objectCount: int, payloadSizeBytes: int}, vectorize: map{dimensions: int, vectorsCount: int}}, error: int, file_embed_errors: map, index_source_errors: map, last_activity: str(date-time), outdated: int, queued: int, running: int, skipped: int}, success: bool}
@errors {404}

@endpoint POST /accounts/{account_id}/ai-search/namespaces/{name}/search
@required {account_id: str, name: str, ai_search_options: map{cache: map, custom_metadata: map, instance_ids!: [str], query_rewrite: map, reranking: map, retrieval: map}}
@optional {messages: [map{content!: any, role!: str}], query: str}
@returns(200) {result: map{chunks: [map], errors: [map], query_kind: str, search_query: str}, success: bool}
@errors {400, 404}

@endpoint GET /accounts/{account_id}/ai-search/tokens
@required {account_id: str}
@optional {page: int=1, per_page: int=20, search: str}
@returns(200) {result: [map], result_info: map{count: num, page: num, per_page: num, total_count: num}, success: bool}
@errors {400}

@endpoint POST /accounts/{account_id}/ai-search/tokens
@required {account_id: str, cf_api_id: str, cf_api_key: str, name: str}
@optional {legacy: bool=true}
@returns(201) {result: map{cf_api_id: str, created_at: str(date-time), created_by: str?, enabled: bool, id: str(uuid), legacy: bool, modified_at: str(date-time), modified_by: str?, name: str}, success: bool}
@errors {400}

@endpoint DELETE /accounts/{account_id}/ai-search/tokens/{id}
@required {account_id: str, id: str(uuid)}
@returns(200) {result: map, success: bool}
@errors {400, 404, 409}

@endpoint GET /accounts/{account_id}/ai-search/tokens/{id}
@required {account_id: str, id: str(uuid)}
@returns(200) {result: map{cf_api_id: str, created_at: str(date-time), created_by: str?, enabled: bool, id: str(uuid), legacy: bool, modified_at: str(date-time), modified_by: str?, name: str}, success: bool}
@errors {400, 404}

@endpoint PUT /accounts/{account_id}/ai-search/tokens/{id}
@required {account_id: str, id: str(uuid), cf_api_id: str, cf_api_key: str, name: str}
@optional {legacy: bool=true}
@returns(200) {result: map{cf_api_id: str, created_at: str(date-time), created_by: str?, enabled: bool, id: str(uuid), legacy: bool, modified_at: str(date-time), modified_by: str?, name: str}, success: bool}
@errors {400, 404}

@endpoint GET /accounts/{account_id}/ai/authors/search
@required {account_id: str}
@returns(200) {errors: [map], messages: [str], result: [map], success: bool}
@errors {400}

@endpoint GET /accounts/{account_id}/ai/finetunes
@required {account_id: str}
@returns(200) {result: map{created_at: str(date-time), description: str, id: str(uuid), model: str, modified_at: str(date-time), name: str}, success: bool}
@errors {400}

@endpoint POST /accounts/{account_id}/ai/finetunes
@required {account_id: str, model: str, name: str}
@optional {description: str, public: bool=false}
@returns(200) {result: map{created_at: str(date-time), description: str, id: str(uuid), model: str, modified_at: str(date-time), name: str, public: bool}, success: bool}
@errors {400}

@endpoint GET /accounts/{account_id}/ai/finetunes/public
@required {account_id: str}
@optional {limit: num=20, offset: num=0, orderBy: str}
@returns(200) {result: [map], success: bool}
@errors {400}

@endpoint DELETE /accounts/{account_id}/ai/finetunes/{finetune_id}
@required {account_id: str, finetune_id: str}
@returns(200) {result: map{id: str(uuid), name: str}, success: bool}
@errors {404}

@endpoint POST /accounts/{account_id}/ai/finetunes/{finetune_id}/finetune-assets
@required {account_id: str, finetune_id: str}
@returns(200) {success: bool}
@errors {400}

@endpoint GET /accounts/{account_id}/ai/finetunes/{finetune_id}/finetune-assets/{file_name}
@required {account_id: str, finetune_id: str, file_name: str}
@returns(200) {result: map{file_name: str, file_url: str}, success: bool}
@errors {404}

@endpoint GET /accounts/{account_id}/ai/models/schema
@required {account_id: str, model: str}
@returns(200) {result: map{input: map{additionalProperties: bool, description: str, type: str}, output: map{additionalProperties: bool, description: str, type: str}}, success: bool}
@errors {400}

@endpoint GET /accounts/{account_id}/ai/models/search
@required {account_id: str}
@optional {per_page: int=100, page: int=1, task: str=, author: str=, source: num, hide_experimental: bool=false, search: str=, include_deprecated: bool=false, format: str}
@returns(200)
@errors {404}

@endpoint POST /accounts/{account_id}/ai/run
@required {account_id: str, input: map, model: str}
@optional {options: map{extraHeaders: map, gateway: map}}
@returns(200) {errors: [map], messages: [map], result: map, success: bool}
@errors {400}

@endpoint POST /accounts/{account_id}/ai/run/{model_name}
@required {account_id: str, model_name: str}
@returns(200) {result: map}
@errors {400}

@endpoint GET /accounts/{account_id}/ai/tasks/search
@required {account_id: str}
@returns(200) {errors: [map], messages: [str], result: [map], success: bool}
@errors {404}

@endpoint POST /accounts/{account_id}/ai/tomarkdown
@required {account_id: str}
@returns(200) {result: [map], success: bool}
@errors {400}

@endpoint GET /accounts/{account_id}/ai/tomarkdown/supported
@required {account_id: str}
@returns(200) {result: [map], success: bool}
@errors {400}

@endpoint GET /accounts/{account_id}/alerting/v3/available_alerts
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/alerting/v3/destinations/eligible
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/alerting/v3/destinations/pagerduty
@required {account_id: str}
@returns(200) {errors: [map], messages: [map], success: bool}
@errors {4XX}

@endpoint GET /accounts/{account_id}/alerting/v3/destinations/pagerduty
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/alerting/v3/destinations/pagerduty/connect
@required {account_id: str}
@returns(201)
@errors {4XX}

@endpoint GET /accounts/{account_id}/alerting/v3/destinations/pagerduty/connect/{token_id}
@required {account_id: str, token_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/alerting/v3/destinations/webhooks
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/alerting/v3/destinations/webhooks
@required {account_id: str, name: str, url: str}
@optional {secret: str}
@returns(201)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/alerting/v3/destinations/webhooks/{webhook_id}
@required {webhook_id: str, account_id: str}
@returns(200) {errors: [map], messages: [map], success: bool}
@errors {4XX}

@endpoint GET /accounts/{account_id}/alerting/v3/destinations/webhooks/{webhook_id}
@required {account_id: str, webhook_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/alerting/v3/destinations/webhooks/{webhook_id}
@required {webhook_id: str, account_id: str, name: str, url: str}
@optional {secret: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/alerting/v3/history
@required {account_id: str}
@optional {per_page: num, before: str(date-time), page: num=1, since: str(date-time)}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/alerting/v3/policies
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/alerting/v3/policies
@required {account_id: str, alert_type: str(abuse_report_alert/access_custom_certificate_expiration_type/advanced_ddos_attack_l4_alert/advanced_ddos_attack_l7_alert/advanced_http_alert_error/bgp_hijack_notification/billing_usage_alert/block_notification_block_removed/block_notification_new_block/block_notification_review_rejected/bot_traffic_basic_alert/brand_protection_alert/brand_protection_digest/clickhouse_alert_fw_anomaly/clickhouse_alert_fw_ent_anomaly/cloudforce_one_request_notification/cni_maintenance_notification/custom_analytics/custom_bot_detection_alert/custom_ssl_certificate_event_type/dedicated_ssl_certificate_event_type/device_connectivity_anomaly_alert/dos_attack_l4/dos_attack_l7/expiring_service_token_alert/failing_logpush_job_disabled_alert/fbm_auto_advertisement/fbm_dosd_attack/fbm_volumetric_attack/health_check_status_notification/hostname_aop_custom_certificate_expiration_type/http_alert_edge_error/http_alert_origin_error/image_notification/image_resizing_notification/incident_alert/load_balancing_health_alert/load_balancing_pool_enablement_alert/logo_match_alert/magic_tunnel_health_check_event/magic_wan_tunnel_health/maintenance_event_notification/mtls_certificate_store_certificate_expiration_type/pages_event_alert/radar_notification/real_origin_monitoring/scriptmonitor_alert_new_code_change_detections/scriptmonitor_alert_new_hosts/scriptmonitor_alert_new_malicious_hosts/scriptmonitor_alert_new_malicious_scripts/scriptmonitor_alert_new_malicious_url/scriptmonitor_alert_new_max_length_resource_url/scriptmonitor_alert_new_resources/secondary_dns_all_primaries_failing/secondary_dns_primaries_failing/secondary_dns_warning/secondary_dns_zone_successfully_updated/secondary_dns_zone_validation_warning/security_insights_alert/sentinel_alert/stream_live_notifications/synthetic_test_latency_alert/synthetic_test_low_availability_alert/traffic_anomalies_alert/tunnel_health_event/tunnel_update_event/universal_ssl_event_type/web_analytics_metrics_update/zone_aop_custom_certificate_expiration_type), enabled: bool=true, mechanisms: map{email: [map], pagerduty: [map], webhooks: [map]}, name: str}
@optional {alert_interval: str, description: str, filters: map{actions: [str], affected_asns: [str], affected_components: [str], affected_locations: [str], airport_code: [str], alert_trigger_preferences: [str], alert_trigger_preferences_value: [str], enabled: [str], environment: [str], event: [str], event_source: [str], event_type: [str], group_by: [str], health_check_id: [str], incident_impact: [str], input_id: [str], insight_class: [str], limit: [str], logo_tag: [str], megabits_per_second: [str], new_health: [str], new_status: [str], packets_per_second: [str], pool_id: [str], pop_names: [str], product: [str], project_id: [str], protocol: [str], query_tag: [str], requests_per_second: [str], selectors: [str], services: [str], slo: [str], status: [str], target_hostname: [str], target_ip: [str], target_zone_name: [str], traffic_exclusions: [str], tunnel_id: [str], tunnel_name: [str], type: [str], where: [str], zones: [str]}}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/alerting/v3/policies/{policy_id}
@required {account_id: str, policy_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/alerting/v3/policies/{policy_id}
@required {account_id: str, policy_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/alerting/v3/policies/{policy_id}
@required {account_id: str, policy_id: str}
@optional {alert_interval: str, alert_type: str(abuse_report_alert/access_custom_certificate_expiration_type/advanced_ddos_attack_l4_alert/advanced_ddos_attack_l7_alert/advanced_http_alert_error/bgp_hijack_notification/billing_usage_alert/block_notification_block_removed/block_notification_new_block/block_notification_review_rejected/bot_traffic_basic_alert/brand_protection_alert/brand_protection_digest/clickhouse_alert_fw_anomaly/clickhouse_alert_fw_ent_anomaly/cloudforce_one_request_notification/cni_maintenance_notification/custom_analytics/custom_bot_detection_alert/custom_ssl_certificate_event_type/dedicated_ssl_certificate_event_type/device_connectivity_anomaly_alert/dos_attack_l4/dos_attack_l7/expiring_service_token_alert/failing_logpush_job_disabled_alert/fbm_auto_advertisement/fbm_dosd_attack/fbm_volumetric_attack/health_check_status_notification/hostname_aop_custom_certificate_expiration_type/http_alert_edge_error/http_alert_origin_error/image_notification/image_resizing_notification/incident_alert/load_balancing_health_alert/load_balancing_pool_enablement_alert/logo_match_alert/magic_tunnel_health_check_event/magic_wan_tunnel_health/maintenance_event_notification/mtls_certificate_store_certificate_expiration_type/pages_event_alert/radar_notification/real_origin_monitoring/scriptmonitor_alert_new_code_change_detections/scriptmonitor_alert_new_hosts/scriptmonitor_alert_new_malicious_hosts/scriptmonitor_alert_new_malicious_scripts/scriptmonitor_alert_new_malicious_url/scriptmonitor_alert_new_max_length_resource_url/scriptmonitor_alert_new_resources/secondary_dns_all_primaries_failing/secondary_dns_primaries_failing/secondary_dns_warning/secondary_dns_zone_successfully_updated/secondary_dns_zone_validation_warning/security_insights_alert/sentinel_alert/stream_live_notifications/synthetic_test_latency_alert/synthetic_test_low_availability_alert/traffic_anomalies_alert/tunnel_health_event/tunnel_update_event/universal_ssl_event_type/web_analytics_metrics_update/zone_aop_custom_certificate_expiration_type), description: str, enabled: bool=true, filters: map{actions: [str], affected_asns: [str], affected_components: [str], affected_locations: [str], airport_code: [str], alert_trigger_preferences: [str], alert_trigger_preferences_value: [str], enabled: [str], environment: [str], event: [str], event_source: [str], event_type: [str], group_by: [str], health_check_id: [str], incident_impact: [str], input_id: [str], insight_class: [str], limit: [str], logo_tag: [str], megabits_per_second: [str], new_health: [str], new_status: [str], packets_per_second: [str], pool_id: [str], pop_names: [str], product: [str], project_id: [str], protocol: [str], query_tag: [str], requests_per_second: [str], selectors: [str], services: [str], slo: [str], status: [str], target_hostname: [str], target_ip: [str], target_zone_name: [str], traffic_exclusions: [str], tunnel_id: [str], tunnel_name: [str], type: [str], where: [str], zones: [str]}, mechanisms: map{email: [map], pagerduty: [map], webhooks: [map]}, name: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/alerting/v3/policies/{policy_id}/email/unsubscribe
@required {account_id: str, policy_id: str, email: str(email), token: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/alerting/v3/policies/{policy_id}/email/unsubscribe
@required {account_id: str, policy_id: str, email: str(email), token: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/alerting/v3/policies/{policy_id}/test
@required {account_id: str, policy_id: str}
@optional {severity: int(0/1/2/3/4), source: str, state_correlation_id: str, state_event: int(0/1/2)}
@returns(200) {errors: [map], messages: [map], success: bool}
@errors {4XX}

@endpoint GET /accounts/{account_id}/alerting/v3/silences
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/alerting/v3/silences
@required {account_id: str}
@returns(200) {errors: [map], messages: [map], success: bool}
@errors {4XX}

@endpoint PUT /accounts/{account_id}/alerting/v3/silences
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/alerting/v3/silences/{silence_id}
@required {account_id: str, silence_id: str}
@returns(200) {errors: [map], messages: [map], success: bool}
@errors {4XX}

@endpoint GET /accounts/{account_id}/alerting/v3/silences/{silence_id}
@required {account_id: str, silence_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/analytics/query/data-security/content-findings/top-n
@required {account_id: str, filters: [map{name!: str, op!: str, values!: [any]}], from: str(date-time), n: int(int64), to: str(date-time)}
@returns(200) {errors: [map], messages: [map], result: [map], success: bool}
@errors {400, 401, 403}

@endpoint POST /accounts/{account_id}/analytics/query/data-security/findings/summary
@required {account_id: str, filters: [map{name!: str, op!: str, values!: [any]}], from: str(date-time), to: str(date-time)}
@returns(200) {errors: [map], messages: [map], result: map{currentTotal: [map], previousTotal: [map]}, success: bool}
@errors {400, 401, 403}

@endpoint POST /accounts/{account_id}/analytics/query/data-security/findings/timeseries
@required {account_id: str, filters: [map{name!: str, op!: str, values!: [any]}], from: str(date-time), to: str(date-time)}
@returns(200) {errors: [map], messages: [map], result: map{resolution: str?, slots: [map]}, success: bool}
@errors {400, 401, 403}

@endpoint POST /accounts/{account_id}/analytics/query/{dataset}/summary
@required {account_id: str, dataset: str}
@returns(200) {errors: [map], messages: [map], result: map{currentTotal: [map], previousTotal: [map]}, success: bool}
@errors {400, 401, 403}

@endpoint POST /accounts/{account_id}/analytics/query/{dataset}/timeseries
@required {account_id: str, dataset: str}
@returns(200) {errors: [map], messages: [map], result: map{resolution: str, slots: [map]}, success: bool}
@errors {400, 401, 403}

@endpoint POST /accounts/{account_id}/analytics/query/{dataset}/top-n
@required {account_id: str, dataset: str}
@returns(200) {errors: [map], messages: [map], result: [map], success: bool}
@errors {400, 401, 403}

@endpoint GET /accounts/{account_id}/analytics_engine/sql
@required {query: str}
@returns(200) {data: [map], meta: [map], rows: int}
@errors {400, 403, 422, 429, 500, 503, 504}

@endpoint POST /accounts/{account_id}/analytics_engine/sql
@returns(200) {data: [map], meta: [map], rows: int}
@errors {400, 403, 422, 429, 500, 503, 504}

@endpoint GET /accounts/{account_id}/artifacts/namespaces
@optional {limit: int=100, cursor: str}
@returns(200) {errors: [map], messages: [map], result: [map], result_info: any, success: bool}
@errors {400, 401, 403, 500}

@endpoint POST /accounts/{account_id}/artifacts/namespaces
@required {namespace: str}
@optional {jurisdiction: str(unrestricted/us/eu/fedramp)=unrestricted}
@returns(201) {errors: [map], messages: [map], result: map{created_at: str(date-time), jurisdiction: str, namespace: str, repo_count: int, updated_at: str(date-time)}, result_info: any, success: bool}
@errors {400, 401, 403, 409, 500}

@endpoint DELETE /accounts/{account_id}/artifacts/namespaces/{namespace}
@required {namespace: str}
@returns(204)
@errors {400, 401, 403, 404, 409, 500}

@endpoint GET /accounts/{account_id}/artifacts/namespaces/{namespace}
@required {namespace: str}
@returns(200) {errors: [map], messages: [map], result: map{created_at: str(date-time), jurisdiction: str, namespace: str, repo_count: int, updated_at: str(date-time)}, result_info: any, success: bool}
@errors {400, 401, 403, 404, 500}

@endpoint GET /accounts/{account_id}/artifacts/namespaces/{namespace}/repos
@required {namespace: str}
@optional {limit: int=50, cursor: str, search: str, sort: str(created_at/updated_at/last_push_at/name)=created_at, direction: str(asc/desc)=desc}
@returns(200) {errors: [map], messages: [map], result: [map], result_info: any, success: bool}
@errors {400, 401, 403, 500}

@endpoint POST /accounts/{account_id}/artifacts/namespaces/{namespace}/repos
@required {namespace: str, name: str}
@optional {default_branch: str, description: str, read_only: bool}
@returns(201) {errors: [map], messages: [map], result: map{default_branch: str, description: str?, id: str, name: str, remote: str, token: str}, result_info: any, success: bool}
@errors {400, 401, 403, 409, 500}

@endpoint DELETE /accounts/{account_id}/artifacts/namespaces/{namespace}/repos/{name}
@required {namespace: str, name: str}
@returns(202) {errors: [map], messages: [map], result: map{id: str}, result_info: any, success: bool}
@errors {400, 401, 403, 404, 500}

@endpoint GET /accounts/{account_id}/artifacts/namespaces/{namespace}/repos/{name}
@required {namespace: str, name: str}
@returns(200) {errors: [map], messages: [map], result: map{created_at: str(date-time), default_branch: str, description: str?, id: str, last_push_at: str(date-time)?, name: str, read_only: bool, remote: str, source: str?, updated_at: str(date-time)}, result_info: any, success: bool}
@errors {400, 401, 403, 404, 409, 500}

@endpoint GET /accounts/{account_id}/artifacts/namespaces/{namespace}/repos/{name}/blob/{hash}
@required {namespace: str, name: str, hash: str}
@returns(200)
@errors {400, 401, 403, 404, 413, 500}

@endpoint GET /accounts/{account_id}/artifacts/namespaces/{namespace}/repos/{name}/commit/{hash}
@required {namespace: str, name: str, hash: str}
@returns(200) {errors: [map], messages: [map], result: map{author: map{email: str, name: str}, authoredAt: int, committedAt: int, committer: map{email: str, name: str}, hash: str, message: str, parents: [str], treeHash: str}, result_info: any, success: bool}
@errors {400, 401, 403, 404, 500}

@endpoint GET /accounts/{account_id}/artifacts/namespaces/{namespace}/repos/{name}/file
@required {namespace: str, name: str, ref: str, path: str}
@returns(200)
@errors {400, 401, 403, 404, 413, 500}

@endpoint POST /accounts/{account_id}/artifacts/namespaces/{namespace}/repos/{name}/fork
@required {namespace: str, name: str, name: str}
@optional {default_branch_only: bool, description: str, read_only: bool}
@returns(201) {errors: [map], messages: [map], result: map{default_branch: str, description: str?, id: str, name: str, objects: int, remote: str, token: str}, result_info: any, success: bool}
@errors {400, 401, 403, 404, 409, 500, 503}

@endpoint POST /accounts/{account_id}/artifacts/namespaces/{namespace}/repos/{name}/import
@required {namespace: str, name: str, url: str(uri)}
@optional {branch: str, depth: int, read_only: bool}
@returns(201) {errors: [map], messages: [map], result: map{default_branch: str, description: str?, id: str, name: str, remote: str, token: str}, result_info: any, success: bool}
@errors {400, 401, 403, 404, 409, 413, 422, 500, 502, 503, 504}

@endpoint GET /accounts/{account_id}/artifacts/namespaces/{namespace}/repos/{name}/log
@required {namespace: str, name: str}
@optional {ref: str, limit: int, offset: int}
@returns(200) {errors: [map], messages: [map], result: [map], result_info: any, success: bool}
@errors {400, 401, 403, 404, 500}

@endpoint GET /accounts/{account_id}/artifacts/namespaces/{namespace}/repos/{name}/raw/{ref}/{path}
@required {namespace: str, name: str, ref: str, path: str}
@returns(200)
@errors {400, 401, 403, 404, 413, 500}

@endpoint GET /accounts/{account_id}/artifacts/namespaces/{namespace}/repos/{name}/tokens
@required {namespace: str, name: str}
@optional {state: str(active/expired/revoked/all)=active, page: int=1, per_page: int=30}
@returns(200) {errors: [map], messages: [map], result: [map], result_info: any, success: bool}
@errors {400, 401, 403, 404, 409, 500}

@endpoint GET /accounts/{account_id}/artifacts/namespaces/{namespace}/repos/{name}/tree/{hash}
@required {namespace: str, name: str, hash: str}
@returns(200) {errors: [map], messages: [map], result: [map], result_info: any, success: bool}
@errors {400, 401, 403, 404, 500}

@endpoint POST /accounts/{account_id}/artifacts/namespaces/{namespace}/tokens
@required {namespace: str, repo: str}
@optional {scope: str(read/write), ttl: int}
@returns(201) {errors: [map], messages: [map], result: map{expires_at: str(date-time), id: str, plaintext: str, scope: str}, result_info: any, success: bool}
@errors {400, 401, 403, 404, 409, 500}

@endpoint DELETE /accounts/{account_id}/artifacts/namespaces/{namespace}/tokens/{id}
@required {namespace: str, id: str}
@returns(200) {errors: [map], messages: [map], result: map{id: str}, result_info: any, success: bool}
@errors {401, 403, 404, 500}

@endpoint GET /accounts/{account_id}/audit_logs
@required {account_id: str}
@optional {id: str, export: bool, action.type: str, actor.ip: str, actor.email: str(email), since: any, before: any, zone.name: str, direction: str(desc/asc)=desc, per_page: num=100, page: num=1, hide_user_logs: bool=false}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/autorag/rags/{id}/ai-search
@required {id: str, account_id: str, query: str}
@optional {filters: any, max_num_results: int=10, model: any, ranking_options: map{ranker: str, score_threshold: num}=[object Object], reranking: map{enabled: bool, model: any}, rewrite_query: bool=false, stream: bool=false, system_prompt: str}
@returns(200) {result: map{data: [map], has_more: bool, next_page: str?, object: str, response: str, search_query: str}, success: bool}
@errors {404}

@endpoint GET /accounts/{account_id}/autorag/rags/{id}/files
@required {id: str, account_id: str}
@optional {page: int=1, per_page: int=20, search: str, status: str(completed/queued/running/error)}
@returns(200) {result: [map], result_info: map{count: int, page: int, per_page: int, total_count: int}, success: bool}
@errors {404, 503}

@endpoint GET /accounts/{account_id}/autorag/rags/{id}/jobs
@required {id: str, account_id: str}
@optional {page: int=1, per_page: int=20}
@returns(200) {result: [map], result_info: map{count: int, page: int, per_page: int, total_count: int}, success: bool}
@errors {404, 503}

@endpoint GET /accounts/{account_id}/autorag/rags/{id}/jobs/{job_id}
@required {id: str, job_id: str, account_id: str}
@returns(200) {result: map{end_reason: str, ended_at: str, id: str, last_seen_at: str, source: str, started_at: str}, success: bool}
@errors {404, 503}

@endpoint GET /accounts/{account_id}/autorag/rags/{id}/jobs/{job_id}/logs
@required {id: str, job_id: str, account_id: str}
@optional {page: int=1, per_page: int=20}
@returns(200) {result: [map], result_info: map{count: int, page: int, per_page: int, total_count: int}, success: bool}
@errors {404, 503}

@endpoint POST /accounts/{account_id}/autorag/rags/{id}/search
@required {id: str, account_id: str, query: str}
@optional {filters: any, max_num_results: int=10, ranking_options: map{ranker: str, score_threshold: num}=[object Object], reranking: map{enabled: bool, model: any}, rewrite_query: bool=false}
@returns(200) {result: map{data: [map], has_more: bool, next_page: str?, object: str, search_query: str}, success: bool}
@errors {404}

@endpoint PATCH /accounts/{account_id}/autorag/rags/{id}/sync
@required {id: str, account_id: str}
@returns(200) {result: map{job_id: str}, success: bool}
@errors {400, 404, 429, 503}

@endpoint GET /accounts/{account_id}/billable-usage
@required {account_id: str}
@optional {from: str(date), to: str(date)}
@returns(200) {errors: [map]?, messages: [map]?, result: [map], success: bool}
@errors {4XX}

@endpoint GET /accounts/{account_id}/billable-usage/info
@required {account_id: str}
@returns(200) {errors: [map]?, messages: [map]?, result: map{covered: bool, subscriptions: [map]}, success: bool}
@errors {4XX}

@endpoint GET /accounts/{account_id}/billable/usage
@required {account_id: str}
@optional {from: str(date), to: str(date)}
@returns(200) {errors: [map]?, messages: [map]?, result: [map], success: bool}
@errors {4XX}

@endpoint POST /accounts/{account_id}/billable/usage
@required {account_id: str}
@optional {FilterBy: map{MetricIds: [str], ProductFamilyIds: [str(uuid)], Tags: [map]}, GroupBy: [map{Key!: str, Type!: str}], TimePeriod: map{From: str(date-time), To: str(date-time)}}
@returns(200) {errors: [map]?, messages: [map]?, result: [map], success: bool}
@errors {4XX}

@endpoint GET /accounts/{account_id}/billable/usage/billable-metrics
@required {account_id: str}
@optional {from: str(date), to: str(date)}
@returns(200) {errors: [map]?, messages: [map]?, result: [map], success: bool}
@errors {4XX}

@endpoint GET /accounts/{account_id}/billing/bad-debt
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/billing/credits
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/billing/history
@required {account_id: str}
@optional {page: int=1, per_page: int=20, status: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/billing/profile
@required {account_id: str}
@returns(204)
@errors {4XX}

@endpoint GET /accounts/{account_id}/billing/profile
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/billing/profile
@required {account_id: str}
@optional {billing_email: str, preferred_locale: str, secondary_billing_email: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/billing/profile
@required {account_id: str}
@optional {address: str, address2: str, billing_email: str, buying_rate_plan: str, captcha_challenge_jwt: str, cf_turnstile_response: str, city: str, company: str, country: str, first_name: str, h_captcha_response: str, last_name: str, preferred_locale: str, secondary_billing_email: str, state: str, tax_id_type: str, telephone: str, vat: str, zipcode: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/billing/profile
@required {account_id: str}
@optional {address: str, address2: str, billing_email: str, buying_rate_plan: str, captcha_challenge_jwt: str, cf_turnstile_response: str, city: str, company: str, country: str, first_name: str, h_captcha_response: str, last_name: str, preferred_locale: str, secondary_billing_email: str, state: str, tax_id_type: str, telephone: str, vat: str, zipcode: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/billing/profile/payment-method
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/billing/unpaid-invoice
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/billing/usage
@required {account_id: str}
@optional {metrics: str, since: str(date-time), until: str(date-time), time_delta: str(hour/day/week/month/quarter/year)=hour, limit: int=100, filters: str}
@returns(200) {errors: [map], messages: [map], result: [map], success: bool}
@errors {400, 401, 403}

@endpoint GET /accounts/{account_id}/botnet_feed/asn/{asn_id}/day_report
@required {account_id: str, asn_id: int}
@optional {date: str(date-time)}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/botnet_feed/asn/{asn_id}/full_report
@required {account_id: str, asn_id: int}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/botnet_feed/configs/asn
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/botnet_feed/configs/asn/{asn_id}
@required {account_id: str, asn_id: int}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/brand-protection/alerts

@endpoint PATCH /accounts/{account_id}/brand-protection/alerts

@endpoint PATCH /accounts/{account_id}/brand-protection/alerts/clear

@endpoint PATCH /accounts/{account_id}/brand-protection/alerts/refute

@endpoint PATCH /accounts/{account_id}/brand-protection/alerts/verify

@endpoint DELETE /accounts/{account_id}/brand-protection/brands

@endpoint GET /accounts/{account_id}/brand-protection/brands

@endpoint POST /accounts/{account_id}/brand-protection/brands

@endpoint DELETE /accounts/{account_id}/brand-protection/brands/patterns

@endpoint GET /accounts/{account_id}/brand-protection/brands/patterns

@endpoint POST /accounts/{account_id}/brand-protection/brands/patterns

@endpoint PATCH /accounts/{account_id}/brand-protection/clear

@endpoint GET /accounts/{account_id}/brand-protection/domain-info

@endpoint GET /accounts/{account_id}/brand-protection/logo-matches
@optional {logo_id: [str], offset: str, limit: str}
@returns(200) {matches: [map], total: int}
@errors {422}

@endpoint GET /accounts/{account_id}/brand-protection/logo-matches/download
@optional {logo_id: [str], offset: str, limit: str}
@returns(200) {matches: [map], total: int}
@errors {422}

@endpoint GET /accounts/{account_id}/brand-protection/logos

@endpoint POST /accounts/{account_id}/brand-protection/logos
@optional {tag: str, match_type: str, threshold: num}
@returns(201) {id: int, tag: str, upload_path: str}
@errors {422}

@endpoint DELETE /accounts/{account_id}/brand-protection/logos/{logo_id}
@returns(204)

@endpoint GET /accounts/{account_id}/brand-protection/logos/{logo_id}

@endpoint GET /accounts/{account_id}/brand-protection/matches
@optional {id: str, offset: int, limit: int, include_domain_id: bool, include_dismissed: bool}
@returns(200) {matches: [map], total: int}
@errors {422}

@endpoint GET /accounts/{account_id}/brand-protection/matches/download
@optional {id: str, offset: int, limit: int, include_domain_id: bool, include_dismissed: bool}
@returns(200) {matches: [map], total: int}
@errors {422}

@endpoint DELETE /accounts/{account_id}/brand-protection/queries
@optional {id: str, tag: str, scan: bool}
@returns(204)
@errors {422}

@endpoint GET /accounts/{account_id}/brand-protection/queries

@endpoint PATCH /accounts/{account_id}/brand-protection/queries
@optional {id: int, scan: bool, string_matches: [map{max_edit_distance: num, pattern!: str}], tag: str}

@endpoint POST /accounts/{account_id}/brand-protection/queries
@optional {id: str, tag: str, scan: bool, max_time: str(date-time), min_time: str(date-time), scan: bool, string_matches: any, tag: str}
@returns(204)
@errors {422}

@endpoint POST /accounts/{account_id}/brand-protection/queries/bulk
@optional {queries: [map]}
@returns(204)
@errors {422}

@endpoint POST /accounts/{account_id}/brand-protection/queries/{query_id}/matches/{domain_id}/dismiss

@endpoint POST /accounts/{account_id}/brand-protection/queries/{query_id}/matches/{domain_id}/undismiss

@endpoint GET /accounts/{account_id}/brand-protection/recent-submissions

@endpoint PATCH /accounts/{account_id}/brand-protection/refute

@endpoint POST /accounts/{account_id}/brand-protection/scan-logo

@endpoint POST /accounts/{account_id}/brand-protection/scan-page

@endpoint POST /accounts/{account_id}/brand-protection/search

@endpoint GET /accounts/{account_id}/brand-protection/submission-info

@endpoint POST /accounts/{account_id}/brand-protection/submit
@returns(201) {skipped_urls: [map], submitted_urls: [map]}

@endpoint GET /accounts/{account_id}/brand-protection/total-queries

@endpoint GET /accounts/{account_id}/brand-protection/tracked-domains

@endpoint GET /accounts/{account_id}/brand-protection/url-info
@returns(200) {result: [map]}

@endpoint PATCH /accounts/{account_id}/brand-protection/verify

@endpoint DELETE /accounts/{account_id}/browser-extension/config
@returns(200) {errors: [map], messages: [map], result: map?, success: bool}
@errors {400, 401, 403, 404, 500, 503}

@endpoint GET /accounts/{account_id}/browser-extension/config
@returns(200) {errors: [map], messages: [map], result: any, success: bool}
@errors {401, 403, 404, 500, 503}

@endpoint POST /accounts/{account_id}/browser-extension/config
@required {config: map{min_extension_version: str, team_name!: str}}
@returns(200) {errors: [map], messages: [map], result: any, success: bool}
@errors {400, 401, 403, 409, 500, 503}

@endpoint PUT /accounts/{account_id}/browser-extension/config
@required {config: map{min_extension_version: str, team_name!: str}}
@returns(200) {errors: [map], messages: [map], result: any, success: bool}
@errors {400, 401, 403, 404, 500, 503}

@endpoint GET /accounts/{account_id}/browser-extension/config/inventories
@optional {cursor: str, per_page: int=50}
@returns(200) {errors: [map], messages: [map], result: [map], result_info: map{cursor: str?, per_page: int}, success: bool}
@errors {401, 403, 500, 503}

@endpoint GET /accounts/{account_id}/browser-extension/config/inventories/{registration_id}
@returns(200) {errors: [map], messages: [map], result: map{account_id: str, created_at: str(date-time), installed_extensions: [map], observed_at: str(date-time), physical_device_id: str?, registration_id: str, updated_at: str(date-time)}, success: bool}
@errors {401, 403, 404, 500, 503}

@endpoint POST /accounts/{account_id}/browser-extension/config/logs/extension-events/search
@required {from: str(date-time), to: str(date-time)}
@optional {fields: [str], filters: [map{field!: str, op!: str, value!: any}], includeTotal: bool=false, limit: int=50, page: int=1}
@returns(200) {errors: [map], messages: [map], result: [map], result_info: map{count: int, page: int, per_page: int, total_count: int}, success: bool}
@errors {400, 401, 403, 413, 500, 502, 503}

@endpoint POST /accounts/{account_id}/browser-rendering/accessibilityTree
@required {account_id: str}
@optional {cacheTTL: num=5, actionTimeout: num, addScriptTag: [map{content: str, id: str, type: str, url: str(uri)}], addStyleTag: [map{content: str, url: str(uri)}], allowRequestPattern: [str], allowResourceTypes: [any], authenticate: map{password!: str, username!: str}, bestAttempt: bool, cookies: [map{domain: str, expires: num, httpOnly: bool, name!: str, partitionKey: str, path: str, priority: any, sameParty: bool, sameSite: any, secure: bool, sourcePort: num, sourceScheme: any, url: str, value!: str}], emulateMediaType: str, gotoOptions: map{referer: str, referrerPolicy: str, timeout: num, waitUntil: any}=[object Object], html: str, interestingOnly: bool, rejectRequestPattern: [str], rejectResourceTypes: [any], root: str, setExtraHTTPHeaders: map, setJavaScriptEnabled: bool, url: str(uri), userAgent: str=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36, viewport: map{deviceScaleFactor: num, hasTouch: bool, height!: num, isLandscape: bool, isMobile: bool, width!: num}=[object Object], waitForSelector: map{hidden: bool, selector!: str, timeout: num, visible: bool}, waitForTimeout: num}
@returns(200) {errors: [map], meta: map{finalUrl: str, headers: map, redirectChain: [map], status: num, title: str}, result: map{accessibilityTree: any}, success: bool}
@errors {400, 422, 429, 500}

@endpoint POST /accounts/{account_id}/browser-rendering/content
@required {account_id: str}
@optional {cacheTTL: num=5, actionTimeout: num, addScriptTag: [map{content: str, id: str, type: str, url: str(uri)}], addStyleTag: [map{content: str, url: str(uri)}], allowRequestPattern: [str], allowResourceTypes: [any], authenticate: map{password!: str, username!: str}, bestAttempt: bool, cookies: [map{domain: str, expires: num, httpOnly: bool, name!: str, partitionKey: str, path: str, priority: any, sameParty: bool, sameSite: any, secure: bool, sourcePort: num, sourceScheme: any, url: str, value!: str}], emulateMediaType: str, gotoOptions: map{referer: str, referrerPolicy: str, timeout: num, waitUntil: any}=[object Object], html: str, rejectRequestPattern: [str], rejectResourceTypes: [any], setExtraHTTPHeaders: map, setJavaScriptEnabled: bool, url: str(uri), userAgent: str=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36, viewport: map{deviceScaleFactor: num, hasTouch: bool, height!: num, isLandscape: bool, isMobile: bool, width!: num}=[object Object], waitForSelector: map{hidden: bool, selector!: str, timeout: num, visible: bool}, waitForTimeout: num}
@returns(200) {errors: [map], meta: map{finalUrl: str, headers: map, redirectChain: [map], status: num, title: str}, result: str, success: bool}
@errors {400, 422, 429, 500}

@endpoint POST /accounts/{account_id}/browser-rendering/crawl
@required {account_id: str}
@optional {cacheTTL: num=5}
@returns(200) {errors: [map], result: str, success: bool}
@errors {400, 429, 500}

@endpoint DELETE /accounts/{account_id}/browser-rendering/crawl/{job_id}
@required {account_id: str, job_id: str}
@returns(200) {errors: [map], result: map{job_id: str, message: str}, success: bool}
@errors {400, 404, 500}

@endpoint GET /accounts/{account_id}/browser-rendering/crawl/{job_id}
@required {account_id: str, job_id: str}
@optional {cacheTTL: num=5, status: str(queued/errored/completed/disallowed/skipped/cancelled), cursor: num=0, limit: num=50}
@returns(200) {errors: [map], result: map{browserSecondsUsed: num, cursor: str, finished: num, id: str, records: [map], skipped: num, status: str, total: num}, success: bool}
@errors {400, 500}

@endpoint GET /accounts/{account_id}/browser-rendering/devtools/browser
@required {account_id: str}
@optional {keep_alive: num=60000, lab: bool=false, recording: bool=false, cf-brapi-guardrails: str}
@errors {101, 400, 429, 500}

@endpoint POST /accounts/{account_id}/browser-rendering/devtools/browser
@required {account_id: str}
@optional {keep_alive: num=60000, lab: bool=false, targets: bool=false, liveViewUrlExpiresInMs: num=300000, recording: bool=false, guardrails: map{allowedDomainSets: [str], allowedDomains: [str]}}
@returns(200) {sessionId: str, webSocketDebuggerUrl: str}
@errors {429}

@endpoint DELETE /accounts/{account_id}/browser-rendering/devtools/browser/{session_id}
@required {account_id: str, session_id: str(uuid)}
@returns(200) {status: str}
@errors {404}

@endpoint GET /accounts/{account_id}/browser-rendering/devtools/browser/{session_id}
@required {account_id: str, session_id: str(uuid)}
@optional {keep_alive: num=60000, lab: bool=false, recording: bool=false, cf-brapi-guardrails: str}
@errors {101, 400, 429, 500}

@endpoint GET /accounts/{account_id}/browser-rendering/devtools/browser/{session_id}/json
@required {account_id: str, session_id: str(uuid)}
@optional {liveViewUrlExpiresInMs: num=300000}
@returns(200)
@errors {400, 500}

@endpoint GET /accounts/{account_id}/browser-rendering/devtools/browser/{session_id}/json/activate/{target_id}
@required {session_id: str(uuid), account_id: str, target_id: str}
@returns(200) {message: str}
@errors {400, 404, 500}

@endpoint GET /accounts/{account_id}/browser-rendering/devtools/browser/{session_id}/json/close/{target_id}
@required {session_id: str(uuid), account_id: str, target_id: str}
@returns(200) {message: str}
@errors {400, 404, 500}

@endpoint GET /accounts/{account_id}/browser-rendering/devtools/browser/{session_id}/json/list
@required {account_id: str, session_id: str(uuid)}
@optional {liveViewUrlExpiresInMs: num=300000}
@returns(200)
@errors {400, 500}

@endpoint GET /accounts/{account_id}/browser-rendering/devtools/browser/{session_id}/json/list/{target_id}
@required {account_id: str, session_id: str(uuid), target_id: str}
@returns(200) {description: str, devtoolsFrontendUrl: str, id: str, title: str, type: str, url: str, webSocketDebuggerUrl: str}
@errors {400, 404, 500}

@endpoint PUT /accounts/{account_id}/browser-rendering/devtools/browser/{session_id}/json/new
@required {account_id: str, session_id: str(uuid)}
@optional {url: str(uri), liveViewUrlExpiresInMs: num=300000}
@returns(200) {description: str, devtoolsFrontendUrl: str, id: str, title: str, type: str, url: str, webSocketDebuggerUrl: str}
@errors {400, 500}

@endpoint GET /accounts/{account_id}/browser-rendering/devtools/browser/{session_id}/json/protocol
@required {account_id: str, session_id: str(uuid)}
@returns(200) {domains: [map], version: map{major: str, minor: str}}
@errors {400, 500}

@endpoint GET /accounts/{account_id}/browser-rendering/devtools/browser/{session_id}/json/version
@required {account_id: str, session_id: str(uuid)}
@returns(200) {Browser: str, Protocol-Version: str, User-Agent: str, V8-Version: str, WebKit-Version: str, webSocketDebuggerUrl: str}
@errors {400, 500}

@endpoint POST /accounts/{account_id}/browser-rendering/devtools/browser/{session_id}/live_view
@required {account_id: str, session_id: str(uuid)}
@optional {expiresInMs: num=300000, guardrails: map{mode!: str}, mode: str(devtools/tab/full)=devtools, targetId: str}
@returns(200) {devtoolsFrontendUrl: str(uri), id: str, options: map{guardrails: map{mode: str}, mode: str}, webSocketDebuggerUrl: str(uri)}
@errors {400, 404, 500}

@endpoint GET /accounts/{account_id}/browser-rendering/devtools/browser/{session_id}/page/{target_id}
@required {account_id: str, session_id: str(uuid), target_id: str}
@optional {cf-brapi-guardrails: str}
@errors {101, 400, 500}

@endpoint GET /accounts/{account_id}/browser-rendering/devtools/session
@required {account_id: str}
@optional {limit: num=200, offset: num=0}
@returns(200)
@errors {400, 500}

@endpoint GET /accounts/{account_id}/browser-rendering/devtools/session/{session_id}
@required {account_id: str, session_id: str(uuid)}
@returns(200) {closeReason: num, closeReasonText: str, connectionEndTime: num, connectionId: str, connectionStartTime: num, devtoolsFrontendUrl: str, endTime: num, lastUpdated: num, sessionId: str(uuid), startTime: num, webSocketDebuggerUrl: str}
@errors {404}

@endpoint POST /accounts/{account_id}/browser-rendering/json
@required {account_id: str}
@optional {cacheTTL: num=5, actionTimeout: num, addScriptTag: [map{content: str, id: str, type: str, url: str(uri)}], addStyleTag: [map{content: str, url: str(uri)}], allowRequestPattern: [str], allowResourceTypes: [any], authenticate: map{password!: str, username!: str}, bestAttempt: bool, cookies: [map{domain: str, expires: num, httpOnly: bool, name!: str, partitionKey: str, path: str, priority: any, sameParty: bool, sameSite: any, secure: bool, sourcePort: num, sourceScheme: any, url: str, value!: str}], custom_ai: [map{authorization: str, model!: str}], emulateMediaType: str, gotoOptions: map{referer: str, referrerPolicy: str, timeout: num, waitUntil: any}=[object Object], html: str, prompt: str, rejectRequestPattern: [str], rejectResourceTypes: [any], response_format: map{json_schema: map, type!: str}, setExtraHTTPHeaders: map, setJavaScriptEnabled: bool, url: str(uri), userAgent: str=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36, viewport: map{deviceScaleFactor: num, hasTouch: bool, height!: num, isLandscape: bool, isMobile: bool, width!: num}=[object Object], waitForSelector: map{hidden: bool, selector!: str, timeout: num, visible: bool}, waitForTimeout: num}
@returns(200) {errors: [map], meta: map{finalUrl: str, headers: map, redirectChain: [map], status: num, title: str}, result: map, success: bool}
@errors {400, 422, 429, 500}

@endpoint POST /accounts/{account_id}/browser-rendering/links
@required {account_id: str}
@optional {cacheTTL: num=5, actionTimeout: num, addScriptTag: [map{content: str, id: str, type: str, url: str(uri)}], addStyleTag: [map{content: str, url: str(uri)}], allowRequestPattern: [str], allowResourceTypes: [any], authenticate: map{password!: str, username!: str}, bestAttempt: bool, cookies: [map{domain: str, expires: num, httpOnly: bool, name!: str, partitionKey: str, path: str, priority: any, sameParty: bool, sameSite: any, secure: bool, sourcePort: num, sourceScheme: any, url: str, value!: str}], emulateMediaType: str, excludeExternalLinks: bool=false, gotoOptions: map{referer: str, referrerPolicy: str, timeout: num, waitUntil: any}=[object Object], html: str, rejectRequestPattern: [str], rejectResourceTypes: [any], setExtraHTTPHeaders: map, setJavaScriptEnabled: bool, url: str(uri), userAgent: str=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36, viewport: map{deviceScaleFactor: num, hasTouch: bool, height!: num, isLandscape: bool, isMobile: bool, width!: num}=[object Object], visibleLinksOnly: bool=false, waitForSelector: map{hidden: bool, selector!: str, timeout: num, visible: bool}, waitForTimeout: num}
@returns(200) {errors: [map], meta: map{finalUrl: str, headers: map, redirectChain: [map], status: num, title: str}, result: [str], success: bool}
@errors {400, 422, 429, 500}

@endpoint POST /accounts/{account_id}/browser-rendering/markdown
@required {account_id: str}
@optional {cacheTTL: num=5, actionTimeout: num, addScriptTag: [map{content: str, id: str, type: str, url: str(uri)}], addStyleTag: [map{content: str, url: str(uri)}], allowRequestPattern: [str], allowResourceTypes: [any], authenticate: map{password!: str, username!: str}, bestAttempt: bool, cookies: [map{domain: str, expires: num, httpOnly: bool, name!: str, partitionKey: str, path: str, priority: any, sameParty: bool, sameSite: any, secure: bool, sourcePort: num, sourceScheme: any, url: str, value!: str}], emulateMediaType: str, gotoOptions: map{referer: str, referrerPolicy: str, timeout: num, waitUntil: any}=[object Object], html: str, rejectRequestPattern: [str], rejectResourceTypes: [any], setExtraHTTPHeaders: map, setJavaScriptEnabled: bool, url: str(uri), userAgent: str=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36, viewport: map{deviceScaleFactor: num, hasTouch: bool, height!: num, isLandscape: bool, isMobile: bool, width!: num}=[object Object], waitForSelector: map{hidden: bool, selector!: str, timeout: num, visible: bool}, waitForTimeout: num}
@returns(200) {errors: [map], meta: map{finalUrl: str, headers: map, redirectChain: [map], status: num, title: str}, result: str, success: bool}
@errors {400, 422, 429, 500}

@endpoint POST /accounts/{account_id}/browser-rendering/pdf
@required {account_id: str}
@optional {cacheTTL: num=5, actionTimeout: num, addScriptTag: [map{content: str, id: str, type: str, url: str(uri)}], addStyleTag: [map{content: str, url: str(uri)}], allowRequestPattern: [str], allowResourceTypes: [any], authenticate: map{password!: str, username!: str}, bestAttempt: bool, cookies: [map{domain: str, expires: num, httpOnly: bool, name!: str, partitionKey: str, path: str, priority: any, sameParty: bool, sameSite: any, secure: bool, sourcePort: num, sourceScheme: any, url: str, value!: str}], emulateMediaType: str, gotoOptions: map{referer: str, referrerPolicy: str, timeout: num, waitUntil: any}=[object Object], html: str, pdfOptions: map{displayHeaderFooter: bool, footerTemplate: str, format: str, headerTemplate: str, height: any, landscape: bool, margin: map, omitBackground: bool, outline: bool, pageRanges: str, preferCSSPageSize: bool, printBackground: bool, scale: num, tagged: bool, timeout: num, width: any}=[object Object], rejectRequestPattern: [str], rejectResourceTypes: [any], setExtraHTTPHeaders: map, setJavaScriptEnabled: bool, url: str(uri), userAgent: str=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36, viewport: map{deviceScaleFactor: num, hasTouch: bool, height!: num, isLandscape: bool, isMobile: bool, width!: num}=[object Object], waitForSelector: map{hidden: bool, selector!: str, timeout: num, visible: bool}, waitForTimeout: num}
@returns(200)
@errors {400, 422, 429, 500}

@endpoint POST /accounts/{account_id}/browser-rendering/scrape
@required {account_id: str, elements: [map{selector!: str}]}
@optional {cacheTTL: num=5, actionTimeout: num, addScriptTag: [map{content: str, id: str, type: str, url: str(uri)}], addStyleTag: [map{content: str, url: str(uri)}], allowRequestPattern: [str], allowResourceTypes: [any], authenticate: map{password!: str, username!: str}, bestAttempt: bool, cookies: [map{domain: str, expires: num, httpOnly: bool, name!: str, partitionKey: str, path: str, priority: any, sameParty: bool, sameSite: any, secure: bool, sourcePort: num, sourceScheme: any, url: str, value!: str}], emulateMediaType: str, gotoOptions: map{referer: str, referrerPolicy: str, timeout: num, waitUntil: any}=[object Object], html: str, rejectRequestPattern: [str], rejectResourceTypes: [any], setExtraHTTPHeaders: map, setJavaScriptEnabled: bool, url: str(uri), userAgent: str=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36, viewport: map{deviceScaleFactor: num, hasTouch: bool, height!: num, isLandscape: bool, isMobile: bool, width!: num}=[object Object], waitForSelector: map{hidden: bool, selector!: str, timeout: num, visible: bool}, waitForTimeout: num}
@returns(200) {errors: [map], meta: map{finalUrl: str, headers: map, redirectChain: [map], status: num, title: str}, result: [map], success: bool}
@errors {400, 422, 429, 500}

@endpoint POST /accounts/{account_id}/browser-rendering/screenshot
@required {account_id: str}
@optional {cacheTTL: num=5, actionTimeout: num, addScriptTag: [map{content: str, id: str, type: str, url: str(uri)}], addStyleTag: [map{content: str, url: str(uri)}], allowRequestPattern: [str], allowResourceTypes: [any], authenticate: map{password!: str, username!: str}, bestAttempt: bool, cookies: [map{domain: str, expires: num, httpOnly: bool, name!: str, partitionKey: str, path: str, priority: any, sameParty: bool, sameSite: any, secure: bool, sourcePort: num, sourceScheme: any, url: str, value!: str}], emulateMediaType: str, gotoOptions: map{referer: str, referrerPolicy: str, timeout: num, waitUntil: any}=[object Object], html: str, rejectRequestPattern: [str], rejectResourceTypes: [any], screenshotOptions: map{captureBeyondViewport: bool, clip: map, encoding: any, fromSurface: bool, fullPage: bool, omitBackground: bool, optimizeForSpeed: bool, quality: num, type: any}=[object Object], scrollPage: bool, selector: str, setExtraHTTPHeaders: map, setJavaScriptEnabled: bool, url: str(uri), userAgent: str=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36, viewport: map{deviceScaleFactor: num, hasTouch: bool, height!: num, isLandscape: bool, isMobile: bool, width!: num}=[object Object], waitForSelector: map{hidden: bool, selector!: str, timeout: num, visible: bool}, waitForTimeout: num}
@returns(200) {errors: [map], success: bool}
@errors {400, 422, 429, 500}

@endpoint POST /accounts/{account_id}/browser-rendering/snapshot
@required {account_id: str}
@optional {cacheTTL: num=5, actionTimeout: num, addScriptTag: [map{content: str, id: str, type: str, url: str(uri)}], addStyleTag: [map{content: str, url: str(uri)}], allowRequestPattern: [str], allowResourceTypes: [any], authenticate: map{password!: str, username!: str}, bestAttempt: bool, cookies: [map{domain: str, expires: num, httpOnly: bool, name!: str, partitionKey: str, path: str, priority: any, sameParty: bool, sameSite: any, secure: bool, sourcePort: num, sourceScheme: any, url: str, value!: str}], emulateMediaType: str, formats: [str]=content,screenshot, gotoOptions: map{referer: str, referrerPolicy: str, timeout: num, waitUntil: any}=[object Object], html: str, rejectRequestPattern: [str], rejectResourceTypes: [any], screenshotOptions: map{captureBeyondViewport: bool, clip: map, fromSurface: bool, fullPage: bool, omitBackground: bool, optimizeForSpeed: bool, quality: num, type: any}=[object Object], setExtraHTTPHeaders: map, setJavaScriptEnabled: bool, url: str(uri), userAgent: str=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36, viewport: map{deviceScaleFactor: num, hasTouch: bool, height!: num, isLandscape: bool, isMobile: bool, width!: num}=[object Object], waitForSelector: map{hidden: bool, selector!: str, timeout: num, visible: bool}, waitForTimeout: num}
@returns(200) {errors: [map], meta: map{finalUrl: str, headers: map, redirectChain: [map], status: num, title: str}, result: map{accessibilityTree: map{autocomplete: str, checked: any, children: [map], description: str, disabled: bool, expanded: bool, focused: bool, haspopup: str, invalid: str, keyshortcuts: str, level: num, modal: bool, multiline: bool, multiselectable: bool, name: str, orientation: str, pressed: any, readonly: bool, required: bool, role: str, roledescription: str, selected: bool, value: any, valuemax: num, valuemin: num, valuetext: str}, content: str, markdown: str, screenshot: str}, success: bool}
@errors {400, 422, 429, 500}

@endpoint GET /accounts/{account_id}/builds/account/limits
@required {account_id: str}
@returns(200)
@errors {401}

@endpoint GET /accounts/{account_id}/builds/builds
@required {account_id: str, version_ids: str}
@returns(200)
@errors {401}

@endpoint GET /accounts/{account_id}/builds/builds/latest
@required {account_id: str, external_script_ids: str}
@returns(200)
@errors {401}

@endpoint GET /accounts/{account_id}/builds/builds/{build_uuid}
@required {account_id: str, build_uuid: str(uuid)}
@returns(200)
@errors {401, 404}

@endpoint PUT /accounts/{account_id}/builds/builds/{build_uuid}/cancel
@required {account_id: str, build_uuid: str(uuid)}
@returns(200)
@errors {401, 404}

@endpoint GET /accounts/{account_id}/builds/builds/{build_uuid}/logs
@required {account_id: str, build_uuid: str(uuid)}
@optional {cursor: str}
@returns(200)
@errors {401, 404}

@endpoint PUT /accounts/{account_id}/builds/repos/connections
@required {account_id: str, provider_account_id: str, provider_account_name: str, provider_type: str(github/gitlab/gitlab_internal/origin), repo_id: str, repo_name: str}
@returns(200)
@errors {401}

@endpoint DELETE /accounts/{account_id}/builds/repos/connections/{repo_connection_uuid}
@required {account_id: str, repo_connection_uuid: str(uuid)}
@returns(200) {errors: [map], messages: [str], result: map?, result_info: map{count: int, page: int, per_page: int, total_count: int, total_pages: int}, success: bool}
@errors {401, 404}

@endpoint GET /accounts/{account_id}/builds/repos/{provider_type}/{provider_account_id}/{repo_id}/config_autofill
@required {account_id: str, provider_type: str, provider_account_id: str, repo_id: str, branch: str}
@optional {root_directory: str}
@returns(200)
@errors {401}

@endpoint GET /accounts/{account_id}/builds/tokens
@required {account_id: str}
@optional {page: int=1, per_page: int=50}
@returns(200)
@errors {401}

@endpoint POST /accounts/{account_id}/builds/tokens
@required {account_id: str, build_token_name: str, build_token_secret: str, cloudflare_token_id: str}
@returns(200)
@errors {401}

@endpoint DELETE /accounts/{account_id}/builds/tokens/{build_token_uuid}
@required {account_id: str, build_token_uuid: str(uuid)}
@returns(200) {errors: [map], messages: [str], result: map?, result_info: map{count: int, page: int, per_page: int, total_count: int, total_pages: int}, success: bool}
@errors {401, 404}

@endpoint POST /accounts/{account_id}/builds/triggers
@required {account_id: str, branch_excludes: [str], branch_includes: [str], build_command: str, build_token_uuid: str(uuid), deploy_command: str, external_script_id: str, path_excludes: [str], path_includes: [str]=*, repo_connection_uuid: str(uuid), root_directory: str, trigger_name: str}
@optional {build_caching_enabled: bool=false}
@returns(200)
@errors {401}

@endpoint DELETE /accounts/{account_id}/builds/triggers/{trigger_uuid}
@required {account_id: str, trigger_uuid: str(uuid)}
@returns(200) {errors: [map], messages: [str], result: map?, result_info: map{count: int, page: int, per_page: int, total_count: int, total_pages: int}, success: bool}
@errors {401, 404}

@endpoint PATCH /accounts/{account_id}/builds/triggers/{trigger_uuid}
@required {account_id: str, trigger_uuid: str(uuid)}
@optional {branch_excludes: [str], branch_includes: [str], build_caching_enabled: bool=false, build_command: str, build_token_uuid: str(uuid), deploy_command: str, path_excludes: [str], path_includes: [str]=*, root_directory: str, trigger_name: str}
@returns(200)
@errors {401, 404}

@endpoint POST /accounts/{account_id}/builds/triggers/{trigger_uuid}/builds
@required {account_id: str, trigger_uuid: str(uuid)}
@optional {branch: any, commit_hash: any, seed_repo: any}
@returns(200)
@errors {401}

@endpoint GET /accounts/{account_id}/builds/triggers/{trigger_uuid}/environment_variables
@required {account_id: str, trigger_uuid: str(uuid)}
@returns(200)
@errors {401}

@endpoint PATCH /accounts/{account_id}/builds/triggers/{trigger_uuid}/environment_variables
@required {account_id: str, trigger_uuid: str(uuid)}
@returns(200)
@errors {401, 404}

@endpoint DELETE /accounts/{account_id}/builds/triggers/{trigger_uuid}/environment_variables/{environment_variable_key}
@required {account_id: str, trigger_uuid: str(uuid), environment_variable_key: str}
@returns(200) {errors: [map], messages: [str], result: map?, result_info: map{count: int, page: int, per_page: int, total_count: int, total_pages: int}, success: bool}
@errors {401, 404}

@endpoint POST /accounts/{account_id}/builds/triggers/{trigger_uuid}/purge_build_cache
@required {account_id: str, trigger_uuid: str(uuid)}
@returns(200) {errors: [map], messages: [str], result: map?, result_info: map{count: int, page: int, per_page: int, total_count: int, total_pages: int}, success: bool}
@errors {401, 404}

@endpoint POST /accounts/{account_id}/builds/workers
@required {account_id: str, git_repository: any, production_settings: map{build_caching_enabled: any, build_command!: str, build_token_uuid!: str(uuid), deploy_command!: str, environment_variables: map, path_excludes: [str], path_includes: [str], root_directory: any}, script_tag: str}
@returns(201)
@errors {400, 401, 404, 409}

@endpoint GET /accounts/{account_id}/builds/workers/{external_script_id}/builds
@required {account_id: str, external_script_id: str}
@optional {page: int=1, per_page: int=50}
@returns(200)
@errors {401}

@endpoint GET /accounts/{account_id}/builds/workers/{external_script_id}/triggers
@required {account_id: str, external_script_id: str}
@returns(200)
@errors {401}

@endpoint GET /accounts/{account_id}/builds/workers/{script_name}/deploy_hooks
@required {account_id: str, script_name: str}
@returns(200)
@errors {401}

@endpoint POST /accounts/{account_id}/builds/workers/{script_name}/deploy_hooks
@required {account_id: str, script_name: str, branch: str, deploy_hook_name: str}
@returns(200)
@errors {400, 401, 404, 409}

@endpoint DELETE /accounts/{account_id}/builds/workers/{script_name}/deploy_hooks/{deploy_hook_uuid}
@required {account_id: str, script_name: str, deploy_hook_uuid: str(uuid)}
@returns(200)
@errors {401, 404}

@endpoint GET /accounts/{account_id}/builds/workers/{script_name}/deploy_hooks/{deploy_hook_uuid}
@required {account_id: str, script_name: str, deploy_hook_uuid: str(uuid)}
@returns(200)
@errors {401, 404}

@endpoint PUT /accounts/{account_id}/builds/workers/{script_name}/deploy_hooks/{deploy_hook_uuid}
@required {account_id: str, script_name: str, deploy_hook_uuid: str(uuid), branch: str, deploy_hook_name: str}
@returns(200)
@errors {400, 401, 404, 409}

@endpoint DELETE /accounts/{account_id}/builds/workers/{script_tag}
@required {account_id: str, script_tag: str}
@returns(200)
@errors {401, 404}

@endpoint GET /accounts/{account_id}/builds/workers/{script_tag}
@required {account_id: str, script_tag: str}
@returns(200)
@errors {401, 404}

@endpoint PATCH /accounts/{account_id}/builds/workers/{script_tag}
@required {account_id: str, script_tag: str}
@optional {git_repository: map{branch: str}, production_settings: map{build_caching_enabled: bool, build_command: str, build_token_uuid: str(uuid), deploy_command: str, environment_variables: map, path_excludes: [str], path_includes: [str], root_directory: str}}
@returns(200)
@errors {400, 401, 404}

@endpoint POST /accounts/{account_id}/bulk/subscriptions
@required {account_id: str}
@optional {idemp_key: str, coupon_code: str, payment_hold_id: int(int64), subscriptions: [map{app: map, component_values: [map], currency: str, current_period_end: str(date-time), current_period_start: str(date-time), frequency: str, id: str, price: num, rate_plan: map, state: str, zone: map}], user_is_on_session: bool}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/calls/apps
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/calls/apps
@required {account_id: str}
@optional {name: str=}
@returns(201)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/calls/apps/{app_id}
@required {app_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/calls/apps/{app_id}
@required {app_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/calls/apps/{app_id}
@required {app_id: str, account_id: str}
@optional {name: str=}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/calls/turn_keys
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/calls/turn_keys
@required {account_id: str}
@optional {name: str=}
@returns(201)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/calls/turn_keys/{key_id}
@required {key_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/calls/turn_keys/{key_id}
@required {key_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/calls/turn_keys/{key_id}
@required {key_id: str, account_id: str}
@optional {name: str=}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/cfd_tunnel
@required {account_id: str}
@optional {name: str, is_deleted: bool, existed_at: str(url-encoded-date-time), uuid: str(uuid), was_active_at: str(date-time), was_inactive_at: str(date-time), include_prefix: str, exclude_prefix: str, status: str, per_page: num, page: num}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/cfd_tunnel
@required {account_id: str, name: str}
@optional {config_src: str(local/cloudflare)=local, tunnel_secret: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/cfd_tunnel/{tunnel_id}
@required {account_id: str, tunnel_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/cfd_tunnel/{tunnel_id}
@required {account_id: str, tunnel_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/cfd_tunnel/{tunnel_id}
@required {tunnel_id: str(uuid), account_id: str}
@optional {name: str, tunnel_secret: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/cfd_tunnel/{tunnel_id}/configurations
@required {account_id: str, tunnel_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/cfd_tunnel/{tunnel_id}/configurations
@required {account_id: str, tunnel_id: str(uuid)}
@optional {config: map{ingress: [map], originRequest: map, warp-routing: map}}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/cfd_tunnel/{tunnel_id}/connections
@required {account_id: str, tunnel_id: str(uuid)}
@optional {client_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/cfd_tunnel/{tunnel_id}/connections
@required {account_id: str, tunnel_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/cfd_tunnel/{tunnel_id}/connectors/{connector_id}
@required {account_id: str, tunnel_id: str(uuid), connector_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/cfd_tunnel/{tunnel_id}/management
@required {account_id: str, tunnel_id: str(uuid), resources: [str]}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/cfd_tunnel/{tunnel_id}/token
@required {account_id: str, tunnel_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/challenges/widgets
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/challenges/widgets
@required {domains: [str], mode: str(non-interactive/invisible/managed), name: str}
@optional {bot_fight_mode: bool, clearance_level: str(no_clearance/jschallenge/managed/interactive), ephemeral_id: bool, offlabel: bool, region: str(world/china)=world}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/challenges/widgets/{sitekey}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/challenges/widgets/{sitekey}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/challenges/widgets/{sitekey}
@required {domains: [str], mode: str(non-interactive/invisible/managed), name: str}
@optional {bot_fight_mode: bool, clearance_level: str(no_clearance/jschallenge/managed/interactive), ephemeral_id: bool, offlabel: bool, region: str(world/china)=world}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/challenges/widgets/{sitekey}/rotate_secret
@optional {invalidate_immediately: bool=false}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/client-secret
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/cloudforce-one/banner/{config_id}
@required {account_id: str, config_id: str}
@returns(200) {errors: [str], messages: [str], result: map{1.1.1.1: [map]}, success: bool}
@errors {4XX}

@endpoint POST /accounts/{account_id}/cloudforce-one/binary
@required {account_id: str}
@returns(200) {content_type: str, md5: str, sha1: str, sha256: str}
@errors {400}

@endpoint GET /accounts/{account_id}/cloudforce-one/binary/{hash}
@required {account_id: str, hash: str}
@returns(200)
@errors {400}

@endpoint GET /accounts/{account_id}/cloudforce-one/events
@required {account_id: str}
@optional {cursor: str, search: [any]=, page: num, pageSize: num, orderBy: str, order: str(asc/desc), datasetId: [str], forceRefresh: bool, format: str(json/stix2/taxii), cache: str}
@returns(200)
@errors {400}

@endpoint POST /accounts/{account_id}/cloudforce-one/events
@required {account_id: str}
@optional {forceRefresh: bool, format: str(json/stix2/taxii), cache: str, cursor: str, datasetId: [str], order: str(asc/desc), orderBy: str, page: num, pageSize: num, search: [any]}
@returns(200)
@errors {400}

@endpoint GET /accounts/{account_id}/cloudforce-one/events/aggregate
@required {account_id: str, aggregateBy: str}
@optional {datasetId: [str], startDate: str, endDate: str, groupByDate: bool, limit: num=100}
@returns(200) {aggregateBy: str, aggregations: [any], dateRange: map{endDate: str, startDate: str}, total: num}
@errors {400}

@endpoint GET /accounts/{account_id}/cloudforce-one/events/attackers
@required {account_id: str}
@optional {datasetIds: [str]}
@returns(200) {items: map{type: str}, type: str}
@errors {400}

@endpoint GET /accounts/{account_id}/cloudforce-one/events/by-id/{event_id}/relationships
@required {account_id: str, event_id: str, datasetId: str}
@optional {direction: str(ancestors/descendants/both)=both, maxDepth: num, relationshipTypes: any, indicatorTypeIds: [str], includeParent: bool=true, page: num, pageSize: num}
@returns(200)
@errors {400}

@endpoint GET /accounts/{account_id}/cloudforce-one/events/categories
@required {account_id: str}
@optional {datasetIds: [str]}
@returns(200)
@errors {400}

@endpoint GET /accounts/{account_id}/cloudforce-one/events/categories/catalog
@required {account_id: str}
@returns(200)
@errors {400}

@endpoint POST /accounts/{account_id}/cloudforce-one/events/categories/create
@required {account_id: str, killChain: num, name: str}
@optional {mitreAttack: [str], mitreCapec: [str], shortname: str}
@returns(200) {killChain: num, mitreAttack: [str], mitreCapec: [str], name: str, shortname: str, uuid: str}
@errors {400}

@endpoint DELETE /accounts/{account_id}/cloudforce-one/events/categories/{category_id}
@required {account_id: str, category_id: str(uuid)}
@returns(200) {uuid: str}
@errors {400}

@endpoint GET /accounts/{account_id}/cloudforce-one/events/categories/{category_id}
@required {account_id: str, category_id: str(uuid)}
@returns(200) {killChain: num, mitreAttack: [str], mitreCapec: [str], name: str, shortname: str, uuid: str}
@errors {400}

@endpoint PATCH /accounts/{account_id}/cloudforce-one/events/categories/{category_id}
@required {account_id: str, category_id: str(uuid)}
@optional {killChain: num, mitreAttack: [str], mitreCapec: [str], name: str, shortname: str}
@returns(200) {killChain: num, mitreAttack: [str], mitreCapec: [str], name: str, shortname: str, uuid: str}
@errors {400}

@endpoint POST /accounts/{account_id}/cloudforce-one/events/categories/{category_id}
@required {account_id: str, category_id: str(uuid)}
@optional {killChain: num, mitreAttack: [str], mitreCapec: [str], name: str, shortname: str}
@returns(200) {killChain: num, mitreAttack: [str], mitreCapec: [str], name: str, shortname: str, uuid: str}
@errors {400}

@endpoint GET /accounts/{account_id}/cloudforce-one/events/countries
@required {account_id: str}
@returns(200)
@errors {400}

@endpoint POST /accounts/{account_id}/cloudforce-one/events/create
@required {account_id: str, category: str, date: str(date-time), event: str, raw: map{data!: map, source: str, tlp: str}, tlp: str}
@optional {accountId: num, attacker: str, attackerCountry: str, datasetId: str, indicator: str, indicatorType: str, indicators: [map{indicatorType!: str, value!: str}], insight: str, source: map{resourceId!: str(uuid), resourceType!: str, system!: str}, tags: [str], targetCountry: str, targetIndustry: str}
@returns(200) {attacker: str, attackerCountry: str, attackerCountryAlpha3: str, category: str, datasetId: str, date: str, event: str, hasChildren: bool, indicator: str, indicatorType: str, indicatorTypeId: num, insight: str, killChain: num, mitreAttack: [str], mitreCapec: [str], numReferenced: num, numReferences: num, rawId: str, referenced: [str], referencedIds: [num], references: [str], referencesIds: [num], releasabilityId: str, tags: [str], targetCountry: str, targetCountryAlpha3: str, targetIndustry: str, tlp: str, uuid: str}
@errors {400}

@endpoint POST /accounts/{account_id}/cloudforce-one/events/create/bulk
@required {account_id: str, data: [map{accountId: num, attacker: str, attackerCountry: str, category!: str, datasetId: str, date!: str(date-time), event!: str, indicator: str, indicatorType: str, indicators: [map], insight: str, raw!: map, tags: [str], targetCountry: str, targetIndustry: str, tlp!: str}], datasetId: str}
@optional {includeCreatedEvents: bool}
@returns(202) {createBulkEventsRequestId: str(uuid), createdEvents: [map], createdEventsCount: num, createdTagsCount: num, errorCount: num, errors: [map], queuedIndicatorsCount: num}
@errors {400}

@endpoint POST /accounts/{account_id}/cloudforce-one/events/create/bulk/relationships
@required {account_id: str, data: [map{accountId: num, attacker: str, attackerCountry: str, category!: str, datasetId: str, date!: str(date-time), event!: str, indicator: str, indicatorType: str, indicators: [map], insight: str, raw!: map, tags: [str], targetCountry: str, targetIndustry: str, tlp!: str}], datasetId: str}
@returns(200) {createdEventsCount: num, createdIndicatorsCount: num, createdRelationshipsCount: num, errorCount: num, errors: [map]}
@errors {400}

@endpoint GET /accounts/{account_id}/cloudforce-one/events/dataset
@required {account_id: str}
@optional {includeDeleted: bool}
@returns(200)
@errors {400}

@endpoint GET /accounts/{account_id}/cloudforce-one/events/dataset/-/groups
@required {account_id: str}
@returns(200)
@errors {400}

@endpoint POST /accounts/{account_id}/cloudforce-one/events/dataset/-/groups
@required {account_id: str, description: str, name: str}
@returns(200) {createdAt: str(date-time), description: str, name: str, updatedAt: str(date-time), uuid: str}
@errors {400}

@endpoint DELETE /accounts/{account_id}/cloudforce-one/events/dataset/-/groups/{group_id}
@required {account_id: str, group_id: str}
@returns(200) {message: str, success: bool}
@errors {400}

@endpoint GET /accounts/{account_id}/cloudforce-one/events/dataset/-/groups/{group_id}
@required {account_id: str, group_id: str}
@returns(200) {createdAt: str(date-time), description: str, members: [map], name: str, updatedAt: str(date-time), uuid: str}
@errors {400}

@endpoint PUT /accounts/{account_id}/cloudforce-one/events/dataset/-/groups/{group_id}
@required {account_id: str, group_id: str, description: str, name: str}
@returns(200) {createdAt: str(date-time), description: str, name: str, updatedAt: str(date-time), uuid: str}
@errors {400}

@endpoint GET /accounts/{account_id}/cloudforce-one/events/dataset/-/groups/{group_id}/members
@required {account_id: str, group_id: str}
@returns(200)
@errors {400}

@endpoint POST /accounts/{account_id}/cloudforce-one/events/dataset/-/groups/{group_id}/members
@required {account_id: str, group_id: str}
@optional {accountId: str, accountTag: str}
@returns(200) {accountId: str, accountTag: str, createdAt: str(date-time), updatedAt: str(date-time), uuid: str}
@errors {400}

@endpoint DELETE /accounts/{account_id}/cloudforce-one/events/dataset/-/groups/{group_id}/members/{member_id}
@required {account_id: str, group_id: str, member_id: str}
@returns(200) {message: str, success: bool}
@errors {400}

@endpoint POST /accounts/{account_id}/cloudforce-one/events/dataset/create
@required {account_id: str, isPublic: bool, name: str}
@returns(200) {isAnalytics: bool, isPublic: bool, name: str, uuid: str}
@errors {400}

@endpoint DELETE /accounts/{account_id}/cloudforce-one/events/dataset/{dataset_id}
@required {account_id: str, dataset_id: str}
@returns(200) {name: str, uuid: str}
@errors {400, 404}

@endpoint GET /accounts/{account_id}/cloudforce-one/events/dataset/{dataset_id}
@required {account_id: str, dataset_id: str(uuid)}
@returns(200) {isAnalytics: bool, isPublic: bool, name: str, uuid: str}
@errors {400}

@endpoint PATCH /accounts/{account_id}/cloudforce-one/events/dataset/{dataset_id}
@required {account_id: str, dataset_id: str(uuid), isPublic: bool, name: str}
@returns(200) {isAnalytics: bool, isPublic: bool, name: str, uuid: str}
@errors {400}

@endpoint POST /accounts/{account_id}/cloudforce-one/events/dataset/{dataset_id}
@required {account_id: str, dataset_id: str(uuid), isPublic: bool, name: str}
@returns(200) {isAnalytics: bool, isPublic: bool, name: str, uuid: str}
@errors {400}

@endpoint POST /accounts/{account_id}/cloudforce-one/events/dataset/{dataset_id}/copy
@required {account_id: str, dataset_id: str(uuid), destDatasetId: str, eventIds: [str]}
@optional {keepRawData: bool}
@returns(200) {copied: num, indicatorsCopied: num, insertFailures: [map], relationshipsCopied: num}
@errors {400}

@endpoint GET /accounts/{account_id}/cloudforce-one/events/dataset/{dataset_id}/events/{event_id}
@required {account_id: str, dataset_id: str, event_id: str}
@returns(200) {attacker: str, attackerCountry: str, attackerCountryAlpha3: str, category: str, datasetId: str, date: str, event: str, hasChildren: bool, indicator: str, indicatorType: str, indicatorTypeId: num, insight: str, killChain: num, mitreAttack: [str], mitreCapec: [str], numReferenced: num, numReferences: num, rawId: str, referenced: [str], referencedIds: [num], references: [str], referencesIds: [num], releasabilityId: str, tags: [str], targetCountry: str, targetCountryAlpha3: str, targetIndustry: str, tlp: str, uuid: str}
@errors {404}

@endpoint POST /accounts/{account_id}/cloudforce-one/events/dataset/{dataset_id}/indicatorTypes/create
@required {account_id: str, dataset_id: str, indicatorType: str}
@optional {description: str}
@returns(200) {durableObjectId: str, indicatorType: str, message: str}
@errors {400, 500}

@endpoint GET /accounts/{account_id}/cloudforce-one/events/dataset/{dataset_id}/indicators
@required {account_id: str, dataset_id: str(uuid)}
@optional {page: num, pageSize: num, name: str, indicatorType: str, relatedEvent: [str]}
@returns(200) {indicators: [map], pagination: map{page: num, pageSize: num, totalCount: num, totalPages: num}}
@errors {4XX}

@endpoint POST /accounts/{account_id}/cloudforce-one/events/dataset/{dataset_id}/indicators/bulk
@required {account_id: str, dataset_id: str(uuid), indicators: [map{autoCreateType: bool, indicatorType!: str, relatedEvents: [map], tags: [any], tlp: str, value!: str}]}
@optional {autoCreateType: bool}
@returns(200)
@errors {400}

@endpoint POST /accounts/{account_id}/cloudforce-one/events/dataset/{dataset_id}/indicators/create
@required {account_id: str, dataset_id: str(uuid), indicatorType: str, value: str}
@optional {autoCreateType: bool, relatedEvents: [map{datasetId!: str, eventId!: str}], tags: [any], tlp: str}
@returns(200) {createdAt: str(date-time), datasetId: str, indicatorType: str, relatedEvents: [map], tags: [map], tlp: str?, updatedAt: str(date-time), uuid: str, value: str}
@errors {400}

@endpoint GET /accounts/{account_id}/cloudforce-one/events/dataset/{dataset_id}/indicators/tags
@required {account_id: str, dataset_id: str}
@returns(200)
@errors {400, 404, 500}

@endpoint DELETE /accounts/{account_id}/cloudforce-one/events/dataset/{dataset_id}/indicators/{indicator_id}
@required {account_id: str, dataset_id: str, indicator_id: str}
@returns(200) {message: str, success: bool}
@errors {404}

@endpoint GET /accounts/{account_id}/cloudforce-one/events/dataset/{dataset_id}/indicators/{indicator_id}
@required {account_id: str, dataset_id: str, indicator_id: str}
@returns(200) {createdAt: str(date-time), datasetId: str, indicatorType: str, relatedEvents: [map], tags: [map], tlp: str?, updatedAt: str(date-time), uuid: str, value: str}
@errors {404}

@endpoint PATCH /accounts/{account_id}/cloudforce-one/events/dataset/{dataset_id}/indicators/{indicator_id}
@required {account_id: str, dataset_id: str, indicator_id: str}
@optional {indicatorType: str, relatedEvents: [map{datasetId!: str, eventId!: str}], tags: [any], tlp: str, value: str}
@returns(200) {createdAt: str(date-time), datasetId: str, indicatorType: str, relatedEvents: [map], tags: [map], tlp: str?, updatedAt: str(date-time), uuid: str, value: str}
@errors {400, 404, 409}

@endpoint GET /accounts/{account_id}/cloudforce-one/events/dataset/{dataset_id}/indicators/{indicator_id}/relationships
@required {account_id: str, dataset_id: str(uuid), indicator_id: str}
@optional {search: [map], expand: [str], cursor: str, pageSize: int=25}
@returns(200) {result: map{counts: map, cursor: str?, entities: [map], hasMore: bool, hydrationErrors: map, relationships: [map]}, success: bool}
@errors {400}

@endpoint POST /accounts/{account_id}/cloudforce-one/events/dataset/{dataset_id}/indicators/{indicator_id}/relationships
@required {account_id: str, dataset_id: str(uuid), indicator_id: str, targetId: str, targetType: str(event/tag), type: str}
@optional {confidence: int, metadata: map}
@returns(200) {result: map, success: bool}
@errors {400, 409}

@endpoint DELETE /accounts/{account_id}/cloudforce-one/events/dataset/{dataset_id}/indicators/{indicator_id}/relationships/{rel_uuid}
@required {account_id: str, dataset_id: str(uuid), indicator_id: str, rel_uuid: str(uuid)}
@returns(200) {result: map{deleted: bool}, success: bool}
@errors {400}

@endpoint PATCH /accounts/{account_id}/cloudforce-one/events/dataset/{dataset_id}/indicators/{indicator_id}/relationships/{rel_uuid}
@required {account_id: str, dataset_id: str(uuid), indicator_id: str, rel_uuid: str(uuid)}
@optional {confidence: int, metadata: map, type: str}
@returns(200) {result: map, success: bool}
@errors {400, 404}

@endpoint POST /accounts/{account_id}/cloudforce-one/events/dataset/{dataset_id}/move
@required {account_id: str, dataset_id: str(uuid), destDatasetId: str, eventIds: [str]}
@optional {keepRawData: bool}
@returns(200) {deletionFailures: [map], indicatorsCopied: num, insertFailures: [map], moved: num, relationshipsCopied: num}
@errors {400}

@endpoint GET /accounts/{account_id}/cloudforce-one/events/dataset/{dataset_id}/permissions
@required {account_id: str, dataset_id: str(uuid)}
@returns(200)
@errors {400, 404}

@endpoint POST /accounts/{account_id}/cloudforce-one/events/dataset/{dataset_id}/permissions
@required {account_id: str, dataset_id: str(uuid), role: str(read/write), subjectId: str, subjectType: str(account/group)}
@returns(200) {createdAt: str(date-time), resourceId: str, resourceType: str, role: str, subjectId: str, subjectType: str, updatedAt: str(date-time), uuid: str}
@errors {400}

@endpoint DELETE /accounts/{account_id}/cloudforce-one/events/dataset/{dataset_id}/permissions/{grant_id}
@required {account_id: str, dataset_id: str(uuid), grant_id: str}
@returns(200) {message: str, success: bool}
@errors {400, 404}

@endpoint PUT /accounts/{account_id}/cloudforce-one/events/dataset/{dataset_id}/permissions/{grant_id}
@required {account_id: str, dataset_id: str(uuid), grant_id: str, role: str(read/write)}
@returns(200) {message: str, success: bool}
@errors {400, 404}

@endpoint GET /accounts/{account_id}/cloudforce-one/events/dataset/{dataset_id}/tags/{tag_uuid}/indicators
@required {account_id: str, tag_uuid: str, dataset_id: str(uuid)}
@optional {page: num, pageSize: num, indicatorType: str, relatedEvent: [str], search: [map]}
@returns(200) {indicators: [map], pagination: map{page: num, pageSize: num, totalCount: num, totalPages: num}}
@errors {400, 404, 500}

@endpoint GET /accounts/{account_id}/cloudforce-one/events/dataset/{dataset_id}/targetIndustries
@required {account_id: str, dataset_id: str(uuid)}
@returns(200) {items: map{type: str}, type: str}
@errors {400}

@endpoint POST /accounts/{account_id}/cloudforce-one/events/datasets/populate
@required {account_id: str}
@returns(200) {properties: map{accountId: map{type: str}, datasets: map{items: map{properties: map, type: str}, type: str}, errors: map{items: map{type: str}, type: str}, summary: map{properties: map{failedDatasets: map, successfulDatasets: map, totalDatasets: map, totalIndicatorTypes: map, totalProcessingTimeMs: map}, type: str}}, type: str}
@errors {400}

@endpoint DELETE /accounts/{account_id}/cloudforce-one/events/datasets/{dataset_id}/events
@required {account_id: str, dataset_id: str(uuid), eventIds: [str]}
@returns(200)
@errors {400}

@endpoint GET /accounts/{account_id}/cloudforce-one/events/datasets/{dataset_id}/events/{event_id}/raw
@required {account_id: str, event_id: str, dataset_id: str}
@returns(200) {accountId: num, created: str, data: str, id: num, source: str, tlp: str}
@errors {404, 500}

@endpoint DELETE /accounts/{account_id}/cloudforce-one/events/event-categories/by-id/{category_id}
@required {account_id: str, category_id: str(uuid)}
@returns(200) {uuid: str}
@errors {400}

@endpoint GET /accounts/{account_id}/cloudforce-one/events/event-categories/by-id/{category_id}
@required {account_id: str, category_id: str(uuid)}
@returns(200) {killChain: num, mitreAttack: [str], mitreCapec: [str], name: str, shortname: str, uuid: str}
@errors {400}

@endpoint PATCH /accounts/{account_id}/cloudforce-one/events/event-categories/by-id/{category_id}
@required {account_id: str, category_id: str(uuid)}
@optional {killChain: num, mitreAttack: [str], mitreCapec: [str], name: str, shortname: str}
@returns(200) {killChain: num, mitreAttack: [str], mitreCapec: [str], name: str, shortname: str, uuid: str}
@errors {400}

@endpoint POST /accounts/{account_id}/cloudforce-one/events/event-categories/by-id/{category_id}
@required {account_id: str, category_id: str(uuid)}
@optional {killChain: num, mitreAttack: [str], mitreCapec: [str], name: str, shortname: str}
@returns(200) {killChain: num, mitreAttack: [str], mitreCapec: [str], name: str, shortname: str, uuid: str}
@errors {400}

@endpoint DELETE /accounts/{account_id}/cloudforce-one/events/event_tag/{event_id}
@required {account_id: str, event_id: str, tags: [str]}
@returns(200) {result: map{success: bool}, success: bool}
@errors {400}

@endpoint POST /accounts/{account_id}/cloudforce-one/events/event_tag/{event_id}/create
@required {account_id: str, event_id: str, tags: [str]}
@returns(200) {result: map{success: bool}, success: bool}
@errors {400}

@endpoint GET /accounts/{account_id}/cloudforce-one/events/graph
@required {account_id: str}
@optional {seeds: [str], direction: str, hydration: str, limit: num, max_nodes: num, relationshipTypes: [str], datasetIds: [str], cursor: str, expand: [str]}
@returns(200) {errors: [map], messages: [map], result: map{edges: [map], node: map?, nodes: [map]}, result_info: map{count: num, cursor: str?, depth_reached: num, edge_count: num, has_more: bool, query_time_ms: num, seeds: [str], total_count: num, truncated: bool}, success: bool}
@errors {400, 404, 500, 503}

@endpoint POST /accounts/{account_id}/cloudforce-one/events/graphql
@required {account_id: str}
@returns(200) {data: map?, errors: [map]?}
@errors {400}

@endpoint GET /accounts/{account_id}/cloudforce-one/events/indicator-types
@required {account_id: str}
@optional {datasetIds: [str]}
@returns(200) {items: map{type: str}, type: str}
@errors {400}

@endpoint GET /accounts/{account_id}/cloudforce-one/events/indicatorTypes
@required {account_id: str}
@returns(200) {items: map{type: str}, type: str}
@errors {400}

@endpoint GET /accounts/{account_id}/cloudforce-one/events/indicators
@required {account_id: str}
@optional {datasetIds: [str], page: num, pageSize: num, search: [map], name: str, indicatorType: str, relatedEvents: [str], tags: [str], tagSearch: [map], createdAfter: str(date-time), createdBefore: str(date-time), relatedEventsLimit: num, includeTags: bool, includeTotalCount: bool, format: str(json/stix2/taxii), cache: str, cursor: str}
@returns(200) {properties: map{completeness: map{properties: map{complete: map, failedDatasets: map, failedShards: map, warnings: map}, type: str}, indicators: map{items: map{createdAt: str(date-time), datasetId: str, indicatorType: str, relatedEvents: [map], sources: [map], tags: [map], tlp: str?, updatedAt: str(date-time), uuid: str, value: str}, type: str}, pagination: map{properties: map{count: map, cursor: map, has_more: map, page: map, per_page: map, total_count: map, total_count_is_exact: map}, type: str}}, type: str}
@errors {400}

@endpoint GET /accounts/{account_id}/cloudforce-one/events/indicators/aggregate
@required {account_id: str, aggregateBy: str}
@optional {measure: str(indicators/relationships)=indicators, tagUuid: str, datasetIds: [str], createdAfter: any, createdBefore: any, eventDateAfter: str, eventDateBefore: str, limit: num=10}
@returns(200) {aggregateBy: str, aggregations: [any], failedDatasets: num, total: num}
@errors {400}

@endpoint GET /accounts/{account_id}/cloudforce-one/events/queries
@required {account_id: str}
@returns(200)
@errors {500, 4XX}

@endpoint POST /accounts/{account_id}/cloudforce-one/events/queries/create
@required {account_id: str, alert_enabled: bool, alert_rollup_enabled: bool, name: str, query_json: str, rule_enabled: bool}
@optional {rule_scope: str}
@returns(200) {account_id: int, alert_enabled: bool, alert_rollup_enabled: bool, created_at: str, custom_threat_feed_id: int?, id: int, name: str, query_json: str, rule_enabled: bool, rule_list_id: str, rule_scope: str, updated_at: str, user_email: str}
@errors {400}

@endpoint DELETE /accounts/{account_id}/cloudforce-one/events/queries/{query_id}
@required {account_id: str, query_id: int}
@returns(200)
@errors {404}

@endpoint GET /accounts/{account_id}/cloudforce-one/events/queries/{query_id}
@required {account_id: str, query_id: int}
@returns(200) {account_id: int, alert_enabled: bool, alert_rollup_enabled: bool, created_at: str, custom_threat_feed_id: int?, id: int, name: str, query_json: str, rule_enabled: bool, rule_list_id: str, rule_scope: str, updated_at: str, user_email: str}
@errors {404}

@endpoint PATCH /accounts/{account_id}/cloudforce-one/events/queries/{query_id}
@required {account_id: str, query_id: int}
@optional {alert_enabled: bool, alert_rollup_enabled: bool, name: str, query_json: str, rule_enabled: bool, rule_scope: str}
@returns(200) {account_id: int, alert_enabled: bool, alert_rollup_enabled: bool, created_at: str, custom_threat_feed_id: int?, id: int, name: str, query_json: str, rule_enabled: bool, rule_list_id: str, rule_scope: str, updated_at: str, user_email: str}
@errors {400, 404}

@endpoint POST /accounts/{account_id}/cloudforce-one/events/queries/{query_id}
@required {account_id: str, query_id: int}
@optional {alert_enabled: bool, alert_rollup_enabled: bool, name: str, query_json: str, rule_enabled: bool, rule_scope: str}
@returns(200) {account_id: int, alert_enabled: bool, alert_rollup_enabled: bool, created_at: str, custom_threat_feed_id: int?, id: int, name: str, query_json: str, rule_enabled: bool, rule_list_id: str, rule_scope: str, updated_at: str, user_email: str}
@errors {400, 404}

@endpoint GET /accounts/{account_id}/cloudforce-one/events/raw/{dataset_id}/{event_id}
@required {account_id: str, event_id: str, dataset_id: str}
@returns(200) {accountId: num, created: str, data: str, id: num, source: str, tlp: str}
@errors {404, 500}

@endpoint DELETE /accounts/{account_id}/cloudforce-one/events/relate/{event_id}
@required {account_id: str, event_id: str, events: [str]}
@returns(200) {result: map{success: bool}, success: bool}
@errors {400}

@endpoint POST /accounts/{account_id}/cloudforce-one/events/relate/{event_id}/create
@required {account_id: str, event_id: str, events: [str]}
@returns(200) {result: map{success: bool}, success: bool}
@errors {400}

@endpoint POST /accounts/{account_id}/cloudforce-one/events/relationships/create
@required {account_id: str, childIds: [str(uuid)], datasetId: str, parentId: str(uuid), relationshipType: str(related_to/caused_by/attributed_to)}
@returns(200) {childIds: [str(uuid)], errors: [map], message: str, relationships: [map], relationshipsCreated: num, success: bool}
@errors {400}

@endpoint DELETE /accounts/{account_id}/cloudforce-one/events/tag-categories/{category_uuid}
@required {account_id: str, category_uuid: str}
@returns(200) {uuid: str}
@errors {400, 404}

@endpoint GET /accounts/{account_id}/cloudforce-one/events/tag-categories/{category_uuid}
@required {account_id: str, category_uuid: str}
@returns(200) {createdAt: str, description: str, name: str, schema: [map]?, updatedAt: str, uuid: str}
@errors {404}

@endpoint PATCH /accounts/{account_id}/cloudforce-one/events/tag-categories/{category_uuid}
@required {account_id: str, category_uuid: str}
@optional {description: str, name: str, schema: [map{allowedValues: [str], annotations: map, deprecated: bool, deprecatedValues: [str], element: map, enforcement: str, format: str, key!: str, kind!: str, label: str, maxLength: int, numberConstraint: map, properties: map, required: bool}]}
@returns(200) {createdAt: str, description: str, name: str, schema: [map]?, updatedAt: str, uuid: str}
@errors {400, 404, 409}

@endpoint GET /accounts/{account_id}/cloudforce-one/events/tags
@required {account_id: str}
@optional {page: num, pageSize: num, search: str, categoryUuid: str, filters: [map], cache: str}
@returns(200) {pagination: map{page: num, pageSize: num, totalCount: num, totalPages: num}, tags: [map]}
@errors {400}

@endpoint GET /accounts/{account_id}/cloudforce-one/events/tags/categories
@required {account_id: str}
@optional {search: str}
@returns(200) {categories: [map]}
@errors {400}

@endpoint GET /accounts/{account_id}/cloudforce-one/events/tags/categories/actors
@required {account_id: str}
@optional {page: num, pageSize: num, value: str, filters: [map]}
@returns(200) {pagination: map{page: num, pageSize: num, totalCount: num, totalPages: num}, tags: [map]}
@errors {400}

@endpoint POST /accounts/{account_id}/cloudforce-one/events/tags/categories/create
@required {account_id: str, name: str}
@optional {description: str, schema: [map{allowedValues: [str], annotations: map, deprecated: bool, deprecatedValues: [str], element: map, enforcement: str, format: str, key!: str, kind!: str, label: str, maxLength: int, numberConstraint: map, properties: map, required: bool}]}
@returns(200) {createdAt: str, description: str, name: str, schema: [map]?, updatedAt: str, uuid: str}
@errors {400, 409}

@endpoint DELETE /accounts/{account_id}/cloudforce-one/events/tags/categories/{category_uuid}
@required {account_id: str, category_uuid: str}
@returns(200) {uuid: str}
@errors {400, 404}

@endpoint GET /accounts/{account_id}/cloudforce-one/events/tags/categories/{category_uuid}
@required {account_id: str, category_uuid: str}
@returns(200) {createdAt: str, description: str, name: str, schema: [map]?, updatedAt: str, uuid: str}
@errors {404}

@endpoint PATCH /accounts/{account_id}/cloudforce-one/events/tags/categories/{category_uuid}
@required {account_id: str, category_uuid: str}
@optional {description: str, name: str, schema: [map{allowedValues: [str], annotations: map, deprecated: bool, deprecatedValues: [str], element: map, enforcement: str, format: str, key!: str, kind!: str, label: str, maxLength: int, numberConstraint: map, properties: map, required: bool}]}
@returns(200) {createdAt: str, description: str, name: str, schema: [map]?, updatedAt: str, uuid: str}
@errors {400, 404, 409}

@endpoint POST /accounts/{account_id}/cloudforce-one/events/tags/create
@required {account_id: str, value: str}
@optional {activeDuration: any, actorCategory: any, aliasGroupNames: [str], aliasGroupNamesInternal: [str], aliases: [map{confidence: int, tlp: str, value!: str}], attributionOrganization: any, categoryUuid: str, confidence: int, dateOfDiscovery: str, description: str, externalReferenceLinks: [str], externalReferences: [map{description: str, url!: str}], internalAliases: [map{confidence: int, tlp: str, value!: str}], internalDescription: str, lastSeen: str, motive: any, opsecLevel: any, originCountryISO: any, priority: any, properties: map, sophisticationLevel: any, tlp: str(red/amber/amber-strict/green/clear/purple/amber+strict)}
@returns(200) {activeDuration: str, activeDuration_annotated: map?{tlp: str, value: str}, actorCategory: str, actorCategory_annotated: map?{confidence: num, tlp: str, value: str}, aliasGroupNames: [str], aliasGroupNamesInternal: [str], aliases: [map], attributionOrganization: str, attributionOrganization_annotated: map?{confidence: num, tlp: str, value: str}, categoryName: str, categoryUuid: str, confidence: int?, createdAt: str, dateOfDiscovery: str, description: str, externalReferenceLinks: [str], externalReferences: [map], externalReferences_annotated: [map]?, internalAliases: [map], internalDescription: str, lastSeen: str, motive: str, motive_annotated: map?{confidence: num, tlp: str, value: str}, opsecLevel: str, opsecLevel_annotated: map?{confidence: num, tlp: str, value: str}, originCountryISO: str?, originCountryISO_annotated: map?{confidence: num, tlp: str, value: str?}, priority: num, priority_annotated: map?{tlp: str, value: num}, properties: map?, sophisticationLevel: str, sophisticationLevel_annotated: map?{confidence: num, tlp: str, value: str}, tlp: str?, updatedAt: str, uuid: str, value: str, version: num}
@errors {400, 404}

@endpoint DELETE /accounts/{account_id}/cloudforce-one/events/tags/{tag_uuid}
@required {account_id: str, tag_uuid: str}
@returns(200) {uuid: str}
@errors {400, 404}

@endpoint GET /accounts/{account_id}/cloudforce-one/events/tags/{tag_uuid}
@required {account_id: str, tag_uuid: str}
@returns(200) {activeDuration: str, activeDuration_annotated: map?{tlp: str, value: str}, actorCategory: str, actorCategory_annotated: map?{confidence: num, tlp: str, value: str}, aliasGroupNames: [str], aliasGroupNamesInternal: [str], aliases: [map], attributionOrganization: str, attributionOrganization_annotated: map?{confidence: num, tlp: str, value: str}, categoryName: str, categoryUuid: str, confidence: int?, createdAt: str, dateOfDiscovery: str, description: str, externalReferenceLinks: [str], externalReferences: [map], externalReferences_annotated: [map]?, internalAliases: [map], internalDescription: str, lastSeen: str, motive: str, motive_annotated: map?{confidence: num, tlp: str, value: str}, opsecLevel: str, opsecLevel_annotated: map?{confidence: num, tlp: str, value: str}, originCountryISO: str?, originCountryISO_annotated: map?{confidence: num, tlp: str, value: str?}, priority: num, priority_annotated: map?{tlp: str, value: num}, properties: map?, sophisticationLevel: str, sophisticationLevel_annotated: map?{confidence: num, tlp: str, value: str}, tlp: str?, updatedAt: str, uuid: str, value: str, version: num}
@errors {404}

@endpoint PATCH /accounts/{account_id}/cloudforce-one/events/tags/{tag_uuid}
@required {account_id: str, tag_uuid: str}
@optional {activeDuration: any, actorCategory: any, aliasGroupNames: [str], aliasGroupNamesInternal: [str], aliases: [map{confidence: int, tlp: str, value!: str}], attributionOrganization: any, categoryUuid: str, confidence: int, dateOfDiscovery: str, description: str, externalReferenceLinks: [str], externalReferences: [map{description: str, url!: str}], internalAliases: [map{confidence: int, tlp: str, value!: str}], internalDescription: str, lastSeen: str, motive: any, opsecLevel: any, originCountryISO: any, priority: any, properties: map, sophisticationLevel: any, tlp: str(red/amber/amber-strict/green/clear/purple/amber+strict), value: str}
@returns(200) {activeDuration: str, activeDuration_annotated: map?{tlp: str, value: str}, actorCategory: str, actorCategory_annotated: map?{confidence: num, tlp: str, value: str}, aliasGroupNames: [str], aliasGroupNamesInternal: [str], aliases: [map], attributionOrganization: str, attributionOrganization_annotated: map?{confidence: num, tlp: str, value: str}, categoryName: str, categoryUuid: str, confidence: int?, createdAt: str, dateOfDiscovery: str, description: str, externalReferenceLinks: [str], externalReferences: [map], externalReferences_annotated: [map]?, internalAliases: [map], internalDescription: str, lastSeen: str, motive: str, motive_annotated: map?{confidence: num, tlp: str, value: str}, opsecLevel: str, opsecLevel_annotated: map?{confidence: num, tlp: str, value: str}, originCountryISO: str?, originCountryISO_annotated: map?{confidence: num, tlp: str, value: str?}, priority: num, priority_annotated: map?{tlp: str, value: num}, properties: map?, sophisticationLevel: str, sophisticationLevel_annotated: map?{confidence: num, tlp: str, value: str}, tlp: str?, updatedAt: str, uuid: str, value: str, version: num}
@errors {400, 404}

@endpoint GET /accounts/{account_id}/cloudforce-one/events/tags/{tag_uuid}/indicators
@required {account_id: str, tag_uuid: str}
@optional {datasetIds: [str], page: num, pageSize: num, indicatorType: str, relatedEvent: [str], search: [map]}
@returns(200) {indicators: [map], pagination: map{page: num, pageSize: num, totalCount: num, totalPages: num}}
@errors {400, 404, 500}

@endpoint GET /accounts/{account_id}/cloudforce-one/events/tags/{tag_uuid}/relationships
@required {account_id: str, tag_uuid: str}
@optional {datasets: [str], search: [map], expand: [str], cursor: str, pageSize: int=25}
@returns(200) {result: map{counts: map, cursor: str?, entities: [map], failedShardCount: num, hasMore: bool, hydrationErrors: map, partialResults: bool, relationships: [map]}, success: bool}
@errors {400}

@endpoint POST /accounts/{account_id}/cloudforce-one/events/tags/{tag_uuid}/relationships
@required {account_id: str, tag_uuid: str, datasetId: str, targetId: str, targetType: str(event/indicator), type: str}
@optional {confidence: int, metadata: map}
@returns(200) {result: map, success: bool}
@errors {400}

@endpoint DELETE /accounts/{account_id}/cloudforce-one/events/tags/{tag_uuid}/relationships/{rel_uuid}
@required {account_id: str, tag_uuid: str, rel_uuid: str(uuid), datasetId: str}
@returns(200) {result: map{deleted: bool}, success: bool}
@errors {400}

@endpoint PATCH /accounts/{account_id}/cloudforce-one/events/tags/{tag_uuid}/relationships/{rel_uuid}
@required {account_id: str, tag_uuid: str, rel_uuid: str(uuid), datasetId: str}
@optional {confidence: int, metadata: map, type: str}
@returns(200) {result: map, success: bool}
@errors {400, 404}

@endpoint GET /accounts/{account_id}/cloudforce-one/events/targetIndustries
@required {account_id: str}
@optional {datasetIds: [str]}
@returns(200) {items: map{type: str}, type: str}
@errors {400}

@endpoint GET /accounts/{account_id}/cloudforce-one/events/targetIndustries/catalog
@required {account_id: str}
@returns(200) {items: map{type: str}, type: str}
@errors {400}

@endpoint PATCH /accounts/{account_id}/cloudforce-one/events/update/bulk
@required {account_id: str, datasetId: str, eventIds: [str], updates: map{attacker: str, attackerCountry: str, category: str, createdAt: str(date-time), event: str, indicator: str, indicatorType: str, insight: str, raw: map, targetCountry: str, targetIndustry: str, tlp: str}}
@returns(200) {failedCount: num, failures: [map], updatedCount: num}
@errors {400}

@endpoint DELETE /accounts/{account_id}/cloudforce-one/events/{dataset_id}/delete
@required {account_id: str, dataset_id: str(uuid), eventIds: [str]}
@returns(200)
@errors {400}

@endpoint GET /accounts/{account_id}/cloudforce-one/events/{event_id}
@required {account_id: str, event_id: str}
@returns(200) {attacker: str, attackerCountry: str, attackerCountryAlpha3: str, category: str, datasetId: str, date: str, event: str, hasChildren: bool, indicator: str, indicatorType: str, indicatorTypeId: num, insight: str, killChain: num, mitreAttack: [str], mitreCapec: [str], numReferenced: num, numReferences: num, rawId: str, referenced: [str], referencedIds: [num], references: [str], referencesIds: [num], releasabilityId: str, tags: [str], targetCountry: str, targetCountryAlpha3: str, targetIndustry: str, tlp: str, uuid: str}
@errors {404}

@endpoint PATCH /accounts/{account_id}/cloudforce-one/events/{event_id}
@required {account_id: str, event_id: str, datasetId: str}
@optional {attacker: str, attackerCountry: str, category: str, createdAt: str(date-time), date: str(date-time), event: str, indicator: str, indicatorType: str, insight: str, raw: map{data: map, source: str, tlp: str}, targetCountry: str, targetIndustry: str, tlp: str}
@returns(200) {attacker: str, attackerCountry: str, attackerCountryAlpha3: str, category: str, datasetId: str, date: str, event: str, hasChildren: bool, indicator: str, indicatorType: str, indicatorTypeId: num, insight: str, killChain: num, mitreAttack: [str], mitreCapec: [str], numReferenced: num, numReferences: num, rawId: str, referenced: [str], referencedIds: [num], references: [str], referencesIds: [num], releasabilityId: str, tags: [str], targetCountry: str, targetCountryAlpha3: str, targetIndustry: str, tlp: str, uuid: str}
@errors {400}

@endpoint POST /accounts/{account_id}/cloudforce-one/events/{event_id}
@required {account_id: str, event_id: str, datasetId: str}
@optional {attacker: str, attackerCountry: str, category: str, createdAt: str(date-time), date: str(date-time), event: str, indicator: str, indicatorType: str, insight: str, raw: map{data: map, source: str, tlp: str}, targetCountry: str, targetIndustry: str, tlp: str}
@returns(200) {attacker: str, attackerCountry: str, attackerCountryAlpha3: str, category: str, datasetId: str, date: str, event: str, hasChildren: bool, indicator: str, indicatorType: str, indicatorTypeId: num, insight: str, killChain: num, mitreAttack: [str], mitreCapec: [str], numReferenced: num, numReferences: num, rawId: str, referenced: [str], referencedIds: [num], references: [str], referencesIds: [num], releasabilityId: str, tags: [str], targetCountry: str, targetCountryAlpha3: str, targetIndustry: str, tlp: str, uuid: str}
@errors {400}

@endpoint GET /accounts/{account_id}/cloudforce-one/events/{event_id}/raw/{raw_id}
@required {account_id: str, event_id: str, raw_id: str}
@returns(200) {accountId: num, created: str, data: map, id: str, source: str, tlp: str}
@errors {400}

@endpoint PATCH /accounts/{account_id}/cloudforce-one/events/{event_id}/raw/{raw_id}
@required {account_id: str, event_id: str, raw_id: str}
@optional {data: map, source: str, tlp: str}
@returns(200) {data: map, id: str}
@errors {400}

@endpoint POST /accounts/{account_id}/cloudforce-one/events/{event_id}/raw/{raw_id}
@required {account_id: str, event_id: str, raw_id: str}
@optional {data: map, source: str, tlp: str}
@returns(200) {data: map, id: str}
@errors {400}

@endpoint GET /accounts/{account_id}/cloudforce-one/events/{event_id}/relationships
@required {account_id: str, event_id: str, datasetId: str}
@optional {direction: str(ancestors/descendants/both)=both, maxDepth: num, relationshipTypes: any, indicatorTypeIds: [str], includeParent: bool=true, page: num, pageSize: num}
@returns(200)
@errors {400}

@endpoint POST /accounts/{account_id}/cloudforce-one/requests
@required {account_id: str, page: int, per_page: int}
@optional {completed_after: any, completed_before: any, created_after: any, created_before: any, request_type: str, sort_by: str, sort_order: str(asc/desc), status: str(open/accepted/reported/approved/completed/declined)}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/cloudforce-one/requests/constants
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/cloudforce-one/requests/new
@required {account_id: str}
@optional {content: str, priority: str, request_type: str, summary: str, tlp: str(clear/amber/amber-strict/green/red)}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/cloudforce-one/requests/priority
@required {account_id: str, page: int, per_page: int}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/cloudforce-one/requests/priority/new
@required {account_id: str, labels: [str], priority: int, requirement: str, tlp: str(clear/amber/amber-strict/green/red)}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/cloudforce-one/requests/priority/quota
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/cloudforce-one/requests/priority/{priority_id}
@required {account_id: str, priority_id: str}
@returns(200) {errors: [map], messages: [map], success: bool}
@errors {4XX}

@endpoint GET /accounts/{account_id}/cloudforce-one/requests/priority/{priority_id}
@required {account_id: str, priority_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/cloudforce-one/requests/priority/{priority_id}
@required {account_id: str, priority_id: str, labels: [str], priority: int, requirement: str, tlp: str(clear/amber/amber-strict/green/red)}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/cloudforce-one/requests/quota
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/cloudforce-one/requests/types
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/cloudforce-one/requests/{request_id}
@required {account_id: str, request_id: str}
@returns(200) {errors: [map], messages: [map], success: bool}
@errors {4XX}

@endpoint GET /accounts/{account_id}/cloudforce-one/requests/{request_id}
@required {account_id: str, request_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/cloudforce-one/requests/{request_id}
@required {account_id: str, request_id: str}
@optional {content: str, priority: str, request_type: str, summary: str, tlp: str(clear/amber/amber-strict/green/red)}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/cloudforce-one/requests/{request_id}/asset
@required {account_id: str, request_id: str, page: int, per_page: int}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/cloudforce-one/requests/{request_id}/asset/new
@required {account_id: str, request_id: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/cloudforce-one/requests/{request_id}/asset/{asset_id}
@required {account_id: str, request_id: str, asset_id: str}
@returns(200) {errors: [map], messages: [map], success: bool}
@errors {4XX}

@endpoint GET /accounts/{account_id}/cloudforce-one/requests/{request_id}/asset/{asset_id}
@required {account_id: str, request_id: str, asset_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/cloudforce-one/requests/{request_id}/asset/{asset_id}
@required {account_id: str, request_id: str, asset_id: str}
@optional {source: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/cloudforce-one/requests/{request_id}/message
@required {account_id: str, request_id: str, page: int, per_page: int}
@optional {after: any, before: any, sort_by: str, sort_order: str(asc/desc)}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/cloudforce-one/requests/{request_id}/message/new
@required {account_id: str, request_id: str}
@optional {content: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/cloudforce-one/requests/{request_id}/message/{message_id}
@required {account_id: str, request_id: str, message_id: int}
@returns(200) {errors: [map], messages: [map], success: bool}
@errors {4XX}

@endpoint PUT /accounts/{account_id}/cloudforce-one/requests/{request_id}/message/{message_id}
@required {account_id: str, request_id: str, message_id: int}
@optional {content: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/cloudforce-one/rules
@required {account_id: str}
@returns(200) {deleted: num}
@errors {401, 409}

@endpoint GET /accounts/{account_id}/cloudforce-one/rules
@required {account_id: str}
@optional {namespace: any, path: any, recursive: str(true/false), search: str, is_public: str(true/false), limit: num=50, offset: num=0}
@returns(200) {rules: [map], total: num}
@errors {401}

@endpoint POST /accounts/{account_id}/cloudforce-one/rules
@required {account_id: str, content: str, name: str, path: str}
@optional {actions: [map{action_config!: map, action_type!: str, enabled: bool}], commit_message: str, description: str, enabled: bool=true, is_public: bool=false, meta: [map{key!: str, value!: any}], namespaces: [str]=}
@returns(201) {content: str, created_at: num, created_by: str, description: str, enabled: bool, id: str(uuid), is_public: bool, meta: [map], name: str, namespaces: [str], path: str, pending_approval_id: num?, pending_change: map?{approval_id: num, requested_at: num, requested_by: str, type: str}, structured_source: str?, updated_at: num, updated_by: str}
@returns(202) {approval_id: num, message: str}
@errors {400, 401}

@endpoint GET /accounts/{account_id}/cloudforce-one/rules/approvals
@required {account_id: str}
@optional {status: any=pending, latest_only: str(true/false)=false, limit: num=50, offset: num=0, reviewer_scope: str(default/email/unresolved), change_type: str(create/update/delete), rule_id: str(uuid)}
@returns(200) {approvals: [map], total: num}
@errors {400, 403}

@endpoint GET /accounts/{account_id}/cloudforce-one/rules/approvals/{id}
@required {account_id: str, id: str}
@returns(200) {approval: map{audit_log_id: num, can_review: bool, cancelled_at: num?, cancelled_by: str?, change_description: str, change_type: str, commit_message: str?, compiler_warnings: [map], current_rule: any?, id: num, proposed_changes: any?, rejection_reason: str?, requested_at: num, requested_by: str, reviewed_at: num?, reviewer_scope: str, revision_number: int, rule_id: str(uuid), rule_name: str, status: str, superseded_by_approval_id: num?, supersedes_approval_id: num?}}
@errors {400, 403, 404}

@endpoint POST /accounts/{account_id}/cloudforce-one/rules/approvals/{id}/cancel
@required {account_id: str, id: str}
@returns(200) {success: bool}
@errors {403, 404, 409}

@endpoint POST /accounts/{account_id}/cloudforce-one/rules/approvals/{id}/resubmit
@required {account_id: str, id: str}
@optional {commit_message: str, content: str, description: str, enabled: bool, name: str, namespaces: [str]}
@returns(202) {approval_id: num, message: str, requires_approval: bool, revision_number: int, supersedes_approval_id: num}
@errors {400, 403, 404, 409}

@endpoint DELETE /accounts/{account_id}/cloudforce-one/rules/exemptions
@required {account_id: str}
@optional {namespace: [str], tag_match: [str], worker_name: [str]}
@returns(200) {namespace: [str], tag_match: [str], worker_name: [str]}
@errors {400, 401, 403}

@endpoint GET /accounts/{account_id}/cloudforce-one/rules/exemptions
@required {account_id: str}
@returns(200) {namespace: [str], tag_match: [str], worker_name: [str]}
@errors {400, 401, 403}

@endpoint POST /accounts/{account_id}/cloudforce-one/rules/exemptions
@required {account_id: str}
@optional {namespace: [str], tag_match: [str], worker_name: [str]}
@returns(200) {namespace: [str], tag_match: [str], worker_name: [str]}
@errors {400, 401, 403}

@endpoint PUT /accounts/{account_id}/cloudforce-one/rules/exemptions
@required {account_id: str}
@optional {namespace: [map{new_pattern!: str, old_pattern!: str}], tag_match: [map{new_pattern!: str, old_pattern!: str}], worker_name: [map{new_pattern!: str, old_pattern!: str}]}
@returns(200) {namespace: [str], tag_match: [str], worker_name: [str]}
@errors {400, 401, 403, 404, 409}

@endpoint GET /accounts/{account_id}/cloudforce-one/rules/managed
@required {account_id: str}
@returns(200) {metadata: map{fetched_at: str, total_rules: num}, rules: [map]}
@errors {401}

@endpoint GET /accounts/{account_id}/cloudforce-one/rules/search
@required {account_id: str, query: str}
@optional {namespace: any, path: any, recursive: str(true/false), search: str, is_public: str(true/false), limit: num=50, offset: num=0, mode: str(exact/hybrid/vector/keyword)=hybrid, language: str(yara/js)}
@returns(200) {fallback: bool, interpreted: map{filters: map, retrieval_type: str}, mode: str, results: [any], total: int}
@errors {401, 503}

@endpoint GET /accounts/{account_id}/cloudforce-one/rules/stats
@required {account_id: str}
@returns(200) {pending_approvals: num, rules_by_namespace: map, total_rules: num}
@errors {401}

@endpoint GET /accounts/{account_id}/cloudforce-one/rules/structured
@required {account_id: str}
@optional {limit: num=50, offset: num=0, search: str}
@returns(200) {rules: [map], total: num}
@errors {400}

@endpoint POST /accounts/{account_id}/cloudforce-one/rules/structured
@required {account_id: str, condition: map{conditions!: [any], operator!: str, type!: str}, name: str}
@optional {description: str, enabled: bool=true, meta: [map{key!: str, value!: any}], status: str(silent/blocking)=silent, strings: [map{identifier!: str, match_type: str, modifiers: [str], type!: str, value!: str}]=}
@returns(201) {content: str, created_at: num, created_by: str, description: str, enabled: bool, id: str(uuid), is_public: bool, meta: [map], name: str, namespaces: [str], path: str, pending_approval_id: num?, pending_change: map?{approval_id: num, requested_at: num, requested_by: str, type: str}, structured_source: str?, updated_at: num, updated_by: str}
@returns(202) {approval_id: num, message: str}
@errors {400, 401}

@endpoint PUT /accounts/{account_id}/cloudforce-one/rules/structured/approvals/{id}
@required {account_id: str, id: str, condition: map{conditions!: [any], operator!: str, type!: str}, name: str}
@optional {module: str=eml, description: str, enabled: bool=true, meta: [map{key!: str, value!: any}], status: str(silent/blocking)=silent, strings: [map{identifier!: str, match_type: str, modifiers: [str], type!: str, value!: str}]=}
@returns(200) {approval: any}
@errors {400, 403, 404, 409}

@endpoint POST /accounts/{account_id}/cloudforce-one/rules/structured/approvals/{id}/resubmit
@required {account_id: str, id: str, condition: map{conditions!: [any], operator!: str, type!: str}, name: str}
@optional {module: str=eml, description: str, enabled: bool=true, meta: [map{key!: str, value!: any}], status: str(silent/blocking)=silent, strings: [map{identifier!: str, match_type: str, modifiers: [str], type!: str, value!: str}]=}
@returns(202) {approval_id: num, message: str, requires_approval: bool, revision_number: int, supersedes_approval_id: num}
@errors {400, 403, 404, 409}

@endpoint GET /accounts/{account_id}/cloudforce-one/rules/structured/schema
@required {account_id: str}
@returns(200) {arrays: [map], headers: map{fields: [map], path: str}, operators: map{boolean: [str], float: [str], integer: [str], string: [str]}, scalars: [map], string_arrays: [map], structs: [map]}
@errors {400}

@endpoint POST /accounts/{account_id}/cloudforce-one/rules/structured/validate
@required {account_id: str, condition: map{conditions!: [any], operator!: str, type!: str}, name: str}
@optional {description: str, enabled: bool=true, existing_rule_id: str(uuid), meta: [map{key!: str, value!: any}], status: str(silent/blocking)=silent, strings: [map{identifier!: str, match_type: str, modifiers: [str], type!: str, value!: str}]=}
@returns(200) {compiled_yara: str, error: str, valid: bool}
@errors {400}

@endpoint DELETE /accounts/{account_id}/cloudforce-one/rules/structured/{id}
@required {account_id: str, id: str(uuid)}
@returns(200) {success: bool}
@returns(202) {approval_id: num, message: str}
@errors {400, 401, 404, 409}

@endpoint GET /accounts/{account_id}/cloudforce-one/rules/structured/{id}
@required {account_id: str, id: str(uuid)}
@returns(200) {content: str, created_at: num, created_by: str, description: str, enabled: bool, id: str(uuid), is_public: bool, meta: [map], name: str, namespaces: [str], path: str, pending_approval_id: num?, pending_change: map?{approval_id: num, requested_at: num, requested_by: str, type: str}, structured_source: str?, updated_at: num, updated_by: str}
@errors {400, 404}

@endpoint PUT /accounts/{account_id}/cloudforce-one/rules/structured/{id}
@required {account_id: str, id: str(uuid)}
@optional {condition: map{conditions!: [any], operator!: str, type!: str}, description: str, enabled: bool, meta: [map{key!: str, value!: any}], name: str, status: str(silent/blocking), strings: [map{identifier!: str, match_type: str, modifiers: [str], type!: str, value!: str}]}
@returns(200) {content: str, created_at: num, created_by: str, description: str, enabled: bool, id: str(uuid), is_public: bool, meta: [map], name: str, namespaces: [str], path: str, pending_approval_id: num?, pending_change: map?{approval_id: num, requested_at: num, requested_by: str, type: str}, structured_source: str?, updated_at: num, updated_by: str}
@returns(202) {approval_id: num, message: str}
@errors {400, 401, 404, 409}

@endpoint POST /accounts/{account_id}/cloudforce-one/rules/structured/{id}/test
@required {account_id: str, id: str(uuid), sample_json: str}
@returns(200) {error: str, matched: bool, rules: [str]}
@errors {400, 404}

@endpoint GET /accounts/{account_id}/cloudforce-one/rules/tree
@required {account_id: str}
@returns(200) {tree: [map]}
@errors {401}

@endpoint POST /accounts/{account_id}/cloudforce-one/rules/validate
@required {account_id: str, content: str, name: str}
@optional {excludeRuleId: str(uuid), namespaces: [str]=, path: str}
@returns(200) {error: str, valid: bool}
@errors {401}

@endpoint DELETE /accounts/{account_id}/cloudforce-one/rules/{id}
@required {account_id: str, id: str(uuid)}
@optional {commit_message: str}
@returns(200) {success: bool}
@returns(202) {approval_id: num, message: str}
@errors {400, 401, 404, 409}

@endpoint GET /accounts/{account_id}/cloudforce-one/rules/{id}
@required {account_id: str, id: str(uuid)}
@returns(200) {content: str, created_at: num, created_by: str, description: str, enabled: bool, id: str(uuid), is_public: bool, meta: [map], name: str, namespaces: [str], path: str, pending_approval_id: num?, pending_change: map?{approval_id: num, requested_at: num, requested_by: str, type: str}, structured_source: str?, updated_at: num, updated_by: str}
@errors {401, 404}

@endpoint PUT /accounts/{account_id}/cloudforce-one/rules/{id}
@required {account_id: str, id: str(uuid)}
@optional {commit_message: str, content: str, description: str, enabled: bool, is_public: bool, meta: [map{key!: str, value!: any}], name: str, namespaces: [str], path: str}
@returns(200) {content: str, created_at: num, created_by: str, description: str, enabled: bool, id: str(uuid), is_public: bool, meta: [map], name: str, namespaces: [str], path: str, pending_approval_id: num?, pending_change: map?{approval_id: num, requested_at: num, requested_by: str, type: str}, structured_source: str?, updated_at: num, updated_by: str}
@returns(202) {approval_id: num, message: str}
@errors {401, 404, 409}

@endpoint GET /accounts/{account_id}/cloudforce-one/scans/config
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/cloudforce-one/scans/config
@required {account_id: str, ips: [str]}
@optional {frequency: num, ports: [str]}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/cloudforce-one/scans/config/{config_id}
@required {account_id: str, config_id: str}
@returns(200) {errors: [str], messages: [str], result: map, success: bool}
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/cloudforce-one/scans/config/{config_id}
@required {account_id: str, config_id: str}
@optional {frequency: num, ips: [str], ports: [str]}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/cloudforce-one/scans/results/{config_id}
@required {account_id: str, config_id: str}
@returns(200) {errors: [str], messages: [str], result: map{1.1.1.1: [map]}, success: bool}
@errors {4XX}

@endpoint GET /accounts/{account_id}/cloudforce-one/v2/brand-protection/domain/matches
@required {account_id: str, query_id: [str]}
@optional {offset: str=0, limit: str=50, include_domain_id: str=false, include_dismissed: str, domain_search: str, orderBy: str(domain/first_seen/registrar), order: str(asc/desc)}
@returns(200) {matches: [map], total: int}
@errors {4XX}

@endpoint POST /accounts/{account_id}/cloudforce-one/v2/brand-protection/domain/matches/bulk-dismiss
@required {account_id: str, action: str(dismiss/undismiss)}
@optional {match_ids: [int], matches: [map{domain_id!: int, query_id!: int}]}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/cloudforce-one/v2/brand-protection/domain/queries
@required {account_id: str}
@optional {id: str, page: int, per_page: int}
@returns(200) {errors: [map], messages: [map], result: any, result_info: map{count: int, page: int, per_page: int, total_count: int}, success: bool}
@errors {4XX}

@endpoint POST /accounts/{account_id}/cloudforce-one/v2/brand-protection/domain/queries
@required {account_id: str, string_matches: [map{pattern!: str}], tag: str}
@optional {max_time: str, min_time: str, scan: bool, scan_matches: bool, search_lookback: bool=true}
@returns(200) {message: str, query_id: int, success: bool}
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/cloudforce-one/v2/brand-protection/domain/queries/{query_id}
@required {account_id: str, query_id: str}
@returns(200) {message: str, success: bool}
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/cloudforce-one/v2/brand-protection/domain/queries/{query_id}
@required {account_id: str, query_id: str, string_matches: [map{pattern!: str}], tag: str}
@optional {max_time: str, min_time: str, scan: bool, scan_matches: bool, search_lookback: bool=true}
@returns(200) {message: str, query_id: int, success: bool}
@errors {4XX}

@endpoint POST /accounts/{account_id}/cloudforce-one/v2/brand-protection/domain/trial
@required {account_id: str, brand: str}
@returns(200) {matches: [map], total_analyzed: num, total_matches: num, truncated: bool}
@errors {403, 502, 503}

@endpoint POST /accounts/{account_id}/cloudforce-one/v2/brand-protection/letter/generate
@required {account_id: str, fields: map{discoveryDate: str, domain: str, generationDate: str, jurisdiction: str, registrantEmail: str, registrar: str, registrarEmail: str, resolutionByDate: str, senderCompany: str, senderEmail: str, senderName: str, senderTitle: str, trademarkName: str, trademarkNumber: str, trademarkOwner: str}, templateId: str}
@optional {createNotice: bool=false, format: str(text/pdf)=text, noticeParams: map{domain!: str, queryId: int, status: str}}
@returns(200) {letter: str, letterId: int, notice: map{createdAt: str?, domain: str, id: num, matchId: num?, matchType: str?, queryId: num?, status: str, updatedAt: str?}}
@errors {4XX}

@endpoint GET /accounts/{account_id}/cloudforce-one/v2/brand-protection/letter/templates
@required {account_id: str}
@returns(200) {templates: [map]}
@errors {4XX}

@endpoint POST /accounts/{account_id}/cloudforce-one/v2/brand-protection/letter/templates
@required {account_id: str, body: str, category: str, name: str}
@optional {description: str}
@returns(200) {body: str, category: str, createdAt: str?, description: str?, id: str, name: str, source: str, updatedAt: str?}
@errors {4XX}

@endpoint GET /accounts/{account_id}/cloudforce-one/v2/brand-protection/letter/templates/examples
@required {account_id: str}
@returns(200) {templates: [map]}
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/cloudforce-one/v2/brand-protection/letter/templates/{template_id}
@required {account_id: str, template_id: str}
@returns(200) {message: str, success: bool}
@errors {4XX}

@endpoint GET /accounts/{account_id}/cloudforce-one/v2/brand-protection/letter/templates/{template_id}
@required {account_id: str, template_id: str}
@returns(200) {body: str, category: str, createdAt: str?, description: str?, id: str, name: str, source: str, updatedAt: str?}
@errors {4XX}

@endpoint PUT /accounts/{account_id}/cloudforce-one/v2/brand-protection/letter/templates/{template_id}
@required {account_id: str, template_id: str}
@optional {body: str, category: str, description: str, name: str}
@returns(200) {body: str, category: str, createdAt: str?, description: str?, id: str, name: str, source: str, updatedAt: str?}
@errors {4XX}

@endpoint GET /accounts/{account_id}/cloudforce-one/v2/brand-protection/logo/matches
@required {account_id: str, query_id: str}
@optional {offset: str=0, limit: str=50, download: str, orderBy: str(matchedAt/domain/similarityScore/registrar), order: str(asc/desc)}
@returns(200) {matches: [map], total: int}
@errors {4XX}

@endpoint GET /accounts/{account_id}/cloudforce-one/v2/brand-protection/logo/queries
@required {account_id: str}
@optional {id: str, download: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/cloudforce-one/v2/brand-protection/logo/queries
@required {account_id: str, image_data: str, similarity_threshold: num, tag: str}
@optional {search_lookback: bool=true}
@returns(200) {message: str, query_id: int, success: bool}
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/cloudforce-one/v2/brand-protection/logo/queries/{query_id}
@required {account_id: str, query_id: str}
@returns(200) {message: str, success: bool}
@errors {4XX}

@endpoint POST /accounts/{account_id}/cloudforce-one/v2/brand-protection/logo/search
@required {account_id: str, image_data: str}
@optional {showHistoric: str=false, download: str, score_threshold: num=0, top_k: int=10}
@returns(200) {matches: [map]}
@errors {4XX}

@endpoint POST /accounts/{account_id}/cloudforce-one/v2/brand-protection/queries/{query_id}/matches/{domain_id}/dismiss
@required {account_id: str, query_id: int, domain_id: int}
@returns(200) {result: map{dismissed: bool, domain_id: int, query_id: int}, success: bool}
@errors {4XX}

@endpoint POST /accounts/{account_id}/cloudforce-one/v2/brand-protection/queries/{query_id}/matches/{domain_id}/undismiss
@required {account_id: str, query_id: int, domain_id: int}
@returns(200) {result: map{dismissed: bool, domain_id: int, query_id: int}, success: bool}
@errors {4XX}

@endpoint GET /accounts/{account_id}/cloudforce-one/v2/brand-protection/takedown-notices
@required {account_id: str}
@returns(200) {notices: [map]}
@errors {4XX}

@endpoint POST /accounts/{account_id}/cloudforce-one/v2/brand-protection/takedown-notices
@required {account_id: str, domain: str}
@optional {matchId: int, matchType: str(logo/domain), queryId: int, status: str(draft/sent/resolved/expired)=draft}
@returns(200) {createdAt: str?, domain: str, id: num, matchId: num?, matchType: str?, queryId: num?, status: str, updatedAt: str?}
@errors {409}

@endpoint POST /accounts/{account_id}/cloudforce-one/v2/brand-protection/takedown-notices/lookup
@required {account_id: str, domains: [str]}
@optional {queryId: int, queryIds: [int]}
@returns(200) {notices: [map]}
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/cloudforce-one/v2/brand-protection/takedown-notices/{notice_id}
@required {account_id: str, notice_id: int}
@returns(200) {message: str, success: bool}
@errors {4XX}

@endpoint GET /accounts/{account_id}/cloudforce-one/v2/brand-protection/takedown-notices/{notice_id}
@required {account_id: str, notice_id: int}
@returns(200) {createdAt: str?, domain: str, id: num, matchId: num?, matchType: str?, queryId: num?, status: str, updatedAt: str?}
@errors {4XX}

@endpoint PUT /accounts/{account_id}/cloudforce-one/v2/brand-protection/takedown-notices/{notice_id}
@required {account_id: str, notice_id: int}
@optional {domain: str, matchId: int, matchType: str(logo/domain), queryId: int, status: str(draft/sent/resolved/expired)}
@returns(200) {createdAt: str?, domain: str, id: num, matchId: num?, matchType: str?, queryId: num?, status: str, updatedAt: str?}
@errors {409}

@endpoint GET /accounts/{account_id}/cloudforce-one/v2/brand-protection/takedown-notices/{notice_id}/letters
@required {account_id: str, notice_id: int}
@returns(200) {letters: [map]}
@errors {4XX}

@endpoint POST /accounts/{account_id}/cloudforce-one/v2/brand-protection/takedown-notices/{notice_id}/letters
@required {account_id: str, notice_id: int, fields: map{discoveryDate: str, domain: str, generationDate: str, jurisdiction: str, registrantEmail: str, registrar: str, registrarEmail: str, resolutionByDate: str, senderCompany: str, senderEmail: str, senderName: str, senderTitle: str, trademarkName: str, trademarkNumber: str, trademarkOwner: str}, templateId: str}
@returns(200) {createdAt: str?, id: num, letterText: str, letterType: str, takedownNoticeId: num, templateId: str}
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/cloudforce-one/v2/brand-protection/takedown-notices/{notice_id}/letters/{letter_id}
@required {account_id: str, notice_id: int, letter_id: int}
@returns(200) {message: str, success: bool}
@errors {4XX}

@endpoint GET /accounts/{account_id}/cloudforce-one/v2/brand-protection/takedown-notices/{notice_id}/letters/{letter_id}
@required {account_id: str, notice_id: int, letter_id: int}
@returns(200) {createdAt: str?, id: num, letterText: str, letterType: str, takedownNoticeId: num, templateId: str}
@errors {4XX}

@endpoint GET /accounts/{account_id}/cloudforce-one/v2/brand-protection/takedown-notices/{notice_id}/letters/{letter_id}/pdf
@required {account_id: str, notice_id: int, letter_id: int}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/cloudforce-one/v2/brand-protection/total-queries
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/cloudforce-one/v2/collections
@required {account_id: str}
@optional {page: num, limit: num}
@returns(200) {pagination: map{limit: num, page: num, total: num}, result: [map], success: bool}
@errors {4XX}

@endpoint POST /accounts/{account_id}/cloudforce-one/v2/collections
@required {account_id: str}
@returns(201) {result: map{columns: [map], created_at: str(date-time), created_by: str, description: str, id: str(uuid), item_count: int, name: str, project_id: str, status: str, tags: [str], updated_at: str(date-time)}, success: bool}
@errors {400, 409, 413}

@endpoint DELETE /accounts/{account_id}/cloudforce-one/v2/collections/{collection_id}
@required {account_id: str, collection_id: str}
@returns(200) {errors: [map], messages: [map], success: bool}
@errors {404}

@endpoint GET /accounts/{account_id}/cloudforce-one/v2/collections/{collection_id}
@required {account_id: str, collection_id: str}
@returns(200) {result: map{columns: [map], created_at: str, created_by: str, id: str, item_count: num, metadata: map, name: str, status: str, updated_at: str}, success: bool}
@errors {404}

@endpoint PATCH /accounts/{account_id}/cloudforce-one/v2/collections/{collection_id}
@required {account_id: str, collection_id: str}
@optional {metadata: map{description: str, project_id: str, tags: [str]}, name: str}
@returns(200) {result: map{created_at: str, created_by: str, id: str, item_count: num, metadata: map, name: str, status: str, updated_at: str}, success: bool}
@errors {404}

@endpoint POST /accounts/{account_id}/cloudforce-one/v2/collections/{collection_id}/columns
@required {account_id: str, collection_id: str, name: str, type: str(text/number/boolean/date)}
@optional {default: map, required: bool=false}
@returns(200) {result: map{id: str(uuid), name: str, position: num, required: bool, type: str}, success: bool}
@errors {404, 409}

@endpoint DELETE /accounts/{account_id}/cloudforce-one/v2/collections/{collection_id}/columns/{column_id}
@required {account_id: str, collection_id: str, column_id: str}
@returns(200) {result: map{id: str, name: str, position: num, required: bool, type: str}}
@errors {400, 404}

@endpoint PATCH /accounts/{account_id}/cloudforce-one/v2/collections/{collection_id}/columns/{column_id}
@required {account_id: str, collection_id: str, column_id: str}
@optional {name: str, position: num, required: bool, type: str(text/number/boolean/date)}
@returns(200) {result: map{id: str, name: str, position: num, required: bool, type: str}}
@errors {400, 404, 409}

@endpoint GET /accounts/{account_id}/cloudforce-one/v2/collections/{collection_id}/export
@required {account_id: str, collection_id: str}
@optional {include_ids: bool, accept: str}
@returns(200)
@errors {404, 406}

@endpoint GET /accounts/{account_id}/cloudforce-one/v2/collections/{collection_id}/items
@required {account_id: str, collection_id: str}
@optional {cursor: str, limit: num, q: str}
@returns(200) {pagination: map{cursors: map{current: str, first: str, next: str?, prev: str?}, limit: num, page: num, total: num}, result: [map], success: bool}
@errors {400, 404}

@endpoint POST /accounts/{account_id}/cloudforce-one/v2/collections/{collection_id}/items
@required {account_id: str, collection_id: str}
@returns(201)
@errors {400, 404}

@endpoint DELETE /accounts/{account_id}/cloudforce-one/v2/collections/{collection_id}/items/{item_id}
@required {account_id: str, collection_id: str, item_id: str}
@returns(200) {result: map{deleted: bool}, success: bool}
@errors {404}

@endpoint GET /accounts/{account_id}/cloudforce-one/v2/collections/{collection_id}/items/{item_id}
@required {account_id: str, collection_id: str, item_id: str}
@returns(200) {result: map{created_at: str, data: map, id: str, updated_at: str}, success: bool}
@errors {404}

@endpoint PATCH /accounts/{account_id}/cloudforce-one/v2/collections/{collection_id}/items/{item_id}
@required {account_id: str, collection_id: str, item_id: str, data: map}
@returns(200) {result: map{created_at: str, data: map, id: str, updated_at: str}, success: bool}
@errors {400, 404}

@endpoint POST /accounts/{account_id}/cloudforce-one/v2/collections/{collection_id}/search
@required {account_id: str, collection_id: str}
@optional {cursor: str, filter: map, limit: int=20, q: str, sort: map{field!: str, order: str}}
@returns(200) {pagination: map{cursors: map{current: str, first: str, next: str?, prev: str?}, limit: num, page: num, total: num}, result: [map], success: bool}
@errors {400, 404}

@endpoint GET /accounts/{account_id}/cloudforce-one/v2/credential-monitor/domains
@required {account_id: str}
@optional {page: int=1, per_page: int=100}
@returns(200) {result: [map], result_info: map{count: num, page: num, per_page: num, total_count: num}, success: bool}
@errors {400}

@endpoint POST /accounts/{account_id}/cloudforce-one/v2/credential-monitor/domains
@required {account_id: str, domain: str}
@returns(201) {result: map{domain: str, id: int}, success: bool}
@errors {400, 409}

@endpoint DELETE /accounts/{account_id}/cloudforce-one/v2/credential-monitor/domains/{id}
@required {account_id: str, id: int}
@returns(200) {result: map{deleted: bool, domain: str, id: int}, success: bool}
@errors {404}

@endpoint GET /accounts/{account_id}/cloudforce-one/v2/credential-monitor/matches
@required {account_id: str}
@optional {domain: str, username: str, page: int=1, per_page: int=100}
@returns(200) {result: [map], result_info: map{count: int, page: int, per_page: int, total_count: int}, success: bool}
@errors {400}

@endpoint POST /accounts/{account_id}/cloudforce-one/v2/events/graphql
@required {account_id: str}
@returns(200) {data: map?, errors: [map]?}
@errors {400}

@endpoint GET /accounts/{account_id}/cloudforce-one/v2/priority-intelligence
@required {account_id: str}
@optional {page: int=1, per_page: int=20}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/cloudforce-one/v2/priority-intelligence
@required {account_id: str, requirement: str}
@optional {labels: [str]=, priority: int=0, tlp: str=amber}
@returns(200)
@errors {403, 429}

@endpoint GET /accounts/{account_id}/cloudforce-one/v2/priority-intelligence/constants
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/cloudforce-one/v2/priority-intelligence/interests
@required {account_id: str}
@optional {page: int=1, per_page: int=20, enabled: str(true/false)}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/cloudforce-one/v2/priority-intelligence/interests
@required {account_id: str, dimension: str(actor/targetIndustry/category/country/attackerCountry/targetCountry/mitreAttack/killChain/mitreCapec), value: str}
@optional {enabled: bool=true}
@returns(200)
@errors {400, 409}

@endpoint POST /accounts/{account_id}/cloudforce-one/v2/priority-intelligence/interests/backtests
@required {account_id: str}
@optional {as_of: str(date-time), backtest_days: int=30, candidate_limit: int, dataset_ids: [str], emerging_min_current_count: int, established_min_absolute_delta: int, established_min_prior_count: int, established_min_relative_delta: num, window_days: int=7}
@returns(200)
@errors {400}

@endpoint GET /accounts/{account_id}/cloudforce-one/v2/priority-intelligence/interests/backtests/{backtest_id}
@required {account_id: str, backtest_id: str(uuid)}
@returns(200)
@errors {404}

@endpoint POST /accounts/{account_id}/cloudforce-one/v2/priority-intelligence/interests/evaluations
@required {account_id: str}
@optional {as_of: str(date-time), candidate_limit: int, dataset_ids: [str], emerging_min_current_count: int, established_min_absolute_delta: int, established_min_prior_count: int, established_min_relative_delta: num, window_days: int=7}
@returns(200)
@errors {400}

@endpoint GET /accounts/{account_id}/cloudforce-one/v2/priority-intelligence/interests/evaluations/{evaluation_id}
@required {account_id: str, evaluation_id: str(uuid)}
@returns(200)
@errors {404}

@endpoint DELETE /accounts/{account_id}/cloudforce-one/v2/priority-intelligence/interests/{interest_id}
@required {account_id: str, interest_id: str(uuid)}
@returns(200)
@errors {404}

@endpoint PATCH /accounts/{account_id}/cloudforce-one/v2/priority-intelligence/interests/{interest_id}
@required {account_id: str, interest_id: str(uuid)}
@optional {enabled: bool, value: str}
@returns(200)
@errors {404, 409}

@endpoint POST /accounts/{account_id}/cloudforce-one/v2/priority-intelligence/quota
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/cloudforce-one/v2/priority-intelligence/{priority_id}
@required {account_id: str, priority_id: str(uuid)}
@returns(200)
@errors {404}

@endpoint GET /accounts/{account_id}/cloudforce-one/v2/priority-intelligence/{priority_id}
@required {account_id: str, priority_id: str(uuid)}
@returns(200)
@errors {404}

@endpoint PUT /accounts/{account_id}/cloudforce-one/v2/priority-intelligence/{priority_id}
@required {account_id: str, priority_id: str(uuid)}
@optional {labels: [str], priority: int, requirement: str, tlp: str}
@returns(200)
@errors {404}

@endpoint GET /accounts/{account_id}/cloudforce-one/v2/requests/legal-response/access-check
@required {account_id: str}
@returns(200) {errors: [str], messages: [str], result: map{allowed: bool}, success: bool}
@errors {401}

@endpoint GET /accounts/{account_id}/cloudforce-one/v2/requests/{project_type}
@required {account_id: str, project_type: str(threat-intelligence/incident-response/ir-emergency-response/table-top/pentest/irp/threat-hunting/cybersecurity-assessment/react-general/legal-response/soc-alerts/demo)}
@optional {page: num, pageSize: num, status: str, search: str, createdBy: str, assignee: str, requestType: str, priority: str, tlp: str, id: str, readableId: str, summary: str, accountId: str, metadata: str, orderBy: str, order: str}
@returns(200) {pagination: map{page: num, pageSize: num, total: num, totalPages: num}, result: [map], success: str}
@errors {4XX}

@endpoint POST /accounts/{account_id}/cloudforce-one/v2/requests/{project_type}
@required {account_id: str, project_type: str(threat-intelligence/incident-response/ir-emergency-response/table-top/pentest/irp/threat-hunting/cybersecurity-assessment/react-general/legal-response/soc-alerts/demo)}
@optional {description: str, eventId: str, metadata: map, priority: str(low/routine/high/urgent/unknown/medium/critical), request_type: str, subtypeId: str, title: str, tlp: str(clear/green/amber/amber-strict/red/purple/white/amber+strict)}
@returns(201) {account: map{anniversary: str(date-time), id: str, name: str}, assignee: str?, completed: str(date-time)?, created: str(date-time), id: str, investigation_id: str, is_free_request: bool, message_tokens: num, priority: str, readable_id: str, release_entitlements: str?, report_id: str, request: map{category: str, message_tokens: num, name: str, request_tokens: num, response_tokens: num, result: str, source: str}, status: str, summary: str, tlp: str, tokens: num, updated: str(date-time)}
@errors {400, 500}

@endpoint GET /accounts/{account_id}/cloudforce-one/v2/requests/{project_type}/constants
@required {account_id: str, project_type: str(threat-intelligence/incident-response/ir-emergency-response/table-top/pentest/irp/threat-hunting/cybersecurity-assessment/react-general/legal-response/soc-alerts/demo)}
@returns(200) {properties: map{result: map{properties: map{priority: map, priority_token_surcharge: map, status: map, tlp: map}, type: str}, success: map{type: str}}, type: str}
@errors {4XX}

@endpoint GET /accounts/{account_id}/cloudforce-one/v2/requests/{project_type}/metadata
@required {account_id: str, project_type: str(threat-intelligence/incident-response/ir-emergency-response/table-top/pentest/irp/threat-hunting/cybersecurity-assessment/react-general/legal-response/soc-alerts/demo)}
@optional {request_type: str, country: str}
@returns(200) {data: [map], success: bool}
@errors {401}

@endpoint GET /accounts/{account_id}/cloudforce-one/v2/requests/{project_type}/quota
@required {account_id: str, project_type: str(threat-intelligence/incident-response/ir-emergency-response/table-top/pentest/irp/threat-hunting/cybersecurity-assessment/react-general/legal-response/soc-alerts/demo)}
@returns(200)
@errors {404, 422}

@endpoint GET /accounts/{account_id}/cloudforce-one/v2/requests/{project_type}/types
@required {account_id: str, project_type: str}
@returns(200) {result: map{project_type: str, request_types: [map], total: num}, success: bool}
@errors {4XX}

@endpoint GET /accounts/{account_id}/cloudforce-one/v2/requests/{project_type}/user/me
@required {account_id: str, project_type: str}
@returns(200) {display_name: str, id: str}
@errors {404}

@endpoint GET /accounts/{account_id}/cloudforce-one/v2/requests/{project_type}/{request_id}
@required {account_id: str, project_type: str(threat-intelligence/incident-response/ir-emergency-response/table-top/pentest/irp/threat-hunting/cybersecurity-assessment/react-general/legal-response/soc-alerts/demo), request_id: str}
@returns(200) {account: map{anniversary: str(date-time), id: str, name: str}, assignee: str?, completed: str(date-time)?, created: str(date-time), id: str, investigation_id: str, is_free_request: bool, message_tokens: num, priority: str, readable_id: str, release_entitlements: str?, report_id: str, request: map{category: str, message_tokens: num, name: str, request_tokens: num, response_tokens: num, result: str, source: str}, status: str, summary: str, tlp: str, tokens: num, updated: str(date-time)}
@errors {400, 404}

@endpoint PUT /accounts/{account_id}/cloudforce-one/v2/requests/{project_type}/{request_id}
@required {account_id: str, project_type: str(threat-intelligence/incident-response/ir-emergency-response/table-top/pentest/irp/threat-hunting/cybersecurity-assessment/react-general/legal-response/soc-alerts/demo), request_id: str}
@optional {description: str, eventId: str, priority: str(low/routine/high/urgent/unknown/medium/critical), request_type: str, subtypeId: str, summary: str, title: str, tlp: str(clear/green/amber/amber-strict/red/purple/white/amber+strict)}
@returns(200) {account: map{anniversary: str(date-time), id: str, name: str}, assignee: str?, completed: str(date-time)?, created: str(date-time), id: str, investigation_id: str, is_free_request: bool, message_tokens: num, priority: str, readable_id: str, release_entitlements: str?, report_id: str, request: map{category: str, message_tokens: num, name: str, request_tokens: num, response_tokens: num, result: str, source: str}, status: str, summary: str, tlp: str, tokens: num, updated: str(date-time)}
@errors {400, 404}

@endpoint GET /accounts/{account_id}/cloudforce-one/v2/requests/{project_type}/{request_id}/assets/list
@required {account_id: str, project_type: str(threat-intelligence/incident-response/ir-emergency-response/table-top/pentest/irp/threat-hunting/cybersecurity-assessment/react-general/legal-response/soc-alerts/demo), request_id: str}
@returns(200) {properties: map{assets: map{items: map{properties: map, type: str}, type: str}, count: map{type: str}}, type: str}
@errors {4XX}

@endpoint POST /accounts/{account_id}/cloudforce-one/v2/requests/{project_type}/{request_id}/assets/upload
@required {account_id: str, project_type: str(threat-intelligence/incident-response/ir-emergency-response/table-top/pentest/irp/threat-hunting/cybersecurity-assessment/react-general/legal-response/soc-alerts/demo), request_id: str}
@returns(200) {properties: map{contentType: map{type: str}, downloadable: map{description: str, type: str}, expiresAt: map{nullable: bool, type: str}, fileName: map{type: str}, fileSize: map{type: str}, id: map{type: str}, is_cloudflare_team: map{description: str, type: str}, metadata: map{additionalProperties: map{type: str}, nullable: bool, type: str}, origin: map{type: str}, state: map{type: str}, tlp: map{enum: [str], type: str}, uploadedAt: map{type: str}}, type: str}
@errors {4XX}

@endpoint GET /accounts/{account_id}/cloudforce-one/v2/requests/{project_type}/{request_id}/assets/{asset_id}/download
@required {account_id: str, project_type: str(threat-intelligence/incident-response/ir-emergency-response/table-top/pentest/irp/threat-hunting/cybersecurity-assessment/react-general/legal-response/soc-alerts/demo), request_id: str, asset_id: str}
@returns(200)
@errors {404, 410}

@endpoint GET /accounts/{account_id}/cloudforce-one/v2/requests/{project_type}/{request_id}/messages
@required {account_id: str, project_type: str, request_id: str}
@optional {page: str=1, per_page: str=10}
@returns(200) {messages: [map], result_info: map{has_more: bool, page: int, per_page: int, total_count: int}}
@errors {404, 500}

@endpoint POST /accounts/{account_id}/cloudforce-one/v2/requests/{project_type}/{request_id}/messages/new
@required {account_id: str, project_type: str, request_id: str, content: str}
@optional {Idempotency-Key: str, attachment_asset_ids: [str], author_id: str, author_name: str, publish: bool=false, tlp: str(clear/green/amber/amber-strict/red/white)=red}
@returns(200) {attachments: [map], content: str, created: str, id: int, is_cloudflare_team: bool, is_published: bool, published: str?, tlp: str, updated: str}
@errors {400, 404, 409, 500}

@endpoint GET /accounts/{account_id}/cloudforce-one/v2/requests/{project_type}/{request_id}/messages/{message_id}
@required {account_id: str, project_type: str, request_id: str, message_id: str}
@returns(200) {attachments: [map], content: str, created: str, id: int, is_cloudflare_team: bool, is_published: bool, published: str?, tlp: str, updated: str}
@errors {404, 500}

@endpoint PUT /accounts/{account_id}/cloudforce-one/v2/requests/{project_type}/{request_id}/messages/{message_id}
@required {account_id: str, project_type: str, request_id: str, message_id: str, content: str, publish: bool, tlp: str(clear/green/amber/amber-strict/red/white)}
@optional {Idempotency-Key: str, attachment_asset_ids: [str]}
@returns(200) {message: map{attachments: [map], content: str, created: str, id: int, is_cloudflare_team: bool, is_published: bool, published: str?, tlp: str, updated: str}}
@errors {400, 404, 409, 500}

@endpoint GET /accounts/{account_id}/cloudforce-one/v2/threat-signals/articles
@required {account_id: str}
@optional {cursor: str, per_page: int=20, feed_id: str(uuid), article_id: str(uuid), read: bool, tag_id: str(uuid), tag: str, tag_category: str, include_total: bool=false, search: str, published_after: str(date-time), published_before: str(date-time), fetched_after: str(date-time), fetched_before: str(date-time), feed_category: str, source_type: str(curated/custom), tag_applied_by: str(ai/analyst), sort: str=-fetched_at}
@returns(200) {errors: [map], result: map{articles: [map], has_more: bool, next_cursor: str?, total_count: num?, total_count_is_exact: bool}, success: bool}
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/cloudforce-one/v2/threat-signals/articles
@required {account_id: str, article_ids: [str(uuid)], read: bool}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/cloudforce-one/v2/threat-signals/articles/{article_id}
@required {account_id: str, article_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/cloudforce-one/v2/threat-signals/articles/{article_id}
@required {account_id: str, article_id: str(uuid), read: bool}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/cloudforce-one/v2/threat-signals/articles/{article_id}/content
@required {account_id: str, article_id: str(uuid)}
@optional {format: str(text/html)}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/cloudforce-one/v2/threat-signals/articles/{article_id}/skills/{skill_id}/diagnostic
@required {account_id: str, article_id: str(uuid), skill_id: str}
@returns(200) {errors: [map], messages: [map], result: map{batches: [any], executedBatchCount: int, plannedBatchCount: int, skillId: str}, success: bool}
@errors {4XX}

@endpoint GET /accounts/{account_id}/cloudforce-one/v2/threat-signals/articles/{article_id}/skills/{skill_id}/output
@required {account_id: str, article_id: str(uuid), skill_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/cloudforce-one/v2/threat-signals/articles/{article_id}/tag
@required {account_id: str, article_id: str(uuid)}
@returns(200) {errors: [map], messages: [map], result: map{tag_skill_version: str, tags: [map]}, success: bool}
@errors {4XX}

@endpoint POST /accounts/{account_id}/cloudforce-one/v2/threat-signals/articles/{article_id}/tags
@required {account_id: str, article_id: str(uuid), tag_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/cloudforce-one/v2/threat-signals/articles/{article_id}/tags/{tag_id}
@required {account_id: str, article_id: str(uuid), tag_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/cloudforce-one/v2/threat-signals/curated-feeds
@required {account_id: str}
@optional {category: str, include_inactive: bool=false}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/cloudforce-one/v2/threat-signals/curated-feeds
@required {account_id: str, category: str, name: str, url: str(uri)}
@optional {display_order: int, is_active: bool=true, why_valuable: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/cloudforce-one/v2/threat-signals/curated-feeds/bulk
@required {account_id: str, feeds: [map{category!: str, display_order: int, is_active: bool, name!: str, url!: str(uri), why_valuable: str}]}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/cloudforce-one/v2/threat-signals/curated-feeds/opt-out
@required {account_id: str, opted_out: bool}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/cloudforce-one/v2/threat-signals/curated-feeds/{curated_feed_id}
@required {account_id: str, curated_feed_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/cloudforce-one/v2/threat-signals/curated-feeds/{curated_feed_id}
@required {account_id: str, curated_feed_id: str(uuid)}
@optional {category: str, display_order: int, is_active: bool, name: str, url: str(uri), why_valuable: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/cloudforce-one/v2/threat-signals/feeds
@required {account_id: str}
@optional {page: int=1, per_page: int=20, limit: int, sort: str=-created_at, category: str, source_type: str(curated/custom), enabled: bool, status: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/cloudforce-one/v2/threat-signals/feeds
@required {account_id: str}
@optional {category: str, curated_feed_id: str(uuid), display_name: str, enabled: bool=true, poll_interval_s: int=300, title: str, url: str(uri)}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/cloudforce-one/v2/threat-signals/feeds/poll
@required {account_id: str}
@optional {feed_id: any}
@returns(200) {errors: [map], result: map{errors: num, feeds: [map], triggered: num}, success: bool}
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/cloudforce-one/v2/threat-signals/feeds/{feed_id}
@required {account_id: str, feed_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/cloudforce-one/v2/threat-signals/feeds/{feed_id}
@required {account_id: str, feed_id: str(uuid)}
@optional {category: str, display_name: str, enabled: bool, poll_interval_s: int, title: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/cloudforce-one/v2/threat-signals/feeds/{feed_id}/raw
@required {account_id: str, feed_id: str(uuid)}
@optional {format: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/cloudforce-one/v2/threat-signals/feeds/{feed_id}/skills
@required {account_id: str, feed_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/cloudforce-one/v2/threat-signals/feeds/{feed_id}/skills
@required {account_id: str, feed_id: str(uuid), skill_ids: [str(uuid)]}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/cloudforce-one/v2/threat-signals/health
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/cloudforce-one/v2/threat-signals/indicators
@required {account_id: str}
@optional {feed_id: str(uuid), article_id: str(uuid), search: str, per_page: int=20, sort: str=id, include_total: bool=false, cursor: str}
@returns(200) {errors: [map], result: map{indicators: [map], pagination: map{count: int, cursor: str?, has_more: bool, page: int, per_page: int, total_count: int?, total_count_is_exact: bool}}, success: bool}
@errors {4XX}

@endpoint GET /accounts/{account_id}/cloudforce-one/v2/threat-signals/skills
@required {account_id: str}
@optional {page: int=1, per_page: int=20}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/cloudforce-one/v2/threat-signals/skills
@required {account_id: str, name: str, output_schema: str, prompt: str, type: str(summary/tags)}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/cloudforce-one/v2/threat-signals/skills/{skill_id}
@required {account_id: str, skill_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/cloudforce-one/v2/threat-signals/skills/{skill_id}
@required {account_id: str, skill_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/cloudforce-one/v2/threat-signals/skills/{skill_id}
@required {account_id: str, skill_id: str}
@optional {config: str, is_active: bool, name: str, output_schema: str, prompt: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/cloudforce-one/v2/threat-signals/skills/{skill_id}/tag-categories
@required {account_id: str, skill_id: str}
@returns(200) {errors: [map], result: map{category_uuids: [str(uuid)], skill_id: str}, success: bool}
@errors {4XX}

@endpoint PUT /accounts/{account_id}/cloudforce-one/v2/threat-signals/skills/{skill_id}/tag-categories
@required {account_id: str, skill_id: str, category_uuids: [str(uuid)]}
@returns(200) {errors: [map], result: map{category_uuids: [str(uuid)], skill_id: str}, success: bool}
@errors {4XX}

@endpoint GET /accounts/{account_id}/cni/cnis
@required {account_id: str}
@optional {slot: str, tunnel_id: str, cursor: int(int32), limit: int}
@returns(200) {items: [map], next: int(int32)?}
@errors {400, 500}

@endpoint POST /accounts/{account_id}/cni/cnis
@required {account_id: str, account: str, interconnect: str, magic: map{conduit_name!: str, description!: str, mtu!: int(int32)}}
@optional {bgp: map{customer_asn!: int(int32), extra_prefixes!: [str(A.B.C.D/N)], md5_key: str}}
@returns(200) {account: str, bgp: map{customer_asn: int(int32), extra_prefixes: [str(A.B.C.D/N)], md5_key: str?}, bgp_mode: str, cust_ip: str(A.B.C.D/N), id: str(uuid), interconnect: str, magic: map{conduit_name: str, description: str, mtu: int(int32)}, p2p_ip: str(A.B.C.D/N)}
@errors {400, 409, 500}

@endpoint DELETE /accounts/{account_id}/cni/cnis/{cni}
@required {cni: str(uuid), account_id: str}
@returns(200)
@errors {400, 404, 500}

@endpoint GET /accounts/{account_id}/cni/cnis/{cni}
@required {cni: str(uuid), account_id: str}
@returns(200) {account: str, bgp: map{customer_asn: int(int32), extra_prefixes: [str(A.B.C.D/N)], md5_key: str?}, bgp_mode: str, cust_ip: str(A.B.C.D/N), id: str(uuid), interconnect: str, magic: map{conduit_name: str, description: str, mtu: int(int32)}, p2p_ip: str(A.B.C.D/N)}
@errors {400, 404, 500}

@endpoint PUT /accounts/{account_id}/cni/cnis/{cni}
@required {cni: str(uuid), account_id: str, account: str, cust_ip: str(A.B.C.D/N), id: str(uuid), interconnect: str, magic: map{conduit_name!: str, description!: str, mtu!: int(int32)}, p2p_ip: str(A.B.C.D/N)}
@optional {bgp: map{customer_asn!: int(int32), extra_prefixes!: [str(A.B.C.D/N)], md5_key: str}, bgp_mode: str(dynamic_route_exchange/advertise_only)}
@returns(200) {account: str, bgp: map{customer_asn: int(int32), extra_prefixes: [str(A.B.C.D/N)], md5_key: str?}, bgp_mode: str, cust_ip: str(A.B.C.D/N), id: str(uuid), interconnect: str, magic: map{conduit_name: str, description: str, mtu: int(int32)}, p2p_ip: str(A.B.C.D/N)}
@errors {400, 404, 500}

@endpoint GET /accounts/{account_id}/cni/interconnects
@required {account_id: str}
@optional {site: str, type: str, cursor: int(int32), limit: int}
@returns(200) {items: [map], next: int(int32)?}
@errors {400, 500}

@endpoint POST /accounts/{account_id}/cni/interconnects
@required {account_id: str}
@returns(200)
@errors {400, 500}

@endpoint DELETE /accounts/{account_id}/cni/interconnects/{icon}
@required {icon: str, account_id: str}
@returns(200)
@errors {400, 404, 500}

@endpoint GET /accounts/{account_id}/cni/interconnects/{icon}
@required {icon: str, account_id: str}
@returns(200)
@errors {400, 404, 500}

@endpoint GET /accounts/{account_id}/cni/interconnects/{icon}/loa
@required {icon: str, account_id: str}
@optional {name: str}
@returns(200)
@errors {400, 404, 500}

@endpoint GET /accounts/{account_id}/cni/interconnects/{icon}/loa/default
@required {icon: str, account_id: str}
@returns(200) {name: str}
@errors {400, 404, 500}

@endpoint GET /accounts/{account_id}/cni/interconnects/{icon}/status
@required {icon: str, account_id: str}
@returns(200)
@errors {400, 404, 500}

@endpoint GET /accounts/{account_id}/cni/settings
@required {account_id: str}
@returns(200) {default_asn: int(int32)}
@errors {400, 404, 500}

@endpoint PUT /accounts/{account_id}/cni/settings
@required {account_id: str}
@optional {default_asn: int(int32)}
@returns(200) {default_asn: int(int32)}
@errors {400, 404, 500}

@endpoint GET /accounts/{account_id}/cni/slots
@required {account_id: str}
@optional {address_contains: str, site: str, speed: str, occupied: bool, cursor: int(int32), limit: int}
@returns(200) {items: [map], next: int(int32)?}
@errors {400, 500}

@endpoint GET /accounts/{account_id}/cni/slots/{slot}
@required {slot: str(uuid), account_id: str}
@returns(200) {account: str, ccr_device_name: str?, facility: map{address: [str], name: str}, id: str(uuid), occupied: bool, site: str, speed: str}
@errors {400, 404, 500}

@endpoint GET /accounts/{account_id}/connectivity/directory/services
@required {account_id: str}
@optional {type: str, page: int(int32)=1, per_page: int(int32)=1000}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/connectivity/directory/services
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/connectivity/directory/services/{service_id}
@required {account_id: str, service_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/connectivity/directory/services/{service_id}
@required {account_id: str, service_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/connectivity/directory/services/{service_id}
@required {account_id: str, service_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/containers/applications
@optional {name: str, image: str}
@returns(200)
@errors {401, 500}

@endpoint POST /accounts/{account_id}/containers/applications
@returns(201)
@errors {400, 401, 403, 500}

@endpoint DELETE /accounts/{account_id}/containers/applications/{application_id}
@required {application_id: str}
@returns(200)
@errors {401, 404, 500}

@endpoint GET /accounts/{account_id}/containers/applications/{application_id}
@required {application_id: str}
@returns(200)
@errors {401, 404, 500}

@endpoint PATCH /accounts/{account_id}/containers/applications/{application_id}
@required {application_id: str}
@optional {configuration: map{authorized_keys: [map], wrangler_ssh: map}, constraints: map{jurisdiction: str, regions: [str]}, max_instances: int, observability: any, rollout_active_grace_period: int=0}
@returns(200)
@errors {400, 401, 403, 404, 500}

@endpoint GET /accounts/{account_id}/containers/applications/{application_id}/instances
@required {application_id: str}
@optional {per_page: int, page_token: str, state: str(active/not-active), name_prefix: str}
@returns(200)
@errors {400, 401, 404, 500}

@endpoint GET /accounts/{account_id}/containers/applications/{application_id}/instances/{instance_id}
@required {application_id: str, instance_id: str}
@returns(200)
@errors {400, 401, 404, 500}

@endpoint POST /accounts/{account_id}/containers/applications/{application_id}/rollouts
@required {application_id: str, description: str, strategy: str(rolling/new_instances), target_configuration: map{authorized_keys: [map], command: [str], entrypoint: [str], environment_variables: [map], image: str, instance_type: str, observability: map}}
@optional {kind: str(full_auto/full_manual)=full_auto, percentage: int, step_percentage: int(5/10/20/25/50/100), steps: [map{description!: str, step_size!: map}]}
@returns(201)
@errors {400, 401, 403, 404, 500}

@endpoint GET /accounts/{account_id}/containers/applications/{application_id}/versions
@required {application_id: str}
@returns(200)
@errors {401, 404, 500}

@endpoint POST /accounts/{account_id}/containers/image-preparations
@required {image: str}
@returns(200)
@returns(202)
@errors {400, 401, 403, 500}

@endpoint GET /accounts/{account_id}/containers/registries
@returns(200)
@errors {401, 500}

@endpoint POST /accounts/{account_id}/containers/registries
@required {auth: map{private_credential!: any, public_credential!: str}, domain: str, kind: any}
@optional {is_public: bool}
@returns(201)
@errors {400, 403, 409, 500}

@endpoint DELETE /accounts/{account_id}/containers/registries/{domain}
@required {domain: str}
@returns(200)
@errors {403, 404, 409, 500}

@endpoint POST /accounts/{account_id}/containers/registries/{domain}/credentials
@required {domain: str}
@optional {expiration_minutes: int, permissions: [str]}
@returns(201)
@errors {400, 403, 404, 409, 500}

@endpoint GET /accounts/{account_id}/custom_csrs
@required {account_id: str}
@optional {page: num=1, per_page: num=50, order: str(name/account_tag/created_at)=created_at, direction: str(asc/desc)=asc}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/custom_csrs
@required {account_id: str, common_name: str, country: str, locality: str, organization: str, sans: [str], state: str}
@optional {description: str, key_type: str(rsa2048/p256v1)=rsa2048, name: str, organizational_unit: str}
@returns(201)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/custom_csrs/{custom_csr_id}
@required {custom_csr_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/custom_csrs/{custom_csr_id}
@required {custom_csr_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/custom_ns
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/custom_ns
@required {account_id: str, ns_name: str(hostname)}
@optional {ns_set: num=1}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/custom_ns/{custom_ns_id}
@required {custom_ns_id: str(hostname), account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/d1/database
@required {account_id: str}
@optional {name: str, page: num=1, per_page: num=1000}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/d1/database
@required {account_id: str, name: str}
@optional {jurisdiction: str(eu/fedramp/us), primary_location_hint: str(wnam/enam/weur/eeur/apac/oc), read_replication: map{mode!: str}}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/d1/database/{database_id}
@required {account_id: str, database_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/d1/database/{database_id}
@required {account_id: str, database_id: any}
@optional {fields: [str]}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/d1/database/{database_id}
@required {account_id: str, database_id: str}
@optional {read_replication: map{mode!: str}}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/d1/database/{database_id}
@required {account_id: str, database_id: str, read_replication: map{mode!: str}}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/d1/database/{database_id}/export
@required {account_id: str, database_id: str, output_format: str}
@optional {current_bookmark: str, dump_options: map{no_data: bool, no_schema: bool, tables: [str]}}
@returns(200)
@returns(202)
@errors {4XX}

@endpoint POST /accounts/{account_id}/d1/database/{database_id}/import
@required {account_id: str, database_id: str}
@returns(200)
@returns(202)
@errors {4XX}

@endpoint POST /accounts/{account_id}/d1/database/{database_id}/query
@required {account_id: str, database_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/d1/database/{database_id}/raw
@required {account_id: str, database_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/d1/database/{database_id}/time_travel/bookmark
@required {account_id: str, database_id: str}
@optional {timestamp: str(date-time)}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/d1/database/{database_id}/time_travel/restore
@required {account_id: str, database_id: str}
@optional {bookmark: str, timestamp: str(date-time)}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/data-security/posture/content
@required {account_id: str}
@optional {direction: str(asc/desc), dlp_profile_id: str(uuid), integration_id: str(uuid), max_affliction_date: str(date-time), min_affliction_date: str(date-time), order: str(asset_name/dlp_profile_count/integration_name/latest_affliction_date), page: int, per_page: int, search: str, vendor: str}
@returns(200)
@errors {400, 429}

@endpoint POST /accounts/{account_id}/data-security/posture/content/export
@required {account_id: str, dlp_profile_information: [map{entries!: [map], id!: str(uuid), name!: str}]}
@optional {dlp_profile_id: [str(uuid)], integration_id: [str(uuid)], max_affliction_date: str(date-time), min_affliction_date: str(date-time), orders: [map], search: str, vendors: [str]}
@returns(200)
@errors {400}

@endpoint GET /accounts/{account_id}/data-security/posture/exports
@required {account_id: str}
@optional {page: int, per_page: int, status: str}
@returns(200)
@errors {400}

@endpoint GET /accounts/{account_id}/data-security/posture/exports/{id}
@required {account_id: str, id: str}
@returns(200)
@errors {400, 404}

@endpoint GET /accounts/{account_id}/data-security/posture/finding_types
@required {account_id: str}
@optional {page: int, per_page: int, vendors: [str], search: str}
@returns(200)
@errors {400}

@endpoint GET /accounts/{account_id}/data-security/posture/finding_types/{finding_type_id}
@required {account_id: str, finding_type_id: str(uuid)}
@returns(200)
@errors {400, 404}

@endpoint GET /accounts/{account_id}/data-security/posture/finding_types/{finding_type_id}/remediation_types
@required {account_id: str, finding_type_id: str(uuid)}
@optional {integration_id: str(uuid), cursor: str, page: int, per_page: int}
@returns(200)
@errors {400, 404}

@endpoint GET /accounts/{account_id}/data-security/posture/findings
@required {account_id: str}
@optional {cursor: str, direction: str(asc/desc), ignored: bool, integration_id: str(uuid), max_affliction_date: str(date-time), min_affliction_date: str(date-time), observation: str(Activity/Insight/Issue), order: str(finding.name/instance_count/integration.name/latest_affliction_date/severity), page: int, per_page: int, product: str(Cloud/Saas), search: str, severity: str(Critical/High/Medium/Low), type: str(Content/Posture), vendor: str, finding_type_ids: str(uuid)}
@returns(200)
@errors {400, 401, 403}

@endpoint POST /accounts/{account_id}/data-security/posture/findings/export
@required {account_id: str}
@optional {ignored: bool, integration_id: [str(uuid)], max_affliction_date: str(date-time), min_affliction_date: str(date-time), orders: [map{direction!: str, name!: str}], product: str, search: str, severities: [str], vendors: [str]}
@returns(200)
@errors {400}

@endpoint POST /accounts/{account_id}/data-security/posture/findings/ignore
@required {account_id: str, checks: [str]}
@returns(200)
@errors {400}

@endpoint POST /accounts/{account_id}/data-security/posture/findings/unignore
@required {account_id: str, checks: [str]}
@returns(200)
@errors {400}

@endpoint GET /accounts/{account_id}/data-security/posture/findings/{finding_id}
@required {account_id: str, finding_id: str(byte)}
@returns(200)
@errors {400, 401, 403, 404}

@endpoint GET /accounts/{account_id}/data-security/posture/findings/{finding_id}/instances
@required {account_id: str, finding_id: str(byte)}
@optional {archived: bool, cursor: str, direction: str(asc/desc), max_affliction_date: str(date-time), min_affliction_date: str(date-time), order: str(affliction_date/asset.name/remediation.status), page: int, per_page: int, search: str, remediation_statuses: [str], finding_instance_ids: [str(uuid)], asset_ids: [str(uuid)]}
@returns(200)
@errors {400, 404}

@endpoint POST /accounts/{account_id}/data-security/posture/findings/{finding_id}/instances/archive
@required {account_id: str, finding_id: str(byte), check_instances: [str(uuid)]}
@returns(200)
@errors {400, 404}

@endpoint POST /accounts/{account_id}/data-security/posture/findings/{finding_id}/instances/unarchive
@required {account_id: str, finding_id: str(byte), check_instances: [str(uuid)]}
@returns(200)
@errors {400, 404}

@endpoint GET /accounts/{account_id}/data-security/posture/findings/{finding_id}/instances/{instance_id}
@required {account_id: str, finding_id: str(byte), instance_id: str(uuid)}
@returns(200)
@errors {400, 404}

@endpoint POST /accounts/{account_id}/data-security/posture/findings/{finding_id}/reset_finding_severity
@required {account_id: str, finding_id: str(byte)}
@returns(200)
@errors {400, 404, 500}

@endpoint POST /accounts/{account_id}/data-security/posture/findings/{finding_id}/tune_finding_severity
@required {account_id: str, finding_id: str(byte), new_severity: int(1/2/3/4)}
@returns(200)
@errors {400, 404, 500}

@endpoint POST /accounts/{account_id}/data-security/posture/findings/{storage_namespace_id}/instances/export
@required {account_id: str, storage_namespace_id: str}
@optional {archived: bool, max_affliction_date: str(date-time), min_affliction_date: str(date-time), orders: [map{direction!: str, name!: str}]=, search: str}
@returns(200)
@errors {400, 404}

@endpoint GET /accounts/{account_id}/data-security/posture/policies
@required {account_id: str}
@optional {cursor: str}
@returns(200)
@errors {400, 401, 403}

@endpoint POST /accounts/{account_id}/data-security/posture/policies
@required {account_id: str, actions: map{remediation_types: [map], webhook_configs: [map]}, applies_to_all_integrations: bool, display_name: str, enabled: bool, finding_type_id: str(uuid)}
@optional {description: str, integration_ids: [str(uuid)]}
@returns(200)
@errors {400, 401, 403, 404}

@endpoint GET /accounts/{account_id}/data-security/posture/policies/logs
@required {account_id: str}
@optional {since: str(date-time), until: str(date-time), integration_id: str, policy_name: str, page: int, per_page: int}
@returns(200)
@errors {400, 401, 403, 502, 504}

@endpoint DELETE /accounts/{account_id}/data-security/posture/policies/{policy_id}
@required {account_id: str, policy_id: str(uuid)}
@returns(200)
@errors {400, 401, 403, 404}

@endpoint GET /accounts/{account_id}/data-security/posture/policies/{policy_id}
@required {account_id: str, policy_id: str(uuid)}
@returns(200)
@errors {400, 401, 403, 404}

@endpoint PUT /accounts/{account_id}/data-security/posture/policies/{policy_id}
@required {account_id: str, policy_id: str(uuid), actions: map{remediation_types: [map], webhook_configs: [map]}, applies_to_all_integrations: bool, display_name: str, enabled: bool}
@optional {description: str, integration_ids: [str(uuid)]}
@returns(200)
@errors {400, 401, 403, 404}

@endpoint GET /accounts/{account_id}/data-security/posture/remediations/jobs
@required {account_id: str}
@optional {cursor: str, page: int, per_page: int, search: str, min_updated_at: str(date-time), max_updated_at: str(date-time), status: str, triggered_by_actor: [str], integration_id: str(uuid), order: str(created_at/affliction_date/integration_name/status/last_updated_at/asset_name/finding_type_name), direction: str(asc/desc)}
@returns(200) {errors: [map], messages: [map], result: [map], result_info: map{count: int, cursor: str?, page: int, per_page: int, total_count: int}, success: bool}
@errors {400}

@endpoint POST /accounts/{account_id}/data-security/posture/remediations/jobs
@required {account_id: str, finding_instance_ids: [str(uuid)], remediation_type_id: str(uuid)}
@returns(200) {errors: [map], messages: [map], result: map{created: [map], failed: [map]}, success: bool}
@errors {400, 409}

@endpoint POST /accounts/{account_id}/data-security/posture/remediations/jobs/export
@required {account_id: str}
@optional {integration_id: [str(uuid)], max_updated_at: str(date-time), min_updated_at: str(date-time), orders: [map{direction!: str, name!: str}]=, search: str, status: [str]}
@returns(200)
@errors {400}

@endpoint GET /accounts/{account_id}/data-security/posture/webhooks
@required {account_id: str}
@returns(200)
@errors {401, 403}

@endpoint POST /accounts/{account_id}/data-security/posture/webhooks
@required {account_id: str, authentication_type: str(Basic Auth/None/Bearer Auth/Static Headers/HMAC-Signing), destination_url: str(uri), label: str}
@optional {headers: [map{key!: str, value: str}], signing_secret: str, status: str(enabled/disabled)=enabled}
@returns(200)
@errors {400, 401, 403, 422}

@endpoint POST /accounts/{account_id}/data-security/posture/webhooks/evaluate
@required {account_id: str, authentication_type: str(Basic Auth/None/Bearer Auth/Static Headers/HMAC-Signing), destination_url: str(uri)}
@optional {headers: [map{key!: str, value: str}], signing_secret: str}
@returns(200)
@errors {400, 401, 403}

@endpoint POST /accounts/{account_id}/data-security/posture/webhooks/jobs
@required {account_id: str, finding_instance_ids: [str(uuid)], webhook_ids: [str(uuid)]}
@returns(200)
@errors {400, 401, 403, 404}

@endpoint DELETE /accounts/{account_id}/data-security/posture/webhooks/{webhook_id}
@required {account_id: str, webhook_id: str(uuid)}
@returns(200) {errors: [map], messages: [map], success: bool}
@errors {400, 409}

@endpoint GET /accounts/{account_id}/data-security/posture/webhooks/{webhook_id}
@required {account_id: str, webhook_id: str(uuid)}
@returns(200)
@errors {400, 401, 403, 404}

@endpoint PUT /accounts/{account_id}/data-security/posture/webhooks/{webhook_id}
@required {account_id: str, webhook_id: str(uuid), authentication_type: str(Basic Auth/None/Bearer Auth/Static Headers/HMAC-Signing), destination_url: str(uri), label: str, status: str(enabled/disabled)}
@optional {headers: [map{key!: str, value: str}], signing_secret: str}
@returns(200)
@errors {400, 401, 403, 404}

@endpoint POST /accounts/{account_id}/data-security/posture/webhooks/{webhook_id}/evaluate
@required {account_id: str, webhook_id: str(uuid)}
@returns(200)
@errors {400, 401, 403, 404}

@endpoint GET /accounts/{account_id}/devices
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/devices/client-versions
@required {account_id: str, target_environment: str, release_track: str(ga/beta)}
@optional {page: int=1, per_page: int=20}
@returns(200) {errors: [map], messages: [map], result: [map], result_info: map{count: int, page: int, per_page: int, total_count: int, total_pages: int}, success: bool}
@errors {4XX}

@endpoint GET /accounts/{account_id}/devices/client-versions/target-environments
@required {account_id: str}
@returns(200) {errors: [map], messages: [map], result: [map], success: bool}
@errors {4XX}

@endpoint GET /accounts/{account_id}/devices/deployment-groups
@required {account_id: str}
@optional {page: int=1, per_page: int=50}
@returns(200) {errors: [map], messages: [map], result: [map], result_info: map{count: int, page: int, per_page: int, total_count: int, total_pages: int}, success: bool}
@errors {4XX}

@endpoint POST /accounts/{account_id}/devices/deployment-groups
@required {account_id: str, name: str, version_config: [map{target_environment!: str, version!: str}]}
@optional {policy_ids: [str]}
@returns(200) {errors: [map], messages: [map], result: map{created_at: str, id: str, name: str, policy_ids: [str]?, updated_at: str, version_config: [map]}, success: bool}
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/devices/deployment-groups/{group_id}
@required {account_id: str, group_id: str}
@returns(200) {errors: [map], messages: [map], result: map{id: str}, success: bool}
@errors {4XX}

@endpoint GET /accounts/{account_id}/devices/deployment-groups/{group_id}
@required {account_id: str, group_id: str}
@returns(200) {errors: [map], messages: [map], result: map{created_at: str, id: str, name: str, policy_ids: [str]?, updated_at: str, version_config: [map]}, success: bool}
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/devices/deployment-groups/{group_id}
@required {account_id: str, group_id: str}
@optional {name: str, policy_ids: [str], version_config: [map{target_environment!: str, version!: str}]}
@returns(200) {errors: [map], messages: [map], result: map{created_at: str, id: str, name: str, policy_ids: [str]?, updated_at: str, version_config: [map]}, success: bool}
@errors {4XX}

@endpoint GET /accounts/{account_id}/devices/ip-profiles
@required {account_id: str}
@optional {page: int=1, per_page: int=50}
@returns(200) {errors: [map], messages: [map], result: [map], result_info: map{count: int, page: int, per_page: int, total_count: int, total_pages: int}, success: bool}
@errors {4XX}

@endpoint POST /accounts/{account_id}/devices/ip-profiles
@required {account_id: str, match: str, name: str, precedence: int, subnet_id: str}
@optional {description: str, enabled: bool=true}
@returns(200) {errors: [map], messages: [map], result: map{created_at: str, description: str?, enabled: bool, id: str, match: str, name: str, precedence: int, subnet_id: str, updated_at: str}, success: bool}
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/devices/ip-profiles/{profile_id}
@required {account_id: str, profile_id: str}
@returns(200) {errors: [map], messages: [map], result: map{id: str}, success: bool}
@errors {4XX}

@endpoint GET /accounts/{account_id}/devices/ip-profiles/{profile_id}
@required {account_id: str, profile_id: str}
@returns(200) {errors: [map], messages: [map], result: map{created_at: str, description: str?, enabled: bool, id: str, match: str, name: str, precedence: int, subnet_id: str, updated_at: str}, success: bool}
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/devices/ip-profiles/{profile_id}
@required {account_id: str, profile_id: str}
@optional {description: str, enabled: bool, match: str, name: str, precedence: int, subnet_id: str}
@returns(200) {errors: [map], messages: [map], result: map{created_at: str, description: str?, enabled: bool, id: str, match: str, name: str, precedence: int, subnet_id: str, updated_at: str}, success: bool}
@errors {4XX}

@endpoint GET /accounts/{account_id}/devices/networks
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/devices/networks
@required {account_id: str, config: map, name: str, type: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/devices/networks/{network_id}
@required {network_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/devices/networks/{network_id}
@required {network_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/devices/networks/{network_id}
@required {network_id: str, account_id: str}
@optional {config: map, name: str, type: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/devices/physical-devices
@required {account_id: str}
@optional {cursor: str, sort_by: str(name/id/client_version/last_seen_user.email/last_seen_at/active_registrations/created_at), sort_order: str(asc/desc), last_seen_user.email: str, seen_after: str, seen_before: str, per_page: int(uint64), search: str, active_registrations: str(include/only/exclude), has_registration_type: str, id: [str], last_seen_registration.policy.id: str(uuid), include: str}
@returns(200) {errors: [map], messages: [map], result: [map], result_info: map{count: int, cursor: str, per_page: int, total_count: int?}, success: bool}
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/devices/physical-devices/{device_id}
@required {device_id: str, account_id: str}
@returns(200) {errors: [map], messages: [map], result: map?, success: bool}
@errors {4XX}

@endpoint GET /accounts/{account_id}/devices/physical-devices/{device_id}
@required {device_id: str, account_id: str}
@optional {include: str}
@returns(200) {errors: [map], messages: [map], result: map{active_registrations: int, client_version: str?, created_at: str, deleted_at: str?, device_type: str?, hardware_id: str?, id: str, last_seen_at: str?, last_seen_registration: map?, last_seen_user: map?, mac_address: str?, manufacturer: str?, model: str?, name: str, os_version: str?, os_version_extra: str?, public_ip: str?, serial_number: str?, updated_at: str}, success: bool}
@errors {4XX}

@endpoint POST /accounts/{account_id}/devices/physical-devices/{device_id}/revoke
@required {account_id: str, device_id: str}
@returns(200) {errors: [map], messages: [map], result: map?, success: bool}
@errors {4XX}

@endpoint GET /accounts/{account_id}/devices/policies
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/devices/policy
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/devices/policy
@required {account_id: str}
@optional {allow_mode_switch: bool=false, allow_updates: bool=false, allowed_to_leave: bool=true, auto_connect: num=0, captive_portal: num=180, disable_auto_fallback: bool=false, dns_search_suffixes: [map{description: str, suffix!: str}]=, exclude: [map], exclude_office_ips: bool=false, global_acceleration: map{api_endpoints!: [str], enabled!: bool, masque_endpoints!: [str], wireguard_endpoints!: [str]}, include: [map], lan_allow_minutes: num, lan_allow_subnet_size: num, register_interface_ip_with_dns: bool=true, sccm_vpn_boundary_support: bool=false, service_mode_v2: map{mode: str, port: num}, support_url: str=, switch_locked: bool=false, tunnel_protocol: str=, uninstall_protection: bool=false, virtual_networks: map{allowed!: [str(uuid)], default!: str(uuid)}}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/devices/policy
@required {account_id: str, match: str, name: str, precedence: num}
@optional {allow_mode_switch: bool=false, allow_updates: bool=false, allowed_to_leave: bool=true, auto_connect: num=0, captive_portal: num=180, description: any, disable_auto_fallback: bool=false, dns_search_suffixes: [map{description: str, suffix!: str}]=, enabled: bool=true, exclude: [map], exclude_office_ips: bool=false, global_acceleration: map{api_endpoints!: [str], enabled!: bool, masque_endpoints!: [str], wireguard_endpoints!: [str]}, include: [map], lan_allow_minutes: num, lan_allow_subnet_size: num, register_interface_ip_with_dns: bool=true, sccm_vpn_boundary_support: bool=false, service_mode_v2: map{mode: str, port: num}, support_url: str=, switch_locked: bool=false, tunnel_protocol: str=, uninstall_protection: bool=false, virtual_networks: map{allowed!: [str(uuid)], default!: str(uuid)}}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/devices/policy/exclude
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/devices/policy/exclude
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/devices/policy/fallback_domains
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/devices/policy/fallback_domains
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/devices/policy/include
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/devices/policy/include
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/devices/policy/{policy_id}
@required {policy_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/devices/policy/{policy_id}
@required {policy_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/devices/policy/{policy_id}
@required {policy_id: str, account_id: str}
@optional {allow_mode_switch: bool=false, allow_updates: bool=false, allowed_to_leave: bool=true, auto_connect: num=0, captive_portal: num=180, description: str, disable_auto_fallback: bool=false, dns_search_suffixes: [map{description: str, suffix!: str}]=, enabled: bool, exclude: [map], exclude_office_ips: bool=false, global_acceleration: map{api_endpoints!: [str], enabled!: bool, masque_endpoints!: [str], wireguard_endpoints!: [str]}, include: [map], lan_allow_minutes: num, lan_allow_subnet_size: num, match: str, name: str, precedence: num, register_interface_ip_with_dns: bool=true, sccm_vpn_boundary_support: bool=false, service_mode_v2: map{mode: str, port: num}, support_url: str=, switch_locked: bool=false, tunnel_protocol: str=, uninstall_protection: bool=false, virtual_networks: map{allowed!: [str(uuid)], default!: str(uuid)}}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/devices/policy/{policy_id}/exclude
@required {policy_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/devices/policy/{policy_id}/exclude
@required {policy_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/devices/policy/{policy_id}/fallback_domains
@required {policy_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/devices/policy/{policy_id}/fallback_domains
@required {policy_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/devices/policy/{policy_id}/include
@required {policy_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/devices/policy/{policy_id}/include
@required {policy_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/devices/posture
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/devices/posture
@required {account_id: str, name: str, type: str(file/application/tanium/gateway/warp/disk_encryption/serial_number/sentinelone/carbonblack/firewall/os_version/domain_joined/client_certificate/client_certificate_v2/antivirus/unique_client_id/kolide/tanium_s2s/crowdstrike_s2s/intune/workspace_one/sentinelone_s2s/custom_s2s)}
@optional {description: str, expiration: str, input: map, match: [map{platform: str}], schedule: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/devices/posture/integration
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/devices/posture/integration
@required {account_id: str, config: map, interval: str, name: str, type: str(workspace_one/crowdstrike_s2s/uptycs/intune/kolide/tanium_s2s/sentinelone_s2s/custom_s2s)}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/devices/posture/integration/{integration_id}
@required {integration_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/devices/posture/integration/{integration_id}
@required {integration_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/devices/posture/integration/{integration_id}
@required {integration_id: str, account_id: str}
@optional {config: map, interval: str, name: str, type: str(workspace_one/crowdstrike_s2s/uptycs/intune/kolide/tanium_s2s/sentinelone_s2s/custom_s2s)}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/devices/posture/{rule_id}
@required {rule_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/devices/posture/{rule_id}
@required {rule_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/devices/posture/{rule_id}
@required {rule_id: str, account_id: str, name: str, type: str(file/application/tanium/gateway/warp/disk_encryption/serial_number/sentinelone/carbonblack/firewall/os_version/domain_joined/client_certificate/client_certificate_v2/antivirus/unique_client_id/kolide/tanium_s2s/crowdstrike_s2s/intune/workspace_one/sentinelone_s2s/custom_s2s)}
@optional {description: str, expiration: str, input: map, match: [map{platform: str}], schedule: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/devices/registrations
@required {account_id: str, id: [str]}
@returns(200) {errors: [map], messages: [map], result: map?, result_info: map{count: int, cursor: str, per_page: int, total_count: int?}, success: bool}
@errors {4XX}

@endpoint GET /accounts/{account_id}/devices/registrations
@required {account_id: str}
@optional {user.id: [str], seen_after: str, seen_before: str, status: str(active/all/revoked), registration_type: str, per_page: int(uint64), search: str, sort_by: str(id/user.name/user.email/last_seen_at/created_at), sort_order: str(asc/desc), cursor: str, id: [str], device.id: str, policy.id: str(uuid), include: str}
@returns(200) {errors: [map], messages: [map], result: [map], result_info: map{count: int, cursor: str, per_page: int, total_count: int?}, success: bool}
@errors {4XX}

@endpoint POST /accounts/{account_id}/devices/registrations/revoke
@required {account_id: str, id: [str]}
@returns(200) {errors: [map], messages: [map], result: map?, result_info: map{count: int, cursor: str, per_page: int, total_count: int?}, success: bool}
@errors {4XX}

@endpoint POST /accounts/{account_id}/devices/registrations/unrevoke
@required {account_id: str, id: [str]}
@returns(200) {errors: [map], messages: [map], result: map?, result_info: map{count: int, cursor: str, per_page: int, total_count: int?}, success: bool}
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/devices/registrations/{registration_id}
@required {registration_id: str, account_id: str}
@returns(200) {errors: [map], messages: [map], result: map?, success: bool}
@errors {4XX}

@endpoint GET /accounts/{account_id}/devices/registrations/{registration_id}
@required {registration_id: str, account_id: str}
@optional {include: str}
@returns(200) {errors: [map], messages: [map], result: map{created_at: str, deleted_at: str?, device: map{client_version: str, id: str, name: str}, id: str, key: str, key_type: str?, last_seen_at: str, policy: map{default: bool, deleted: bool, id: str, name: str, updated_at: str}, registration_type: str, revoked_at: str?, tunnel_type: str?, updated_at: str, user: map{email: str, id: str, name: str}, virtual_ipv4: str?, virtual_ipv6: str?}, success: bool}
@errors {4XX}

@endpoint GET /accounts/{account_id}/devices/registrations/{registration_id}/override_codes
@required {account_id: str, registration_id: str}
@returns(200) {errors: [map], messages: [map], result: any, success: bool}
@errors {4XX}

@endpoint GET /accounts/{account_id}/devices/resilience/disconnect
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/devices/resilience/disconnect
@required {account_id: str, disconnect: bool}
@optional {justification: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/devices/revoke
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/devices/settings
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/devices/settings
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/devices/settings
@required {account_id: str}
@optional {disable_for_time: num, external_emergency_signal_enabled: bool, external_emergency_signal_fingerprint: str, external_emergency_signal_interval: str, external_emergency_signal_url: str, gateway_proxy_enabled: bool, gateway_udp_proxy_enabled: bool, root_certificate_installation_enabled: bool, use_zt_virtual_ip: bool}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/devices/settings
@required {account_id: str}
@optional {disable_for_time: num, external_emergency_signal_enabled: bool, external_emergency_signal_fingerprint: str, external_emergency_signal_interval: str, external_emergency_signal_url: str, gateway_proxy_enabled: bool, gateway_udp_proxy_enabled: bool, root_certificate_installation_enabled: bool, use_zt_virtual_ip: bool}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/devices/unrevoke
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/devices/{device_id}
@required {device_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/devices/{device_id}/override_codes
@required {device_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/dex/colos
@required {account_id: str, from: str, to: str}
@optional {sortBy: str(fleet-status-usage/application-tests-usage)}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/dex/commands
@required {account_id: str, page: num=1, per_page: num}
@optional {from: str(date-time), to: str(date-time), device_id: str, user_email: str, command_type: str(pcap/speed-test/warp-diag), status: str(PENDING_EXEC/PENDING_UPLOAD/SUCCESS/FAILED)}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/dex/commands
@required {account_id: str, commands: [map{args: map, device_id!: str, registration_id: str, type!: str, user_email!: str}]}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/dex/commands/devices
@required {account_id: str, page: num=1, per_page: num}
@optional {search: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/dex/commands/quota
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/dex/commands/{command_id}/downloads/{filename}
@required {account_id: str, command_id: str, filename: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/dex/devices/dex_tests
@required {account_id: str}
@optional {page: num=1, per_page: num=10, testName: str, kind: str(http/traceroute)}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/dex/devices/dex_tests
@required {account_id: str, data: map{host!: str, kind!: str, method: str}, enabled: bool, interval: str, name: str}
@optional {created: str(date-time), description: str, target_policies: any, targeted: bool, test_id: str, updated: str(date-time)}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/dex/devices/dex_tests/{dex_test_id}
@required {account_id: str, dex_test_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/dex/devices/dex_tests/{dex_test_id}
@required {account_id: str, dex_test_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/dex/devices/dex_tests/{dex_test_id}
@required {account_id: str, dex_test_id: str, data: map{host!: str, kind!: str, method: str}, enabled: bool, interval: str, name: str}
@optional {created: str(date-time), description: str, target_policies: any, targeted: bool, test_id: str, updated: str(date-time)}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/dex/devices/{device_id}/fleet-status/live
@required {account_id: str, device_id: str, since_minutes: num}
@optional {time_now: str, colo: str}
@returns(200) {alwaysOn: bool?, batteryCharging: bool?, batteryCycles: int(int64)?, batteryPct: num(float)?, colo: str, connectionType: str?, cpuPct: num(float)?, cpuPctByApp: [map]?, deviceId: str, deviceIpv4: map?, deviceIpv6: map?, deviceName: str, deviceRegistration: str?, diskReadBps: int(int64)?, diskUsagePct: num(float)?, diskWriteBps: int(int64)?, dohSubdomain: str?, estimatedLossPct: num(float)?, firewallEnabled: bool?, gatewayIpv4: map?, gatewayIpv6: map?, handshakeLatencyMs: num(int64)?, ispIpv4: map?, ispIpv6: map?, metal: str?, mode: str, networkRcvdBps: int(int64)?, networkSentBps: int(int64)?, networkSsid: str?, personEmail: str, platform: str, ramAvailableKb: int(int64)?, ramUsedPct: num(float)?, ramUsedPctByApp: [map]?, registrationId: str?, rtt: map?, status: str, switchLocked: bool?, timestamp: str, tunnelStats: map?, tunnelType: str?, version: str, wifiStrengthDbm: int(int64)?}
@errors {4XX}

@endpoint GET /accounts/{account_id}/dex/devices/{device_id}/fleet-status/over-time
@required {account_id: str, device_id: str, from: str, to: str, interval: str(minute/hour)}
@optional {colo: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/dex/devices/{device_id}/isps
@required {account_id: str, device_id: str, per_page: int}
@optional {page: int=1, cursor: str, sort_by: str=time_start, sort_order: str(ASC/DESC)=DESC, from: str(date-time), to: str(date-time)}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/dex/fleet-status/devices
@required {account_id: str, to: str, from: str, page: num, per_page: num}
@optional {sort_by: str, colo: str, device_id: str, mode: str, status: str, platform: str, version: str, source: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/dex/fleet-status/live
@required {account_id: str, since_minutes: num}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/dex/fleet-status/over-time
@required {account_id: str, to: str, from: str}
@optional {colo: str, device_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/dex/http-tests/{test_id}
@required {account_id: str, test_id: str, from: str, to: str, interval: str(minute/hour)}
@optional {deviceId: [str], colo: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/dex/http-tests/{test_id}/percentiles
@required {account_id: str, test_id: str, from: str, to: str}
@optional {deviceId: [str], colo: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/dex/rules
@required {account_id: str, page: num=1, per_page: num}
@optional {sort_order: str(ASC/DESC)=ASC, sort_by: str(name/created_at/updated_at)=name, name: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/dex/rules
@required {account_id: str, match: str, name: str}
@optional {description: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/dex/rules/{rule_id}
@required {account_id: str, rule_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/dex/rules/{rule_id}
@required {account_id: str, rule_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/dex/rules/{rule_id}
@required {account_id: str, rule_id: str}
@optional {description: str, match: str, name: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/dex/tests/overview
@required {account_id: str}
@optional {colo: str, testName: str, deviceId: [str], registration_id: str, page: num=1, per_page: num=10, kind: str(http/traceroute)}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/dex/tests/unique-devices
@required {account_id: str}
@optional {testName: str, deviceId: [str]}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/dex/traceroute-test-results/{test_result_id}/network-path
@required {account_id: str, test_result_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/dex/traceroute-tests/{test_id}
@required {account_id: str, test_id: str, from: str, to: str, interval: str(minute/hour)}
@optional {deviceId: [str], colo: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/dex/traceroute-tests/{test_id}/network-path
@required {account_id: str, test_id: str, deviceId: str, from: str, to: str, interval: str(minute/hour)}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/dex/traceroute-tests/{test_id}/percentiles
@required {account_id: str, test_id: str, from: str, to: str}
@optional {deviceId: [str], colo: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/dex/warp-change-events
@required {account_id: str, page: num=1, per_page: num, from: str, to: str}
@optional {type: str(config/toggle), toggle: str(on/off), config_name: str, account_name: str, sort_order: str(ASC/DESC)=ASC}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/diagnostics/endpoint-healthchecks
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/diagnostics/endpoint-healthchecks
@required {account_id: str, check_type: str=icmp, endpoint: str}
@optional {name: str}
@returns(201)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/diagnostics/endpoint-healthchecks/{id}
@required {account_id: str, id: str}
@returns(200) {errors: [map], messages: [map], success: bool}
@errors {4XX}

@endpoint GET /accounts/{account_id}/diagnostics/endpoint-healthchecks/{id}
@required {account_id: str, id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/diagnostics/endpoint-healthchecks/{id}
@required {account_id: str, id: str, check_type: str=icmp, endpoint: str}
@optional {name: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/diagnostics/traceroute
@required {account_id: str, targets: [str]}
@optional {colos: [str], options: map{max_ttl: int, packet_type: str, packets_per_ttl: int, port: int, wait_time: int}}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/dlp/custom_prompt_topics
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/dlp/custom_prompt_topics
@required {account_id: str, enabled: bool, name: str, topic: str}
@optional {description: str, profile_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/dlp/custom_prompt_topics/{entry_id}
@required {account_id: str, entry_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/dlp/custom_prompt_topics/{entry_id}
@required {account_id: str, entry_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/dlp/custom_prompt_topics/{entry_id}
@required {account_id: str, entry_id: str(uuid), enabled: bool, name: str, topic: str}
@optional {description: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/dlp/data_classes
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/dlp/data_classes
@required {account_id: str, data_tags: [str(uuid)], expression: str, name: str, sensitivity_levels: [map{group_id!: str(uuid), level_id!: str(uuid)}]}
@optional {description: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/dlp/data_classes/{data_class_id}
@required {account_id: str, data_class_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/dlp/data_classes/{data_class_id}
@required {account_id: str, data_class_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/dlp/data_classes/{data_class_id}
@required {account_id: str, data_class_id: str(uuid)}
@optional {data_tags: [str(uuid)], description: str, expression: str, name: str, sensitivity_levels: [map{group_id!: str(uuid), level_id!: str(uuid)}]}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/dlp/data_tag_categories
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/dlp/data_tag_categories
@required {account_id: str, name: str}
@optional {description: str, tags: [map{description: str, name!: str}], template_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/dlp/data_tag_categories/{category_id}
@required {account_id: str, category_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/dlp/data_tag_categories/{category_id}
@required {account_id: str, category_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/dlp/data_tag_categories/{category_id}
@required {account_id: str, category_id: str(uuid)}
@optional {description: str, name: str, tags: [any]}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/dlp/data_tag_categories/{category_id}/data_tags
@required {account_id: str, category_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/dlp/data_tag_categories/{category_id}/data_tags
@required {account_id: str, category_id: str(uuid), name: str}
@optional {description: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/dlp/data_tag_categories/{category_id}/data_tags/{tag_id}
@required {account_id: str, category_id: str(uuid), tag_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/dlp/data_tag_categories/{category_id}/data_tags/{tag_id}
@required {account_id: str, category_id: str(uuid), tag_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/dlp/data_tag_categories/{category_id}/data_tags/{tag_id}
@required {account_id: str, category_id: str(uuid), tag_id: str(uuid)}
@optional {description: str, name: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/dlp/data_tag_category_templates
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/dlp/data_tag_category_templates/{template_id}
@required {account_id: str, template_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/dlp/datasets
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/dlp/datasets
@required {account_id: str, name: str}
@optional {case_sensitive: bool, description: str, encoding_version: int(int32), secret: bool}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/dlp/datasets/{dataset_id}
@required {account_id: str, dataset_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/dlp/datasets/{dataset_id}
@required {account_id: str, dataset_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/dlp/datasets/{dataset_id}
@required {account_id: str, dataset_id: str(uuid)}
@optional {case_sensitive: bool, description: str, name: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/dlp/datasets/{dataset_id}/upload
@required {account_id: str, dataset_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/dlp/datasets/{dataset_id}/upload/{version}
@required {account_id: str, dataset_id: str(uuid), version: int(int64)}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/dlp/datasets/{dataset_id}/versions/{version}
@required {account_id: str, dataset_id: str(uuid), version: int(int64)}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/dlp/datasets/{dataset_id}/versions/{version}/entries/{entry_id}
@required {account_id: str, dataset_id: str(uuid), version: int(int64), entry_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/dlp/document_fingerprints
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/dlp/document_fingerprints
@required {account_id: str, match_percent: int(int32), name: str}
@optional {description: str=}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/dlp/document_fingerprints/{document_fingerprint_id}
@required {account_id: str, document_fingerprint_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/dlp/document_fingerprints/{document_fingerprint_id}
@required {account_id: str, document_fingerprint_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/dlp/document_fingerprints/{document_fingerprint_id}
@required {account_id: str, document_fingerprint_id: str(uuid)}
@optional {description: str, match_percent: int(int32), name: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/dlp/document_fingerprints/{document_fingerprint_id}
@required {account_id: str, document_fingerprint_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/dlp/email/account_mapping
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/dlp/email/account_mapping
@required {account_id: str, auth_requirements: any}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/dlp/email/rules
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/dlp/email/rules
@required {account_id: str, new_priorities: map}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/dlp/email/rules
@required {account_id: str, action: any, conditions: [map{operator!: str, selector!: str, value!: any}], enabled: bool, name: str}
@optional {description: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/dlp/email/rules/{rule_id}
@required {account_id: str, rule_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/dlp/email/rules/{rule_id}
@required {account_id: str, rule_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/dlp/email/rules/{rule_id}
@required {account_id: str, rule_id: str(uuid), action: any, conditions: [map{operator!: str, selector!: str, value!: any}], enabled: bool, name: str}
@optional {description: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/dlp/entries
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/dlp/entries
@required {account_id: str, enabled: bool, name: str, pattern: map{regex!: str, validation: any}}
@optional {description: str, profile_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/dlp/entries/custom/{entry_id}
@required {account_id: str, entry_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/dlp/entries/integration
@required {account_id: str, enabled: bool, entry_id: str(uuid)}
@optional {profile_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/dlp/entries/integration/{entry_id}
@required {account_id: str, entry_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/dlp/entries/integration/{entry_id}
@required {account_id: str, entry_id: str(uuid), enabled: bool}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/dlp/entries/predefined
@required {account_id: str, enabled: bool, entry_id: str(uuid)}
@optional {profile_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/dlp/entries/predefined/{entry_id}
@required {account_id: str, entry_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/dlp/entries/predefined/{entry_id}
@required {account_id: str, entry_id: str(uuid), enabled: bool}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/dlp/entries/{entry_id}
@required {account_id: str, entry_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/dlp/entries/{entry_id}
@required {account_id: str, entry_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/dlp/entries/{entry_id}
@required {account_id: str, entry_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/dlp/limits
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/dlp/patterns/validate
@required {account_id: str, regex: str}
@optional {max_match_bytes: int(int32)}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/dlp/payload_log
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/dlp/payload_log
@required {account_id: str}
@optional {masking_level: any, public_key: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/dlp/profiles
@required {account_id: str}
@optional {all: bool}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/dlp/profiles/custom
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/dlp/profiles/custom
@required {account_id: str, name: str}
@optional {ai_context_enabled: bool=false, allowed_match_count: int(int32)=0, confidence_threshold: str=low, context_awareness: map{enabled!: bool, skip!: map}, data_classes: [str(uuid)], data_tags: [str(uuid)], description: str, entries: [any], ocr_enabled: bool=false, sensitivity_levels: [map{group_id!: str(uuid), level_id!: str(uuid)}], shared_entries: [map{enabled!: bool, entry_id!: str(uuid)}]}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/dlp/profiles/custom/{profile_id}
@required {account_id: str, profile_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/dlp/profiles/custom/{profile_id}
@required {account_id: str, profile_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/dlp/profiles/custom/{profile_id}
@required {account_id: str, profile_id: str(uuid), name: str}
@optional {ai_context_enabled: bool=false, allowed_match_count: int(int32), confidence_threshold: str=low, context_awareness: map{enabled!: bool, skip!: map}, data_classes: [str(uuid)], data_tags: [str(uuid)], description: str, entries: [any], ocr_enabled: bool=false, sensitivity_levels: [map{group_id!: str(uuid), level_id!: str(uuid)}], shared_entries: [map{enabled!: bool, entry_id!: str(uuid)}]}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/dlp/profiles/predefined
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/dlp/profiles/predefined/{profile_id}
@required {account_id: str, profile_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/dlp/profiles/predefined/{profile_id}
@required {account_id: str, profile_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/dlp/profiles/predefined/{profile_id}
@required {account_id: str, profile_id: str(uuid)}
@optional {ai_context_enabled: bool=false, allowed_match_count: int(int32)=0, confidence_threshold: str=low, context_awareness: map{enabled!: bool, skip!: map}, entries: [map{enabled!: bool, id!: str(uuid)}], ocr_enabled: bool=false}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/dlp/profiles/predefined/{profile_id}/config
@required {account_id: str, profile_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/dlp/profiles/predefined/{profile_id}/config
@required {account_id: str, profile_id: str(uuid)}
@optional {ai_context_enabled: bool=false, allowed_match_count: int(int32)=0, confidence_threshold: str=low, enabled_entries: [str(uuid)], entries: [map{enabled!: bool, id!: str(uuid)}], ocr_enabled: bool=false}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/dlp/profiles/predefined/{profile_id}/config
@required {account_id: str, profile_id: str(uuid)}
@optional {ai_context_enabled: bool=false, allowed_match_count: int(int32)=0, confidence_threshold: str=low, enabled_entries: [str(uuid)], entries: [map{enabled!: bool, id!: str(uuid)}], ocr_enabled: bool=false}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/dlp/profiles/{profile_id}
@required {account_id: str, profile_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/dlp/sensitivity_groups
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/dlp/sensitivity_groups
@required {account_id: str, name: str}
@optional {description: str, levels: [map{description: str, name!: str}], template_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/dlp/sensitivity_groups/templates
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/dlp/sensitivity_groups/templates/{template_id}
@required {account_id: str, template_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/dlp/sensitivity_groups/{sensitivity_group_id}
@required {account_id: str, sensitivity_group_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/dlp/sensitivity_groups/{sensitivity_group_id}
@required {account_id: str, sensitivity_group_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/dlp/sensitivity_groups/{sensitivity_group_id}
@required {account_id: str, sensitivity_group_id: str(uuid)}
@optional {description: str, levels: [any], name: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/dlp/sensitivity_groups/{sensitivity_group_id}/level_order
@required {account_id: str, sensitivity_group_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/dlp/sensitivity_groups/{sensitivity_group_id}/level_order
@required {account_id: str, sensitivity_group_id: str(uuid), level_ids: [str(uuid)]}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/dlp/sensitivity_groups/{sensitivity_group_id}/levels
@required {account_id: str, sensitivity_group_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/dlp/sensitivity_groups/{sensitivity_group_id}/levels
@required {account_id: str, sensitivity_group_id: str(uuid), name: str}
@optional {description: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/dlp/sensitivity_groups/{sensitivity_group_id}/levels/{sensitivity_level_id}
@required {account_id: str, sensitivity_group_id: str(uuid), sensitivity_level_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/dlp/sensitivity_groups/{sensitivity_group_id}/levels/{sensitivity_level_id}
@required {account_id: str, sensitivity_group_id: str(uuid), sensitivity_level_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/dlp/sensitivity_groups/{sensitivity_group_id}/levels/{sensitivity_level_id}
@required {account_id: str, sensitivity_group_id: str(uuid), sensitivity_level_id: str(uuid)}
@optional {description: str, name: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/dlp/settings
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/dlp/settings
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/dlp/settings
@required {account_id: str}
@optional {ai_context_analysis: bool=false, ocr: bool=false, payload_logging: any}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/dlp/settings
@required {account_id: str}
@optional {ai_context_analysis: bool=false, ocr: bool=false, payload_logging: any}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/dls/regional_services/prefix_bindings
@required {account_id: str}
@optional {cursor: str, per_page: int=25}
@returns(200) {errors: [map], messages: [map], result: [map], result_info: map{count: int, cursor: str, per_page: int}, success: bool}
@errors {400, 401, 403, 500}

@endpoint POST /accounts/{account_id}/dls/regional_services/prefix_bindings
@required {account_id: str, cidr: str, prefix_id: str, region_key: str}
@returns(201)
@errors {400, 401, 403, 409, 500}

@endpoint DELETE /accounts/{account_id}/dls/regional_services/prefix_bindings/{binding_id}
@required {account_id: str, binding_id: str}
@returns(200)
@errors {401, 403, 404, 500}

@endpoint GET /accounts/{account_id}/dls/regional_services/prefix_bindings/{binding_id}
@required {account_id: str, binding_id: str}
@returns(200)
@errors {401, 403, 404, 500}

@endpoint PATCH /accounts/{account_id}/dls/regional_services/prefix_bindings/{binding_id}
@required {account_id: str, binding_id: str, region_key: str}
@returns(200)
@errors {400, 401, 403, 404, 500}

@endpoint GET /accounts/{account_id}/dls/regions
@required {account_id: str}
@optional {cursor: str, per_page: int=25, type: str(managed/custom)}
@returns(200) {errors: [map], messages: [map], result: [map], result_info: map{count: int, cursor: str, per_page: int}, success: bool}
@errors {400, 401, 403, 500}

@endpoint GET /accounts/{account_id}/dls/regions/{region_id}
@required {account_id: str, region_id: str}
@returns(200)
@errors {401, 403, 404, 500}

@endpoint GET /accounts/{account_id}/dns_firewall
@required {account_id: str}
@optional {page: num=1, per_page: num=20}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/dns_firewall
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/dns_firewall/{dns_firewall_id}
@required {dns_firewall_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/dns_firewall/{dns_firewall_id}
@required {dns_firewall_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/dns_firewall/{dns_firewall_id}
@required {dns_firewall_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/dns_firewall/{dns_firewall_id}/dns_analytics/report
@required {dns_firewall_id: str, account_id: str}
@optional {metrics: str, dimensions: str, since: str(date-time), until: str(date-time), limit: int, sort: str, filters: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/dns_firewall/{dns_firewall_id}/dns_analytics/report/bytime
@required {dns_firewall_id: str, account_id: str}
@optional {metrics: str, dimensions: str, since: str(date-time), until: str(date-time), limit: int, sort: str, filters: str, time_delta: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/dns_firewall/{dns_firewall_id}/reverse_dns
@required {dns_firewall_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/dns_firewall/{dns_firewall_id}/reverse_dns
@required {dns_firewall_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/dns_records/usage
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/dns_settings
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/dns_settings
@required {account_id: str}
@optional {enforce_dns_only: bool, zone_defaults: map}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/dns_settings/views
@required {account_id: str}
@optional {name: str, name.exact: str, name.contains: str, name.startswith: str, name.endswith: str, zone_id: str, zone_name: str, match: str, page: num, per_page: num, order: str, direction: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/dns_settings/views
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/dns_settings/views/{view_id}
@required {account_id: str, view_id: str}
@returns(200) {result: map{id: str}}
@errors {4XX}

@endpoint GET /accounts/{account_id}/dns_settings/views/{view_id}
@required {account_id: str, view_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/dns_settings/views/{view_id}
@required {account_id: str, view_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/email-security/analytics/monthly_report
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/email-security/investigate
@optional {start: str(date-time), end: str(date-time), query: str, detections_only: bool=true, final_disposition: str(MALICIOUS/SUSPICIOUS/SPOOF/SPAM/BULK/NONE), metric: str, message_action: str(PREVIEW/QUARANTINE_RELEASED/MOVED), recipient: str, sender: str, smtp_helo_ip: str, alert_id: str, domain: str, message_id: str, subject: str, delivery_status: str, cursor: str, per_page: int=20, page: int=1}
@returns(200)
@returns(202)
@errors {4XX}

@endpoint GET /accounts/{account_id}/email-security/investigate/bulk
@optional {page: int=1, per_page: int=20, action_type: str(MOVE/RELEASE), status: str(PENDING/DISCOVERING/PROCESSING/COMPLETED/FAILED/CANCELLED/SKIPPED)}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/email-security/investigate/bulk
@required {action: str(MOVE/RELEASE), search_params: map{action_log: bool, alert_id: str, delivery_status: str, detections_only: bool, domain: str, end: str(date-time), exact_subject: str, final_disposition: str, message_action: str, message_id: str, metric: str, query: str, recipient: str, sender: str, smtp_helo_ip: str, start: str(date-time), subject: str, submissions: bool}}
@optional {comment: str, destination: str(Inbox/JunkEmail/DeletedItems/RecoverableItemsDeletions/RecoverableItemsPurges), expected_disposition: str(MALICIOUS/MALICIOUS-BEC/SUSPICIOUS/SPOOF/SPAM/BULK/ENCRYPTED/EXTERNAL/UNKNOWN/NONE)}
@returns(201)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/email-security/investigate/bulk/{job_id}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/email-security/investigate/bulk/{job_id}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/email-security/investigate/bulk/{job_id}/cancel
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/email-security/investigate/bulk/{job_id}/messages
@optional {page: int=1, per_page: int=20, status: str(PENDING/DISCOVERING/PROCESSING/COMPLETED/FAILED/CANCELLED/SKIPPED)}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/email-security/investigate/move
@required {destination: str(Inbox/JunkEmail/DeletedItems/RecoverableItemsDeletions/RecoverableItemsPurges)}
@optional {expected_disposition: str(MALICIOUS/MALICIOUS-BEC/SUSPICIOUS/SPOOF/SPAM/BULK/ENCRYPTED/EXTERNAL/UNKNOWN/NONE), ids: [str], postfix_ids: [str]}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/email-security/investigate/preview
@required {postfix_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/email-security/investigate/release
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/email-security/investigate/{investigate_id}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/email-security/investigate/{investigate_id}/action_log
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/email-security/investigate/{investigate_id}/detections
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/email-security/investigate/{investigate_id}/move
@required {destination: str(Inbox/JunkEmail/DeletedItems/RecoverableItemsDeletions/RecoverableItemsPurges)}
@optional {expected_disposition: str(MALICIOUS/MALICIOUS-BEC/SUSPICIOUS/SPOOF/SPAM/BULK/ENCRYPTED/EXTERNAL/UNKNOWN/NONE)}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/email-security/investigate/{investigate_id}/preview
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/email-security/investigate/{investigate_id}/raw
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/email-security/investigate/{investigate_id}/reclassify
@required {expected_disposition: str(NONE/BULK/MALICIOUS/SPAM/SPOOF/SUSPICIOUS)}
@optional {eml_content: str, escalated_submission_id: str}
@returns(202)
@errors {4XX}

@endpoint GET /accounts/{account_id}/email-security/investigate/{investigate_id}/trace
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/email-security/phishguard/reports
@optional {start: str(date-time), end: str(date-time), from_date: str(date), to_date: str(date)}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/email-security/settings/allow_policies
@optional {page: int=1, per_page: int=20, search: str, order: str(pattern/created_at), direction: str(asc/desc), is_exempt_recipient: bool, is_trusted_sender: bool, is_acceptable_sender: bool, verify_sender: bool, pattern_type: any, pattern: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/email-security/settings/allow_policies
@returns(201)
@errors {4XX}

@endpoint POST /accounts/{account_id}/email-security/settings/allow_policies/batch
@required {deletes: [map{id!: str(uuid)}], patches: [any], posts: [any], puts: [any]}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/email-security/settings/allow_policies/{policy_id}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/email-security/settings/allow_policies/{policy_id}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/email-security/settings/allow_policies/{policy_id}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/email-security/settings/allow_policies/{policy_id}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/email-security/settings/block_senders
@optional {page: int=1, per_page: int=20, search: str, order: str(pattern/created_at), direction: str(asc/desc), pattern_type: any, pattern: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/email-security/settings/block_senders
@returns(201)
@errors {4XX}

@endpoint POST /accounts/{account_id}/email-security/settings/block_senders/batch
@required {deletes: [map{id!: str(uuid)}], patches: [any], posts: [any], puts: [any]}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/email-security/settings/block_senders/{pattern_id}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/email-security/settings/block_senders/{pattern_id}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/email-security/settings/block_senders/{pattern_id}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/email-security/settings/block_senders/{pattern_id}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/email-security/settings/content_policies
@optional {page: int=1, per_page: int=20, search: str, order: str(name/created_at), direction: str(asc/desc), enabled: bool, name: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/email-security/settings/content_policies
@returns(201)
@errors {4XX}

@endpoint POST /accounts/{account_id}/email-security/settings/content_policies/batch
@required {deletes: [map{id!: str(uuid)}], patches: [any], posts: [any], puts: [any]}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/email-security/settings/content_policies/{policy_id}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/email-security/settings/content_policies/{policy_id}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/email-security/settings/content_policies/{policy_id}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/email-security/settings/domains
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/email-security/settings/domains
@optional {page: int=1, per_page: int=20, search: str, order: str(domain/created_at), direction: str(asc/desc), allowed_delivery_mode: str, domain: [str], active_delivery_mode: str, integration_id: str(uuid), status: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/email-security/settings/domains
@required {allowed_delivery_modes: [str], domain: str, drop_dispositions: [str], ip_restrictions: [str], regions: [str]}
@optional {folder: any, integration_id: str(uuid), lookback_hops: int, require_tls_inbound: bool, require_tls_outbound: bool, transport: str}
@returns(201)
@errors {4XX}

@endpoint POST /accounts/{account_id}/email-security/settings/domains/batch
@required {deletes: [map{id!: str(uuid)}], patches: [any], posts: [map{allowed_delivery_modes!: [str], domain!: str, drop_dispositions!: [str], folder: any, integration_id: str(uuid), ip_restrictions!: [str], lookback_hops: int, regions!: [str], require_tls_inbound: bool, require_tls_outbound: bool, transport: str}], puts: [any]}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/email-security/settings/domains/{domain_id}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/email-security/settings/domains/{domain_id}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/email-security/settings/domains/{domain_id}
@optional {allowed_delivery_modes: [str], drop_dispositions: [str], folder: any, integration_id: str(uuid), ip_restrictions: [str], lookback_hops: int, regions: [str], require_tls_inbound: bool, require_tls_outbound: bool, transport: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/email-security/settings/domains/{domain_id}
@required {allowed_delivery_modes: [str], drop_dispositions: [str], ip_restrictions: [str], regions: [str]}
@optional {folder: any, integration_id: str(uuid), lookback_hops: int, require_tls_inbound: bool, require_tls_outbound: bool, transport: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/email-security/settings/domains/{domain_id}/verification
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/email-security/settings/impersonation_registry
@optional {page: int=1, per_page: int=20, search: str, order: str(name/email/created_at), direction: str(asc/desc), provenance: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/email-security/settings/impersonation_registry
@returns(201)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/email-security/settings/impersonation_registry/{impersonation_registry_id}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/email-security/settings/impersonation_registry/{impersonation_registry_id}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/email-security/settings/impersonation_registry/{impersonation_registry_id}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/email-security/settings/sending_domain_restrictions
@optional {page: int=1, per_page: int=20, search: str, order: str(domain/created_at), direction: str(asc/desc)}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/email-security/settings/sending_domain_restrictions
@returns(201)
@errors {4XX}

@endpoint POST /accounts/{account_id}/email-security/settings/sending_domain_restrictions/batch
@required {deletes: [map{id!: str(uuid)}]}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/email-security/settings/sending_domain_restrictions/{sending_domain_restriction_id}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/email-security/settings/sending_domain_restrictions/{sending_domain_restriction_id}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/email-security/settings/sending_domain_restrictions/{sending_domain_restriction_id}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/email-security/settings/trusted_domains
@optional {page: int=1, per_page: int=20, search: str, order: str(pattern/created_at), direction: str(asc/desc), is_recent: bool, is_similarity: bool, pattern: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/email-security/settings/trusted_domains
@returns(201)
@errors {4XX}

@endpoint POST /accounts/{account_id}/email-security/settings/trusted_domains/batch
@required {deletes: [map{id!: str(uuid)}], patches: [any], posts: [any], puts: [any]}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/email-security/settings/trusted_domains/{trusted_domain_id}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/email-security/settings/trusted_domains/{trusted_domain_id}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/email-security/settings/trusted_domains/{trusted_domain_id}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/email-security/settings/trusted_domains/{trusted_domain_id}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/email-security/settings/url_ignore_patterns
@optional {page: int=1, per_page: int=20}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/email-security/settings/url_ignore_patterns
@required {pattern: str}
@optional {comments: str}
@returns(201)
@errors {4XX}

@endpoint POST /accounts/{account_id}/email-security/settings/url_ignore_patterns/batch
@required {deletes: [map{id!: str(uuid)}], patches: [any], posts: [map{comments: str, pattern!: str}], puts: [any]}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/email-security/settings/url_ignore_patterns/{pattern_id}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/email-security/settings/url_ignore_patterns/{pattern_id}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/email-security/settings/url_ignore_patterns/{pattern_id}
@optional {comments: str, pattern: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/email-security/submissions
@optional {start: str(date-time), end: str(date-time), type: str(TEAM/USER), submission_id: str, original_disposition: str, requested_disposition: str, outcome_disposition: str, status: str, query: str, escalated_from_user: bool, order: str(submission_id/subject/original_disposition/requested_disposition/outcome_disposition/requested_at)=requested_at, direction: str(asc/desc), page: int=1, per_page: int=20}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/email/routing/addresses
@required {account_id: str}
@optional {page: num=1, per_page: num=20, direction: str(asc/desc)=asc, verified: bool(true/false)=true}
@returns(200)

@endpoint POST /accounts/{account_id}/email/routing/addresses
@required {account_id: str, email: str}
@returns(200)

@endpoint DELETE /accounts/{account_id}/email/routing/addresses/{destination_address_identifier}
@required {destination_address_identifier: str, account_id: str}
@returns(200)

@endpoint GET /accounts/{account_id}/email/routing/addresses/{destination_address_identifier}
@required {destination_address_identifier: str, account_id: str}
@returns(200)

@endpoint PATCH /accounts/{account_id}/email/routing/addresses/{destination_address_identifier}
@required {destination_address_identifier: str, account_id: str, status: str(unverified/verified)}
@returns(200)

@endpoint GET /accounts/{account_id}/email/routing/rules
@required {account_id: str}
@optional {page: num=1, per_page: num=20, enabled: bool(true/false)}
@returns(200)

@endpoint POST /accounts/{account_id}/email/routing/rules/plan
@required {account_id: str, owner_worker_tag: str}
@optional {catch_all_rules: [map{rule!: map, target!: str}], rules: [map{actions!: [map], enabled: bool, matchers!: [map]}]}
@returns(200)
@errors {400, 403, 422}

@endpoint GET /accounts/{account_id}/email/routing/suppression
@required {account_id: str}
@optional {page: int=1, per_page: int=100, order: str(email/expires_at/created_at)=created_at, direction: str(asc/desc)=desc}
@returns(200) {page: int, per_page: int, result: [map], total: int}
@errors {400}

@endpoint POST /accounts/{account_id}/email/routing/suppression
@required {account_id: str, email: str(email)}
@optional {expires_at: str(date-time)}
@returns(200) {result: map{id: str(uuid)}}
@errors {400}

@endpoint DELETE /accounts/{account_id}/email/routing/suppression/{suppression_id}
@required {account_id: str, suppression_id: str}
@returns(200) {success: bool}
@errors {404}

@endpoint GET /accounts/{account_id}/email/routing/suppression/{suppression_id}
@required {account_id: str, suppression_id: str}
@returns(200) {result: map{created_at: str(date-time), email: str(email), expires_at: str(date-time)?, id: str(uuid), reason: str, zones: [str]}}
@errors {404}

@endpoint GET /accounts/{account_id}/email/sending/limits
@required {account_id: str}
@returns(200)

@endpoint GET /accounts/{account_id}/email/sending/messages/{message_id}
@required {account_id: str, message_id: str}
@returns(200)
@errors {404, 500}

@endpoint GET /accounts/{account_id}/email/sending/reputation
@required {account_id: str}
@returns(200)

@endpoint POST /accounts/{account_id}/email/sending/send
@required {account_id: str, from: any, subject: str}
@optional {attachments: [any], bcc: any, cc: any, headers: map, html: str, reply_to: any, text: str, to: any}
@returns(200) {errors: [map], messages: [map], result: map{delivered: [str], message_id: str, permanent_bounces: [str], queued: [str], suppressed_recipients: [str]}, result_info: map{count: num, cursor: str, page: num, per_page: num, total_count: num}, success: bool}
@errors {400, 403, 409, 429, 500}

@endpoint POST /accounts/{account_id}/email/sending/send_raw
@required {account_id: str, from: str, mime_message: str, recipients: [str]}
@returns(200) {errors: [map], messages: [map], result: map{delivered: [str], message_id: str, permanent_bounces: [str], queued: [str], suppressed_recipients: [str]}, result_info: map{count: num, cursor: str, page: num, per_page: num, total_count: num}, success: bool}
@errors {400, 403, 409, 429, 500}

@endpoint GET /accounts/{account_id}/email/sending/suppression
@required {account_id: str}
@optional {page: int=1, per_page: int=100, order: str(email/expires_at/created_at)=created_at, direction: str(asc/desc)=desc}
@returns(200) {page: int, per_page: int, result: [map], total: int}
@errors {400}

@endpoint POST /accounts/{account_id}/email/sending/suppression
@required {account_id: str, email: str(email)}
@optional {expires_at: str(date-time)}
@returns(200) {result: map{id: str(uuid)}}
@errors {400}

@endpoint DELETE /accounts/{account_id}/email/sending/suppression/{suppression_id}
@required {account_id: str, suppression_id: str}
@returns(200) {success: bool}
@errors {404}

@endpoint GET /accounts/{account_id}/email/sending/suppression/{suppression_id}
@required {account_id: str, suppression_id: str}
@returns(200) {result: map{created_at: str(date-time), email: str(email), expires_at: str(date-time)?, id: str(uuid), reason: str, zones: [str]}}
@errors {404}

@endpoint GET /accounts/{account_id}/email/sending/suppressions
@required {account_id: str}
@optional {per_page: int=100, cursor: str, email: str(email), search: str, reason: str(manual/complaint/hard_bounce/soft_bounce/policy)}
@returns(200) {errors: [map], messages: [map], result: [map], result_info: map{count: int, next_cursor: str?, per_page: int}, success: bool}
@errors {400}

@endpoint POST /accounts/{account_id}/email/sending/suppressions
@required {account_id: str, email: str(email)}
@optional {expires_at: str(date-time), note: str}
@returns(200) {errors: [map], messages: [map], result: map{id: str(uuid)}, success: bool}
@errors {400, 403, 404, 409}

@endpoint POST /accounts/{account_id}/email/sending/suppressions/bulk
@required {account_id: str, items: [map{email!: str, expires_at: str(date-time), note: str}]}
@returns(200) {errors: [map], messages: [map], result: map{deduplicated: int, errors: int, invalid: int, items: [map], processed: int, skipped: int, total: int}, success: bool}
@errors {429}

@endpoint DELETE /accounts/{account_id}/email/sending/suppressions/{suppression_id}
@required {account_id: str, suppression_id: str(uuid)}
@returns(200) {errors: [map], messages: [map], result: map{id: str(uuid)}, success: bool}
@errors {400, 403, 404, 409}

@endpoint GET /accounts/{account_id}/email/sending/suppressions/{suppression_id}
@required {account_id: str, suppression_id: str(uuid)}
@returns(200) {errors: [map], messages: [map], result: map{created_at: str(date-time), email: str(email), expires_at: str(date-time)?, id: str(uuid), note: str?, read_only: bool, reason: str}, success: bool}
@errors {404}

@endpoint PATCH /accounts/{account_id}/email/sending/suppressions/{suppression_id}
@required {account_id: str, suppression_id: str(uuid)}
@optional {expires_at: str(date-time), note: str}
@returns(200) {errors: [map], messages: [map], result: map{created_at: str(date-time), email: str(email), expires_at: str(date-time)?, id: str(uuid), note: str?, read_only: bool, reason: str}, success: bool}
@errors {400, 403, 404}

@endpoint GET /accounts/{account_id}/entitlements
@required {account_id: str}
@returns(200) {errors: [map], messages: [map], result: [map], success: bool}
@returns(204)
@errors {400, 401, 403, 404, 405, 500, 503}

@endpoint GET /accounts/{account_id}/event_notifications/r2/{bucket_name}/configuration
@required {bucket_name: str, account_id: str}
@optional {cf-r2-jurisdiction: str(default/eu/us/fedramp/fedramp-high)=default}
@returns(200)
@errors {404, 4XX}

@endpoint DELETE /accounts/{account_id}/event_notifications/r2/{bucket_name}/configuration/queues/{queue_id}
@required {queue_id: str, bucket_name: str, account_id: str}
@optional {cf-r2-jurisdiction: str(default/eu/us/fedramp/fedramp-high)=default, ruleIds: [str]}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/event_notifications/r2/{bucket_name}/configuration/queues/{queue_id}
@required {queue_id: str, bucket_name: str, account_id: str}
@optional {cf-r2-jurisdiction: str(default/eu/us/fedramp/fedramp-high)=default}
@returns(200)
@errors {404, 4XX}

@endpoint PUT /accounts/{account_id}/event_notifications/r2/{bucket_name}/configuration/queues/{queue_id}
@required {queue_id: str, bucket_name: str, account_id: str, rules: [map{actions!: [str], description: str, prefix: str, suffix: str}]}
@optional {cf-r2-jurisdiction: str(default/eu/us/fedramp/fedramp-high)=default}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/event_subscriptions/subscriptions
@required {account_id: str}
@optional {page: int=1, per_page: int=20, order: str(created_at/name/enabled/source)=name, direction: str(asc/desc)=asc}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/event_subscriptions/subscriptions
@required {account_id: str}
@optional {destination: map, enabled: bool, events: [str], name: str, source: map}
@returns(200)
@errors {400, 404, 405}

@endpoint DELETE /accounts/{account_id}/event_subscriptions/subscriptions/{subscription_id}
@required {account_id: str, subscription_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/event_subscriptions/subscriptions/{subscription_id}
@required {account_id: str, subscription_id: str}
@returns(200)
@errors {404}

@endpoint PATCH /accounts/{account_id}/event_subscriptions/subscriptions/{subscription_id}
@required {account_id: str, subscription_id: str}
@optional {destination: map, enabled: bool, events: [str], name: str}
@returns(200)
@errors {400, 404}

@endpoint DELETE /accounts/{account_id}/field_extractors/{extractor}
@required {account_id: str, extractor: str}
@returns(200) {errors: [map], messages: [map], result: map?, success: bool}
@errors {404}

@endpoint GET /accounts/{account_id}/field_extractors/{extractor}
@required {account_id: str, extractor: str}
@returns(200) {errors: [map], messages: [map], result: map{extractor: str, rules: [map]}, success: bool}
@errors {404}

@endpoint PUT /accounts/{account_id}/field_extractors/{extractor}
@required {account_id: str, extractor: str, rules: [map{description: str, fields!: [map], ref!: str}]}
@returns(200) {errors: [map], messages: [map], result: map{extractor: str, rules: [map]}, success: bool}
@errors {400, 404}

@endpoint GET /accounts/{account_id}/firewall/access_rules/rules
@required {account_id: str}
@optional {mode: str, configuration.target: str(ip/ip_range/asn/country), configuration.value: str, notes: str, match: str(any/all)=all, page: num, per_page: num, order: str(configuration.target/configuration.value/mode), direction: str(asc/desc)}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/firewall/access_rules/rules
@required {account_id: str, configuration: map, mode: str(block/challenge/whitelist/js_challenge/managed_challenge)}
@optional {notes: any=}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/firewall/access_rules/rules/{rule_id}
@required {rule_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/firewall/access_rules/rules/{rule_id}
@required {rule_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/firewall/access_rules/rules/{rule_id}
@required {rule_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/flagship/apps
@required {account_id: str}
@returns(200) {errors: [map], messages: [map], result: [map], success: bool}
@errors {400, 401, 403, 404, 429, 500}

@endpoint POST /accounts/{account_id}/flagship/apps
@required {account_id: str, name: str}
@returns(201) {errors: [map], messages: [map], result: map{created_at: str, id: str, name: str, updated_at: str, updated_by: str}, success: bool}
@errors {400, 401, 403, 404, 429, 500}

@endpoint DELETE /accounts/{account_id}/flagship/apps/{app_id}
@required {account_id: str, app_id: str}
@returns(200) {errors: [map], messages: [map], result: map{id: str}, success: bool}
@errors {400, 401, 403, 404, 409, 429, 500}

@endpoint GET /accounts/{account_id}/flagship/apps/{app_id}
@required {account_id: str, app_id: str}
@returns(200) {errors: [map], messages: [map], result: map{created_at: str, id: str, name: str, updated_at: str, updated_by: str}, success: bool}
@errors {400, 401, 403, 404, 429, 500}

@endpoint PUT /accounts/{account_id}/flagship/apps/{app_id}
@required {account_id: str, app_id: str}
@optional {name: str}
@returns(200) {errors: [map], messages: [map], result: map{created_at: str, id: str, name: str, updated_at: str, updated_by: str}, success: bool}
@errors {400, 401, 403, 404, 429, 500}

@endpoint GET /accounts/{account_id}/flagship/apps/{app_id}/definitions
@required {account_id: str, app_id: str}
@optional {If-None-Match: str}
@returns(200) {flags: map}
@errors {304, 401, 403, 404, 500, 503}

@endpoint GET /accounts/{account_id}/flagship/apps/{app_id}/evaluate
@required {account_id: str, app_id: str, flagKey: str}
@optional {targetingKey: str}
@returns(200) {flagKey: str, reason: str, value: any, variant: str}
@errors {400, 401, 403, 404, 500, 503}

@endpoint POST /accounts/{account_id}/flagship/apps/{app_id}/evaluate
@required {account_id: str, app_id: str, flagKey: str}
@optional {context: map=[object Object]}
@returns(200) {flagKey: str, reason: str, value: any, variant: str}
@errors {400, 401, 403, 404, 500, 503}

@endpoint GET /accounts/{account_id}/flagship/apps/{app_id}/flags
@required {account_id: str, app_id: str}
@optional {limit: str, cursor: str}
@returns(200) {errors: [map], messages: [map], result: [map], result_info: map{count: int, cursor: str?}, success: bool}
@errors {400, 401, 403, 404, 429, 500}

@endpoint POST /accounts/{account_id}/flagship/apps/{app_id}/flags
@required {account_id: str, app_id: str, default_variation: str, enabled: bool, key: str, rules: [map{conditions!: [any], priority!: int, rollout: map, serve_variation!: str}], variations: map}
@optional {description: str, type: str(boolean/string/number/json)}
@returns(201) {errors: [map], messages: [map], result: map{default_variation: str, description: str?, enabled: bool, key: str, rules: [map], type: str, updated_at: str, updated_by: str, variations: map}, success: bool}
@errors {400, 401, 403, 404, 429, 500}

@endpoint DELETE /accounts/{account_id}/flagship/apps/{app_id}/flags/{flag_key}
@required {account_id: str, app_id: str, flag_key: str}
@returns(200) {errors: [map], messages: [map], result: map{key: str}, success: bool}
@errors {400, 401, 403, 404, 429, 500}

@endpoint GET /accounts/{account_id}/flagship/apps/{app_id}/flags/{flag_key}
@required {account_id: str, app_id: str, flag_key: str}
@returns(200) {errors: [map], messages: [map], result: map{default_variation: str, description: str?, enabled: bool, key: str, rules: [map], type: str, updated_at: str, updated_by: str, variations: map}, success: bool}
@errors {400, 401, 403, 404, 429, 500}

@endpoint PUT /accounts/{account_id}/flagship/apps/{app_id}/flags/{flag_key}
@required {account_id: str, app_id: str, flag_key: str, default_variation: str, enabled: bool, key: str, rules: [map{conditions!: [any], priority!: int, rollout: map, serve_variation!: str}], variations: map}
@optional {description: str, type: str(boolean/string/number/json)}
@returns(200) {errors: [map], messages: [map], result: map{default_variation: str, description: str?, enabled: bool, key: str, rules: [map], type: str, updated_at: str, updated_by: str, variations: map}, success: bool}
@errors {400, 401, 403, 404, 429, 500}

@endpoint GET /accounts/{account_id}/flagship/apps/{app_id}/flags/{flag_key}/changelog
@required {account_id: str, app_id: str, flag_key: str}
@optional {limit: str, cursor: str}
@returns(200) {errors: [map], messages: [map], result: [any], result_info: map{count: int, cursor: str?}, success: bool}
@errors {400, 401, 403, 404, 429, 500}

@endpoint GET /accounts/{account_id}/gateway
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/gateway
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/gateway/app_types
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/gateway/apps/review_status
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/gateway/apps/review_status
@required {account_id: str, approved_apps: [int(int64)], in_review_apps: [int(int64)], unapproved_apps: [int(int64)]}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/gateway/audit_ssh_settings
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/gateway/audit_ssh_settings
@required {account_id: str, public_key: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/gateway/audit_ssh_settings/rotate_seed
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/gateway/categories
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/gateway/certificates
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/gateway/certificates
@required {account_id: str}
@optional {validity_period_days: int}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/gateway/certificates/{certificate_id}
@required {certificate_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/gateway/certificates/{certificate_id}
@required {certificate_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/gateway/certificates/{certificate_id}/activate
@required {certificate_id: str, account_id: str}
@returns(202)
@errors {4XX}

@endpoint POST /accounts/{account_id}/gateway/certificates/{certificate_id}/deactivate
@required {certificate_id: str, account_id: str}
@returns(201)
@errors {4XX}

@endpoint GET /accounts/{account_id}/gateway/configuration
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/gateway/configuration
@required {account_id: str}
@optional {settings: map{activity_log: map, antivirus: map, block_page: map, body_scanning: map, browser_isolation: map, certificate: map, custom_certificate: map, extended_email_matching: map, fips: map, host_selector: map, inspection: map, max_ttl_secs: int, protocol_detection: map, sandbox: map, tls_decrypt: map}}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/gateway/configuration
@required {account_id: str}
@optional {settings: map{activity_log: map, antivirus: map, block_page: map, body_scanning: map, browser_isolation: map, certificate: map, custom_certificate: map, extended_email_matching: map, fips: map, host_selector: map, inspection: map, max_ttl_secs: int, protocol_detection: map, sandbox: map, tls_decrypt: map}}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/gateway/configuration/custom_certificate
@required {account_id: str}
@returns(200) {binding_status: str, enabled: bool?, id: str, updated_at: str(date-time)}
@errors {4XX}

@endpoint GET /accounts/{account_id}/gateway/dns_destination_ips
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/gateway/egress_cidr_pairs
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/gateway/lists
@required {account_id: str}
@optional {type: str, filter: [str], search: str, order_by: str(name/created_at/updated_at/item_count), direction: str(asc/desc)}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/gateway/lists
@required {account_id: str, name: str, type: str(SERIAL/URL/DOMAIN/EMAIL/IP/CATEGORY/LOCATION/DEVICE/AAGUID)}
@optional {description: str, items: [map{description: str, value: str}]}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/gateway/lists/upload
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/gateway/lists/{list_id}
@required {list_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/gateway/lists/{list_id}
@required {list_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/gateway/lists/{list_id}
@required {list_id: str, account_id: str}
@optional {append: [map{description: str, value: str}], remove: [str]}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/gateway/lists/{list_id}
@required {list_id: str, account_id: str, name: str}
@optional {description: str, items: [map{description: str, value: str}]}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/gateway/lists/{list_id}/items
@required {list_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/gateway/locations
@required {account_id: str}
@optional {filter: [str], search: str, order_by: str(name/created_at/updated_at), direction: str(asc/desc)}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/gateway/locations
@required {account_id: str, name: str}
@optional {client_default: bool=false, dns_destination_ips_id: str, ecs_support: bool=false, endpoints: map{doh!: map, dot!: map, ipv4!: map, ipv6!: map}, max_ttl: map{mode!: str, ttl_secs: int}=[object Object], networks: [map{network!: str}]}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/gateway/locations/{location_id}
@required {location_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/gateway/locations/{location_id}
@required {location_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/gateway/locations/{location_id}
@required {location_id: str, account_id: str, name: str}
@optional {client_default: bool=false, dns_destination_ips_id: str, ecs_support: bool=false, endpoints: map{doh!: map, dot!: map, ipv4!: map, ipv6!: map}, max_ttl: map{mode!: str, ttl_secs: int}=[object Object], networks: [map{network!: str}]}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/gateway/logging
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/gateway/logging
@required {account_id: str}
@optional {redact_pii: bool=false, settings_by_rule_type: map{dns: any, http: any, l4: any}}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/gateway/operations
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/gateway/operations/{operation_id}
@required {operation_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/gateway/pacfiles
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/gateway/pacfiles
@required {account_id: str, contents: str, name: str}
@optional {description: str, slug: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/gateway/pacfiles/{pacfile_id}
@required {pacfile_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/gateway/pacfiles/{pacfile_id}
@required {pacfile_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/gateway/pacfiles/{pacfile_id}
@required {pacfile_id: str, account_id: str, contents: str, description: str, name: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/gateway/proxy_endpoints
@required {account_id: str}
@optional {filter: [str], search: str, order_by: str(name/created_at/updated_at), direction: str(asc/desc)}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/gateway/proxy_endpoints
@required {account_id: str}
@optional {kind: str(ip/identity)=ip}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/gateway/proxy_endpoints/{proxy_endpoint_id}
@required {proxy_endpoint_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/gateway/proxy_endpoints/{proxy_endpoint_id}
@required {proxy_endpoint_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/gateway/proxy_endpoints/{proxy_endpoint_id}
@required {proxy_endpoint_id: str, account_id: str}
@optional {ips: [str], name: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/gateway/rules
@required {account_id: str}
@optional {filter: [str], search: str, order_by: str(name/created_at/updated_at/precedence), direction: str(asc/desc)}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/gateway/rules
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/gateway/rules
@required {account_id: str, action: str(on/off/allow/block/scan/noscan/safesearch/ytrestricted/isolate/noisolate/override/l4_override/egress/resolve/quarantine/redirect), name: str}
@optional {description: str, device_posture: str=, enabled: bool=false, expiration: map{duration: int, expired: bool, expires_at!: any}, filters: [str], identity: str=, precedence: int, rule_settings: map{add_headers: map, allow_child_bypass: bool, audit_ssh: map, biso_admin_controls: map, block_page: map, block_page_enabled: bool, block_reason: str, bypass_parent_rule: bool, check_session: map, delete_headers: [str], dns_resolvers: map, egress: map, forensic_copy: map, ignore_cname_category_matches: bool, insecure_disable_dnssec_validation: bool, ip_categories: bool, ip_indicator_feeds: bool, l4override: map, notification_settings: map, override_host: str, override_ips: [str], payload_log: map, quarantine: map, redirect: map, resolve_dns_internally: map, resolve_dns_through_cloudflare: bool, set_headers: map, untrusted_cert: map}, schedule: map{fri: str, mon: str, sat: str, sun: str, thu: str, time_zone: str, tue: str, wed: str}, traffic: str=}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/gateway/rules/tenant
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/gateway/rules/{rule_id}
@required {rule_id: str(uuid), account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/gateway/rules/{rule_id}
@required {rule_id: str(uuid), account_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/gateway/rules/{rule_id}
@required {rule_id: str(uuid), account_id: str}
@optional {description: str, enabled: bool=false, name: str, precedence: int}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/gateway/rules/{rule_id}
@required {rule_id: str(uuid), account_id: str, action: str(on/off/allow/block/scan/noscan/safesearch/ytrestricted/isolate/noisolate/override/l4_override/egress/resolve/quarantine/redirect), name: str}
@optional {description: str, device_posture: str=, enabled: bool=false, expiration: map{duration: int, expired: bool, expires_at!: any}, filters: [str], identity: str=, precedence: int, rule_settings: map{add_headers: map, allow_child_bypass: bool, audit_ssh: map, biso_admin_controls: map, block_page: map, block_page_enabled: bool, block_reason: str, bypass_parent_rule: bool, check_session: map, delete_headers: [str], dns_resolvers: map, egress: map, forensic_copy: map, ignore_cname_category_matches: bool, insecure_disable_dnssec_validation: bool, ip_categories: bool, ip_indicator_feeds: bool, l4override: map, notification_settings: map, override_host: str, override_ips: [str], payload_log: map, quarantine: map, redirect: map, resolve_dns_internally: map, resolve_dns_through_cloudflare: bool, set_headers: map, untrusted_cert: map}, schedule: map{fri: str, mon: str, sat: str, sun: str, thu: str, time_zone: str, tue: str, wed: str}, traffic: str=}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/gateway/rules/{rule_id}/reset_expiration
@required {rule_id: str(uuid), account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/hyperdrive/configs
@required {account_id: str}
@optional {page: int=1, per_page: int=20}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/hyperdrive/configs
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/hyperdrive/configs/{hyperdrive_id}
@required {account_id: str, hyperdrive_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/hyperdrive/configs/{hyperdrive_id}
@required {account_id: str, hyperdrive_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/hyperdrive/configs/{hyperdrive_id}
@required {account_id: str, hyperdrive_id: str}
@optional {caching: map, mtls: map{ca_certificate_id: str, mtls_certificate_id: str, sslmode: str}, name: str, origin: map, origin_connection_limit: int}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/hyperdrive/configs/{hyperdrive_id}
@required {account_id: str, hyperdrive_id: str, id: str, name: str, origin: map}
@optional {caching: map, created_on: str(date-time), modified_on: str(date-time), mtls: map{ca_certificate_id: str, mtls_certificate_id: str, sslmode: str}, origin_connection_limit: int, restarted_on: str(date-time)}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/hyperdrive/configs/{hyperdrive_id}/restart
@required {account_id: str, hyperdrive_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/hyperdrive/integrationsOperations/{integration}/createDatabaseSignature
@required {account_id: str, integration: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/iam/permission_groups
@required {account_id: any}
@optional {id: str, name: str, label: str, page: num=1, per_page: num=20}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/iam/permission_groups/{permission_group_id}
@required {account_id: any, permission_group_id: any}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/iam/resource_groups
@required {account_id: any}
@optional {id: any, name: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/iam/resource_groups
@required {account_id: any, name: str, scope: map{key!: any, objects!: [map]}}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/iam/resource_groups/{resource_group_id}
@required {account_id: any, resource_group_id: any}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/iam/resource_groups/{resource_group_id}
@required {account_id: any, resource_group_id: any}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/iam/resource_groups/{resource_group_id}
@required {account_id: any, resource_group_id: any}
@optional {name: str, scope: map{key!: any, objects!: [map]}}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/iam/user_groups
@required {account_id: any}
@optional {id: any, name: str, fuzzyName: str, page: num=1, per_page: num=100, direction: str(asc/desc)=asc}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/iam/user_groups
@required {account_id: any, name: str}
@optional {policies: [any]}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/iam/user_groups/{user_group_id}
@required {account_id: any, user_group_id: any}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/iam/user_groups/{user_group_id}
@required {account_id: any, user_group_id: any}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/iam/user_groups/{user_group_id}
@required {account_id: any, user_group_id: any}
@optional {name: str, policies: [any]}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/iam/user_groups/{user_group_id}/members
@required {account_id: any, user_group_id: any}
@optional {page: num=1, per_page: num=100, fuzzyEmail: str, direction: str(asc/desc)=asc}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/iam/user_groups/{user_group_id}/members
@required {account_id: any, user_group_id: any}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/iam/user_groups/{user_group_id}/members
@required {account_id: any, user_group_id: any}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/iam/user_groups/{user_group_id}/members/{member_id}
@required {account_id: any, user_group_id: any, member_id: any}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/iam/user_groups/{user_group_id}/members/{member_id}
@required {account_id: any, user_group_id: any, member_id: any}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/images/v1
@required {account_id: str}
@optional {page: num=1, per_page: num=1000, creator: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/images/v1
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/images/v1/direct_upload
@required {account_id: str}
@optional {expiry: str(date-time)}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/images/v1/keys
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/images/v1/keys/{signing_key_name}
@required {signing_key_name: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/images/v1/keys/{signing_key_name}
@required {signing_key_name: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/images/v1/stats
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/images/v1/variants
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/images/v1/variants
@required {account_id: str, id: str, options: map{fit!: str, height!: num, metadata!: str, width!: num}}
@optional {neverRequireSignedURLs: bool=false}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/images/v1/variants/{variant_id}
@required {variant_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/images/v1/variants/{variant_id}
@required {variant_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/images/v1/variants/{variant_id}
@required {variant_id: str, account_id: str, options: map{fit!: str, height!: num, metadata!: str, width!: num}}
@optional {neverRequireSignedURLs: bool=false}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/images/v1/variants/{variant_id}/flat
@required {variant_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/images/v1/{image_id}
@required {image_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/images/v1/{image_id}
@required {image_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/images/v1/{image_id}
@required {image_id: str, account_id: str}
@optional {creator: str, metadata: map, requireSignedURLs: bool}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/images/v1/{image_id}/blob
@required {image_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/images/v2
@required {account_id: str}
@optional {continuation_token: str, per_page: num=1000, sort_order: str(asc/desc)=desc, creator: str, meta.<field>[<operator>]: str}
@returns(200)
@errors {400, 4XX}

@endpoint POST /accounts/{account_id}/images/v2/direct_upload
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/images/v2/metadata/keys
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/images/v2/sourcingkit/migrations
@required {account_id: str}
@optional {offset: int=0, limit: int=25}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/images/v2/sourcingkit/migrations
@required {account_id: str, sourceId: str(uuid)}
@optional {conflictBehaviour: str(skip/overwrite)=skip, excludedContentTypes: [str], pathPrefix: str, rootDirectory: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/images/v2/sourcingkit/migrations/{migration_id}
@required {account_id: str, migration_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/images/v2/sourcingkit/migrations/{migration_id}
@required {account_id: str, migration_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/images/v2/sourcingkit/migrations/{migration_id}/lifecycle
@required {account_id: str, migration_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/images/v2/sourcingkit/migrations/{migration_id}/lifecycle/abort
@required {account_id: str, migration_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/images/v2/sourcingkit/migrations/{migration_id}/lifecycle/start
@required {account_id: str, migration_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/images/v2/sourcingkit/migrations/{migration_id}/logs
@required {account_id: str, migration_id: str(uuid)}
@optional {offset: int=0, limit: int=25}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/images/v2/sourcingkit/sources
@required {account_id: str}
@optional {offset: int=0, limit: int=25, name: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/images/v2/sourcingkit/sources
@required {account_id: str, bucket: str, name: str, secret: map, vendor: str(s3/r2)}
@optional {account: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/images/v2/sourcingkit/sources/connectivity-precheck
@required {account_id: str, bucket: str, secret: map, vendor: str(s3/r2)}
@optional {account: str, region: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/images/v2/sourcingkit/sources/{source_id}
@required {account_id: str, source_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/images/v2/sourcingkit/sources/{source_id}
@required {account_id: str, source_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/images/v2/sourcingkit/sources/{source_id}
@required {account_id: str, source_id: str(uuid), name: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/images/v2/sourcingkit/sources/{source_id}/connectivity
@required {account_id: str, source_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/infrastructure/targets
@required {account_id: str}
@optional {hostname: str, hostname_contains: str, virtual_network_id: str(uuid), ip_v4: str, ip_v6: str, created_before: str(date-time), created_after: str(date-time), modified_before: str(date-time), modified_after: str(date-time), ips: [str], target_ids: [str(uuid)], ip_like: str, ipv4_start: str, ipv4_end: str, ipv6_start: str, ipv6_end: str, tag: [str], page: int(int32)=1, per_page: int(int32)=1000, order: str(hostname/created_at), direction: any}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/infrastructure/targets
@required {account_id: str, hostname: str, ip: map{ipv4: map, ipv6: map}}
@optional {tags: map}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/infrastructure/targets/batch
@required {account_id: str, target_ids: [str(uuid)]}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/infrastructure/targets/batch
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/infrastructure/targets/batch_delete
@required {account_id: str, target_ids: [str(uuid)]}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/infrastructure/targets/batch_tags
@required {account_id: str, items: [map{tags!: map, target_id!: str(uuid)}]}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/infrastructure/targets/{target_id}
@required {account_id: str, target_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/infrastructure/targets/{target_id}
@required {account_id: str, target_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/infrastructure/targets/{target_id}
@required {account_id: str, target_id: str(uuid), hostname: str, ip: map{ipv4: map, ipv6: map}}
@optional {tags: map}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/intel/asn/{asn}
@required {asn: int, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/intel/asn/{asn}/subnets
@required {asn: int, account_id: str}
@returns(200) {asn: int, count: num, ip_count_total: int, page: num, per_page: num, subnets: [str]}
@errors {4XX}

@endpoint GET /accounts/{account_id}/intel/attack-surface-report/issue-types
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/intel/attack-surface-report/issues
@required {account_id: str}
@optional {dismissed: bool, issue_class: [str], issue_type: [str], product: [str], source: [str], severity: [str], subject: [str], issue_class~neq: [str], issue_type~neq: [str], product~neq: [str], severity~neq: [str], subject~neq: [str], page: any=1, per_page: any=25}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/intel/attack-surface-report/issues/class
@required {account_id: str}
@optional {dismissed: bool, issue_class: [str], issue_type: [str], product: [str], source: [str], severity: [str], subject: [str], issue_class~neq: [str], issue_type~neq: [str], product~neq: [str], severity~neq: [str], subject~neq: [str]}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/intel/attack-surface-report/issues/severity
@required {account_id: str}
@optional {dismissed: bool, issue_class: [str], issue_type: [str], product: [str], source: [str], severity: [str], subject: [str], issue_class~neq: [str], issue_type~neq: [str], product~neq: [str], severity~neq: [str], subject~neq: [str]}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/intel/attack-surface-report/issues/type
@required {account_id: str}
@optional {dismissed: bool, issue_class: [str], issue_type: [str], product: [str], source: [str], severity: [str], subject: [str], issue_class~neq: [str], issue_type~neq: [str], product~neq: [str], severity~neq: [str], subject~neq: [str]}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/intel/attack-surface-report/issues/{issue_id}/dismiss
@required {account_id: str, issue_id: str}
@optional {dismiss: bool=true}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/intel/dns
@required {account_id: str}
@optional {start_end_params: map, ipv4: str, page: num, per_page: num}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/intel/domain
@required {account_id: str}
@optional {domain: str, skip_dns: bool, skip_ranking: bool=false}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/intel/domain-history
@required {account_id: str}
@optional {domain: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/intel/domain/bulk
@required {account_id: str}
@optional {domain: [str], include_ranking: bool=false, skip_ranking: bool}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/intel/indicator-feeds
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/intel/indicator-feeds
@required {account_id: str}
@optional {description: str, name: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/intel/indicator-feeds/permissions/add
@required {account_id: str}
@optional {account_tag: str, feed_id: int}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/intel/indicator-feeds/permissions/createProvider
@required {account_id: str, account_id: int, name: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/intel/indicator-feeds/permissions/remove
@required {account_id: str}
@optional {account_tag: str, feed_id: int}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/intel/indicator-feeds/permissions/view
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/intel/indicator-feeds/{feed_id}
@required {account_id: str, feed_id: int}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/intel/indicator-feeds/{feed_id}
@required {account_id: str, feed_id: int}
@optional {description: str, is_attributable: bool, is_downloadable: bool, is_public: bool, name: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/intel/indicator-feeds/{feed_id}/data
@required {account_id: str, feed_id: int}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/intel/indicator-feeds/{feed_id}/download
@required {account_id: str, feed_id: int}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/intel/indicator-feeds/{feed_id}/snapshot
@required {account_id: str, feed_id: int}
@optional {Cf-Async-Upload: str}
@returns(200)
@returns(202)
@errors {413, 4XX}

@endpoint GET /accounts/{account_id}/intel/indicator-feeds/{feed_id}/uploads/{upload_id}
@required {account_id: str, feed_id: int, upload_id: int(int64)}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/intel/ip
@required {account_id: str}
@optional {ipv4: str, ipv6: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/intel/ip-lists
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/intel/miscategorization
@required {account_id: str}
@optional {content_adds: [int], content_removes: [int], indicator_type: str(domain/ipv4/ipv6/url), ip: str, security_adds: [int], security_removes: [int], url: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/intel/sinkholes
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/intel/sinkholes
@required {account_id: str, name: str}
@optional {r2_bucket: str, r2_id: str, r2_secret: str}
@returns(201)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/intel/sinkholes/{sinkhole_id}
@required {account_id: str, sinkhole_id: str}
@returns(200)
@errors {409, 4XX}

@endpoint GET /accounts/{account_id}/intel/sinkholes/{sinkhole_id}
@required {account_id: str, sinkhole_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/intel/sinkholes/{sinkhole_id}
@required {account_id: str, sinkhole_id: str, name: str}
@optional {r2_bucket: str, r2_id: str, r2_secret: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/intel/sinkholes/{sinkhole_id}/ingresses
@required {account_id: str, sinkhole_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/intel/url
@required {account_id: str, url: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/intel/whois
@required {account_id: str}
@optional {domain: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/invoices
@required {account_id: str}
@optional {toggle: bool}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/load_balancers
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/load_balancers
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/load_balancers/monitor_groups
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/load_balancers/monitor_groups
@required {account_id: str, description: str, id: any, members: [map{created_at: str(date-time), enabled!: bool, monitor_id!: str, monitoring_only!: bool, must_be_healthy!: bool, updated_at: str(date-time)}]}
@optional {created_on: str(date-time), modified_on: str(date-time)}
@returns(200)
@errors {412, 4XX}

@endpoint DELETE /accounts/{account_id}/load_balancers/monitor_groups/{monitor_group_id}
@required {monitor_group_id: str, account_id: str}
@returns(200)
@errors {412, 4XX}

@endpoint GET /accounts/{account_id}/load_balancers/monitor_groups/{monitor_group_id}
@required {monitor_group_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/load_balancers/monitor_groups/{monitor_group_id}
@required {monitor_group_id: str, account_id: str, description: str, id: any, members: [map{created_at: str(date-time), enabled!: bool, monitor_id!: str, monitoring_only!: bool, must_be_healthy!: bool, updated_at: str(date-time)}]}
@optional {created_on: str(date-time), modified_on: str(date-time)}
@returns(200)
@errors {412, 4XX}

@endpoint PUT /accounts/{account_id}/load_balancers/monitor_groups/{monitor_group_id}
@required {monitor_group_id: str, account_id: str, description: str, id: any, members: [map{created_at: str(date-time), enabled!: bool, monitor_id!: str, monitoring_only!: bool, must_be_healthy!: bool, updated_at: str(date-time)}]}
@optional {created_on: str(date-time), modified_on: str(date-time)}
@returns(200)
@errors {412, 4XX}

@endpoint GET /accounts/{account_id}/load_balancers/monitor_groups/{monitor_group_id}/references
@required {monitor_group_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/load_balancers/monitors
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/load_balancers/monitors
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/load_balancers/monitors/{monitor_id}
@required {monitor_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/load_balancers/monitors/{monitor_id}
@required {monitor_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/load_balancers/monitors/{monitor_id}
@required {monitor_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/load_balancers/monitors/{monitor_id}
@required {monitor_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/load_balancers/monitors/{monitor_id}/preview
@required {monitor_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/load_balancers/monitors/{monitor_id}/references
@required {monitor_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/load_balancers/pools
@required {account_id: str}
@optional {monitor: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/load_balancers/pools
@required {account_id: str}
@optional {notification_email: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/load_balancers/pools
@required {account_id: str, name: str, origins: [map{address: str, disabled_at: str(date-time), enabled: bool, flatten_cname: bool, header: map, name: str, port: int, virtual_network_id: str, weight: num}]}
@optional {description: str=, enabled: bool=true, latitude: num, load_shedding: map{default_percent: num, default_policy: str, session_percent: num, session_policy: str}, longitude: num, minimum_origins: int=1, monitor: str, monitor_group: str, notification_email: str=, notification_filter: map{origin: map, pool: map}, origin_steering: map{policy: str}}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/load_balancers/pools/{pool_id}
@required {pool_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/load_balancers/pools/{pool_id}
@required {pool_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/load_balancers/pools/{pool_id}
@required {pool_id: str, account_id: str}
@optional {check_regions: [str], description: str=, disabled_at: str(date-time), enabled: bool=true, health_sources: [str], latitude: num, load_shedding: map{default_percent: num, default_policy: str, session_percent: num, session_policy: str}, longitude: num, minimum_origins: int=1, monitor: str, monitor_group: str, name: str, notification_email: str=, notification_filter: map{origin: map, pool: map}, origin_steering: map{policy: str}, origins: [map{address: str, disabled_at: str(date-time), enabled: bool, flatten_cname: bool, header: map, name: str, port: int, virtual_network_id: str, weight: num}]}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/load_balancers/pools/{pool_id}
@required {pool_id: str, account_id: str, name: str, origins: [map{address: str, disabled_at: str(date-time), enabled: bool, flatten_cname: bool, header: map, name: str, port: int, virtual_network_id: str, weight: num}]}
@optional {check_regions: [str], description: str=, disabled_at: str(date-time), enabled: bool=true, health_sources: [str], latitude: num, load_shedding: map{default_percent: num, default_policy: str, session_percent: num, session_policy: str}, longitude: num, minimum_origins: int=1, monitor: str, monitor_group: str, notification_email: str=, notification_filter: map{origin: map, pool: map}, origin_steering: map{policy: str}}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/load_balancers/pools/{pool_id}/health
@required {pool_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/load_balancers/pools/{pool_id}/preview
@required {pool_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/load_balancers/pools/{pool_id}/references
@required {pool_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/load_balancers/preview/{preview_id}
@required {preview_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/load_balancers/regions
@required {account_id: str}
@optional {subdivision_code: str, subdivision_code_a2: str, country_code_a2: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/load_balancers/regions/{region_id}
@required {region_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/load_balancers/search
@required {account_id: str}
@optional {query: str=, references: str(/*/referral/referrer)=, page: num, per_page: num=25}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/load_balancers/usage
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/load_balancers/{load_balancer_id}
@required {account_id: str, load_balancer_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/load_balancers/{load_balancer_id}
@required {account_id: str, load_balancer_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/load_balancers/{load_balancer_id}
@required {account_id: str, load_balancer_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/load_balancers/{load_balancer_id}
@required {account_id: str, load_balancer_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/logpush/datasets/{dataset_id}/fields
@required {dataset_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/logpush/datasets/{dataset_id}/jobs
@required {dataset_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/logpush/jobs
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/logpush/jobs
@required {account_id: str, destination_conf: str(uri)}
@optional {dataset: str(access_requests/account_abuse_protection_events/audit_logs/audit_logs_v2/biso_user_actions/casb_findings/device_posture_results/dex_application_tests/dex_device_state_events/dlp_forensic_copies/dns_firewall_logs/dns_logs/email_security_alerts/email_security_post_delivery_events/firewall_events/gateway_dns/gateway_http/gateway_network/http_requests/ipsec_logs/magic_bgp_logs/magic_ids_detections/mcp_portal_logs/mnm_flow_logs/nel_reports/network_analytics_logs/page_shield_events/sinkhole_http_logs/spectrum_events/ssh_logs/turnstile_events/warp_config_changes/warp_toggle_changes/websocket_analytics/workers_trace_events/zaraz_events/zero_trust_network_sessions)=http_requests, enabled: bool=false, filter: str, filter_attack_traffic: bool=false, frequency: str(high/low)=high, kind: str(/edge)=, logpull_options: str(uri-reference), max_upload_bytes: int, max_upload_interval_seconds: int, max_upload_records: int, name: str, output_options: map{CVE-2021-44228: bool, batch_prefix: str, batch_suffix: str, field_delimiter: str, field_names: [str], merge_subrequests: bool, output_type: str, record_delimiter: str, record_prefix: str, record_suffix: str, record_template: str, sample_rate: num(float), timestamp_format: str}, ownership_challenge: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/logpush/jobs/{job_id}
@required {job_id: int, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/logpush/jobs/{job_id}
@required {job_id: int, account_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/logpush/jobs/{job_id}
@required {job_id: int, account_id: str}
@optional {destination_conf: str(uri), enabled: bool=false, filter: str, filter_attack_traffic: bool=false, frequency: str(high/low)=high, kind: str(/edge)=, logpull_options: str(uri-reference), max_upload_bytes: int, max_upload_interval_seconds: int, max_upload_records: int, name: str, output_options: map{CVE-2021-44228: bool, batch_prefix: str, batch_suffix: str, field_delimiter: str, field_names: [str], merge_subrequests: bool, output_type: str, record_delimiter: str, record_prefix: str, record_suffix: str, record_template: str, sample_rate: num(float), timestamp_format: str}, ownership_challenge: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/logpush/ownership
@required {account_id: str, destination_conf: str(uri)}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/logpush/ownership/validate
@required {account_id: str, destination_conf: str(uri), ownership_challenge: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/logpush/transformers
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/logpush/transformers
@required {account_id: str, code: str, name: str}
@optional {description: str}
@returns(201)
@errors {4XX}

@endpoint POST /accounts/{account_id}/logpush/transformers/preview
@required {account_id: str, input: map, sql: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/logpush/transformers/{transformer_id}
@required {account_id: str, transformer_id: int}
@returns(200)
@errors {409, 4XX}

@endpoint GET /accounts/{account_id}/logpush/transformers/{transformer_id}
@required {account_id: str, transformer_id: int}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/logpush/transformers/{transformer_id}
@required {account_id: str, transformer_id: int, name: str}
@optional {code: str, description: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/logpush/transformers/{transformer_id}/content
@required {account_id: str, transformer_id: int}
@optional {version_id: int(int64)}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/logpush/transformers/{transformer_id}/versions
@required {account_id: str, transformer_id: int}
@optional {limit: int=10}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/logpush/validate/destination
@required {account_id: str, destination_conf: str(uri)}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/logpush/validate/destination/exists
@required {account_id: str, destination_conf: str(uri)}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/logpush/validate/origin
@required {account_id: str, logpull_options: str(uri-reference)}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/logs/audit
@required {account_id: str, since: str(date), before: str(date)}
@optional {account_name: [str], action_result: [str], action_type: [str], actor_context: [str], actor_email: [str(email)], actor_id: [str], actor_ip_address: [str], actor_token_id: [str], actor_token_name: [str], actor_type: [str], audit_log_id: [str], id: [str], raw_cf_ray_id: [str], raw_method: [str], raw_status_code: [int], raw_uri: [str], resource_id: [str], resource_product: [str], resource_type: [str], resource_scope: [str], product_category: [str], zone_id: [str], zone_name: [str], account_name.not: [str], action_result.not: [str], action_type.not: [str], actor_context.not: [str], actor_email.not: [str(email)], actor_id.not: [str], actor_ip_address.not: [str], actor_token_id.not: [str], actor_token_name.not: [str], actor_type.not: [str], audit_log_id.not: [str], id.not: [str], raw_cf_ray_id.not: [str], raw_method.not: [str], raw_status_code.not: [int], raw_uri.not: [str], resource_id.not: [str], resource_product.not: [str], resource_type.not: [str], resource_scope.not: [str], zone_id.not: [str], zone_name.not: [str], direction: str(desc/asc)=desc, limit: num=100, cursor: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/logs/audit/product_categories
@required {account_id: str}
@returns(200) {errors: [map], result: [map], success: bool}
@errors {4XX}

@endpoint GET /accounts/{account_id}/logs/audit/{id}/history
@required {account_id: str, id: str(uuid), action_time: str(date-time), since: str(date), before: str(date)}
@optional {direction: str(desc/asc)=desc, limit: num=100, cursor: str}
@returns(200) {errors: [map], result: [map], result_info: map{count: int, cursor: str, history_status: str}, success: bool}
@errors {404, 4XX}

@endpoint DELETE /accounts/{account_id}/logs/control/cmb/config
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/logs/control/cmb/config
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/logs/control/cmb/config
@required {account_id: str}
@optional {allow_out_of_region_access: bool, regions: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/logs/explorer/datasets
@required {account_id: str}
@optional {include_zones: bool}
@returns(200) {errors: [map], messages: [str], result: [map]?, success: bool}
@errors {400, 403, 404}

@endpoint POST /accounts/{account_id}/logs/explorer/datasets
@required {account_id: str, dataset: str}
@optional {fields: [map{enabled!: bool, name!: str}], filter: str}
@returns(201) {errors: [map], messages: [str], result: any, success: bool}
@errors {400, 403, 404, 409}

@endpoint GET /accounts/{account_id}/logs/explorer/datasets/available
@required {account_id: str}
@returns(200) {errors: [map], messages: [str], result: [map]?, success: bool}
@errors {400, 403, 404}

@endpoint DELETE /accounts/{account_id}/logs/explorer/datasets/{dataset_id}
@required {account_id: str, dataset_id: str}
@returns(202) {errors: [map], messages: [str], result: any, success: bool}
@errors {400, 403, 404, 409}

@endpoint GET /accounts/{account_id}/logs/explorer/datasets/{dataset_id}
@required {account_id: str, dataset_id: str}
@returns(200) {errors: [map], messages: [str], result: any, success: bool}
@errors {400, 403, 404}

@endpoint PUT /accounts/{account_id}/logs/explorer/datasets/{dataset_id}
@required {account_id: str, dataset_id: str, enabled: bool}
@optional {deletion_protection: bool, fields: [map{enabled!: bool, name!: str}], filter: str}
@returns(200) {errors: [map], messages: [str], result: any, success: bool}
@errors {400, 403, 404}

@endpoint GET /accounts/{account_id}/logs/explorer/query/sql
@required {account_id: str, query: str}
@returns(200) {errors: [map], messages: [str], result: [map]?, success: bool}
@errors {400, 403, 404, 507}

@endpoint POST /accounts/{account_id}/logs/explorer/query/sql
@required {account_id: str}
@returns(200) {errors: [map], messages: [str], result: [map]?, success: bool}
@errors {400, 403, 404, 507}

@endpoint GET /accounts/{account_id}/logs/list
@required {account_id: str, R2-Access-Key-Id: str, R2-Secret-Access-Key: str, start: str(date-time), end: str(date-time), bucket: str}
@optional {prefix: str, limit: int}
@returns(200) {errors: [str], messages: [str], result: map{keys: [str]}, success: bool}
@errors {400, 401}

@endpoint GET /accounts/{account_id}/logs/retrieve
@required {account_id: str, R2-Access-Key-Id: str, R2-Secret-Access-Key: str, start: str(date-time), end: str(date-time), bucket: str}
@optional {prefix: str}
@returns(200)
@errors {400, 401}

@endpoint DELETE /accounts/{account_id}/magic/advanced_dns_protection/configs/dns_protection/rules
@required {account_id: str}
@returns(200) {errors: [map], messages: [map], success: bool}
@errors {4XX}

@endpoint GET /accounts/{account_id}/magic/advanced_dns_protection/configs/dns_protection/rules
@required {account_id: str}
@optional {page: int(int64), per_page: int(int64), order: str, direction: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/magic/advanced_dns_protection/configs/dns_protection/rules
@required {account_id: str, burst_sensitivity: str, mode: str, name: str, profile_sensitivity: str, rate_sensitivity: str, scope: str}
@optional {block_any_queries: bool}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/magic/advanced_dns_protection/configs/dns_protection/rules/{rule_id}
@required {account_id: str, rule_id: str}
@returns(200) {errors: [map], messages: [map], success: bool}
@errors {4XX}

@endpoint GET /accounts/{account_id}/magic/advanced_dns_protection/configs/dns_protection/rules/{rule_id}
@required {account_id: str, rule_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/magic/advanced_dns_protection/configs/dns_protection/rules/{rule_id}
@required {account_id: str, rule_id: str}
@optional {block_any_queries: bool, burst_sensitivity: str, mode: str, profile_sensitivity: str, rate_sensitivity: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/magic/advanced_tcp_protection/configs/allowlist
@required {account_id: str}
@returns(200) {errors: [map], messages: [map], success: bool}
@errors {4XX}

@endpoint GET /accounts/{account_id}/magic/advanced_tcp_protection/configs/allowlist
@required {account_id: str}
@optional {page: int(int64), per_page: int(int64), order: str, direction: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/magic/advanced_tcp_protection/configs/allowlist
@required {account_id: str, comment: str, enabled: bool, prefix: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/magic/advanced_tcp_protection/configs/allowlist/{prefix_id}
@required {account_id: str, prefix_id: str}
@returns(200) {errors: [map], messages: [map], success: bool}
@errors {4XX}

@endpoint GET /accounts/{account_id}/magic/advanced_tcp_protection/configs/allowlist/{prefix_id}
@required {account_id: str, prefix_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/magic/advanced_tcp_protection/configs/allowlist/{prefix_id}
@required {account_id: str, prefix_id: str}
@optional {comment: str, enabled: bool}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/magic/advanced_tcp_protection/configs/prefixes
@required {account_id: str}
@returns(200) {errors: [map], messages: [map], success: bool}
@errors {4XX}

@endpoint GET /accounts/{account_id}/magic/advanced_tcp_protection/configs/prefixes
@required {account_id: str}
@optional {page: int(int64), per_page: int(int64), order: str, direction: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/magic/advanced_tcp_protection/configs/prefixes
@required {account_id: str, comment: str, excluded: bool, prefix: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/magic/advanced_tcp_protection/configs/prefixes/bulk
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/magic/advanced_tcp_protection/configs/prefixes/{prefix_id}
@required {account_id: str, prefix_id: str}
@returns(200) {errors: [map], messages: [map], success: bool}
@errors {4XX}

@endpoint GET /accounts/{account_id}/magic/advanced_tcp_protection/configs/prefixes/{prefix_id}
@required {account_id: str, prefix_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/magic/advanced_tcp_protection/configs/prefixes/{prefix_id}
@required {account_id: str, prefix_id: str}
@optional {comment: str, excluded: bool}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/magic/advanced_tcp_protection/configs/syn_protection/filters
@required {account_id: str}
@returns(200) {errors: [map], messages: [map], success: bool}
@errors {4XX}

@endpoint GET /accounts/{account_id}/magic/advanced_tcp_protection/configs/syn_protection/filters
@required {account_id: str}
@optional {mode: str, page: int(int64), per_page: int(int64), order: str, direction: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/magic/advanced_tcp_protection/configs/syn_protection/filters
@required {account_id: str, expression: str, mode: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/magic/advanced_tcp_protection/configs/syn_protection/filters/{filter_id}
@required {account_id: str, filter_id: str}
@returns(200) {errors: [map], messages: [map], success: bool}
@errors {4XX}

@endpoint GET /accounts/{account_id}/magic/advanced_tcp_protection/configs/syn_protection/filters/{filter_id}
@required {account_id: str, filter_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/magic/advanced_tcp_protection/configs/syn_protection/filters/{filter_id}
@required {account_id: str, filter_id: str}
@optional {expression: str, mode: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/magic/advanced_tcp_protection/configs/syn_protection/rules
@required {account_id: str}
@returns(200) {errors: [map], messages: [map], success: bool}
@errors {4XX}

@endpoint GET /accounts/{account_id}/magic/advanced_tcp_protection/configs/syn_protection/rules
@required {account_id: str}
@optional {page: int(int64), per_page: int(int64), order: str, direction: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/magic/advanced_tcp_protection/configs/syn_protection/rules
@required {account_id: str, burst_sensitivity: str, mode: str, name: str, rate_sensitivity: str, scope: str}
@optional {mitigation_type: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/magic/advanced_tcp_protection/configs/syn_protection/rules/{rule_id}
@required {account_id: str, rule_id: str}
@returns(200) {errors: [map], messages: [map], success: bool}
@errors {4XX}

@endpoint GET /accounts/{account_id}/magic/advanced_tcp_protection/configs/syn_protection/rules/{rule_id}
@required {account_id: str, rule_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/magic/advanced_tcp_protection/configs/syn_protection/rules/{rule_id}
@required {account_id: str, rule_id: str}
@optional {burst_sensitivity: str, mitigation_type: str, mode: str, rate_sensitivity: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/magic/advanced_tcp_protection/configs/tcp_flow_protection/filters
@required {account_id: str}
@returns(200) {errors: [map], messages: [map], success: bool}
@errors {4XX}

@endpoint GET /accounts/{account_id}/magic/advanced_tcp_protection/configs/tcp_flow_protection/filters
@required {account_id: str}
@optional {mode: str, page: int(int64), per_page: int(int64), order: str, direction: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/magic/advanced_tcp_protection/configs/tcp_flow_protection/filters
@required {account_id: str, expression: str, mode: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/magic/advanced_tcp_protection/configs/tcp_flow_protection/filters/{filter_id}
@required {account_id: str, filter_id: str}
@returns(200) {errors: [map], messages: [map], success: bool}
@errors {4XX}

@endpoint GET /accounts/{account_id}/magic/advanced_tcp_protection/configs/tcp_flow_protection/filters/{filter_id}
@required {account_id: str, filter_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/magic/advanced_tcp_protection/configs/tcp_flow_protection/filters/{filter_id}
@required {account_id: str, filter_id: str}
@optional {expression: str, mode: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/magic/advanced_tcp_protection/configs/tcp_flow_protection/rules
@required {account_id: str}
@returns(200) {errors: [map], messages: [map], success: bool}
@errors {4XX}

@endpoint GET /accounts/{account_id}/magic/advanced_tcp_protection/configs/tcp_flow_protection/rules
@required {account_id: str}
@optional {page: int(int64), per_page: int(int64), order: str, direction: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/magic/advanced_tcp_protection/configs/tcp_flow_protection/rules
@required {account_id: str, burst_sensitivity: str, mode: str, name: str, rate_sensitivity: str, scope: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/magic/advanced_tcp_protection/configs/tcp_flow_protection/rules/{rule_id}
@required {account_id: str, rule_id: str}
@returns(200) {errors: [map], messages: [map], success: bool}
@errors {4XX}

@endpoint GET /accounts/{account_id}/magic/advanced_tcp_protection/configs/tcp_flow_protection/rules/{rule_id}
@required {account_id: str, rule_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/magic/advanced_tcp_protection/configs/tcp_flow_protection/rules/{rule_id}
@required {account_id: str, rule_id: str}
@optional {burst_sensitivity: str, mode: str, rate_sensitivity: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/magic/advanced_tcp_protection/configs/tcp_protection_status
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/magic/advanced_tcp_protection/configs/tcp_protection_status
@required {account_id: str, enabled: bool}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/magic/apps
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/magic/apps
@required {account_id: str, name: str, type: str}
@optional {hostnames: [str], ip_subnets: [any], source_subnets: [any]}
@returns(201)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/magic/apps/{account_app_id}
@required {account_id: str, account_app_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/magic/apps/{account_app_id}
@required {account_id: str, account_app_id: str}
@optional {hostnames: [str], ip_subnets: [any], name: str, source_subnets: [any], type: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/magic/apps/{account_app_id}
@required {account_id: str, account_app_id: str}
@optional {hostnames: [str], ip_subnets: [any], name: str, source_subnets: [any], type: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/magic/bgp/filter_profiles
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/magic/bgp/filter_profiles
@required {account_id: str, match_action: str(allow/deny), name: str, targets: [str]}
@optional {description: str=}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/magic/bgp/filter_profiles/{profile_id}
@required {account_id: str, profile_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/magic/bgp/filter_profiles/{profile_id}
@required {account_id: str, profile_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/magic/bgp/filter_profiles/{profile_id}
@required {account_id: str, profile_id: str}
@optional {description: str, match_action: str(allow/deny), name: str, targets: [str]}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/magic/bgp/settings
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/magic/bgp/settings
@required {account_id: str}
@optional {cloudflare_asn: int(uint32), redistribute: map{static:wan: bool}}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/magic/cf1_sites
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/magic/cf1_sites
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/magic/cf1_sites/{cf1_site_id}
@required {account_id: str, cf1_site_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/magic/cf1_sites/{cf1_site_id}
@required {account_id: str, cf1_site_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/magic/cf1_sites/{cf1_site_id}
@required {account_id: str, cf1_site_id: str}
@optional {description: str, location: map{lat: num(float), long: num(float), name: str}, name: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/magic/cf1_sites/{cf1_site_id}/ramps
@required {account_id: str, cf1_site_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/magic/cf1_sites/{cf1_site_id}/ramps
@required {account_id: str, cf1_site_id: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/magic/cf1_sites/{cf1_site_id}/ramps/{ramp_id}
@required {account_id: str, cf1_site_id: str, ramp_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/magic/cf1_sites/{cf1_site_id}/ramps/{ramp_id}
@required {account_id: str, cf1_site_id: str, ramp_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/magic/cf_interconnects
@required {account_id: str}
@optional {x-magic-new-hc-target: bool}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/magic/cf_interconnects
@required {account_id: str}
@optional {x-magic-new-hc-target: bool}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/magic/cf_interconnects/{cf_interconnect_id}
@required {cf_interconnect_id: str, account_id: str}
@optional {x-magic-new-hc-target: bool}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/magic/cf_interconnects/{cf_interconnect_id}
@required {cf_interconnect_id: str, account_id: str}
@optional {x-magic-new-hc-target: bool, automatic_return_routing: bool=false, bgp: map{as_no: int(int32), cloudflare_endpoint: str(ipv4), customer_asn: int(int32), customer_endpoint: str(ipv4), export_filter_id: str, extra_prefixes: [str(cidr)], import_filter_id: str, md5_key: str}, description: str, gre: any, health_check: any, interface_address: str, interface_address6: str, mtu: int=1476, name: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/magic/cloud/catalog-syncs
@required {account_id: str}
@returns(200)
@errors {400, 401, 403, 404, 500}

@endpoint POST /accounts/{account_id}/magic/cloud/catalog-syncs
@required {account_id: str, destination_type: str(NONE/ZERO_TRUST_LIST), name: str, update_mode: str(AUTO/MANUAL)}
@optional {forwarded: str, description: str, policy: str}
@returns(201)
@errors {400, 401, 403, 409, 422, 500}

@endpoint GET /accounts/{account_id}/magic/cloud/catalog-syncs/prebuilt-policies
@required {account_id: str}
@optional {destination_type: str}
@returns(200)
@errors {400, 401, 403, 500}

@endpoint DELETE /accounts/{account_id}/magic/cloud/catalog-syncs/{sync_id}
@required {account_id: str, sync_id: str(uuid)}
@optional {delete_destination: bool}
@returns(200)
@errors {400, 401, 403, 404, 409, 500}

@endpoint GET /accounts/{account_id}/magic/cloud/catalog-syncs/{sync_id}
@required {account_id: str, sync_id: str(uuid)}
@returns(200)
@errors {400, 401, 403, 404, 500}

@endpoint PATCH /accounts/{account_id}/magic/cloud/catalog-syncs/{sync_id}
@required {account_id: str, sync_id: str(uuid)}
@optional {description: str, name: str, policy: str, update_mode: str(AUTO/MANUAL)}
@returns(200)
@errors {400, 401, 403, 404, 409, 422, 500}

@endpoint PUT /accounts/{account_id}/magic/cloud/catalog-syncs/{sync_id}
@required {account_id: str, sync_id: str(uuid)}
@optional {description: str, name: str, policy: str, update_mode: str(AUTO/MANUAL)}
@returns(200)
@errors {400, 401, 403, 404, 409, 422, 500}

@endpoint POST /accounts/{account_id}/magic/cloud/catalog-syncs/{sync_id}/refresh
@required {account_id: str, sync_id: str(uuid)}
@returns(200)
@errors {400, 401, 403, 404, 409, 422, 500}

@endpoint GET /accounts/{account_id}/magic/cloud/onramps
@required {account_id: str}
@optional {order_by: str, desc: bool, status: bool, vpcs: bool}
@returns(200)
@errors {400, 401, 403, 500}

@endpoint POST /accounts/{account_id}/magic/cloud/onramps
@required {account_id: str, cloud_type: str(AWS/AZURE/GOOGLE), dynamic_routing: bool, install_routes_in_cloud: bool, install_routes_in_magic_wan: bool, name: str, type: str(OnrampTypeSingle/OnrampTypeHub)}
@optional {forwarded: str, adopted_hub_id: str(uuid), attached_hubs: [str(uuid)], attached_vpcs: [str(uuid)], cloud_asn: int(uint32), description: str, hub_provider_id: str(uuid), manage_hub_to_hub_attachments: bool, manage_vpc_to_hub_attachments: bool, region: str, vpc: str(uuid)}
@returns(201)
@errors {400, 401, 403, 409, 422, 500}

@endpoint GET /accounts/{account_id}/magic/cloud/onramps/magic_wan_address_space
@required {account_id: str}
@returns(200)
@errors {400, 401, 403, 404, 500}

@endpoint PATCH /accounts/{account_id}/magic/cloud/onramps/magic_wan_address_space
@required {account_id: str, prefixes: [str]}
@returns(200)
@errors {400, 401, 403, 404, 422, 500}

@endpoint PUT /accounts/{account_id}/magic/cloud/onramps/magic_wan_address_space
@required {account_id: str, prefixes: [str]}
@returns(200)
@errors {400, 401, 403, 404, 422, 500}

@endpoint DELETE /accounts/{account_id}/magic/cloud/onramps/{onramp_id}
@required {account_id: str, onramp_id: str(uuid)}
@optional {destroy: bool, force: bool}
@returns(200)
@errors {400, 401, 403, 404, 409, 500}

@endpoint GET /accounts/{account_id}/magic/cloud/onramps/{onramp_id}
@required {account_id: str, onramp_id: str(uuid)}
@optional {status: bool, vpcs: bool, post_apply_resources: bool, planned_resources: bool}
@returns(200)
@errors {400, 401, 403, 404, 500}

@endpoint PATCH /accounts/{account_id}/magic/cloud/onramps/{onramp_id}
@required {account_id: str, onramp_id: str(uuid)}
@optional {attached_hubs: [str(uuid)], attached_vpcs: [str(uuid)], description: str, install_routes_in_cloud: bool, install_routes_in_magic_wan: bool, manage_hub_to_hub_attachments: bool, manage_vpc_to_hub_attachments: bool, name: str, vpc: str(uuid)}
@returns(200)
@errors {400, 401, 403, 404, 409, 422, 500}

@endpoint PUT /accounts/{account_id}/magic/cloud/onramps/{onramp_id}
@required {account_id: str, onramp_id: str(uuid)}
@optional {attached_hubs: [str(uuid)], attached_vpcs: [str(uuid)], description: str, install_routes_in_cloud: bool, install_routes_in_magic_wan: bool, manage_hub_to_hub_attachments: bool, manage_vpc_to_hub_attachments: bool, name: str, vpc: str(uuid)}
@returns(200)
@errors {400, 401, 403, 404, 409, 422, 500}

@endpoint POST /accounts/{account_id}/magic/cloud/onramps/{onramp_id}/apply
@required {account_id: str, onramp_id: str(uuid)}
@returns(202)
@errors {400, 401, 403, 404, 409, 500}

@endpoint POST /accounts/{account_id}/magic/cloud/onramps/{onramp_id}/export
@required {account_id: str, onramp_id: str(uuid)}
@returns(201)
@errors {400, 401, 403, 404, 409, 500}

@endpoint POST /accounts/{account_id}/magic/cloud/onramps/{onramp_id}/plan
@required {account_id: str, onramp_id: str(uuid)}
@returns(202)
@errors {400, 401, 403, 404, 409, 500}

@endpoint GET /accounts/{account_id}/magic/cloud/providers
@required {account_id: str}
@optional {status: bool, order_by: str, desc: bool, cloudflare: bool}
@returns(200)
@errors {400, 401, 403, 500}

@endpoint POST /accounts/{account_id}/magic/cloud/providers
@required {account_id: str, cloud_type: str(AWS/AZURE/GOOGLE/CLOUDFLARE), friendly_name: str}
@optional {forwarded: str, description: str}
@returns(201)
@errors {400, 401, 403, 409, 422, 500}

@endpoint POST /accounts/{account_id}/magic/cloud/providers/discover
@required {account_id: str}
@returns(202)
@errors {400, 401, 403, 409, 500}

@endpoint DELETE /accounts/{account_id}/magic/cloud/providers/{provider_id}
@required {account_id: str, provider_id: str(uuid)}
@returns(200)
@errors {400, 401, 403, 404, 500}

@endpoint GET /accounts/{account_id}/magic/cloud/providers/{provider_id}
@required {account_id: str, provider_id: str(uuid)}
@optional {status: bool}
@returns(200)
@errors {400, 401, 403, 404, 500}

@endpoint PATCH /accounts/{account_id}/magic/cloud/providers/{provider_id}
@required {account_id: str, provider_id: str(uuid)}
@optional {aws_arn: str, azure_subscription_id: str, azure_tenant_id: str, description: str, friendly_name: str, gcp_project_id: str, gcp_service_account_email: str}
@returns(200)
@errors {400, 401, 403, 404, 409, 422, 500}

@endpoint PUT /accounts/{account_id}/magic/cloud/providers/{provider_id}
@required {account_id: str, provider_id: str(uuid)}
@optional {aws_arn: str, azure_subscription_id: str, azure_tenant_id: str, description: str, friendly_name: str, gcp_project_id: str, gcp_service_account_email: str}
@returns(200)
@errors {400, 401, 403, 404, 409, 422, 500}

@endpoint POST /accounts/{account_id}/magic/cloud/providers/{provider_id}/discover
@required {account_id: str, provider_id: str(uuid)}
@optional {v2: bool}
@returns(202)
@errors {400, 401, 403, 404, 409, 500}

@endpoint GET /accounts/{account_id}/magic/cloud/providers/{provider_id}/initial_setup
@required {account_id: str, provider_id: str(uuid)}
@returns(200)
@errors {400, 401, 403, 404, 500}

@endpoint GET /accounts/{account_id}/magic/cloud/resources
@required {account_id: str}
@optional {provider_id: str, resource_type: [str], resource_id: [str(uuid)], region: str, resource_group: str, managed: bool, search: [str], order_by: str, desc: bool, per_page: int, page: int, cloudflare: bool, v2: bool}
@returns(200)
@errors {400, 401, 403, 404, 500}

@endpoint GET /accounts/{account_id}/magic/cloud/resources/export
@required {account_id: str}
@optional {provider_id: str, resource_type: [str], resource_id: [str(uuid)], region: str, resource_group: str, search: [str], order_by: str, desc: bool, v2: bool}
@returns(200)
@errors {400, 401, 403, 404, 500}

@endpoint POST /accounts/{account_id}/magic/cloud/resources/policy-preview
@required {account_id: str, policy: str}
@returns(200)
@errors {400, 401, 403, 422, 500}

@endpoint GET /accounts/{account_id}/magic/cloud/resources/{resource_id}
@required {account_id: str, resource_id: str(uuid)}
@optional {v2: bool}
@returns(200)
@errors {400, 401, 403, 404, 500}

@endpoint GET /accounts/{account_id}/magic/connectors
@required {account_id: str}
@optional {device_type: str(MANAGED/LICENSED)}
@returns(200)
@errors {400, 401, 403, 500}

@endpoint POST /accounts/{account_id}/magic/connectors
@required {account_id: str}
@returns(200)
@errors {400, 401, 403, 404, 409, 500}

@endpoint DELETE /accounts/{account_id}/magic/connectors/{connector_id}
@required {account_id: str, connector_id: str}
@returns(200)
@errors {400, 401, 403, 404, 500}

@endpoint GET /accounts/{account_id}/magic/connectors/{connector_id}
@required {account_id: str, connector_id: str}
@returns(200)
@errors {400, 401, 403, 404, 500}

@endpoint PATCH /accounts/{account_id}/magic/connectors/{connector_id}
@required {account_id: str, connector_id: str}
@returns(200)
@errors {400, 401, 403, 404, 500}

@endpoint PUT /accounts/{account_id}/magic/connectors/{connector_id}
@required {account_id: str, connector_id: str}
@returns(200)
@errors {400, 401, 403, 404, 500}

@endpoint GET /accounts/{account_id}/magic/connectors/{connector_id}/interrupts
@required {account_id: str, connector_id: str}
@returns(200)
@errors {400, 401, 403, 404, 500}

@endpoint POST /accounts/{account_id}/magic/connectors/{connector_id}/interrupts
@required {account_id: str, connector_id: str}
@optional {reboot: map{purge: bool}, restart: map{purge: bool}, shutdown: map{purge: bool}}
@returns(200)
@errors {400, 401, 403, 404, 409, 500}

@endpoint GET /accounts/{account_id}/magic/connectors/{connector_id}/telemetry/events
@required {account_id: str, connector_id: str, from: num, to: num}
@optional {limit: num, cursor: str, k: str}
@returns(200)
@errors {400, 401, 403, 429, 500}

@endpoint GET /accounts/{account_id}/magic/connectors/{connector_id}/telemetry/events/latest
@required {account_id: str, connector_id: str}
@returns(200)
@errors {400, 401, 403, 404, 429, 500}

@endpoint GET /accounts/{account_id}/magic/connectors/{connector_id}/telemetry/events/{event_t}.{event_n}
@required {account_id: str, connector_id: str, event_t: num, event_n: num}
@returns(200)
@errors {400, 401, 403, 404, 429, 500}

@endpoint GET /accounts/{account_id}/magic/connectors/{connector_id}/telemetry/snapshots
@required {account_id: str, connector_id: str, from: num, to: num}
@optional {limit: num, cursor: str}
@returns(200)
@errors {400, 401, 403, 429, 500}

@endpoint GET /accounts/{account_id}/magic/connectors/{connector_id}/telemetry/snapshots/latest
@required {account_id: str, connector_id: str}
@returns(200)
@errors {400, 401, 403, 404, 429, 500}

@endpoint GET /accounts/{account_id}/magic/connectors/{connector_id}/telemetry/snapshots/{snapshot_t}
@required {account_id: str, connector_id: str, snapshot_t: num}
@returns(200)
@errors {400, 401, 403, 404, 429, 500}

@endpoint GET /accounts/{account_id}/magic/gre_tunnels
@required {account_id: str}
@optional {x-magic-new-hc-target: bool}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/magic/gre_tunnels
@required {account_id: str, cloudflare_gre_endpoint: str, customer_gre_endpoint: str, interface_address: str, name: str}
@optional {x-magic-new-hc-target: bool, automatic_return_routing: bool=false, bgp: map{customer_asn!: int(int32), export_filter_id: str, extra_prefixes: [str(cidr)], import_filter_id: str, md5_key: str}, description: str, health_check: any, interface_address6: str, mtu: int=1476, ttl: int=64}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/magic/gre_tunnels
@required {account_id: str}
@optional {x-magic-new-hc-target: bool}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/magic/gre_tunnels/{gre_tunnel_id}
@required {gre_tunnel_id: str, account_id: str}
@optional {x-magic-new-hc-target: bool}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/magic/gre_tunnels/{gre_tunnel_id}
@required {gre_tunnel_id: str, account_id: str}
@optional {x-magic-new-hc-target: bool}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/magic/gre_tunnels/{gre_tunnel_id}
@required {gre_tunnel_id: str, account_id: str}
@optional {x-magic-new-hc-target: bool}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/magic/ipsec_tunnels
@required {account_id: str}
@optional {x-magic-new-hc-target: bool}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/magic/ipsec_tunnels
@required {account_id: str}
@optional {x-magic-new-hc-target: bool}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/magic/ipsec_tunnels
@required {account_id: str}
@optional {x-magic-new-hc-target: bool}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/magic/ipsec_tunnels/psk
@required {account_id: str, psks: [map{id!: any, psk!: str}]}
@optional {validate_only: bool}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/magic/ipsec_tunnels/{ipsec_tunnel_id}
@required {ipsec_tunnel_id: str, account_id: str}
@optional {x-magic-new-hc-target: bool}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/magic/ipsec_tunnels/{ipsec_tunnel_id}
@required {ipsec_tunnel_id: str, account_id: str}
@optional {x-magic-new-hc-target: bool}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/magic/ipsec_tunnels/{ipsec_tunnel_id}
@required {ipsec_tunnel_id: str, account_id: str, cloudflare_endpoint: str, interface_address: str, name: str}
@optional {x-magic-new-hc-target: bool, automatic_return_routing: bool=false, bgp: map{customer_asn!: int(int32), export_filter_id: str, extra_prefixes: [str(cidr)], import_filter_id: str, md5_key: str}, custom_remote_identities: map{fqdn_id: str}, customer_endpoint: str, description: str, health_check: any, interface_address6: str, psk: str, replay_protection: bool=false}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/magic/ipsec_tunnels/{ipsec_tunnel_id}/psk_generate
@required {ipsec_tunnel_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/magic/redundancy_groups
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/magic/redundancy_groups
@required {account_id: str, name: str}
@optional {description: str=, members: [map{id!: str, type!: str}]=}
@returns(201)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/magic/redundancy_groups/{redundancy_group_id}
@required {account_id: str, redundancy_group_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/magic/redundancy_groups/{redundancy_group_id}
@required {account_id: str, redundancy_group_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/magic/redundancy_groups/{redundancy_group_id}
@required {account_id: str, redundancy_group_id: str, name: str}
@optional {description: str=, members: [map{id!: str, type!: str}]=}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/magic/routes
@required {account_id: str, routes: [any]}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/magic/routes
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/magic/routes
@required {account_id: str, nexthop: str, prefix: str, priority: int}
@optional {description: str, scope: map{colo_names: [str], colo_regions: [str]}, weight: int}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/magic/routes
@required {account_id: str, routes: [any]}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/magic/routes/{route_id}
@required {route_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/magic/routes/{route_id}
@required {route_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/magic/routes/{route_id}
@required {route_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/magic/sites
@required {account_id: str}
@optional {connectorid: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/magic/sites
@required {account_id: str, name: str}
@optional {connector_id: str, description: str, ha_mode: bool, location: map{lat: str, lon: str}, secondary_connector_id: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/magic/sites/{site_id}
@required {site_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/magic/sites/{site_id}
@required {site_id: str, account_id: str}
@optional {x-magic-new-hc-target: bool}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/magic/sites/{site_id}
@required {site_id: str, account_id: str}
@optional {connector_id: str, description: str, location: map{lat: str, lon: str}, name: str, secondary_connector_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/magic/sites/{site_id}
@required {site_id: str, account_id: str}
@optional {connector_id: str, description: str, location: map{lat: str, lon: str}, name: str, secondary_connector_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/magic/sites/{site_id}/acls
@required {account_id: str, site_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/magic/sites/{site_id}/acls
@required {account_id: str, site_id: str, lan_1: map{lan_id!: str, lan_name: str, port_ranges: [str], ports: [int], subnets: [any]}, lan_2: map{lan_id!: str, lan_name: str, port_ranges: [str], ports: [int], subnets: [any]}, name: str}
@optional {description: str, forward_locally: bool, protocols: [str], unidirectional: bool}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/magic/sites/{site_id}/acls/{acl_id}
@required {site_id: str, account_id: str, acl_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/magic/sites/{site_id}/acls/{acl_id}
@required {site_id: str, account_id: str, acl_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/magic/sites/{site_id}/acls/{acl_id}
@required {site_id: str, account_id: str, acl_id: str}
@optional {description: str, forward_locally: bool, lan_1: map{lan_id!: str, lan_name: str, port_ranges: [str], ports: [int], subnets: [any]}, lan_2: map{lan_id!: str, lan_name: str, port_ranges: [str], ports: [int], subnets: [any]}, name: str, protocols: [str], unidirectional: bool}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/magic/sites/{site_id}/acls/{acl_id}
@required {site_id: str, account_id: str, acl_id: str}
@optional {description: str, forward_locally: bool, lan_1: map{lan_id!: str, lan_name: str, port_ranges: [str], ports: [int], subnets: [any]}, lan_2: map{lan_id!: str, lan_name: str, port_ranges: [str], ports: [int], subnets: [any]}, name: str, protocols: [str], unidirectional: bool}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/magic/sites/{site_id}/app_configs
@required {account_id: str, site_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/magic/sites/{site_id}/app_configs
@required {account_id: str, site_id: str}
@returns(201)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/magic/sites/{site_id}/app_configs/{app_config_id}
@required {account_id: str, site_id: str, app_config_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/magic/sites/{site_id}/app_configs/{app_config_id}
@required {account_id: str, site_id: str, app_config_id: str}
@optional {account_app_id: str, breakout: bool, managed_app_id: str, preferred_wans: [str], priority: int}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/magic/sites/{site_id}/app_configs/{app_config_id}
@required {account_id: str, site_id: str, app_config_id: str}
@optional {account_app_id: str, breakout: bool, managed_app_id: str, preferred_wans: [str], priority: int}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/magic/sites/{site_id}/lans
@required {account_id: str, site_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/magic/sites/{site_id}/lans
@required {account_id: str, site_id: str}
@optional {bond_id: int, ha_link: bool, is_breakout: bool, is_prioritized: bool, name: str, nat: map{static_prefix: str}, physport: int, routed_subnets: [map{nat: map, next_hop!: str, prefix!: str}], static_addressing: map{address!: str, dhcp_relay: map, dhcp_server: map, secondary_address: str, virtual_address: str}, vlan_tag: int}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/magic/sites/{site_id}/lans/{lan_id}
@required {site_id: str, account_id: str, lan_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/magic/sites/{site_id}/lans/{lan_id}
@required {site_id: str, account_id: str, lan_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/magic/sites/{site_id}/lans/{lan_id}
@required {site_id: str, account_id: str, lan_id: str}
@optional {bond_id: int, is_breakout: bool, is_prioritized: bool, name: str, nat: map{static_prefix: str}, physport: int, routed_subnets: [map{nat: map, next_hop!: str, prefix!: str}], static_addressing: map{address!: str, dhcp_relay: map, dhcp_server: map, secondary_address: str, virtual_address: str}, vlan_tag: int}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/magic/sites/{site_id}/lans/{lan_id}
@required {site_id: str, account_id: str, lan_id: str}
@optional {bond_id: int, is_breakout: bool, is_prioritized: bool, name: str, nat: map{static_prefix: str}, physport: int, routed_subnets: [map{nat: map, next_hop!: str, prefix!: str}], static_addressing: map{address!: str, dhcp_relay: map, dhcp_server: map, secondary_address: str, virtual_address: str}, vlan_tag: int}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/magic/sites/{site_id}/netflow_config
@required {account_id: str, site_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/magic/sites/{site_id}/netflow_config
@required {account_id: str, site_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/magic/sites/{site_id}/netflow_config
@required {account_id: str, site_id: str}
@optional {active_timeout: int, collector_ip: str, collector_port: int, inactive_timeout: int, sampling_rate: int}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/magic/sites/{site_id}/netflow_config
@required {account_id: str, site_id: str}
@optional {active_timeout: int, collector_ip: str, collector_port: int, inactive_timeout: int, sampling_rate: int}
@returns(201)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/magic/sites/{site_id}/netflow_config
@required {account_id: str, site_id: str}
@optional {active_timeout: int, collector_ip: str, collector_port: int, inactive_timeout: int, sampling_rate: int}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/magic/sites/{site_id}/wans
@required {account_id: str, site_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/magic/sites/{site_id}/wans
@required {account_id: str, site_id: str, physport: int}
@optional {name: str, priority: int, static_addressing: map{address!: str, gateway_address!: str, secondary_address: str}, vlan_tag: int}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/magic/sites/{site_id}/wans/{wan_id}
@required {site_id: str, account_id: str, wan_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/magic/sites/{site_id}/wans/{wan_id}
@required {site_id: str, account_id: str, wan_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/magic/sites/{site_id}/wans/{wan_id}
@required {site_id: str, account_id: str, wan_id: str}
@optional {name: str, physport: int, priority: int, static_addressing: map{address!: str, gateway_address!: str, secondary_address: str}, vlan_tag: int}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/magic/sites/{site_id}/wans/{wan_id}
@required {site_id: str, account_id: str, wan_id: str}
@optional {name: str, physport: int, priority: int, static_addressing: map{address!: str, gateway_address!: str, secondary_address: str}, vlan_tag: int}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/media/usage
@required {account_id: str}
@optional {metrics: str, since: str(date-time), until: str(date-time), time_delta: str(hour/day/week/month/quarter/year)=hour, limit: int=100, filters: str}
@returns(200) {errors: [map], messages: [map], result: [map], success: bool}
@errors {400, 401, 403}

@endpoint GET /accounts/{account_id}/members
@required {account_id: any}
@optional {order: any(user.first_name/user.last_name/user.email/status), status: str(accepted/pending/rejected), page: num=1, per_page: num=20, direction: str(asc/desc)}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/members
@required {account_id: any}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/members/{member_id}
@required {member_id: str, account_id: any}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/members/{member_id}
@required {member_id: str, account_id: any}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/members/{member_id}
@required {member_id: str, account_id: any}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/mnm/config
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/mnm/config
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/mnm/config
@required {account_id: str}
@optional {default_sampling: num=1, name: str, router_ips: [str], warp_devices: [map{id!: str, name!: str, router_ip!: str}]}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/mnm/config
@required {account_id: str, default_sampling: num=1, name: str}
@optional {router_ips: [str], warp_devices: [map{id!: str, name!: str, router_ip!: str}]}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/mnm/config
@required {account_id: str, default_sampling: num=1, name: str}
@optional {router_ips: [str], warp_devices: [map{id!: str, name!: str, router_ip!: str}]}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/mnm/config/full
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/mnm/rules
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/mnm/rules
@required {account_id: str, automatic_advertisement: bool, name: str, prefixes: [str], type: str(threshold/zscore/advanced_ddos)}
@optional {bandwidth_threshold: num, duration: str(1m/5m/10m/15m/20m/30m/45m/60m)=1m, packet_threshold: num, prefix_match: str(exact/subnet/supernet), zscore_sensitivity: str(low/medium/high), zscore_target: str(bits/packets)}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/mnm/rules
@required {account_id: str, automatic_advertisement: bool, name: str, prefixes: [str], type: str(threshold/zscore/advanced_ddos)}
@optional {bandwidth_threshold: num, duration: str(1m/5m/10m/15m/20m/30m/45m/60m)=1m, packet_threshold: num, prefix_match: str(exact/subnet/supernet), zscore_sensitivity: str(low/medium/high), zscore_target: str(bits/packets)}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/mnm/rules/bulk
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/mnm/rules/bulk
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/mnm/rules/{rule_id}
@required {rule_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/mnm/rules/{rule_id}
@required {rule_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/mnm/rules/{rule_id}
@required {rule_id: str, account_id: str, automatic_advertisement: bool, name: str, prefixes: [str], type: str(threshold/zscore/advanced_ddos)}
@optional {bandwidth_threshold: num, duration: str(1m/5m/10m/15m/20m/30m/45m/60m)=1m, packet_threshold: num, prefix_match: str(exact/subnet/supernet), zscore_sensitivity: str(low/medium/high), zscore_target: str(bits/packets)}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/mnm/rules/{rule_id}/advertisement
@required {rule_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/mnm/vpc-flows/token
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/moq/relays
@required {account_id: str}
@optional {created_before: str(date-time), created_after: str(date-time), per_page: int=1000, asc: bool=false}
@returns(200)
@errors {400, 500}

@endpoint POST /accounts/{account_id}/moq/relays
@required {account_id: str, name: str}
@returns(201)
@errors {400, 409, 413, 500}

@endpoint DELETE /accounts/{account_id}/moq/relays/{relay_id}
@required {account_id: str, relay_id: str}
@returns(200)
@errors {400, 404, 500}

@endpoint GET /accounts/{account_id}/moq/relays/{relay_id}
@required {account_id: str, relay_id: str}
@returns(200)
@errors {400, 404, 500}

@endpoint PUT /accounts/{account_id}/moq/relays/{relay_id}
@required {account_id: str, relay_id: str}
@optional {config: map{upstreams: map}, name: str}
@returns(200)
@errors {400, 404, 500}

@endpoint GET /accounts/{account_id}/moq/relays/{relay_id}/tokens
@required {account_id: str, relay_id: str}
@returns(200)
@errors {400, 404, 500}

@endpoint POST /accounts/{account_id}/moq/relays/{relay_id}/tokens
@required {account_id: str, relay_id: str, operations: [str]}
@optional {expires: str(date-time), label: str}
@returns(201)
@errors {400, 404, 409, 500}

@endpoint DELETE /accounts/{account_id}/moq/relays/{relay_id}/tokens/{jti}
@required {account_id: str, relay_id: str, jti: str}
@returns(200) {errors: [map], messages: [map], success: bool}
@errors {400, 404, 500}

@endpoint POST /accounts/{account_id}/move
@required {account_id: str, destination_organization_id: str}
@returns(200) {errors: [map], messages: [map], result: map{account_id: str, destination_organization_id: str, source_organization_id: str}, success: bool}
@errors {4XX}

@endpoint GET /accounts/{account_id}/mtls_certificates
@required {account_id: str}
@optional {type: [str]}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/mtls_certificates
@required {account_id: str, ca: bool, certificates: str}
@optional {name: str, private_key: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/mtls_certificates/{mtls_certificate_id}
@required {mtls_certificate_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/mtls_certificates/{mtls_certificate_id}
@required {mtls_certificate_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/mtls_certificates/{mtls_certificate_id}/associations
@required {mtls_certificate_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/oauth_clients
@required {account_id: any}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/oauth_clients
@required {account_id: any}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/oauth_clients/{oauth_client_id}
@required {account_id: any, oauth_client_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/oauth_clients/{oauth_client_id}
@required {account_id: any, oauth_client_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/oauth_clients/{oauth_client_id}
@required {account_id: any, oauth_client_id: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/oauth_clients/{oauth_client_id}/rotate_secret
@required {account_id: any, oauth_client_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/oauth_clients/{oauth_client_id}/rotate_secret
@required {account_id: any, oauth_client_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/one/applications
@required {account_id: str}
@optional {environment: str, page: int, page_size: int}
@returns(200) {errors: [map], messages: [str], result: [map], result_info: map{count: int, next: str(uri)?, page: int, per_page: int, previous: str(uri)?, total_count: int}, success: bool}
@errors {400}

@endpoint GET /accounts/{account_id}/one/applications/{application_id}
@required {account_id: str, application_id: str(ANTHROPIC/AWS/BITBUCKET/BOX/CONFLUENCE/DROPBOX/GITHUB/GOOGLE_CLOUD_PLATFORM/GOOGLE_WORKSPACE/JIRA/MICROSOFT_INTERNAL/OPENAI/SALESFORCE/SERVICENOW/SLACK)}
@returns(200) {errors: [map], messages: [str], result: any, success: bool}
@errors {404}

@endpoint GET /accounts/{account_id}/one/applications/{application_id}/auth-methods
@required {account_id: str, application_id: str(ANTHROPIC/AWS/BITBUCKET/BOX/CONFLUENCE/DROPBOX/GITHUB/GOOGLE_CLOUD_PLATFORM/GOOGLE_WORKSPACE/JIRA/MICROSOFT_INTERNAL/OPENAI/SALESFORCE/SERVICENOW/SLACK)}
@optional {page: int, page_size: int}
@returns(200) {errors: [map], messages: [str], result: [map], result_info: map{count: int, next: str(uri)?, page: int, per_page: int, previous: str(uri)?, total_count: int}, success: bool}
@errors {404}

@endpoint GET /accounts/{account_id}/one/applications/{application_id}/setup-flows
@required {account_id: str, application_id: str(ANTHROPIC/AWS/BITBUCKET/BOX/CONFLUENCE/DROPBOX/GITHUB/GOOGLE_CLOUD_PLATFORM/GOOGLE_WORKSPACE/JIRA/MICROSOFT_INTERNAL/OPENAI/SALESFORCE/SERVICENOW/SLACK)}
@optional {auth_method: str, environment: str(fedramp/standard), page: int, page_size: int}
@returns(200) {errors: [map], messages: [str], result: [map], result_info: map{count: int, next: str(uri)?, page: int, per_page: int, previous: str(uri)?, total_count: int}, success: bool}
@errors {404}

@endpoint GET /accounts/{account_id}/one/integrations
@required {account_id: str}
@optional {application: str, direction: str(asc/desc), dlp_enabled: bool, order: str(application/created/name/status), page: int, page_size: int, search: str, status: str(Healthy/Initializing/Offline/Unhealthy), use_cases: str}
@returns(200) {errors: [map], messages: [str], result: [map], result_info: map{count: int, next: str(uri)?, page: int, per_page: int, previous: str(uri)?, total_count: int}, success: bool}
@errors {400}

@endpoint POST /accounts/{account_id}/one/integrations
@required {account_id: str, application: str(ANTHROPIC/AWS/BITBUCKET/BOX/CONFLUENCE/DROPBOX/GITHUB/GOOGLE_CLOUD_PLATFORM/GOOGLE_WORKSPACE/JIRA/MICROSOFT_INTERNAL/OPENAI/SALESFORCE/SERVICENOW/SLACK), credentials: map, name: str}
@optional {auth_method: str, dlp_profiles: [str(uuid)], permissions: [str], use_cases: [str]}
@returns(201) {errors: [map], messages: [str], result: any, success: bool}
@errors {400}

@endpoint DELETE /accounts/{account_id}/one/integrations/{id}
@required {account_id: str, id: str}
@returns(200)
@errors {400}

@endpoint GET /accounts/{account_id}/one/integrations/{id}
@required {account_id: str, id: str}
@returns(200) {errors: [map], messages: [str], result: any, success: bool}
@errors {404}

@endpoint PATCH /accounts/{account_id}/one/integrations/{id}
@required {account_id: str, id: str}
@optional {credentials: map, dlp_profiles: [str(uuid)], name: str, permissions: [str], use_cases: [str]}
@returns(200) {errors: [map], messages: [str], result: any, success: bool}
@errors {400}

@endpoint POST /accounts/{account_id}/one/integrations/{id}/pause
@required {account_id: str, id: str}
@returns(200) {errors: [map], messages: [str], result: any, success: bool}
@errors {400}

@endpoint POST /accounts/{account_id}/one/integrations/{id}/resume
@required {account_id: str, id: str}
@returns(200) {errors: [map], messages: [str], result: any, success: bool}
@errors {400}

@endpoint GET /accounts/{account_id}/organizations
@required {account_id: str}
@returns(200) {errors: [map], messages: [map], result: [map], success: bool}
@errors {4XX}

@endpoint GET /accounts/{account_id}/pages/projects
@required {account_id: str}
@optional {page: int, per_page: int}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/pages/projects
@required {account_id: str, name: str, production_branch: str}
@optional {build_config: map{build_caching: bool, build_command: str, destination_dir: str, root_dir: str, web_analytics_tag: str, web_analytics_token: str}, deployment_configs: map{preview: any, production: any}, source: map{config!: map, type!: str}}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/pages/projects/{project_name}
@required {project_name: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/pages/projects/{project_name}
@required {project_name: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/pages/projects/{project_name}
@required {project_name: str, account_id: str}
@optional {build_config: map{build_caching: bool, build_command: str, destination_dir: str, root_dir: str, web_analytics_tag: str, web_analytics_token: str}, deployment_configs: map{preview: any, production: any}, name: str, production_branch: str, source: map{config!: map, type!: str}}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/pages/projects/{project_name}/deployments
@required {project_name: str, account_id: str}
@optional {env: str(production/preview), page: int, per_page: int}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/pages/projects/{project_name}/deployments
@required {project_name: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/pages/projects/{project_name}/deployments/{deployment_id}
@required {deployment_id: str, project_name: str, account_id: str}
@optional {force: bool}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/pages/projects/{project_name}/deployments/{deployment_id}
@required {deployment_id: str, project_name: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/pages/projects/{project_name}/deployments/{deployment_id}/history/logs
@required {deployment_id: str, project_name: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/pages/projects/{project_name}/deployments/{deployment_id}/retry
@required {deployment_id: str, project_name: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/pages/projects/{project_name}/deployments/{deployment_id}/rollback
@required {deployment_id: str, project_name: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/pages/projects/{project_name}/deployments/{deployment_id}/tails
@required {deployment_id: str, project_name: str, account_id: str}
@optional {filters: [map]}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/pages/projects/{project_name}/deployments/{deployment_id}/tails/{tail_id}
@required {tail_id: str, deployment_id: str, project_name: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/pages/projects/{project_name}/domains
@required {project_name: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/pages/projects/{project_name}/domains
@required {project_name: str, account_id: str, name: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/pages/projects/{project_name}/domains/{domain_name}
@required {domain_name: str, project_name: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/pages/projects/{project_name}/domains/{domain_name}
@required {domain_name: str, project_name: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/pages/projects/{project_name}/domains/{domain_name}
@required {domain_name: str, project_name: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/pages/projects/{project_name}/purge_build_cache
@required {project_name: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/pages/projects/{project_name}/source
@required {project_name: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/pages/projects/{project_name}/source
@required {project_name: str, account_id: str, config: map{deployments_enabled!: bool, owner!: str, owner_id!: str, path_excludes!: [str], path_includes!: [str], pr_comments_enabled!: bool, preview_branch_excludes!: [str], preview_branch_includes!: [str], preview_deployment_setting!: str, production_branch!: str, production_deployments_enabled!: bool, repo_id!: str, repo_name!: str}, type: str(github/gitlab)}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/pages/projects/{project_name}/upload-token
@required {project_name: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/pay-bad-debt
@required {account_id: str}
@optional {payment_method_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/pay-invoice
@required {account_id: str}
@optional {invoice_id: str, payment_method_id: str, validate_payment_method: bool}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/pay-per-crawl/crawler/stripe
@required {account_id: str}
@returns(200) {errors: [map], messages: [map], result_info: map{count: int, page: int, per_page: int, total_count: int, total_pages: int}, success: bool}
@errors {400}

@endpoint GET /accounts/{account_id}/pay-per-crawl/crawler/stripe
@required {account_id: str}
@returns(200) {errors: [map], messages: [map], result: map{connect_status: str, stripe_account_id: str}, result_info: map{count: int, page: int, per_page: int, total_count: int, total_pages: int}, success: bool}
@errors {400}

@endpoint POST /accounts/{account_id}/pay-per-crawl/crawler/stripe
@required {account_id: str}
@returns(200) {errors: [map], messages: [map], result: map{url: str}, result_info: map{count: int, page: int, per_page: int, total_count: int, total_pages: int}, success: bool}
@errors {400}

@endpoint GET /accounts/{account_id}/pay-per-crawl/crawlers
@required {account_id: str}
@returns(200) {errors: [map], messages: [map], result: map{crawlers: [map]}, result_info: map{count: int, page: int, per_page: int, total_count: int, total_pages: int}, success: bool}
@errors {400}

@endpoint DELETE /accounts/{account_id}/pay-per-crawl/publisher/stripe
@required {account_id: str}
@returns(200) {errors: [map], messages: [map], result_info: map{count: int, page: int, per_page: int, total_count: int, total_pages: int}, success: bool}
@errors {400}

@endpoint GET /accounts/{account_id}/pay-per-crawl/publisher/stripe
@required {account_id: str}
@returns(200) {errors: [map], messages: [map], result: map{connect_status: str, stripe_account_id: str}, result_info: map{count: int, page: int, per_page: int, total_count: int, total_pages: int}, success: bool}
@errors {400}

@endpoint POST /accounts/{account_id}/pay-per-crawl/publisher/stripe
@required {account_id: str}
@returns(200) {errors: [map], messages: [map], result: map{url: str}, result_info: map{count: int, page: int, per_page: int, total_count: int, total_pages: int}, success: bool}
@errors {400}

@endpoint GET /accounts/{account_id}/pay-per-crawl/signature_link
@required {account_id: str}
@returns(200) {errors: [map], messages: [map], result: map{link: str(uri)}, result_info: map{count: int, page: int, per_page: int, total_count: int, total_pages: int}, success: bool}
@errors {400}

@endpoint GET /accounts/{account_id}/pay-per-crawl/terms
@required {account_id: str}
@returns(200) {errors: [map], messages: [map], result: map{body: str, id: str}, result_info: map{count: int, page: int, per_page: int, total_count: int, total_pages: int}, success: bool}
@errors {400}

@endpoint GET /accounts/{account_id}/pay-per-crawl/terms/signature
@required {account_id: str}
@optional {remote: bool}
@returns(200) {errors: [map], messages: [map], result: str?, result_info: map{count: int, page: int, per_page: int, total_count: int, total_pages: int}, success: bool}
@errors {400}

@endpoint POST /accounts/{account_id}/pay-per-crawl/terms/signature
@required {account_id: str, event_type: str(agreed/displayed), vid: str}
@returns(200) {errors: [map], messages: [map], result_info: map{count: int, page: int, per_page: int, total_count: int, total_pages: int}, success: bool}
@errors {400}

@endpoint PATCH /accounts/{account_id}/pay-per-crawl/zones_can_be_enabled
@required {account_id: str}
@optional {zones: [map{can_be_enabled: bool, enabled: bool, id: str}]}
@returns(200) {errors: [map], messages: [map], result_info: map{count: int, page: int, per_page: int, total_count: int, total_pages: int}, success: bool}
@errors {400}

@endpoint POST /accounts/{account_id}/pay-per-crawl/zones_can_be_enabled/query
@required {account_id: str}
@optional {zones: [str]}
@returns(200) {errors: [map], messages: [map], result: map{zones: [map]}, result_info: map{count: int, page: int, per_page: int, total_count: int, total_pages: int}, success: bool}
@errors {400}

@endpoint GET /accounts/{account_id}/payment-methods
@required {account_id: str}
@optional {page: int=1, per_page: int=20}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/payment-methods
@required {account_id: str}
@optional {address: str, address2: str, bank_account_type: str, bank_code: str, bank_country: str, bank_name: str, bank_routing_number: str, cashapp_cash_tag: str, city: str, country: str, default: bool, device_data: str, expiration_date: str, first_name: str, id: str, last_four: str, last_name: str, nick_name: str, payment_account_email: str, payment_email: str, payment_gateway: str, payment_nonce: str, state: str, type: str(CREDIT_CARD/PAYPAL/CASHAPP/SEPA_DEBIT/LINK/ACH_DIRECT_DEBIT), zipcode: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/payment-methods/{payment_method_id}
@required {account_id: str, payment_method_id: str}
@returns(200)
@returns(204)
@errors {4XX}

@endpoint GET /accounts/{account_id}/payment-methods/{payment_method_id}
@required {account_id: str, payment_method_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/payment-methods/{payment_method_id}
@required {account_id: str, payment_method_id: str}
@optional {address: str, address2: str, bank_account_type: str, bank_code: str, bank_country: str, bank_name: str, bank_routing_number: str, cashapp_cash_tag: str, city: str, country: str, default: bool, device_data: str, expiration_date: str, first_name: str, id: str, last_four: str, last_name: str, nick_name: str, payment_account_email: str, payment_email: str, payment_gateway: str, payment_nonce: str, state: str, type: str(CREDIT_CARD/PAYPAL/CASHAPP/SEPA_DEBIT/LINK/ACH_DIRECT_DEBIT), zipcode: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/payment-methods/{payment_method_id}/set-as-default
@required {account_id: str, payment_method_id: str}
@returns(200)
@returns(204)
@errors {4XX}

@endpoint GET /accounts/{account_id}/pcaps
@required {account_id: str}
@returns(200)
@errors {4XX, 5XX}

@endpoint POST /accounts/{account_id}/pcaps
@required {account_id: str}
@returns(200)
@errors {4XX, 5XX}

@endpoint GET /accounts/{account_id}/pcaps/ownership
@required {account_id: str}
@returns(200)
@errors {4XX, 5XX}

@endpoint POST /accounts/{account_id}/pcaps/ownership
@required {account_id: str, destination_conf: str}
@returns(200)
@errors {4XX, 5XX}

@endpoint POST /accounts/{account_id}/pcaps/ownership/validate
@required {account_id: str, destination_conf: str, ownership_challenge: str}
@returns(200)
@errors {4XX, 5XX}

@endpoint DELETE /accounts/{account_id}/pcaps/ownership/{ownership_id}
@required {ownership_id: str, account_id: str}
@returns(204)
@errors {4XX, 5XX}

@endpoint GET /accounts/{account_id}/pcaps/{pcap_id}
@required {pcap_id: str, account_id: str}
@returns(200)
@errors {4XX, 5XX}

@endpoint GET /accounts/{account_id}/pcaps/{pcap_id}/download
@required {pcap_id: str, account_id: str}
@returns(200)
@errors {4XX, 5XX}

@endpoint PUT /accounts/{account_id}/pcaps/{pcap_id}/stop
@required {pcap_id: str, account_id: str}
@returns(204)
@errors {4XX, 5XX}

@endpoint GET /accounts/{account_id}/pipelines
@required {account_id: str}
@optional {search: str, page: str=1, per_page: str=25}
@returns(200) {result_info: map{count: num, page: num, per_page: num, total_count: num}, results: [map], success: bool}
@errors {4XX}

@endpoint POST /accounts/{account_id}/pipelines
@required {account_id: str, destination: map{batch!: map, compression!: map, credentials!: map, format!: str, path!: map, type!: str}, name: str, source: [any]}
@returns(200) {result: map{destination: map{batch: map{max_bytes: int, max_duration_s: num, max_rows: int}, compression: map{type: str}, format: str, path: map{bucket: str, filename: any, filepath: str, prefix: str}, type: str}, endpoint: str, id: str, name: str, source: [any], version: num}, success: bool}
@errors {4XX}

@endpoint GET /accounts/{account_id}/pipelines/v1/pipelines
@required {account_id: str}
@optional {page: num=1, per_page: num, name: str}
@returns(200) {result: [map], result_info: map{count: num, page: num, per_page: num, total_count: num}, success: bool}
@errors {4XX}

@endpoint POST /accounts/{account_id}/pipelines/v1/pipelines
@required {account_id: str, name: str, sql: str}
@returns(200) {result: map{created_at: str, id: str, modified_at: str, name: str, sql: str, status: str}, success: bool}
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/pipelines/v1/pipelines/{pipeline_id}
@required {account_id: str, pipeline_id: str}
@returns(200) {result: map, success: bool}
@errors {4XX}

@endpoint GET /accounts/{account_id}/pipelines/v1/pipelines/{pipeline_id}
@required {account_id: str, pipeline_id: str}
@returns(200) {result: map{created_at: str, failure_reason: str, id: str, modified_at: str, name: str, sql: str, status: str, tables: [map]}, success: bool}
@errors {4XX}

@endpoint GET /accounts/{account_id}/pipelines/v1/sinks
@required {account_id: str}
@optional {pipeline_id: str, name: str, page: num=1, per_page: num}
@returns(200) {result: [map], result_info: map{count: num, page: num, per_page: num, total_count: num}, success: bool}
@errors {4XX}

@endpoint POST /accounts/{account_id}/pipelines/v1/sinks
@required {account_id: str, name: str, type: str(r2/r2_data_catalog)}
@optional {config: any, format: any, schema: map{fields: [any], inferred: bool}}
@returns(200) {result: map{config: any, created_at: str(date-time), format: any, id: str, modified_at: str(date-time), name: str, schema: map{fields: [any], inferred: bool?}, type: str}, success: bool}
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/pipelines/v1/sinks/{sink_id}
@required {account_id: str, sink_id: str}
@returns(200) {result: map, success: bool}
@errors {4XX}

@endpoint GET /accounts/{account_id}/pipelines/v1/sinks/{sink_id}
@required {account_id: str, sink_id: str}
@returns(200) {result: map{config: any, created_at: str(date-time), format: any, id: str, modified_at: str(date-time), name: str, schema: map{fields: [any], inferred: bool?}, type: str}, success: bool}
@errors {4XX}

@endpoint GET /accounts/{account_id}/pipelines/v1/streams
@required {account_id: str}
@optional {pipeline_id: str, name: str, page: num=1, per_page: num}
@returns(200) {result: [map], result_info: map{count: num, page: num, per_page: num, total_count: num}, success: bool}
@errors {4XX}

@endpoint POST /accounts/{account_id}/pipelines/v1/streams
@required {account_id: str, name: str}
@optional {format: any, http: map{authentication!: bool, cors: map, enabled!: bool}=[object Object], schema: map{fields: [any], inferred: bool}, worker_binding: map{enabled!: bool}=[object Object]}
@returns(200) {result: map{created_at: str(date-time), endpoint: str(uri), format: any, http: map{authentication: bool, cors: map{origins: [str]}, enabled: bool}, id: str, modified_at: str(date-time), name: str, schema: map{fields: [any], inferred: bool?}, version: int, worker_binding: map{enabled: bool}}, success: bool}
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/pipelines/v1/streams/{stream_id}
@required {account_id: str, stream_id: str}
@returns(200) {result: map, success: bool}
@errors {4XX}

@endpoint GET /accounts/{account_id}/pipelines/v1/streams/{stream_id}
@required {account_id: str, stream_id: str}
@returns(200) {result: map{created_at: str(date-time), endpoint: str(uri), format: any, http: map{authentication: bool, cors: map{origins: [str]}, enabled: bool}, id: str, modified_at: str(date-time), name: str, schema: map{fields: [any], inferred: bool?}, version: int, worker_binding: map{enabled: bool}}, success: bool}
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/pipelines/v1/streams/{stream_id}
@required {account_id: str, stream_id: str}
@optional {http: map{authentication!: bool, cors: map, enabled!: bool}, worker_binding: map{enabled!: bool}}
@returns(200) {result: map{created_at: str(date-time), endpoint: str(uri), format: any, http: map{authentication: bool, cors: map{origins: [str]}, enabled: bool}, id: str, modified_at: str(date-time), name: str, schema: map{fields: [any], inferred: bool?}, version: int, worker_binding: map{enabled: bool}}, success: bool}
@errors {4XX}

@endpoint POST /accounts/{account_id}/pipelines/v1/validate_sql
@required {account_id: str, sql: str}
@returns(200) {result: map{graph: map{edges: [map], nodes: [map]}, tables: map}, success: bool}
@errors {422, 4XX}

@endpoint DELETE /accounts/{account_id}/pipelines/{pipeline_name}
@required {account_id: str, pipeline_name: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/pipelines/{pipeline_name}
@required {account_id: str, pipeline_name: str}
@returns(200) {result: map{destination: map{batch: map{max_bytes: int, max_duration_s: num, max_rows: int}, compression: map{type: str}, format: str, path: map{bucket: str, filename: any, filepath: str, prefix: str}, type: str}, endpoint: str, id: str, name: str, source: [any], version: num}, success: bool}
@errors {404}

@endpoint PUT /accounts/{account_id}/pipelines/{pipeline_name}
@required {account_id: str, pipeline_name: str, destination: map{batch!: map, compression!: map, credentials: map, format!: str, path!: map, type!: str}, name: str, source: [any]}
@returns(200) {result: map{destination: map{batch: map{max_bytes: int, max_duration_s: num, max_rows: int}, compression: map{type: str}, format: str, path: map{bucket: str, filename: any, filepath: str, prefix: str}, type: str}, endpoint: str, id: str, name: str, source: [any], version: num}, success: bool}
@errors {4XX}

@endpoint GET /accounts/{account_id}/profile
@required {account_id: str}
@returns(200) {errors: [map], messages: [map], result: map{business_address: str, business_email: str, business_name: str, business_phone: str, external_metadata: str}, success: bool}
@errors {4XX}

@endpoint PUT /accounts/{account_id}/profile
@required {account_id: str, business_address: str, business_email: str, business_name: str, business_phone: str, external_metadata: str}
@returns(204)
@errors {4XX}

@endpoint GET /accounts/{account_id}/queues
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/queues
@required {account_id: str, queue_name: str}
@optional {jurisdiction: str(eu/us/fedramp)}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/queues/{queue_id}
@required {queue_id: str, account_id: str}
@returns(200) {errors: [map], messages: [str], success: bool}
@errors {4XX}

@endpoint GET /accounts/{account_id}/queues/{queue_id}
@required {queue_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/queues/{queue_id}
@required {queue_id: str, account_id: str}
@optional {consumers: [map], consumers_total_count: num, created_on: str, jurisdiction: str(eu/us/fedramp), modified_on: str, producers: [map], producers_total_count: num, queue_id: str, queue_name: str, settings: map{delivery_delay: num, delivery_paused: bool, message_retention_period: num}}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/queues/{queue_id}
@required {queue_id: str, account_id: str}
@optional {consumers: [map], consumers_total_count: num, created_on: str, jurisdiction: str(eu/us/fedramp), modified_on: str, producers: [map], producers_total_count: num, queue_id: str, queue_name: str, settings: map{delivery_delay: num, delivery_paused: bool, message_retention_period: num}}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/queues/{queue_id}/consumers
@required {queue_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/queues/{queue_id}/consumers
@required {queue_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/queues/{queue_id}/consumers/{consumer_id}
@required {consumer_id: str, queue_id: str, account_id: str}
@returns(200) {errors: [map], messages: [str], success: bool}
@errors {4XX}

@endpoint GET /accounts/{account_id}/queues/{queue_id}/consumers/{consumer_id}
@required {consumer_id: str, queue_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/queues/{queue_id}/consumers/{consumer_id}
@required {consumer_id: str, queue_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/queues/{queue_id}/messages
@required {queue_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/queues/{queue_id}/messages/ack
@required {queue_id: str, account_id: str}
@optional {acks: [map{lease_id: str}], retries: [map{delay_seconds: num, lease_id: str}]}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/queues/{queue_id}/messages/batch
@required {queue_id: str, account_id: str}
@optional {delay_seconds: num, messages: [any]}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/queues/{queue_id}/messages/extend
@required {queue_id: str, account_id: str}
@optional {extend: [map{lease_id: str}], visibility_timeout_ms: num}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/queues/{queue_id}/messages/peek
@required {queue_id: str, account_id: str}
@optional {batch_size: num}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/queues/{queue_id}/messages/preview
@required {queue_id: str, account_id: str}
@optional {batch_size: num}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/queues/{queue_id}/messages/preview/ack
@required {queue_id: str, account_id: str}
@optional {acks: [map{lease_id: str}], retries: [map{delay_seconds: num, lease_id: str}]}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/queues/{queue_id}/messages/pull
@required {queue_id: str, account_id: str}
@optional {batch_size: num, visibility_timeout_ms: num}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/queues/{queue_id}/messages/purge
@required {queue_id: str, account_id: str, refs: [map{ref!: str}]}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/queues/{queue_id}/metrics
@required {queue_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/queues/{queue_id}/purge
@required {queue_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/queues/{queue_id}/purge
@required {queue_id: str, account_id: str}
@optional {delete_messages_permanently: bool}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/r2-catalog
@required {account_id: str}
@returns(200)
@errors {400, 401, 403, 500}

@endpoint GET /accounts/{account_id}/r2-catalog/{bucket_name}
@required {account_id: str, bucket_name: str}
@returns(200)
@errors {400, 401, 403, 404, 500}

@endpoint POST /accounts/{account_id}/r2-catalog/{bucket_name}/credential
@required {account_id: str, bucket_name: str, token: str}
@returns(200)
@errors {400, 401, 403, 404, 500}

@endpoint POST /accounts/{account_id}/r2-catalog/{bucket_name}/delete
@required {account_id: str, bucket_name: str}
@optional {force: bool=false}
@returns(204)
@errors {400, 401, 404, 409, 500}

@endpoint POST /accounts/{account_id}/r2-catalog/{bucket_name}/disable
@required {account_id: str, bucket_name: str}
@returns(204)
@errors {400, 401, 403, 404, 500}

@endpoint POST /accounts/{account_id}/r2-catalog/{bucket_name}/enable
@required {account_id: str, bucket_name: str}
@returns(200)
@errors {400, 401, 403, 404, 409, 500}

@endpoint GET /accounts/{account_id}/r2-catalog/{bucket_name}/maintenance-configs
@required {account_id: str, bucket_name: str}
@returns(200)
@errors {400, 401, 403, 404, 500}

@endpoint POST /accounts/{account_id}/r2-catalog/{bucket_name}/maintenance-configs
@required {account_id: str, bucket_name: str}
@returns(200)
@errors {400, 401, 403, 404, 500}

@endpoint GET /accounts/{account_id}/r2-catalog/{bucket_name}/namespaces
@required {account_id: str, bucket_name: str}
@optional {page_token: str, page_size: int=100, parent: str, return_uuids: bool=false, return_details: bool=false}
@returns(200)
@errors {400, 401, 403, 404, 500}

@endpoint GET /accounts/{account_id}/r2-catalog/{bucket_name}/namespaces/{namespace}/tables
@required {account_id: str, bucket_name: str, namespace: str}
@optional {page_token: str, page_size: int=100, return_uuids: bool=false, return_details: bool=false}
@returns(200)
@errors {400, 401, 403, 404, 500}

@endpoint GET /accounts/{account_id}/r2-catalog/{bucket_name}/namespaces/{namespace}/tables/{table_name}
@required {account_id: str, bucket_name: str, namespace: str, table_name: str}
@returns(200)
@errors {400, 401, 403, 404, 500}

@endpoint GET /accounts/{account_id}/r2-catalog/{bucket_name}/namespaces/{namespace}/tables/{table_name}/maintenance-configs
@required {account_id: str, bucket_name: str, namespace: str, table_name: str}
@returns(200)
@errors {400, 401, 403, 404, 500}

@endpoint POST /accounts/{account_id}/r2-catalog/{bucket_name}/namespaces/{namespace}/tables/{table_name}/maintenance-configs
@required {account_id: str, bucket_name: str, namespace: str, table_name: str}
@optional {compaction: map{state: str, target_size_mb: str}, snapshot_expiration: map{max_snapshot_age: str, min_snapshots_to_keep: int(int64), state: any}}
@returns(200)
@errors {400, 401, 403, 404, 500}

@endpoint POST /accounts/{account_id}/r2-catalog/{bucket_name}/namespaces/{namespace}/tables/{table_name}/maintenance-configs/{configuration_type}/queue
@required {account_id: str, bucket_name: str, namespace: str, table_name: str, configuration_type: str(compaction/snapshot_expiration)}
@optional {request_id: str(uuid)}
@returns(202)
@errors {400, 403, 404, 409, 429}

@endpoint GET /accounts/{account_id}/r2-catalog/{bucket_name}/namespaces/{namespace}/tables/{table_name}/maintenance-runs
@required {account_id: str, bucket_name: str, namespace: str, table_name: str}
@optional {page_size: int, page_token: str}
@returns(200)
@errors {400, 401, 403, 404}

@endpoint GET /accounts/{account_id}/r2/buckets
@required {account_id: str}
@optional {name_contains: str, start_after: str, per_page: num=20, order: str, direction: str(asc/desc), cursor: str, cf-r2-jurisdiction: str(default/eu/us/fedramp/fedramp-high)=default}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/r2/buckets
@required {account_id: str, name: str}
@optional {cf-r2-jurisdiction: str(default/eu/us/fedramp/fedramp-high)=default, locationHint: str(apac/eeur/enam/weur/wnam/oc), storageClass: str(Standard/InfrequentAccess)=Standard}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/r2/buckets/{bucket_name}
@required {bucket_name: str, account_id: str}
@optional {cf-r2-jurisdiction: str(default/eu/us/fedramp/fedramp-high)=default}
@returns(200) {errors: [map], messages: [str], result: map, success: bool}
@errors {4XX}

@endpoint GET /accounts/{account_id}/r2/buckets/{bucket_name}
@required {account_id: str, bucket_name: str}
@optional {cf-r2-jurisdiction: str(default/eu/us/fedramp/fedramp-high)=default}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/r2/buckets/{bucket_name}
@required {account_id: str, bucket_name: str, cf-r2-storage-class: any}
@optional {cf-r2-jurisdiction: str(default/eu/us/fedramp/fedramp-high)=default}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/r2/buckets/{bucket_name}
@required {account_id: str, bucket_name: str}
@optional {cf-r2-jurisdiction: str(default/eu/us/fedramp/fedramp-high)=default, cf-r2-storage-class: any}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/r2/buckets/{bucket_name}/cors
@required {bucket_name: str, account_id: str}
@optional {cf-r2-jurisdiction: str(default/eu/us/fedramp/fedramp-high)=default}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/r2/buckets/{bucket_name}/cors
@required {bucket_name: str, account_id: str}
@optional {cf-r2-jurisdiction: str(default/eu/us/fedramp/fedramp-high)=default}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/r2/buckets/{bucket_name}/cors
@required {bucket_name: str, account_id: str}
@optional {cf-r2-jurisdiction: str(default/eu/us/fedramp/fedramp-high)=default, rules: [map{allowed!: map, exposeHeaders: [str], id: str, maxAgeSeconds: num}]}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/r2/buckets/{bucket_name}/domains/custom
@required {account_id: str, bucket_name: str}
@optional {cf-r2-jurisdiction: str(default/eu/us/fedramp/fedramp-high)=default}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/r2/buckets/{bucket_name}/domains/custom
@required {account_id: str, bucket_name: str, domain: str, enabled: bool, zoneId: str}
@optional {cf-r2-jurisdiction: str(default/eu/us/fedramp/fedramp-high)=default, ciphers: [str], minTLS: str(1.0/1.1/1.2/1.3)}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/r2/buckets/{bucket_name}/domains/custom/{domain}
@required {bucket_name: str, account_id: str, domain: str}
@optional {cf-r2-jurisdiction: str(default/eu/us/fedramp/fedramp-high)=default}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/r2/buckets/{bucket_name}/domains/custom/{domain}
@required {account_id: str, bucket_name: str, domain: str}
@optional {cf-r2-jurisdiction: str(default/eu/us/fedramp/fedramp-high)=default}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/r2/buckets/{bucket_name}/domains/custom/{domain}
@required {account_id: str, bucket_name: str, domain: str}
@optional {cf-r2-jurisdiction: str(default/eu/us/fedramp/fedramp-high)=default, ciphers: [str], enabled: bool, minTLS: str(1.0/1.1/1.2/1.3)}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/r2/buckets/{bucket_name}/domains/managed
@required {account_id: str, bucket_name: str}
@optional {cf-r2-jurisdiction: str(default/eu/us/fedramp/fedramp-high)=default}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/r2/buckets/{bucket_name}/domains/managed
@required {account_id: str, bucket_name: str, enabled: bool}
@optional {cf-r2-jurisdiction: str(default/eu/us/fedramp/fedramp-high)=default}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/r2/buckets/{bucket_name}/jobs
@required {account_id: str, bucket_name: str}
@optional {cf-r2-jurisdiction: str(default/eu/us/fedramp/fedramp-high)=default, jobType: str, status: str, maxKeys: int, continuationToken: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/r2/buckets/{bucket_name}/jobs/{job_id}
@required {account_id: str, bucket_name: str, job_id: str}
@optional {cf-r2-jurisdiction: str(default/eu/us/fedramp/fedramp-high)=default}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/r2/buckets/{bucket_name}/lifecycle
@required {bucket_name: str, account_id: str}
@optional {cf-r2-jurisdiction: str(default/eu/us/fedramp/fedramp-high)=default}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/r2/buckets/{bucket_name}/lifecycle
@required {bucket_name: str, account_id: str}
@optional {cf-r2-jurisdiction: str(default/eu/us/fedramp/fedramp-high)=default, rules: [map{abortMultipartUploadsTransition: map, conditions!: map, deleteObjectsTransition: map, enabled!: bool, id!: str, storageClassTransitions: [any]}]}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/r2/buckets/{bucket_name}/local-uploads
@required {bucket_name: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/r2/buckets/{bucket_name}/local-uploads
@required {bucket_name: str, account_id: str, enabled: bool}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/r2/buckets/{bucket_name}/lock
@required {bucket_name: str, account_id: str}
@optional {cf-r2-jurisdiction: str(default/eu/us/fedramp/fedramp-high)=default}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/r2/buckets/{bucket_name}/lock
@required {bucket_name: str, account_id: str}
@optional {cf-r2-jurisdiction: str(default/eu/us/fedramp/fedramp-high)=default}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/r2/buckets/{bucket_name}/lock
@required {bucket_name: str, account_id: str}
@optional {cf-r2-jurisdiction: str(default/eu/us/fedramp/fedramp-high)=default, rules: [map{condition!: any, enabled!: bool, id!: str, prefix: str}]}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/r2/buckets/{bucket_name}/objects
@required {account_id: str, bucket_name: str}
@optional {cf-r2-jurisdiction: str(default/eu/us/fedramp/fedramp-high)=default, prefix: str, cf-r2-data-catalog-check: str}
@returns(200) {errors: [map], messages: [str], result: any, success: bool}
@errors {409, 429, 4XX}

@endpoint GET /accounts/{account_id}/r2/buckets/{bucket_name}/objects
@required {account_id: str, bucket_name: str}
@optional {cf-r2-jurisdiction: str(default/eu/us/fedramp/fedramp-high)=default, per_page: int=20, prefix: str, delimiter: str, cursor: str, start_after: str}
@returns(200) {errors: [map], messages: [str], result: [map], result_info: map{cursor: str, delimited: [str], is_truncated: bool, per_page: int}, success: bool}
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/r2/buckets/{bucket_name}/objects/{object_key}
@required {account_id: str, bucket_name: str, object_key: str}
@optional {cf-r2-jurisdiction: str(default/eu/us/fedramp/fedramp-high)=default}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/r2/buckets/{bucket_name}/objects/{object_key}
@required {account_id: str, bucket_name: str, object_key: str}
@optional {cf-r2-jurisdiction: str(default/eu/us/fedramp/fedramp-high)=default, If-None-Match: str, If-Modified-Since: str}
@returns(200)
@errors {304, 4XX}

@endpoint PUT /accounts/{account_id}/r2/buckets/{bucket_name}/objects/{object_key}
@required {account_id: str, bucket_name: str, object_key: str}
@optional {cf-r2-jurisdiction: str(default/eu/us/fedramp/fedramp-high)=default, Content-Type: str, Content-Length: int, cf-r2-storage-class: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/r2/buckets/{bucket_name}/sippy
@required {bucket_name: str, account_id: str}
@optional {cf-r2-jurisdiction: str(default/eu/us/fedramp/fedramp-high)=default}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/r2/buckets/{bucket_name}/sippy
@required {account_id: str, bucket_name: str}
@optional {cf-r2-jurisdiction: str(default/eu/us/fedramp/fedramp-high)=default}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/r2/buckets/{bucket_name}/sippy
@required {account_id: str, bucket_name: str}
@optional {cf-r2-jurisdiction: str(default/eu/us/fedramp/fedramp-high)=default}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/r2/buckets/{bucket_name}/storage-class-migration-jobs
@required {account_id: str, bucket_name: str}
@optional {cf-r2-jurisdiction: str(default/eu/us/fedramp/fedramp-high)=default, status: str, maxKeys: int, continuationToken: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/r2/buckets/{bucket_name}/storage-class-migration-jobs
@required {account_id: str, bucket_name: str, jobType: str}
@optional {cf-r2-jurisdiction: str(default/eu/us/fedramp/fedramp-high)=default, destinationStorageClass: str(Standard/InfrequentAccess), sourceStorageClass: str(Standard/InfrequentAccess)}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/r2/buckets/{bucket_name}/storage-class-migration-jobs/{job_id}
@required {account_id: str, bucket_name: str, job_id: str}
@optional {cf-r2-jurisdiction: str(default/eu/us/fedramp/fedramp-high)=default}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/r2/metrics
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/r2/temp-access-credentials
@required {account_id: str, bucket: str, parentAccessKeyId: str, permission: str(admin-read-write/admin-read-only/object-read-write/object-read-only), ttlSeconds: num=900}
@optional {objects: [str], prefixes: [str]}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/realtime/kit/apps
@optional {page_no: int=1, per_page: int=20, search: str, sort_order: str(ASC/DESC)=DESC}
@returns(200) {data: [map], paging: map{end_offset: num, start_offset: num, total_count: num}, success: bool}

@endpoint POST /accounts/{account_id}/realtime/kit/apps
@required {name: str}
@returns(200) {data: map{app: map{created_at: str(date-time), id: str(uuid), name: str}}, success: bool}

@endpoint GET /accounts/{account_id}/realtime/kit/apps/{app_id}
@required {account_id: str, app_id: str}
@returns(200) {data: map{created_at: str(date-time), id: str(uuid), name: str?}, success: bool}

@endpoint GET /accounts/{account_id}/realtime/kit/{app_id}/analytics/daywise
@required {account_id: str, app_id: str}
@optional {start_date: str, end_date: str}
@returns(200) {data: map{recording_stats: map{day_stats: [map], recording_count: int, recording_minutes_consumed: num}, session_stats: map{day_stats: [map], sessions_count: int, sessions_minutes_consumed: num}}, success: bool}

@endpoint GET /accounts/{account_id}/realtime/kit/{app_id}/analytics/livestreams/daywise
@required {account_id: str, app_id: str}
@optional {start_time: int(int64), end_time: int(int64), filters: str}
@returns(200) {data: [map], success: bool}

@endpoint GET /accounts/{account_id}/realtime/kit/{app_id}/analytics/livestreams/overall
@required {account_id: str, app_id: str}
@optional {start_time: int(int64), end_time: int(int64), filters: str}
@returns(200) {data: map{count: int, total_ingest_seconds: int, total_viewer_seconds: int}, success: bool}

@endpoint GET /accounts/{account_id}/realtime/kit/{app_id}/livestreams
@optional {exclude_meetings: bool=false, per_page: int, page_no: int, status: str(LIVE/IDLE/ERRORED/INVOKED), start_time: str(date-time), end_time: str(date-time), sort_order: str(ASC/DSC)}
@returns(200) {data: map{created_at: str(date-time), disabled: str, id: str(uuid), ingest_server: str, meeting_id: str, name: str, paging: map{end_offset: int, start_offset: int, total_count: int}, playback_url: str, status: str, stream_key: str, updated_at: str(date-time)}, success: bool}

@endpoint GET /accounts/{account_id}/realtime/kit/{app_id}/livestreams/sessions/{livestream-session-id}
@required {account_id: str, app_id: str, livestream-session-id: str}
@returns(200) {data: map{created_at: str(date-time), err_message: str, id: str, ingest_seconds: int, livestream_id: str, started_time: str, stopped_time: str, updated_at: str, viewer_seconds: int}, success: bool}

@endpoint GET /accounts/{account_id}/realtime/kit/{app_id}/livestreams/{livestream_id}
@required {account_id: str, app_id: str, livestream_id: str}
@optional {page_no: int, per_page: int}
@returns(200) {data: map{livestream: map{created_at: str, disabled: str, id: str, ingest_server: str, meeting_id: str, name: str, playback_url: str, status: str, stream_key: str, updated_at: str}, paging: map{end_offset: int, start_offset: int, total_count: int}, session: map{created_at: str(date-time), err_message: str, id: str, ingest_seconds: num, invoked_time: str(date-time), livestream_id: str, started_time: str(date-time), stopped_time: str(date-time), updated_at: str(date-time), viewer_seconds: num}}, success: bool}

@endpoint GET /accounts/{account_id}/realtime/kit/{app_id}/livestreams/{livestream_id}/active-livestream-session
@required {account_id: str, app_id: str, livestream_id: str}
@returns(200) {data: map{livestream: map{created_at: str(date-time), disabled: str, id: str, ingest_server: str, meeting_id: str, name: str, playback_url: str, status: str, stream_key: str, updated_at: str(date-time)}, session: map{created_at: str(date-time), err_message: str, id: str, ingest_seconds: str, invoked_time: str(date-time), livestream_id: str, started_time: str(date-time), stopped_time: str(date-time), updated_at: str(date-time), viewer_seconds: str}}, success: bool}

@endpoint GET /accounts/{account_id}/realtime/kit/{app_id}/meetings
@required {account_id: str, app_id: str}
@optional {page_no: num, per_page: num, start_time: str(date-time), end_time: str(date-time), search: str, status: str(ACTIVE/INACTIVE)}
@returns(200)

@endpoint POST /accounts/{account_id}/realtime/kit/{app_id}/meetings
@required {account_id: str, app_id: str}
@optional {ai_config: map{summarization: map, transcription: map}, live_stream_on_start: bool=false, persist_chat: bool=false, record_on_start: bool=false, recording_config: map{audio_config: map, file_name_prefix: str, live_streaming_config: map, max_seconds: num, realtimekit_bucket_config: map, storage_config: map, video_config: map}, session_keep_alive_time_in_secs: num=60, summarize_on_end: bool=false, title: str, transcribe_on_end: bool=false}
@returns(201)

@endpoint GET /accounts/{account_id}/realtime/kit/{app_id}/meetings/{meeting_id}
@required {meeting_id: str(uuid)}
@optional {name: str}
@returns(200)
@errors {500}

@endpoint PATCH /accounts/{account_id}/realtime/kit/{app_id}/meetings/{meeting_id}
@required {meeting_id: str(uuid)}
@optional {ai_config: map{summarization: map, transcription: map}, live_stream_on_start: bool, persist_chat: bool, record_on_start: bool, recording_config: map{audio_config: map, file_name_prefix: str, live_streaming_config: map, max_seconds: num, realtimekit_bucket_config: map, storage_config: map, video_config: map}, session_keep_alive_time_in_secs: num, status: str(ACTIVE/INACTIVE), summarize_on_end: bool, title: str, transcribe_on_end: bool}
@returns(200)
@errors {500}

@endpoint PUT /accounts/{account_id}/realtime/kit/{app_id}/meetings/{meeting_id}
@required {meeting_id: str(uuid)}
@optional {ai_config: map{summarization: map, transcription: map}, live_stream_on_start: bool=false, persist_chat: bool=false, record_on_start: bool=false, recording_config: map{audio_config: map, file_name_prefix: str, live_streaming_config: map, max_seconds: num, realtimekit_bucket_config: map, storage_config: map, video_config: map}, session_keep_alive_time_in_secs: num=60, summarize_on_end: bool=false, title: str, transcribe_on_end: bool=false}
@returns(200)

@endpoint GET /accounts/{account_id}/realtime/kit/{app_id}/meetings/{meeting_id}/active-livestream
@required {meeting_id: str(uuid)}
@returns(200) {data: map{created_at: str(date-time), disabled: str, id: str, ingest_server: str, meeting_id: str, name: str?, playback_url: str, status: str, stream_key: str, updated_at: str(date-time)}, success: bool}

@endpoint POST /accounts/{account_id}/realtime/kit/{app_id}/meetings/{meeting_id}/active-livestream/stop
@required {meeting_id: str(uuid)}
@returns(200) {data: map{message: str}, success: bool}

@endpoint GET /accounts/{account_id}/realtime/kit/{app_id}/meetings/{meeting_id}/active-session
@required {meeting_id: str}
@returns(200) {data: map{associated_id: str, breakout_rooms: [map], created_at: str, ended_at: str, id: str, live_participants: num, max_concurrent_participants: num, meeting_display_name: str, minutes_consumed: num, organization_id: str, started_at: str, status: str, type: str, updated_at: str}, success: bool}
@errors {404}

@endpoint POST /accounts/{account_id}/realtime/kit/{app_id}/meetings/{meeting_id}/active-session/kick
@required {account_id: str, app_id: str, meeting_id: str}
@optional {custom_participant_ids: [str], participant_ids: [str(uuid)]}
@returns(200) {data: map{action: str, participants: [map]}, success: bool}
@errors {404}

@endpoint POST /accounts/{account_id}/realtime/kit/{app_id}/meetings/{meeting_id}/active-session/kick-all
@required {account_id: str, app_id: str, meeting_id: str}
@returns(200) {data: map{action: str, kicked_participants_count: num}, success: bool}

@endpoint POST /accounts/{account_id}/realtime/kit/{app_id}/meetings/{meeting_id}/active-session/mute
@required {account_id: str, app_id: str, meeting_id: str}
@optional {custom_participant_ids: [str], participant_ids: [str]}
@returns(200) {data: map{action: str, participants: [map]}, success: bool}

@endpoint POST /accounts/{account_id}/realtime/kit/{app_id}/meetings/{meeting_id}/active-session/mute-all
@required {account_id: str, app_id: str, meeting_id: str}
@optional {allow_unmute: bool=false}
@returns(200) {data: map{action: str, muted_participants_count: num}, success: bool}

@endpoint POST /accounts/{account_id}/realtime/kit/{app_id}/meetings/{meeting_id}/active-session/poll
@required {account_id: str, app_id: str, meeting_id: str, options: [str], question: str}
@optional {anonymous: bool, hide_votes: bool}
@returns(201) {data: map{action: str, poll: map{anonymous: bool, created_by: str, hide_votes: bool, id: str, options: [map], question: str, voted: [str]}}, success: bool}
@errors {400}

@endpoint GET /accounts/{account_id}/realtime/kit/{app_id}/meetings/{meeting_id}/livestream
@required {meeting_id: str(uuid)}
@optional {page_no: int, per_page: int}
@returns(200) {data: map{livestreams: [map], paging: map{end_offset: int, start_offset: int, total_count: int}, sessions: map{created_at: str(date-time), err_message: str, id: str, ingest_seconds: str, invoked_time: str(date-time), livestream_id: str, started_time: str(date-time), stopped_time: str(date-time), updated_at: str(date-time)}}, success: bool}

@endpoint POST /accounts/{account_id}/realtime/kit/{app_id}/meetings/{meeting_id}/livestreams
@required {meeting_id: str(uuid)}
@optional {name: str, video_config: map{height: int, width: int}}
@returns(201) {data: map{id: str, ingest_server: str, playback_url: str, status: str, stream_key: str}, success: bool}

@endpoint GET /accounts/{account_id}/realtime/kit/{app_id}/meetings/{meeting_id}/participants
@required {account_id: str, app_id: str, meeting_id: str(uuid)}
@optional {page_no: num, per_page: num}
@returns(200)
@errors {500}

@endpoint POST /accounts/{account_id}/realtime/kit/{app_id}/meetings/{meeting_id}/participants
@required {account_id: str, app_id: str, meeting_id: str(uuid), custom_participant_id: str, preset_name: str=group_call_host}
@optional {name: str, picture: str(uri)}
@returns(201)
@errors {500}

@endpoint DELETE /accounts/{account_id}/realtime/kit/{app_id}/meetings/{meeting_id}/participants/{participant_id}
@required {meeting_id: str(uuid), participant_id: str}
@returns(200)
@errors {500}

@endpoint GET /accounts/{account_id}/realtime/kit/{app_id}/meetings/{meeting_id}/participants/{participant_id}
@required {meeting_id: str(uuid), participant_id: str}
@returns(200)
@errors {500}

@endpoint PATCH /accounts/{account_id}/realtime/kit/{app_id}/meetings/{meeting_id}/participants/{participant_id}
@required {meeting_id: str(uuid), participant_id: str}
@optional {name: str, picture: str(uri), preset_name: str}
@returns(200)
@errors {500}

@endpoint PUT /accounts/{account_id}/realtime/kit/{app_id}/meetings/{meeting_id}/participants/{participant_id}
@required {meeting_id: str(uuid), participant_id: str, custom_participant_id: str, preset_name: str}
@optional {name: str, picture: str(uri)}
@returns(200)
@errors {500}

@endpoint POST /accounts/{account_id}/realtime/kit/{app_id}/meetings/{meeting_id}/participants/{participant_id}/token
@required {account_id: str, app_id: str, meeting_id: str(uuid), participant_id: str}
@returns(200)
@errors {500}

@endpoint GET /accounts/{account_id}/realtime/kit/{app_id}/presets
@required {account_id: str, app_id: str}
@optional {per_page: num, page_no: num, search: str}
@returns(200)

@endpoint POST /accounts/{account_id}/realtime/kit/{app_id}/presets
@required {account_id: str, app_id: str, config: map{livestream_viewer_qualities: [int], max_screenshare_count!: num, max_video_streams!: map, media!: map, view_type!: str}, name: str, permissions: map{accept_stage_requests: bool, accept_waiting_requests!: bool, can_accept_production_requests!: bool, can_change_participant_permissions!: bool, can_edit_display_name!: bool, can_livestream!: bool, can_record!: bool, can_spotlight!: bool, chat!: map, connected_meetings!: map, disable_participant_audio!: bool, disable_participant_screensharing!: bool, disable_participant_video!: bool, hidden_participant!: bool, is_recorder: bool, kick_participant!: bool, media!: map, pin_participant!: bool, plugins!: map, polls!: map, recorder_type!: str, show_participant_list!: bool, stage_access: str, stage_enabled: bool, transcription_enabled: bool, waiting_room_type!: str}, ui: map{design_tokens!: map}}
@returns(201)

@endpoint DELETE /accounts/{account_id}/realtime/kit/{app_id}/presets/{preset_id}
@required {account_id: str, app_id: str, preset_id: str(uuid)}
@returns(200)

@endpoint GET /accounts/{account_id}/realtime/kit/{app_id}/presets/{preset_id}
@required {account_id: str, app_id: str, preset_id: str(uuid)}
@returns(200)

@endpoint PATCH /accounts/{account_id}/realtime/kit/{app_id}/presets/{preset_id}
@required {account_id: str, app_id: str, preset_id: str(uuid)}
@optional {config: map{livestream_viewer_qualities: [int], max_screenshare_count: num, max_video_streams: map, media: map, view_type: str}, name: str, permissions: map{accept_stage_requests: bool, accept_waiting_requests: bool, can_accept_production_requests: bool, can_change_participant_permissions: bool, can_edit_display_name: bool, can_livestream: bool, can_record: bool, can_spotlight: bool, chat: map, connected_meetings: map, disable_participant_audio: bool, disable_participant_screensharing: bool, disable_participant_video: bool, hidden_participant: bool, is_recorder: bool, kick_participant: bool, media: map, pin_participant: bool, plugins: map, polls: map, recorder_type: str, show_participant_list: bool, stage_access: str, stage_enabled: bool, transcription_enabled: bool, waiting_room_type: str}, ui: map{design_tokens: map}}
@returns(200)

@endpoint PUT /accounts/{account_id}/realtime/kit/{app_id}/presets/{preset_id}
@required {account_id: str, app_id: str, preset_id: str(uuid), config: map{livestream_viewer_qualities: [int], max_screenshare_count!: num, max_video_streams!: map, media!: map, view_type!: str}, name: str, permissions: map{accept_stage_requests: bool, accept_waiting_requests!: bool, can_accept_production_requests!: bool, can_change_participant_permissions!: bool, can_edit_display_name!: bool, can_livestream!: bool, can_record!: bool, can_spotlight!: bool, chat!: map, connected_meetings!: map, disable_participant_audio!: bool, disable_participant_screensharing!: bool, disable_participant_video!: bool, hidden_participant!: bool, is_recorder: bool, kick_participant!: bool, media!: map, pin_participant!: bool, plugins!: map, polls!: map, recorder_type!: str, show_participant_list!: bool, stage_access: str, stage_enabled: bool, transcription_enabled: bool, waiting_room_type!: str}, ui: map{design_tokens!: map}}
@returns(200)

@endpoint GET /accounts/{account_id}/realtime/kit/{app_id}/recordings
@required {account_id: str, app_id: str}
@optional {meeting_id: str(uuid), page_no: num, per_page: num, expired: bool, search: str, sort_by: str, sort_order: str(ASC/DESC), start_time: str(date-time), end_time: str(date-time), status: [str]}
@returns(200)

@endpoint POST /accounts/{account_id}/realtime/kit/{app_id}/recordings
@required {account_id: str, app_id: str, meeting_id: str(uuid)}
@optional {allow_multiple_recordings: bool=false, audio_config: map{channel: str, codec: str, export_file: bool}, file_name_prefix: str, interactive_config: map{type: str}, max_seconds: int, realtimekit_bucket_config: map{enabled!: bool}, rtmp_out_config: map{rtmp_url: str(uri)}, storage_config: map{access_key: str, auth_method: str, bucket!: str, host: str, password: str, path: str, port: num, private_key: str, region: str, secret: str, type!: str, username: str}, url: str(uri), video_config: map{codec: str, export_file: bool, height: int, watermark: map, width: int}}
@returns(200)

@endpoint GET /accounts/{account_id}/realtime/kit/{app_id}/recordings/active-recording/{meeting_id}
@required {account_id: str, app_id: str, meeting_id: str}
@returns(200)
@errors {404}

@endpoint POST /accounts/{account_id}/realtime/kit/{app_id}/recordings/track
@required {account_id: str, app_id: str, meeting_id: str(uuid)}
@optional {layers: map, user_ids: [str]}
@returns(200)

@endpoint GET /accounts/{account_id}/realtime/kit/{app_id}/recordings/{recording_id}
@required {account_id: str, app_id: str, recording_id: str(uuid)}
@returns(200)

@endpoint PUT /accounts/{account_id}/realtime/kit/{app_id}/recordings/{recording_id}
@required {account_id: str, app_id: str, recording_id: str(uuid), action: str(stop/pause/resume)}
@returns(200)

@endpoint GET /accounts/{account_id}/realtime/kit/{app_id}/sessions
@required {account_id: str, app_id: str}
@optional {page_no: num, per_page: num, sort_by: str(minutesConsumed/createdAt), sort_order: str(ASC/DESC), start_time: str(date-time), end_time: str(date-time), participants: str, status: str(LIVE/ENDED), search: str, associated_id: str(uuid)}
@returns(200) {data: map{sessions: [map]}, paging: map{end_offset: num, start_offset: num, total_count: num}, success: bool}

@endpoint GET /accounts/{account_id}/realtime/kit/{app_id}/sessions/peer-report/{peer_id}
@required {account_id: str, app_id: str, peer_id: str(uuid)}
@optional {filters: str(device_info/ip_information/precall_network_information/events/quality_stats), include_peer_events: bool=false}
@returns(200) {data: map{participant: map{created_at: str, custom_participant_id: str, display_name: str, duration: num, id: str(uuid), joined_at: str, left_at: str, peer_events: [map], peer_report: map{metadata: map, quality: map}, role: str, session_id: str(uuid), updated_at: str, user_id: str}}, success: bool}

@endpoint GET /accounts/{account_id}/realtime/kit/{app_id}/sessions/{session_id}
@required {account_id: str, app_id: str, session_id: str(uuid)}
@optional {include_breakout_rooms: bool=false}
@returns(200) {data: map{associated_id: str, breakout_rooms: [map], created_at: str, ended_at: str, id: str, live_participants: num, max_concurrent_participants: num, meeting_display_name: str, minutes_consumed: num, organization_id: str, started_at: str, status: str, type: str, updated_at: str}, success: bool}

@endpoint GET /accounts/{account_id}/realtime/kit/{app_id}/sessions/{session_id}/chat
@required {account_id: str, app_id: str, session_id: str(uuid)}
@returns(200) {data: map{chat_download_url: str, chat_download_url_expiry: str}, success: bool}

@endpoint GET /accounts/{account_id}/realtime/kit/{app_id}/sessions/{session_id}/livestream-sessions
@required {account_id: str, app_id: str, session_id: str(uuid)}
@optional {per_page: num, page_no: num}
@returns(200) {data: map{created_at: str(date-time), err_message: str, id: str, ingest_seconds: num, invoked_time: str?, livestream_id: str, paging: map{end_offset: num, start_offset: num, total_count: num}, stopped_time: str(date-time), updated_at: str(date-time), viewer_seconds: num}, success: bool}

@endpoint GET /accounts/{account_id}/realtime/kit/{app_id}/sessions/{session_id}/participants
@required {account_id: str, app_id: str, session_id: str(uuid)}
@optional {search: str, page_no: num, per_page: int=25, sort_order: str(ASC/DESC), sort_by: str(joinedAt/duration), include_peer_events: bool=false, view: str(raw/consolidated)=raw}
@returns(200) {data: map{participants: [map]}, success: bool}

@endpoint GET /accounts/{account_id}/realtime/kit/{app_id}/sessions/{session_id}/participants/{participant_id}
@required {account_id: str, app_id: str, participant_id: str(uuid), session_id: str(uuid)}
@optional {include_peer_events: bool=false}
@returns(200) {data: map{participant: map{created_at: str, custom_participant_id: str, display_name: str, duration: num, id: str, joined_at: str, left_at: str, peer_events: [map], preset_name: str, updated_at: str, user_id: str}}, success: bool}

@endpoint GET /accounts/{account_id}/realtime/kit/{app_id}/sessions/{session_id}/summary
@required {account_id: str, app_id: str, session_id: str(uuid)}
@returns(200) {data: map{sessionId: str, summaryDownloadUrl: str, summaryDownloadUrlExpiry: str}, success: bool}

@endpoint POST /accounts/{account_id}/realtime/kit/{app_id}/sessions/{session_id}/summary
@required {account_id: str, app_id: str, session_id: str(uuid)}
@returns(200) {data: map{session_id: str(uuid), status: str}, success: bool}

@endpoint GET /accounts/{account_id}/realtime/kit/{app_id}/sessions/{session_id}/transcript
@required {account_id: str, app_id: str, session_id: str(uuid)}
@optional {format: str(SRT/VTT/JSON/CSV)=CSV}
@returns(200) {data: map{sessionId: str, transcript_download_url: str, transcript_download_url_expiry: str}, success: bool}

@endpoint GET /accounts/{account_id}/realtime/kit/{app_id}/webhooks
@required {account_id: str, app_id: str}
@returns(200) {data: [map], success: bool}
@errors {401}

@endpoint POST /accounts/{account_id}/realtime/kit/{app_id}/webhooks
@required {account_id: str, app_id: str, events: [str], name: str, url: str(uri)}
@optional {enabled: bool=true}
@returns(201) {data: map{created_at: str(date-time), enabled: bool, events: [str], id: str(uuid), name: str, updated_at: str(date-time), url: str(uri)}, success: bool}
@errors {400, 401}

@endpoint GET /accounts/{account_id}/realtime/kit/{app_id}/webhooks/all
@required {account_id: str, app_id: str}
@returns(200) {data: [str], success: bool}

@endpoint DELETE /accounts/{account_id}/realtime/kit/{app_id}/webhooks/{webhook_id}
@required {account_id: str, app_id: str, webhook_id: str(uuid)}
@returns(200) {data: map{created_at: str(date-time), enabled: bool, events: [str], id: str(uuid), name: str, updated_at: str(date-time), url: str(uri)}, success: bool}
@errors {400, 401}

@endpoint GET /accounts/{account_id}/realtime/kit/{app_id}/webhooks/{webhook_id}
@required {account_id: str, app_id: str, webhook_id: str(uuid)}
@returns(200) {data: map{created_at: str(date-time), enabled: bool, events: [str], id: str(uuid), name: str, updated_at: str(date-time), url: str(uri)}, success: bool}
@errors {400, 401}

@endpoint PATCH /accounts/{account_id}/realtime/kit/{app_id}/webhooks/{webhook_id}
@required {account_id: str, app_id: str, webhook_id: str(uuid)}
@optional {enabled: bool=true, events: [str], name: str, url: str(uri)}
@returns(200) {data: map{created_at: str(date-time), enabled: bool, events: [str], id: str(uuid), name: str, updated_at: str(date-time), url: str(uri)}, success: bool}
@errors {400, 401}

@endpoint PUT /accounts/{account_id}/realtime/kit/{app_id}/webhooks/{webhook_id}
@required {account_id: str, app_id: str, webhook_id: str(uuid), events: [str], name: str, url: str(uri)}
@optional {enabled: bool=true}
@returns(200) {data: map{created_at: str(date-time), enabled: bool, events: [str], id: str(uuid), name: str, updated_at: str(date-time), url: str(uri)}, success: bool}
@errors {400, 401}

@endpoint GET /accounts/{account_id}/receipts/{receipt_id}/pdf
@required {account_id: str, receipt_id: str}
@optional {doctype: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/registrar-sandbox/domain-check
@required {account_id: str, domains: [str]}
@returns(200)
@errors {400}

@endpoint GET /accounts/{account_id}/registrar-sandbox/domain-search
@required {account_id: str, q: str}
@optional {extensions: [str], limit: int=20}
@returns(200)
@errors {400}

@endpoint GET /accounts/{account_id}/registrar-sandbox/extensions
@required {account_id: str}
@optional {name: str, cursor: str, per_page: int=20, direction: str(asc/desc)=asc, sort_by: str(name/created_at/updated_at)=name}
@returns(200)
@errors {304, 4XX}

@endpoint GET /accounts/{account_id}/registrar-sandbox/extensions/{extension}
@required {account_id: str, extension: str}
@returns(200)
@errors {304, 4XX}

@endpoint GET /accounts/{account_id}/registrar-sandbox/registrations
@required {account_id: str}
@optional {cursor: str, per_page: int=20, direction: str(asc/desc)=asc, sort_by: str(registry_created_at/registry_expires_at/name)=registry_created_at}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/registrar-sandbox/registrations
@required {account_id: str, domain_name: str}
@optional {Prefer: str, acknowledgements: map, auto_renew: bool=false, contact_extensions: map, contacts: map{administrator: any, billing: any, registrant: any, technical: any}, privacy_mode: str(off/redaction)=redaction, years: int}
@returns(201)
@returns(202)
@errors {4XX}

@endpoint GET /accounts/{account_id}/registrar-sandbox/registrations/{domain_name}
@required {account_id: str, domain_name: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/registrar-sandbox/registrations/{domain_name}
@required {account_id: str, domain_name: str}
@optional {Prefer: str, auto_renew: bool}
@returns(200)
@returns(202)
@errors {4XX}

@endpoint GET /accounts/{account_id}/registrar-sandbox/registrations/{domain_name}/registration-status
@required {account_id: str, domain_name: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/registrar-sandbox/registrations/{domain_name}/update-status
@required {account_id: str, domain_name: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/registrar/domain-check
@required {account_id: str, domains: [str]}
@returns(200)
@errors {400}

@endpoint GET /accounts/{account_id}/registrar/domain-search
@required {account_id: str, q: str}
@optional {extensions: [str], limit: int=20}
@returns(200)
@errors {400}

@endpoint GET /accounts/{account_id}/registrar/domains
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/registrar/domains/{domain_name}
@required {domain_name: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/registrar/domains/{domain_name}
@required {domain_name: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/registrar/extensions
@required {account_id: str}
@optional {name: str, cursor: str, per_page: int=20, direction: str(asc/desc)=asc, sort_by: str(name/created_at/updated_at)=name}
@returns(200)
@errors {304, 4XX}

@endpoint GET /accounts/{account_id}/registrar/extensions/{extension}
@required {account_id: str, extension: str}
@returns(200)
@errors {304, 4XX}

@endpoint GET /accounts/{account_id}/registrar/registrations
@required {account_id: str}
@optional {cursor: str, per_page: int=20, direction: str(asc/desc)=asc, sort_by: str(registry_created_at/registry_expires_at/name)=registry_created_at}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/registrar/registrations
@required {account_id: str, domain_name: str}
@optional {Prefer: str, acknowledgements: map, auto_renew: bool=false, contact_extensions: map, contacts: map{administrator: any, billing: any, registrant: any, technical: any}, privacy_mode: str(off/redaction)=redaction, years: int}
@returns(201)
@returns(202)
@errors {4XX}

@endpoint GET /accounts/{account_id}/registrar/registrations/{domain_name}
@required {account_id: str, domain_name: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/registrar/registrations/{domain_name}
@required {account_id: str, domain_name: str}
@optional {Prefer: str, auto_renew: bool}
@returns(200)
@returns(202)
@errors {4XX}

@endpoint GET /accounts/{account_id}/registrar/registrations/{domain_name}/registration-status
@required {account_id: str, domain_name: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/registrar/registrations/{domain_name}/update-status
@required {account_id: str, domain_name: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/reporting/industry
@required {account_id: str}
@returns(200) {errors: [map], messages: [map], result: map?{industry: any, unlock_time: str?}, success: bool}

@endpoint PATCH /accounts/{account_id}/reporting/industry
@required {account_id: str, industry: any}
@returns(200) {errors: [map], messages: [map], result: map?{industry: any, unlock_time: str?, valid_from: str?, version: int}, success: bool}
@errors {400, 423, 500}

@endpoint GET /accounts/{account_id}/reporting/policies
@required {account_id: str}
@returns(200) {errors: [map], messages: [map], result: [map]?, success: bool}
@errors {400}

@endpoint GET /accounts/{account_id}/reporting/policies/{policy_id}
@required {policy_id: str(uuid), account_id: str}
@returns(200) {errors: [map], messages: [map], result: map?{enabled: bool, policy_description: str, policy_id: str(uuid), policy_name: str, policy_schedule: str, valid_from: str(date-time)?, valid_to: str(date-time)?, version: int}, success: bool}
@errors {404}

@endpoint GET /accounts/{account_id}/reporting/reports
@required {account_id: str}
@returns(200) {errors: [map], messages: [map], result: [map]?, success: bool}
@errors {400}

@endpoint GET /accounts/{account_id}/reporting/reports/{report_id}
@required {account_id: str, report_id: str(uuid)}
@returns(200) {errors: [map], messages: [map], result: map?{generated_on: str?, generation_id: str(uuid), policy_id: str(uuid), policy_version: int, reason: any, report: any, report_id: str(uuid), report_settings: any, report_status: any, scheduled_for: str(date-time)?, scheduled_on: str(date-time)?}, success: bool}
@errors {404}

@endpoint POST /accounts/{account_id}/request-tracer/trace
@required {account_id: str, method: str, url: str}
@optional {body: map{base64: str, json: map, plain_text: str}, context: map{bot_score: int, geoloc: map, skip_challenge: bool, threat_score: int}, cookies: map, headers: map, protocol: str, skip_response: bool}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/resource-library/applications
@required {account_id: str}
@optional {filter: str, limit: int=25, offset: int=0, order_by: str, search: str, fields: str}
@returns(200)
@errors {403, 502, 503, 4XX}

@endpoint POST /accounts/{account_id}/resource-library/applications
@required {account_id: str, category_id: int(int64), human_id: str, name: str}
@optional {hostnames: [str], ip_subnets: [str], port_protocols: [str], support_domains: [str]}
@returns(201)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/resource-library/applications/{id}
@required {account_id: str, id: int(int64)}
@returns(200)
@errors {409, 502, 4XX}

@endpoint GET /accounts/{account_id}/resource-library/applications/{id}
@required {account_id: str, id: int(int64)}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/resource-library/applications/{id}
@required {account_id: str, id: int(int64)}
@optional {hostnames: [str], ip_subnets: [str], port_protocols: [str], support_domains: [str]}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/resource-library/categories
@required {account_id: str}
@optional {limit: int=25, offset: int=0}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/resource-library/categories/{id}
@required {account_id: str, id: int(int64)}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/roles
@required {account_id: any}
@optional {page: num=1, per_page: num=20}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/roles/{role_id}
@required {role_id: str, account_id: any}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/rules/lists
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/rules/lists
@required {account_id: str, kind: any(ip/redirect/hostname/asn), name: str}
@optional {description: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/rules/lists/bulk_operations/{operation_id}
@required {operation_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/rules/lists/{list_id}
@required {list_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/rules/lists/{list_id}
@required {list_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/rules/lists/{list_id}
@required {list_id: str, account_id: str}
@optional {description: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/rules/lists/{list_id}/items
@required {list_id: str, account_id: str}
@optional {items: [map{id!: str}]}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/rules/lists/{list_id}/items
@required {list_id: str, account_id: str}
@optional {cursor: str, per_page: int, search: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/rules/lists/{list_id}/items
@required {list_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/rules/lists/{list_id}/items
@required {list_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/rules/lists/{list_id}/items/{item_id}
@required {item_id: str, list_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/rulesets
@required {account_id: str}
@optional {cursor: str, per_page: int}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/rulesets
@required {account_id: str}
@optional {dry_run: bool=false}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/rulesets/phases/{ruleset_phase}/entrypoint
@required {ruleset_phase: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/rulesets/phases/{ruleset_phase}/entrypoint
@required {ruleset_phase: str, account_id: str}
@optional {dry_run: bool=false}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/rulesets/phases/{ruleset_phase}/entrypoint/versions
@required {ruleset_phase: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/rulesets/phases/{ruleset_phase}/entrypoint/versions/{ruleset_version}
@required {ruleset_version: str, ruleset_phase: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/rulesets/{ruleset_id}
@required {ruleset_id: str, account_id: str}
@optional {dry_run: bool=false}
@returns(204)
@errors {4XX}

@endpoint GET /accounts/{account_id}/rulesets/{ruleset_id}
@required {ruleset_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/rulesets/{ruleset_id}
@required {ruleset_id: str, account_id: str}
@optional {dry_run: bool=false}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/rulesets/{ruleset_id}/rules
@required {ruleset_id: str, account_id: str}
@optional {dry_run: bool=false}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/rulesets/{ruleset_id}/rules/{rule_id}
@required {rule_id: str, ruleset_id: str, account_id: str}
@optional {dry_run: bool=false}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/rulesets/{ruleset_id}/rules/{rule_id}
@required {rule_id: str, ruleset_id: str, account_id: str}
@optional {dry_run: bool=false}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/rulesets/{ruleset_id}/versions
@required {ruleset_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/rulesets/{ruleset_id}/versions/{ruleset_version}
@required {ruleset_version: str, ruleset_id: str, account_id: str}
@optional {dry_run: bool=false}
@returns(204)
@errors {4XX}

@endpoint GET /accounts/{account_id}/rulesets/{ruleset_id}/versions/{ruleset_version}
@required {ruleset_version: str, ruleset_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/rulesets/{ruleset_id}/versions/{ruleset_version}/by_tag/{rule_tag}
@required {rule_tag: str, ruleset_version: str, ruleset_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/rum/site_info
@required {account_id: str}
@optional {auto_install: bool, host: str, zone_tag: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/rum/site_info/list
@required {account_id: str}
@optional {per_page: num, page: num, order_by: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/rum/site_info/site_tag/list
@required {account_id: str}
@optional {all: bool}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/rum/site_info/validate/{hostname}
@required {account_id: str, hostname: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/rum/site_info/zone_tag/list
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/rum/site_info/{site_id}
@required {account_id: str, site_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/rum/site_info/{site_id}
@required {account_id: str, site_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/rum/site_info/{site_id}
@required {account_id: str, site_id: str}
@optional {auto_install: bool, enabled: bool, host: str, lite: bool, zone_tag: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/rum/v2/{ruleset_id}/rule
@required {account_id: str, ruleset_id: str}
@optional {host: str, inclusive: bool, is_paused: bool, paths: [str]}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/rum/v2/{ruleset_id}/rule/{rule_id}
@required {account_id: str, ruleset_id: str, rule_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/rum/v2/{ruleset_id}/rule/{rule_id}
@required {account_id: str, ruleset_id: str, rule_id: str}
@optional {host: str, inclusive: bool, is_paused: bool, paths: [str]}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/rum/v2/{ruleset_id}/rules
@required {account_id: str, ruleset_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/rum/v2/{ruleset_id}/rules
@required {account_id: str, ruleset_id: str}
@optional {delete_rules: [str], rules: [map{host: str, id: str, inclusive: bool, is_paused: bool, paths: [str]}]}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/scim/v2/Groups
@required {account_id: any}
@optional {startIndex: int=1, count: int, filter: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/scim/v2/Groups
@required {account_id: any}
@returns(201)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/scim/v2/Groups/{group_id}
@required {account_id: any, group_id: str}
@returns(204)
@errors {4XX}

@endpoint GET /accounts/{account_id}/scim/v2/Groups/{group_id}
@required {account_id: any, group_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/scim/v2/Groups/{group_id}
@required {account_id: any, group_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/scim/v2/Groups/{group_id}
@required {account_id: any, group_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/scim/v2/ResourceTypes
@required {account_id: any}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/scim/v2/ResourceTypes/{resource_type_id}
@required {account_id: any, resource_type_id: str(User/Group)}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/scim/v2/Schemas
@required {account_id: any}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/scim/v2/Schemas/{schema_id}
@required {account_id: any, schema_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/scim/v2/ServiceProviderConfig
@required {account_id: any}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/scim/v2/Users
@required {account_id: any}
@optional {startIndex: int=1, count: int, filter: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/scim/v2/Users
@required {account_id: any}
@returns(201)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/scim/v2/Users/{user_id}
@required {account_id: any, user_id: str}
@returns(204)
@errors {4XX}

@endpoint GET /accounts/{account_id}/scim/v2/Users/{user_id}
@required {account_id: any, user_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/scim/v2/Users/{user_id}
@required {account_id: any, user_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/scim/v2/Users/{user_id}
@required {account_id: any, user_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/secondary_dns/acls
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/secondary_dns/acls
@required {account_id: str, ip_range: str, name: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/secondary_dns/acls/{acl_id}
@required {acl_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/secondary_dns/acls/{acl_id}
@required {acl_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/secondary_dns/acls/{acl_id}
@required {acl_id: str, account_id: str, id: str, ip_range: str, name: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/secondary_dns/peers
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/secondary_dns/peers
@required {account_id: str, name: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/secondary_dns/peers/{peer_id}
@required {peer_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/secondary_dns/peers/{peer_id}
@required {peer_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/secondary_dns/peers/{peer_id}
@required {peer_id: str, account_id: str, id: str, name: str}
@optional {ip: str, ixfr_enable: bool, port: num, tsig_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/secondary_dns/tsigs
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/secondary_dns/tsigs
@required {account_id: str, algo: str, id: str, name: str, secret: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/secondary_dns/tsigs/{tsig_id}
@required {tsig_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/secondary_dns/tsigs/{tsig_id}
@required {tsig_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/secondary_dns/tsigs/{tsig_id}
@required {tsig_id: str, account_id: str, algo: str, id: str, name: str, secret: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/secrets_store/quota
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/secrets_store/stores
@required {account_id: str}
@optional {direction: str(asc/desc)=desc, page: int, per_page: int, order: str(name/created/modified)=created}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/secrets_store/stores
@required {account_id: str, name: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/secrets_store/stores/{store_id}
@required {account_id: str, store_id: str}
@optional {force: bool=false}
@returns(200)
@errors {409, 4XX}

@endpoint GET /accounts/{account_id}/secrets_store/stores/{store_id}
@required {account_id: str, store_id: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/secrets_store/stores/{store_id}/secrets
@required {account_id: str, store_id: str, ids: [str]}
@returns(202)
@errors {4XX}

@endpoint GET /accounts/{account_id}/secrets_store/stores/{store_id}/secrets
@required {account_id: str, store_id: str}
@optional {direction: str(asc/desc)=desc, page: int, per_page: int, search: str, order: str(name/comment/created/modified/status)=created, scopes: [str]}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/secrets_store/stores/{store_id}/secrets
@required {account_id: str, store_id: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/secrets_store/stores/{store_id}/secrets/{secret_id}
@required {account_id: str, store_id: str, secret_id: str}
@returns(202)
@errors {4XX}

@endpoint GET /accounts/{account_id}/secrets_store/stores/{store_id}/secrets/{secret_id}
@required {account_id: str, store_id: str, secret_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/secrets_store/stores/{store_id}/secrets/{secret_id}
@required {account_id: str, store_id: str, secret_id: str}
@optional {comment: str, scopes: [str], value: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/secrets_store/stores/{store_id}/secrets/{secret_id}/duplicate
@required {account_id: str, store_id: str, secret_id: str, name: str, scopes: [str]}
@optional {comment: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/security-center/insights
@required {account_id: str}
@optional {dismissed: bool, issue_class: [str], issue_type: [str], product: [str], source: [str], severity: [str], subject: [str], issue_class~neq: [str], issue_type~neq: [str], product~neq: [str], severity~neq: [str], subject~neq: [str], page: any=1, per_page: any=25}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/security-center/insights/audit-log
@required {account_id: str}
@optional {per_page: int=25, cursor: str, field_changed: str(status/user_classification), changed_by: str, since: str(date-time), before: str(date-time), order: str(asc/desc)=desc}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/security-center/insights/class
@required {account_id: str}
@optional {dismissed: bool, issue_class: [str], issue_type: [str], product: [str], source: [str], severity: [str], subject: [str], issue_class~neq: [str], issue_type~neq: [str], product~neq: [str], severity~neq: [str], subject~neq: [str]}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/security-center/insights/count
@required {account_id: str, source: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/security-center/insights/scans
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/security-center/insights/scans
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/security-center/insights/severity
@required {account_id: str}
@optional {dismissed: bool, issue_class: [str], issue_type: [str], product: [str], source: [str], severity: [str], subject: [str], issue_class~neq: [str], issue_type~neq: [str], product~neq: [str], severity~neq: [str], subject~neq: [str]}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/security-center/insights/type
@required {account_id: str}
@optional {dismissed: bool, issue_class: [str], issue_type: [str], product: [str], source: [str], severity: [str], subject: [str], issue_class~neq: [str], issue_type~neq: [str], product~neq: [str], severity~neq: [str], subject~neq: [str]}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/security-center/insights/{issue_id}/audit-log
@required {account_id: str, issue_id: str}
@optional {per_page: int=25, cursor: str, field_changed: str(status/user_classification), changed_by: str, since: str(date-time), before: str(date-time), order: str(asc/desc)=desc}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/security-center/insights/{issue_id}/classification
@required {account_id: str, issue_id: str}
@optional {classification: str(false_positive/accept_risk/other), rationale: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/security-center/insights/{issue_id}/context
@required {account_id: str, issue_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/security-center/insights/{issue_id}/dismiss
@required {account_id: str, issue_id: str}
@optional {dismiss: bool=true}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/security-center/state
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/security-center/state
@required {account_id: str, scans_enabled: bool}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/settings/transformations
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/settings/ut-billing
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/settings/ut-billing
@required {account_id: str, value: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/shares
@required {account_id: str}
@optional {status: str, kind: str, target_type: str, resource_types: [str], order: str(name/created)=created, direction: str(asc/desc)=asc, page: int=1, per_page: int=20, include_resources: bool, include_recipient_counts: bool, tag: [str]}
@returns(200)
@errors {4XX, 5XX}

@endpoint POST /accounts/{account_id}/shares
@required {account_id: str, name: str, recipients: [map{account_id: any, organization_id: str, recipient_account_id: any}], resources: [map{meta!: map, resource_account_id!: str, resource_id!: str, resource_type!: str}]}
@returns(201)
@errors {4XX, 5XX}

@endpoint DELETE /accounts/{account_id}/shares/{share_id}
@required {account_id: str, share_id: str}
@returns(200)
@errors {4XX, 5XX}

@endpoint GET /accounts/{account_id}/shares/{share_id}
@required {account_id: str, share_id: str}
@optional {include_resources: bool, include_recipient_counts: bool}
@returns(200)
@errors {4XX, 5XX}

@endpoint PUT /accounts/{account_id}/shares/{share_id}
@required {account_id: str, share_id: str, name: str}
@returns(200)
@errors {4XX, 5XX}

@endpoint GET /accounts/{account_id}/shares/{share_id}/excluded-recipients
@required {account_id: str, share_id: str}
@optional {page: int=1, per_page: int=20}
@returns(200)
@errors {4XX, 5XX}

@endpoint POST /accounts/{account_id}/shares/{share_id}/excluded-recipients
@required {account_id: str, share_id: str, account_id: any}
@returns(201)
@errors {4XX, 5XX}

@endpoint PUT /accounts/{account_id}/shares/{share_id}/excluded-recipients
@required {account_id: str, share_id: str}
@returns(204)
@errors {4XX, 5XX}

@endpoint DELETE /accounts/{account_id}/shares/{share_id}/excluded-recipients/{excluded_recipient_id}
@required {account_id: str, share_id: str, excluded_recipient_id: str}
@returns(200)
@errors {4XX, 5XX}

@endpoint GET /accounts/{account_id}/shares/{share_id}/excluded-recipients/{excluded_recipient_id}
@required {account_id: str, share_id: str, excluded_recipient_id: str}
@returns(200)
@errors {4XX, 5XX}

@endpoint GET /accounts/{account_id}/shares/{share_id}/recipients
@required {account_id: str, share_id: str}
@optional {include_resources: bool, page: int=1, per_page: int=20}
@returns(200)
@errors {4XX, 5XX}

@endpoint POST /accounts/{account_id}/shares/{share_id}/recipients
@required {account_id: str, share_id: str}
@optional {account_id: any, organization_id: str, recipient_account_id: any}
@returns(201)
@errors {4XX, 5XX}

@endpoint PUT /accounts/{account_id}/shares/{share_id}/recipients
@required {account_id: str, share_id: str}
@returns(204)
@errors {4XX, 5XX}

@endpoint DELETE /accounts/{account_id}/shares/{share_id}/recipients/{recipient_id}
@required {account_id: str, share_id: str, recipient_id: str}
@returns(200)
@errors {4XX, 5XX}

@endpoint GET /accounts/{account_id}/shares/{share_id}/recipients/{recipient_id}
@required {account_id: str, share_id: str, recipient_id: str}
@optional {include_resources: bool}
@returns(200)
@errors {4XX, 5XX}

@endpoint GET /accounts/{account_id}/shares/{share_id}/resources
@required {account_id: str, share_id: str}
@optional {status: str, resource_type: str, page: int=1, per_page: int=20}
@returns(200)
@errors {4XX, 5XX}

@endpoint POST /accounts/{account_id}/shares/{share_id}/resources
@required {account_id: str, share_id: str, meta: map, resource_account_id: str, resource_id: str, resource_type: str(custom-ruleset/gateway-policy/gateway-destination-ip/gateway-block-page-settings/gateway-extended-email-matching/idp-federation-grant/trust-grant)}
@returns(201)
@errors {4XX, 5XX}

@endpoint DELETE /accounts/{account_id}/shares/{share_id}/resources/{share_resource_id}
@required {account_id: str, share_id: str, share_resource_id: str}
@returns(200)
@errors {4XX, 5XX}

@endpoint GET /accounts/{account_id}/shares/{share_id}/resources/{share_resource_id}
@required {account_id: str, share_id: str, share_resource_id: str}
@returns(200)
@errors {4XX, 5XX}

@endpoint PUT /accounts/{account_id}/shares/{share_id}/resources/{share_resource_id}
@required {account_id: str, share_id: str, share_resource_id: str, meta: map}
@returns(200)
@errors {4XX, 5XX}

@endpoint GET /accounts/{account_id}/slurper/jobs
@required {account_id: str}
@optional {limit: int, offset: int}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/slurper/jobs
@required {account_id: str}
@optional {overwrite: bool=true, source: map, target: map{bucket!: str, jurisdiction: str, secret!: map, vendor!: str}}
@returns(201)
@errors {409, 4XX}

@endpoint PUT /accounts/{account_id}/slurper/jobs/abortAll
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/slurper/jobs/{job_id}
@required {account_id: str, job_id: str}
@returns(200)
@errors {409, 4XX}

@endpoint GET /accounts/{account_id}/slurper/jobs/{job_id}
@required {account_id: str, job_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/slurper/jobs/{job_id}/abort
@required {account_id: str, job_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/slurper/jobs/{job_id}/logs
@required {account_id: str, job_id: str}
@optional {limit: int, offset: int}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/slurper/jobs/{job_id}/pause
@required {account_id: str, job_id: str}
@returns(200)
@errors {409, 4XX}

@endpoint GET /accounts/{account_id}/slurper/jobs/{job_id}/progress
@required {account_id: str, job_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/slurper/jobs/{job_id}/resume
@required {account_id: str, job_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/slurper/source/connectivity-precheck
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/slurper/target/connectivity-precheck
@required {account_id: str, bucket: str, secret: map{accessKeyId!: str, secretAccessKey!: str}, vendor: str}
@optional {jurisdiction: str(default/eu/us/fedramp)}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/sso_connectors
@required {account_id: any}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/sso_connectors
@required {account_id: any, email_domain: str}
@optional {begin_verification: bool=true, use_fedramp_language: bool=false}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/sso_connectors/{sso_connector_id}
@required {account_id: any, sso_connector_id: any}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/sso_connectors/{sso_connector_id}
@required {account_id: any, sso_connector_id: any}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/sso_connectors/{sso_connector_id}
@required {account_id: any, sso_connector_id: any}
@optional {enabled: bool, use_fedramp_language: bool=false}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/sso_connectors/{sso_connector_id}/begin_verification
@required {account_id: any, sso_connector_id: any}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/storage/kv/namespaces
@required {account_id: str}
@optional {page: num=1, per_page: num=20, order: str(id/title), direction: str(asc/desc)}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/storage/kv/namespaces
@required {account_id: str, title: str}
@optional {jurisdiction: str(eu/fedramp/us)}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/storage/kv/namespaces/{namespace_id}
@required {namespace_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/storage/kv/namespaces/{namespace_id}
@required {namespace_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/storage/kv/namespaces/{namespace_id}
@required {namespace_id: str, account_id: str, title: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/storage/kv/namespaces/{namespace_id}/bulk
@required {namespace_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/storage/kv/namespaces/{namespace_id}/bulk
@required {namespace_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/storage/kv/namespaces/{namespace_id}/bulk/delete
@required {namespace_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/storage/kv/namespaces/{namespace_id}/bulk/get
@required {namespace_id: str, account_id: str, keys: [str]}
@optional {type: str(text/json)=text, withMetadata: bool=false}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/storage/kv/namespaces/{namespace_id}/keys
@required {namespace_id: str, account_id: str}
@optional {limit: num=1000, prefix: str, cursor: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/storage/kv/namespaces/{namespace_id}/metadata/{key_name}
@required {key_name: str, namespace_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/storage/kv/namespaces/{namespace_id}/values/{key_name}
@required {key_name: str, namespace_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/storage/kv/namespaces/{namespace_id}/values/{key_name}
@required {key_name: str, namespace_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/storage/kv/namespaces/{namespace_id}/values/{key_name}
@required {key_name: str, namespace_id: str, account_id: str}
@optional {expiration: num, expiration_ttl: num}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/stream
@required {account_id: str}
@optional {status: str, creator: str, type: str, asc: bool, video_name: str, search: str, start: str(date-time), end: str(date-time), include_counts: bool, id: str, name: str, live_input_id: str, before: str(date-time), after: str(date-time), limit: int}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/stream
@required {Tus-Resumable: str, Upload-Length: int, account_id: str}
@optional {Upload-Creator: str, Upload-Metadata: str, direct_user: bool}
@returns(201)
@errors {4XX}

@endpoint POST /accounts/{account_id}/stream/clip
@required {account_id: str, clippedFromVideoUID: str, endTimeSeconds: int, startTimeSeconds: int}
@optional {allowedOrigins: [str], creator: str, input: str(uri), meta: map, name: str, requireSignedURLs: bool=false, scheduledDeletion: str(date-time), thumbnailTimestampPct: num=0, url: str(uri), watermark: map{uid: str}}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/stream/copy
@required {account_id: str}
@optional {Upload-Creator: str, allowedOrigins: [str], creator: str, input: str(uri), meta: map, name: str, requireSignedURLs: bool=false, scheduledDeletion: str(date-time), thumbnailTimestampPct: num=0, url: str(uri), watermark: map{uid: str}}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/stream/direct_upload
@required {account_id: str, maxDurationSeconds: int}
@optional {Upload-Creator: str, allowedOrigins: [str], creator: str, expiry: str(date-time)=Now + 30 minutes, meta: map, requireSignedURLs: bool=false, scheduledDeletion: str(date-time), thumbnailTimestampPct: num=0, watermark: map{uid: str}}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/stream/keys
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/stream/keys
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/stream/keys/{identifier}
@required {identifier: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/stream/live_inputs
@required {account_id: str}
@optional {include_counts: bool}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/stream/live_inputs
@required {account_id: str}
@optional {Idempotency-Key: str, defaultCreator: str, deleteRecordingAfterDays: num, enabled: bool=true, meta: map, preferLowLatency: bool=false, recording: map{allowedOrigins: [str], hideLiveViewerCount: bool, mode: str, requireSignedURLs: bool, timeoutSeconds: int}}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/stream/live_inputs/{live_input_identifier}
@required {live_input_identifier: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/stream/live_inputs/{live_input_identifier}
@required {live_input_identifier: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/stream/live_inputs/{live_input_identifier}
@required {live_input_identifier: str, account_id: str}
@optional {defaultCreator: str, deleteRecordingAfterDays: num, enabled: bool=true, meta: map, preferLowLatency: bool=false, recording: map{allowedOrigins: [str], hideLiveViewerCount: bool, mode: str, requireSignedURLs: bool, timeoutSeconds: int}}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/stream/live_inputs/{live_input_identifier}/disable
@required {live_input_identifier: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/stream/live_inputs/{live_input_identifier}/enable
@required {live_input_identifier: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/stream/live_inputs/{live_input_identifier}/outputs
@required {live_input_identifier: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/stream/live_inputs/{live_input_identifier}/outputs
@required {live_input_identifier: str, account_id: str, streamKey: str, url: str}
@optional {enabled: bool=true}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/stream/live_inputs/{live_input_identifier}/outputs/{output_identifier}
@required {output_identifier: str, live_input_identifier: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/stream/live_inputs/{live_input_identifier}/outputs/{output_identifier}
@required {output_identifier: str, live_input_identifier: str, account_id: str, enabled: bool=true}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/stream/live_inputs/{live_input_identifier}/rotate_keys
@required {live_input_identifier: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/stream/storage-usage
@required {account_id: str}
@optional {creator: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/stream/usage
@required {account_id: str}
@optional {metrics: str, since: str(date-time), until: str(date-time), time_delta: str(hour/day/week/month/quarter/year)=hour, limit: int=100, filters: str}
@returns(200) {errors: [map], messages: [map], result: [map], success: bool}
@errors {400, 401, 403}

@endpoint GET /accounts/{account_id}/stream/watermarks
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/stream/watermarks
@required {account_id: str}
@optional {name: str=, opacity: num=1, padding: num=0.05, position: str=upperRight, scale: num=0.15, url: str(uri)}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/stream/watermarks/{identifier}
@required {identifier: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/stream/watermarks/{identifier}
@required {identifier: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/stream/webhook
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/stream/webhook
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/stream/webhook
@required {account_id: str}
@optional {notificationUrl: str(uri), notification_url: str(uri)}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/stream/{identifier}
@required {identifier: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/stream/{identifier}
@required {identifier: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/stream/{identifier}
@required {identifier: str, account_id: str}
@optional {allowedOrigins: [str], creator: str, maxDurationSeconds: int, meta: map, publicDetails: map{channel_link: str, logo: str, share_link: str, title: str}, requireSignedURLs: bool=false, scheduledDeletion: str(date-time), thumbnailTimestampPct: num=0, uid: str, uploadExpiry: str(date-time)}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/stream/{identifier}/audio
@required {account_id: str, identifier: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/stream/{identifier}/audio/copy
@required {account_id: str, identifier: str, label: str}
@optional {url: str(uri)}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/stream/{identifier}/audio/{audio_identifier}
@required {account_id: str, identifier: str, audio_identifier: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/stream/{identifier}/audio/{audio_identifier}
@required {account_id: str, identifier: str, audio_identifier: str}
@optional {default: bool=false, label: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/stream/{identifier}/captions
@required {identifier: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/stream/{identifier}/captions/{language}
@required {language: str, identifier: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/stream/{identifier}/captions/{language}
@required {language: str, identifier: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/stream/{identifier}/captions/{language}
@required {language: str, identifier: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/stream/{identifier}/captions/{language}/generate
@required {language: str, identifier: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/stream/{identifier}/captions/{language}/vtt
@required {language: str, identifier: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/stream/{identifier}/downloads
@required {identifier: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/stream/{identifier}/downloads
@required {identifier: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/stream/{identifier}/downloads
@required {identifier: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/stream/{identifier}/downloads/{download_type}
@required {identifier: str, account_id: str, download_type: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/stream/{identifier}/downloads/{download_type}
@required {identifier: str, account_id: str, download_type: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/stream/{identifier}/embed
@required {identifier: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/stream/{identifier}/token
@required {identifier: str, account_id: str}
@optional {accessRules: [map{action: str, country: [str], ip: [str], type: str}], downloadable: bool=false, exp: int, flags: map{original: bool}, id: str, nbf: int, pem: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/subscriptions
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/subscriptions
@required {account_id: str}
@optional {app: map{install_id: str}, component_values: [map{default: num, display_name: str, kind: str, name: str, price: num, value: num}], currency: str, current_period_end: str(date-time), current_period_start: str(date-time), frequency: str(weekly/monthly/quarterly/yearly), id: str, price: num, rate_plan: map{currency: str, externally_managed: bool, id: str, is_contract: bool, public_name: str, scope: str, sets: [str]}, state: str(Trial/Provisioned/Paid/AwaitingPayment/Cancelled/Failed/Expired), zone: map{id: str, name: str}}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/subscriptions/cancel-downgrade
@required {account_id: str}
@optional {subscription_ids: [str]}
@returns(200)
@returns(204)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/subscriptions/{subscription_identifier}
@required {subscription_identifier: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/subscriptions/{subscription_identifier}
@required {subscription_identifier: str, account_id: str}
@returns(200)
@errors {404, 4XX}

@endpoint PUT /accounts/{account_id}/subscriptions/{subscription_identifier}
@required {subscription_identifier: str, account_id: str}
@optional {app: map{install_id: str}, component_values: [map{default: num, display_name: str, kind: str, name: str, price: num, value: num}], currency: str, current_period_end: str(date-time), current_period_start: str(date-time), frequency: str(weekly/monthly/quarterly/yearly), id: str, price: num, rate_plan: map{currency: str, externally_managed: bool, id: str, is_contract: bool, public_name: str, scope: str, sets: [str]}, state: str(Trial/Provisioned/Paid/AwaitingPayment/Cancelled/Failed/Expired), zone: map{id: str, name: str}}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/subscriptions/{subscription_identifier}/action/append
@required {subscription_identifier: str, account_id: str}
@optional {app: map{install_id: str}, component_values: [map{default: num, display_name: str, kind: str, name: str, price: num, value: num}], currency: str, current_period_end: str(date-time), current_period_start: str(date-time), frequency: str(weekly/monthly/quarterly/yearly), id: str, price: num, rate_plan: map{currency: str, externally_managed: bool, id: str, is_contract: bool, public_name: str, scope: str, sets: [str]}, state: str(Trial/Provisioned/Paid/AwaitingPayment/Cancelled/Failed/Expired), zone: map{id: str, name: str}}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/subscriptions/{subscription_identifier}/cancel-reason
@required {subscription_identifier: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/subscriptions/{subscription_identifier}/cancel-reason
@required {subscription_identifier: str, account_id: str}
@optional {other: str, reason_code: [str]}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/tags
@required {account_id: any}
@optional {If-Match: str}
@returns(204)
@errors {412, 4XX, 5XX}

@endpoint GET /accounts/{account_id}/tags
@required {account_id: any, resource_id: str, resource_type: str}
@optional {worker_id: str}
@returns(200)
@errors {4XX, 5XX}

@endpoint PUT /accounts/{account_id}/tags
@required {account_id: any}
@optional {If-Match: str}
@returns(200)
@errors {412, 4XX, 5XX}

@endpoint GET /accounts/{account_id}/tags/keys
@required {account_id: any}
@optional {cursor: str}
@returns(200)
@errors {4XX, 5XX}

@endpoint GET /accounts/{account_id}/tags/resources
@required {account_id: any}
@optional {type: [str], name: str, id: [str], case_insensitive: bool=false, tag: [str], cursor: str}
@returns(200)
@errors {4XX, 5XX}

@endpoint GET /accounts/{account_id}/tags/summary
@required {account_id: any}
@optional {cursor: str}
@returns(200)
@errors {4XX, 5XX}

@endpoint GET /accounts/{account_id}/tags/values/{tag_key}
@required {account_id: any, tag_key: str}
@optional {type: str, cursor: str}
@returns(200)
@errors {4XX, 5XX}

@endpoint GET /accounts/{account_id}/teamnet/routes
@required {account_id: str}
@optional {comment: str, is_deleted: bool, network_subset: any, network_superset: any, existed_at: str(url-encoded-date-time), tunnel_id: str(uuid), route_id: str, tun_types: [str], virtual_network_id: str(uuid), per_page: num, page: num}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/teamnet/routes
@required {account_id: str, network: str, tunnel_id: str(uuid)}
@optional {comment: str=, virtual_network_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/teamnet/routes/ip/{ip}
@required {ip: str, account_id: str}
@optional {virtual_network_id: str(uuid), default_virtual_network_fallback: bool=true}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/teamnet/routes/network/{ip_network_encoded}
@required {ip_network_encoded: str, account_id: str}
@optional {virtual_network_id: str(uuid), tun_type: str, tunnel_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/teamnet/routes/network/{ip_network_encoded}
@required {ip_network_encoded: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/teamnet/routes/network/{ip_network_encoded}
@required {ip_network_encoded: str, account_id: str, tunnel_id: str(uuid)}
@optional {comment: str=, virtual_network_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/teamnet/routes/{route_id}
@required {route_id: str, account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/teamnet/routes/{route_id}
@required {account_id: str, route_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/teamnet/routes/{route_id}
@required {route_id: str, account_id: str}
@optional {comment: str=, network: str, tunnel_id: str(uuid), virtual_network_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/teamnet/virtual_networks
@required {account_id: str}
@optional {id: str(uuid), name: str, is_default: bool, is_default_network: bool, is_deleted: bool}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/teamnet/virtual_networks
@required {account_id: str, name: str}
@optional {comment: str=, is_default: bool, is_default_network: bool=false}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/teamnet/virtual_networks/{virtual_network_id}
@required {virtual_network_id: str(uuid), account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/teamnet/virtual_networks/{virtual_network_id}
@required {account_id: str, virtual_network_id: str(uuid)}
@optional {comment: str=, is_default_network: bool, name: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/teamnet/virtual_networks/{virtual_network_id}
@required {account_id: str, virtual_network_id: str(uuid)}
@optional {comment: str=, is_default_network: bool=false, name: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/tokens
@required {account_id: any}
@optional {page: num=1, per_page: num=20, direction: str(asc/desc), include_expired: bool=false}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/tokens
@required {account_id: any, name: str, policies: [map{effect!: str, id!: str, permission_groups!: [map], resources!: any}]}
@optional {condition: map{request_ip: map}, expires_on: str(date-time), not_before: str(date-time)}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/tokens/permission_groups
@required {account_id: any}
@optional {name: str, scope: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/tokens/verify
@required {account_id: any}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/tokens/{token_id}
@required {account_id: any, token_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/tokens/{token_id}
@required {account_id: any, token_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/tokens/{token_id}
@required {account_id: any, token_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/tokens/{token_id}/value
@required {account_id: any, token_id: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/triggers/{script_name}
@required {script_name: str, account_id: str}
@returns(200) {errors: [map], messages: [map], result: map{deleted: int}, result_info: map{count: num, cursor: str, page: num, per_page: num, total_count: num, total_pages: num}, success: bool}
@errors {400, 404}

@endpoint GET /accounts/{account_id}/triggers/{script_name}
@required {script_name: str, account_id: str}
@returns(200) {errors: [map], messages: [map], result: map{script_name: str, triggers: [map]}, result_info: map{count: num, cursor: str, page: num, per_page: num, total_count: num, total_pages: num}, success: bool}
@errors {400, 404}

@endpoint PATCH /accounts/{account_id}/triggers/{script_name}
@required {script_name: str, account_id: str}
@returns(200) {errors: [map], messages: [map], result: map{script_name: str, triggers: [map]}, result_info: map{count: num, cursor: str, page: num, per_page: num, total_count: num, total_pages: num}, success: bool}
@errors {400, 404}

@endpoint PUT /accounts/{account_id}/triggers/{script_name}
@required {script_name: str, account_id: str}
@returns(200) {errors: [map], messages: [map], result: map{script_name: str, triggers: [map]}, result_info: map{count: num, cursor: str, page: num, per_page: num, total_count: num, total_pages: num}, success: bool}
@errors {400, 404}

@endpoint GET /accounts/{account_id}/tunnels
@required {account_id: str}
@optional {name: str, is_deleted: bool, existed_at: str(url-encoded-date-time), uuid: str(uuid), was_active_at: str(date-time), was_inactive_at: str(date-time), include_prefix: str, exclude_prefix: str, tun_types: [str], status: str, per_page: num, page: num}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/urlscanner/response/{response_id}
@required {response_id: str, account_id: str}
@returns(200)
@errors {400, 404}

@endpoint GET /accounts/{account_id}/urlscanner/scan
@required {account_id: str}
@optional {scan_id: str(uuid), limit: int, next_cursor: str, date_start: str(date-time), date_end: str(date-time), url: str, hostname: str, path: str, ip: str, hash: str, page_url: str, page_hostname: str, page_path: str, page_asn: str, page_ip: str, account_scans: bool, is_malicious: bool}
@returns(200) {errors: [map], messages: [map], result: map{tasks: [map]}, success: bool}
@errors {400}

@endpoint POST /accounts/{account_id}/urlscanner/scan
@required {account_id: str, url: str}
@optional {country: str(AF/AL/DZ/AD/AO/AG/AR/AM/AU/AT/AZ/BH/BD/BB/BY/BE/BZ/BJ/BM/BT/BO/BA/BW/BR/BN/BG/BF/BI/KH/CM/CA/CV/KY/CF/TD/CL/CN/CO/KM/CG/CR/CI/HR/CU/CY/CZ/CD/DK/DJ/DM/DO/EC/EG/SV/GQ/ER/EE/SZ/ET/FJ/FI/FR/GA/GE/DE/GH/GR/GL/GD/GT/GN/GW/GY/HT/HN/HU/IS/IN/ID/IR/IQ/IE/IL/IT/JM/JP/JO/KZ/KE/KI/KW/KG/LA/LV/LB/LS/LR/LY/LI/LT/LU/MO/MG/MW/MY/MV/ML/MR/MU/MX/FM/MD/MC/MN/MS/MA/MZ/MM/NA/NR/NP/NL/NZ/NI/NE/NG/KP/MK/NO/OM/PK/PS/PA/PG/PY/PE/PH/PL/PT/QA/RO/RU/RW/SH/KN/LC/VC/WS/SM/ST/SA/SN/RS/SC/SL/SK/SI/SB/SO/ZA/KR/SS/ES/LK/SD/SR/SE/CH/SY/TW/TJ/TZ/TH/BS/GM/TL/TG/TO/TT/TN/TR/TM/UG/UA/AE/GB/US/UY/UZ/VU/VE/VN/YE/ZM/ZW), customHeaders: map, screenshotsResolutions: [str]=desktop, visibility: str(Public/Unlisted)=Public}
@returns(200) {errors: [map], messages: [map], result: map{time: str(date-time), url: str, uuid: str(uuid), visibility: str}, success: bool}
@errors {400, 409, 429}

@endpoint GET /accounts/{account_id}/urlscanner/scan/{scan_id}
@required {scan_id: str(uuid), account_id: str}
@optional {full: bool}
@returns(200) {errors: [map], messages: [map], result: map{scan: map{asns: map{asn: map}, certificates: [map], domains: map{example.com: map}, geo: map{continents: [str], locations: [str]}, ips: map{ip: map}, links: map{link: map}, meta: map{processors: map}, page: map{asn: str, asnLocationAlpha2: str, asnname: str, console: [map], cookies: [map], country: str, countryLocationAlpha2: str, domain: str, headers: [map], ip: str, js: map, securityViolations: [map], status: num, subdivision1Name: str, subdivision2name: str, url: str}, performance: [map], task: map{clientLocation: str, clientType: str, effectiveUrl: str, errors: [map], scannedFrom: map, status: str, success: bool, time: str, timeEnd: str, url: str, uuid: str, visibility: str}, verdicts: map{overall: map}}}, success: bool}
@returns(202) {errors: [map], messages: [map], result: map{scan: map{task: map{effectiveUrl: str, errors: [map], location: str, region: str, status: str, success: bool, time: str, url: str, uuid: str, visibility: str}}}, success: bool}
@errors {400, 404}

@endpoint GET /accounts/{account_id}/urlscanner/scan/{scan_id}/har
@required {scan_id: str(uuid), account_id: str}
@returns(200) {errors: [map], messages: [map], result: map{har: map{log: map{creator: map, entries: [map], pages: [map], version: str}}}, success: bool}
@returns(202) {errors: [map], messages: [map], result: map{scan: map{task: map{effectiveUrl: str, errors: [map], location: str, region: str, status: str, success: bool, time: str, url: str, uuid: str, visibility: str}}}, success: bool}
@errors {400, 404}

@endpoint GET /accounts/{account_id}/urlscanner/scan/{scan_id}/screenshot
@required {scan_id: str(uuid), account_id: str}
@optional {resolution: str(desktop/mobile/tablet)=desktop}
@returns(200)
@returns(202) {errors: [map], messages: [map], result: map{scan: map{task: map{effectiveUrl: str, errors: [map], location: str, region: str, status: str, success: bool, time: str, url: str, uuid: str, visibility: str}}}, success: bool}
@errors {400, 404}

@endpoint POST /accounts/{account_id}/urlscanner/v2/bulk
@required {account_id: str}
@returns(200)
@errors {400, 429}

@endpoint GET /accounts/{account_id}/urlscanner/v2/dom/{scan_id}
@required {scan_id: str(uuid), account_id: str}
@returns(200)
@errors {400, 404}

@endpoint GET /accounts/{account_id}/urlscanner/v2/har/{scan_id}
@required {scan_id: str(uuid), account_id: str}
@returns(200) {log: map{creator: map{comment: str, name: str, version: str}, entries: [map], pages: [map], version: str}}
@errors {400, 404}

@endpoint GET /accounts/{account_id}/urlscanner/v2/responses/{response_id}
@required {response_id: str, account_id: str}
@returns(200)
@errors {400}

@endpoint GET /accounts/{account_id}/urlscanner/v2/result/{scan_id}
@required {scan_id: str(uuid), account_id: str}
@returns(200) {data: map{console: [map], cookies: [map], globals: [map], links: [map], performance: [map], requests: [map]}, lists: map{asns: [str], certificates: [map], continents: [str], countries: [str], domains: [str], hashes: [str], ips: [str], linkDomains: [str], servers: [str], urls: [str]}, meta: map{processors: map{agentReadiness: map{checks: map, commerceSignals: [str], isCommerce: bool, level: int, levelName: str, nextLevel: map}, asn: map{data: [map]}, dns: map{data: [map]}, domainCategories: map{data: [map]}, geoip: map{data: [map]}, phishing: map{data: [str]}, phishing_v2: map{data: [str]}, radarRank: map{data: [map]}, robotsTxt: map{data: [map]}, urlCategories: map{data: [map]}, wappa: map{data: [map]}}}, page: map{apexDomain: str, asn: str, asnname: str, city: str, country: str, domain: str, ip: str, mimeType: str, screenshot: map{dhash: str, mm3Hash: num, name: str, phash: str}, server: str, status: str, title: str, tlsAgeDays: num, tlsIssuer: str, tlsValidDays: num, tlsValidFrom: str, url: str}, scanner: map{colo: str, country: str}, stats: map{IPv6Percentage: num, domainStats: [map], ipStats: [map], malicious: num, protocolStats: [map], resourceStats: [map], securePercentage: num, secureRequests: num, serverStats: [map], tlsStats: [map], totalLinks: num, uniqASNs: num, uniqCountries: num}, task: map{apexDomain: str, domURL: str, domain: str, method: str, options: map{customHeaders: map, screenshotsResolutions: [str]}, reportURL: str, screenshotURL: str, source: str, success: bool, time: str, url: str, uuid: str, visibility: str}, verdicts: map{overall: map{categories: [str], hasVerdicts: bool, malicious: bool, tags: [str]}}}
@errors {400, 404}

@endpoint POST /accounts/{account_id}/urlscanner/v2/scan
@required {account_id: str, url: str}
@optional {agentReadiness: bool, country: str(AF/AL/DZ/AD/AO/AG/AR/AM/AU/AT/AZ/BH/BD/BB/BY/BE/BZ/BJ/BM/BT/BO/BA/BW/BR/BN/BG/BF/BI/KH/CM/CA/CV/KY/CF/TD/CL/CN/CO/KM/CG/CR/CI/HR/CU/CY/CZ/CD/DK/DJ/DM/DO/EC/EG/SV/GQ/ER/EE/SZ/ET/FJ/FI/FR/GA/GE/DE/GH/GR/GL/GD/GT/GN/GW/GY/HT/HN/HU/IS/IN/ID/IR/IQ/IE/IL/IT/JM/JP/JO/KZ/KE/KI/KW/KG/LA/LV/LB/LS/LR/LY/LI/LT/LU/MO/MG/MW/MY/MV/ML/MR/MU/MX/FM/MD/MC/MN/MS/MA/MZ/MM/NA/NR/NP/NL/NZ/NI/NE/NG/KP/MK/NO/OM/PK/PS/PA/PG/PY/PE/PH/PL/PT/QA/RO/RU/RW/SH/KN/LC/VC/WS/SM/ST/SA/SN/RS/SC/SL/SK/SI/SB/SO/ZA/KR/SS/ES/LK/SD/SR/SE/CH/SY/TW/TJ/TZ/TH/BS/GM/TL/TG/TO/TT/TN/TR/TM/UG/UA/AE/GB/US/UY/UZ/VU/VE/VN/YE/ZM/ZW), customHeaders: map, customagent: str, referer: str, screenshotsResolutions: [str]=desktop, visibility: str(Public/Unlisted)=Public}
@returns(200) {api: str, message: str, options: map{useragent: str}, result: str, url: str, uuid: str(uuid), visibility: str}
@errors {400, 409, 429}

@endpoint GET /accounts/{account_id}/urlscanner/v2/screenshots/{scan_id}.png
@required {scan_id: str(uuid), account_id: str}
@optional {resolution: str(desktop/mobile/tablet)=desktop}
@returns(200)
@errors {400, 404}

@endpoint GET /accounts/{account_id}/urlscanner/v2/search
@required {account_id: str}
@optional {size: int, q: str}
@returns(200) {results: [map]}
@errors {400}

@endpoint GET /accounts/{account_id}/vectorize/indexes
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/vectorize/indexes
@required {account_id: str, config: any, name: str}
@optional {description: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/vectorize/indexes/{index_name}
@required {account_id: str, index_name: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/vectorize/indexes/{index_name}
@required {account_id: str, index_name: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/vectorize/indexes/{index_name}
@required {account_id: str, index_name: str, description: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/vectorize/indexes/{index_name}/delete-by-ids
@required {account_id: str, index_name: str}
@optional {ids: [str]}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/vectorize/indexes/{index_name}/get-by-ids
@required {account_id: str, index_name: str}
@optional {ids: [str]}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/vectorize/indexes/{index_name}/insert
@required {account_id: str, index_name: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/vectorize/indexes/{index_name}/query
@required {account_id: str, index_name: str, vector: [num]}
@optional {filter: map, returnMetadata: bool=false, returnValues: bool=false, topK: num=5}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/vectorize/indexes/{index_name}/upsert
@required {account_id: str, index_name: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/vectorize/v2/indexes
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/vectorize/v2/indexes
@required {account_id: str, config: any, name: str}
@optional {description: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/vectorize/v2/indexes/{index_name}
@required {account_id: str, index_name: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/vectorize/v2/indexes/{index_name}
@required {account_id: str, index_name: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/vectorize/v2/indexes/{index_name}/delete_by_ids
@required {account_id: str, index_name: str}
@optional {ids: [str]}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/vectorize/v2/indexes/{index_name}/get_by_ids
@required {account_id: str, index_name: str}
@optional {ids: [str]}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/vectorize/v2/indexes/{index_name}/info
@required {account_id: str, index_name: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/vectorize/v2/indexes/{index_name}/insert
@required {account_id: str, index_name: str}
@optional {unparsable-behavior: str(error/discard)}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/vectorize/v2/indexes/{index_name}/list
@required {account_id: str, index_name: str}
@optional {count: int=100, cursor: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/vectorize/v2/indexes/{index_name}/metadata_index/create
@required {account_id: str, index_name: str, indexType: str(string/number/boolean), propertyName: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/vectorize/v2/indexes/{index_name}/metadata_index/delete
@required {account_id: str, index_name: str, propertyName: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/vectorize/v2/indexes/{index_name}/metadata_index/list
@required {account_id: str, index_name: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/vectorize/v2/indexes/{index_name}/query
@required {account_id: str, index_name: str, vector: [num]}
@optional {filter: map, returnMetadata: str(none/indexed/all)=none, returnValues: bool=false, topK: num=5}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/vectorize/v2/indexes/{index_name}/upsert
@required {account_id: str, index_name: str}
@optional {unparsable-behavior: str(error/discard)}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/vuln_scanner/credential_sets
@optional {page: int=1, per_page: int=20}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/vuln_scanner/credential_sets
@required {name: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/vuln_scanner/credential_sets/{credential_set_id}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/vuln_scanner/credential_sets/{credential_set_id}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/vuln_scanner/credential_sets/{credential_set_id}
@optional {name: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/vuln_scanner/credential_sets/{credential_set_id}
@required {name: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/vuln_scanner/credential_sets/{credential_set_id}/credentials
@optional {page: int=1, per_page: int=20}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/vuln_scanner/credential_sets/{credential_set_id}/credentials
@required {location: str(header/cookie), location_name: str, name: str, value: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/vuln_scanner/credential_sets/{credential_set_id}/credentials/{credential_id}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/vuln_scanner/credential_sets/{credential_set_id}/credentials/{credential_id}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/vuln_scanner/credential_sets/{credential_set_id}/credentials/{credential_id}
@optional {location: str(header/cookie), location_name: str, name: str, value: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/vuln_scanner/credential_sets/{credential_set_id}/credentials/{credential_id}
@required {location: str(header/cookie), location_name: str, name: str, value: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/vuln_scanner/scans
@optional {page: int=1, per_page: int=20}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/vuln_scanner/scans
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/vuln_scanner/scans/{scan_id}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/vuln_scanner/scans/{scan_id}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/vuln_scanner/target_environments
@optional {page: int=1, per_page: int=20}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/vuln_scanner/target_environments
@required {name: str, target: any}
@optional {description: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/vuln_scanner/target_environments/{target_environment_id}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/vuln_scanner/target_environments/{target_environment_id}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/vuln_scanner/target_environments/{target_environment_id}
@optional {description: str, name: str, target: any}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/vuln_scanner/target_environments/{target_environment_id}
@required {name: str, target: any}
@optional {description: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/waiting_rooms
@required {account_id: str}
@optional {page: num=1, per_page: num=25}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/warp_connector
@required {account_id: str}
@optional {name: str, is_deleted: bool, existed_at: str(url-encoded-date-time), uuid: str(uuid), was_active_at: str(date-time), was_inactive_at: str(date-time), include_prefix: str, exclude_prefix: str, status: str, per_page: num, page: num}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/warp_connector
@required {account_id: str, name: str}
@optional {ha: bool=false}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/warp_connector/{tunnel_id}
@required {account_id: str, tunnel_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/warp_connector/{tunnel_id}
@required {account_id: str, tunnel_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/warp_connector/{tunnel_id}
@required {account_id: str, tunnel_id: str(uuid)}
@optional {name: str, tunnel_secret: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/warp_connector/{tunnel_id}/configurations
@required {account_id: str, tunnel_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/warp_connector/{tunnel_id}/configurations
@required {account_id: str, tunnel_id: str(uuid), ha_mode: str(none/disabled/aws/local)}
@optional {config: map}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/warp_connector/{tunnel_id}/connections
@required {account_id: str, tunnel_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/warp_connector/{tunnel_id}/connectors/{connector_id}
@required {account_id: str, tunnel_id: str(uuid), connector_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/warp_connector/{tunnel_id}/failover
@required {account_id: str, tunnel_id: str(uuid), client_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/warp_connector/{tunnel_id}/token
@required {account_id: str, tunnel_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/workers/account-settings
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/workers/account-settings
@required {account_id: str}
@optional {default_usage_model: str, green_compute: bool}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/workers/assets/upload
@required {account_id: str, base64: bool}
@returns(201)
@returns(202)
@errors {4XX}

@endpoint GET /accounts/{account_id}/workers/dispatch/namespaces
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/workers/dispatch/namespaces
@required {account_id: str}
@optional {name: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/workers/dispatch/namespaces/{dispatch_namespace}
@required {account_id: str, dispatch_namespace: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/workers/dispatch/namespaces/{dispatch_namespace}
@required {account_id: str, dispatch_namespace: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/workers/dispatch/namespaces/{dispatch_namespace}
@required {account_id: str, dispatch_namespace: str}
@optional {name: str, trusted_workers: bool=false}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/workers/dispatch/namespaces/{dispatch_namespace}
@required {account_id: str, dispatch_namespace: str}
@optional {name: str, trusted_workers: bool=false}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/workers/dispatch/namespaces/{dispatch_namespace}/scripts
@required {account_id: str, dispatch_namespace: str}
@optional {tags: str, limit: int}
@returns(200) {deleted: [map], deleted_count: int, has_more: bool}
@errors {4XX}

@endpoint GET /accounts/{account_id}/workers/dispatch/namespaces/{dispatch_namespace}/scripts
@required {account_id: str, dispatch_namespace: str}
@optional {tags: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/workers/dispatch/namespaces/{dispatch_namespace}/scripts/{script_name}
@required {account_id: str, dispatch_namespace: str, script_name: str}
@optional {force: bool}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/workers/dispatch/namespaces/{dispatch_namespace}/scripts/{script_name}
@required {account_id: str, dispatch_namespace: str, script_name: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/workers/dispatch/namespaces/{dispatch_namespace}/scripts/{script_name}
@required {account_id: str, dispatch_namespace: str, script_name: str}
@optional {bindings_inherit: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/workers/dispatch/namespaces/{dispatch_namespace}/scripts/{script_name}/assets-upload-session
@required {account_id: str, dispatch_namespace: str, script_name: str, manifest: map}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/workers/dispatch/namespaces/{dispatch_namespace}/scripts/{script_name}/bindings
@required {account_id: str, dispatch_namespace: str, script_name: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/workers/dispatch/namespaces/{dispatch_namespace}/scripts/{script_name}/content
@required {account_id: str, dispatch_namespace: str, script_name: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/workers/dispatch/namespaces/{dispatch_namespace}/scripts/{script_name}/content
@required {account_id: str, dispatch_namespace: str, script_name: str}
@optional {CF-WORKER-BODY-PART: str, CF-WORKER-MAIN-MODULE-PART: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/workers/dispatch/namespaces/{dispatch_namespace}/scripts/{script_name}/secrets
@required {account_id: str, dispatch_namespace: str, script_name: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/workers/dispatch/namespaces/{dispatch_namespace}/scripts/{script_name}/secrets
@required {account_id: str, dispatch_namespace: str, script_name: str}
@returns(200)
@errors {429, 4XX}

@endpoint PATCH /accounts/{account_id}/workers/dispatch/namespaces/{dispatch_namespace}/scripts/{script_name}/secrets-bulk
@required {account_id: str, dispatch_namespace: str, script_name: str}
@optional {secrets: map, version_tags: map}
@returns(200)
@errors {429, 4XX}

@endpoint DELETE /accounts/{account_id}/workers/dispatch/namespaces/{dispatch_namespace}/scripts/{script_name}/secrets/{secret_name}
@required {account_id: str, dispatch_namespace: str, script_name: str, secret_name: str}
@optional {url_encoded: bool}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/workers/dispatch/namespaces/{dispatch_namespace}/scripts/{script_name}/secrets/{secret_name}
@required {account_id: str, dispatch_namespace: str, script_name: str, secret_name: str}
@optional {url_encoded: bool}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/workers/dispatch/namespaces/{dispatch_namespace}/scripts/{script_name}/settings
@required {account_id: str, dispatch_namespace: str, script_name: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/workers/dispatch/namespaces/{dispatch_namespace}/scripts/{script_name}/settings
@required {account_id: str, dispatch_namespace: str, script_name: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/workers/dispatch/namespaces/{dispatch_namespace}/scripts/{script_name}/tags
@required {account_id: str, dispatch_namespace: str, script_name: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/workers/dispatch/namespaces/{dispatch_namespace}/scripts/{script_name}/tags
@required {account_id: str, dispatch_namespace: str, script_name: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/workers/dispatch/namespaces/{dispatch_namespace}/scripts/{script_name}/tags/{tag}
@required {account_id: str, dispatch_namespace: str, script_name: str, tag: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/workers/dispatch/namespaces/{dispatch_namespace}/scripts/{script_name}/tags/{tag}
@required {account_id: str, dispatch_namespace: str, script_name: str, tag: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/workers/domains
@required {account_id: str}
@optional {zone_id: str, zone_name: str, service: str, hostname: str, environment: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/workers/domains
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/workers/domains/{domain_id}
@required {account_id: str, domain_id: str}
@returns(200) {errors: [map], messages: [map], success: bool}
@errors {4XX}

@endpoint GET /accounts/{account_id}/workers/domains/{domain_id}
@required {account_id: str, domain_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/workers/durable_objects/namespaces
@required {account_id: str}
@optional {page: int=1, per_page: int=20}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/workers/durable_objects/namespaces/{id}/objects
@required {account_id: str, id: str}
@optional {limit: num=1000, cursor: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/workers/observability/destinations
@optional {page: num=1, perPage: num=20, order: str(asc/desc)=desc, orderBy: str(created/updated)=updated}
@returns(200) {errors: [map], messages: [map], result: [map], success: bool}
@errors {401, 404, 500}

@endpoint POST /accounts/{account_id}/workers/observability/destinations
@required {configuration: map{headers!: map, logpushDataset!: any, type!: str, url!: str}, enabled: bool, name: str}
@optional {skipPreflightCheck: bool}
@returns(201) {errors: [map], messages: [map], result: map{configuration: map{destination_conf: str, logpushDataset: any, logpushJob: num, type: str, url: str}, enabled: bool, name: str, scripts: [str], slug: str}, success: bool}
@errors {400, 401, 403, 500}

@endpoint DELETE /accounts/{account_id}/workers/observability/destinations/{slug}
@required {slug: str}
@returns(200) {errors: [map], messages: [map], result: map{configuration: map{destination_conf: str, logpushDataset: any, logpushJob: num, type: str, url: str}, enabled: bool, name: str, scripts: [str], slug: str}, success: bool}
@errors {401, 404, 409, 500}

@endpoint PATCH /accounts/{account_id}/workers/observability/destinations/{slug}
@required {slug: str, configuration: map{headers!: map, type!: str, url!: str}, enabled: bool}
@returns(200) {errors: [map], messages: [map], result: map{configuration: map{destination_conf: str, logpushDataset: any, logpushJob: num, type: str, url: str}, enabled: bool, name: str, scripts: [str], slug: str}, success: bool}
@errors {400, 401, 404, 500}

@endpoint GET /accounts/{account_id}/workers/observability/issues
@optional {page: int, perPage: int, order: str(asc/desc), orderBy: str(id/service/fingerprint/title/type/status/statusUpdated/count/firstObserved/lastObserved/created/updated), search: str, service: str, status: str(active/resolved/ignored)}
@returns(200) {errors: [map], messages: [map], result: [map], result_info: map{count: num, page: num, per_page: num, total_count: num, total_pages: num}, success: bool}
@errors {401, 403, 404, 500}

@endpoint GET /accounts/{account_id}/workers/observability/issues/automations
@optional {service: str}
@returns(200) {errors: [map], messages: [map], result: map{automations: [map]}, success: bool}
@errors {401, 403, 404, 500}

@endpoint POST /accounts/{account_id}/workers/observability/issues/automations
@required {policyId: str}
@optional {afterInactivitySeconds: int, afterOccurrences: int, enabled: bool, name: str, service: str}
@returns(200) {errors: [map], messages: [map], result: map{automation: map{ansPolicyId: str, created: num, createdByUserId: str?, enabled: bool, id: str, inactivitySeconds: num?, name: str, revision: num, scope: str, service: str?, serviceType: str?, threshold: num?, triggerType: str, updated: num, updatedByUserId: str?}}, success: bool}
@errors {401, 403, 404, 500}

@endpoint DELETE /accounts/{account_id}/workers/observability/issues/automations/{automationId}
@required {automationId: str}
@returns(200) {errors: [map], messages: [map], result: map{automation: map{ansPolicyId: str, created: num, createdByUserId: str?, enabled: bool, id: str, inactivitySeconds: num?, name: str, revision: num, scope: str, service: str?, serviceType: str?, threshold: num?, triggerType: str, updated: num, updatedByUserId: str?}}, success: bool}
@errors {401, 403, 404, 500}

@endpoint GET /accounts/{account_id}/workers/observability/issues/automations/{automationId}
@required {automationId: str}
@returns(200) {errors: [map], messages: [map], result: map{automation: map{ansPolicyId: str, created: num, createdByUserId: str?, enabled: bool, id: str, inactivitySeconds: num?, name: str, revision: num, scope: str, service: str?, serviceType: str?, threshold: num?, triggerType: str, updated: num, updatedByUserId: str?}}, success: bool}
@errors {401, 403, 404, 500}

@endpoint PUT /accounts/{account_id}/workers/observability/issues/automations/{automationId}
@required {automationId: str, policyId: str}
@optional {afterInactivitySeconds: int, afterOccurrences: int, enabled: bool, name: str, service: str}
@returns(200) {errors: [map], messages: [map], result: map{automation: map{ansPolicyId: str, created: num, createdByUserId: str?, enabled: bool, id: str, inactivitySeconds: num?, name: str, revision: num, scope: str, service: str?, serviceType: str?, threshold: num?, triggerType: str, updated: num, updatedByUserId: str?}}, success: bool}
@errors {401, 403, 404, 500}

@endpoint GET /accounts/{account_id}/workers/observability/issues/summary
@optional {service: str}
@returns(200) {errors: [map], messages: [map], result: map{activeIssues: num, activeOccurrences: num, lastIssue: num?, resolvedIssues: num}, success: bool}
@errors {401, 403, 404, 500}

@endpoint GET /accounts/{account_id}/workers/observability/issues/{issueId}
@required {issueId: str}
@returns(200) {errors: [map], messages: [map], result: map{issue: map{activity: [map], count: num, created: num, fingerprint: str, firstObserved: num, id: str, lastObserved: num, service: str, status: str, statusUpdated: num, title: str, type: str, updated: num}}, success: bool}
@errors {401, 403, 404, 500}

@endpoint PATCH /accounts/{account_id}/workers/observability/issues/{issueId}
@required {issueId: str, status: str(active/resolved/ignored)}
@returns(200) {errors: [map], messages: [map], result: map{count: num, created: num, fingerprint: str, firstObserved: num, id: str, lastObserved: num, service: str, status: str, statusUpdated: num, title: str, type: str, updated: num}, success: bool}
@errors {401, 403, 404, 500}

@endpoint POST /accounts/{account_id}/workers/observability/issues/{issueId}/notification-runs
@required {issueId: str}
@optional {policyId: str}
@returns(200) {errors: [map], messages: [map], result: map{run: map{automationId: str, automationName: str, automationRevision: num, created: num, id: str, inactivitySeconds: num?, initiatedBy: str, issueCount: num, issueId: str, lastError: str?, policyId: str, scope: str, status: str, terminalAt: num?, threshold: num?, triggerType: str}}, success: bool}
@errors {400, 401, 403, 404, 500}

@endpoint GET /accounts/{account_id}/workers/observability/issues/{issueId}/occurrences
@required {issueId: str}
@optional {cursor: str, per_page: int}
@returns(200) {errors: [map], messages: [map], result: [map], result_info: map{count: int, cursors: map{after: str?}, per_page: int}, success: bool}
@errors {400, 401, 403, 404, 429, 500, 504}

@endpoint GET /accounts/{account_id}/workers/observability/metricsexport
@returns(200) {errors: [map], messages: [map], result: [map], success: bool}
@errors {401, 500}

@endpoint POST /accounts/{account_id}/workers/observability/metricsexport
@required {requester: map{requesterId!: str, requesterType!: str}, resources: [map{destinations!: [str], resourceId!: str, resourceType!: str}]}
@returns(201) {errors: [map], messages: [map], result: [map], success: bool}
@errors {400, 401, 500}

@endpoint GET /accounts/{account_id}/workers/observability/queries
@optional {page: num=1, perPage: num=20, order: str(asc/desc)=desc, orderBy: str(created/updated)=updated}
@returns(200) {errors: [map], messages: [map], result: [map], success: bool}
@errors {401, 404, 500}

@endpoint POST /accounts/{account_id}/workers/observability/queries
@required {description: str, name: str, parameters: map{calculations: [any], datasets: [str], filterCombination: str, filters: [map], groupBys: [map], havings: [map], limit: int, needle: map, orderBy: map}}
@returns(200) {errors: [map], messages: [map], result: map{adhoc: bool, created: str(date-time), createdBy: str, description: str?, id: str, name: str, parameters: map{calculations: [any], datasets: [str], filterCombination: str, filters: [map], groupBys: [map], havings: [map], limit: int, needle: map{isRegex: bool, matchCase: bool, value: any}, orderBy: map{order: str, value: str}}, updated: str(date-time), updatedBy: str}, success: bool}
@errors {401, 409, 500}

@endpoint DELETE /accounts/{account_id}/workers/observability/queries/{queryId}
@required {queryId: str}
@returns(200) {errors: [map], messages: [map], result: map{adhoc: bool, created: str(date-time), createdBy: str, description: str?, id: str, name: str, parameters: map{calculations: [any], datasets: [str], filterCombination: str, filters: [map], groupBys: [map], havings: [map], limit: int, needle: map{isRegex: bool, matchCase: bool, value: any}, orderBy: map{order: str, value: str}}, updated: str(date-time), updatedBy: str}, success: bool}
@errors {401, 404, 500}

@endpoint GET /accounts/{account_id}/workers/observability/queries/{queryId}
@required {queryId: str}
@returns(200) {errors: [map], messages: [map], result: map{adhoc: bool, created: str(date-time), createdBy: str, description: str?, id: str, name: str, parameters: map{calculations: [any], datasets: [str], filterCombination: str, filters: [map], groupBys: [map], havings: [map], limit: int, needle: map{isRegex: bool, matchCase: bool, value: any}, orderBy: map{order: str, value: str}}, updated: str(date-time), updatedBy: str}, success: bool}
@errors {401, 404, 500}

@endpoint PATCH /accounts/{account_id}/workers/observability/queries/{queryId}
@required {queryId: str, description: str, name: str, parameters: map{calculations: [any], datasets: [str], filterCombination: str, filters: [map], groupBys: [map], havings: [map], limit: int, needle: map, orderBy: map}}
@returns(200) {errors: [map], messages: [map], result: map{adhoc: bool, created: str(date-time), createdBy: str, description: str?, id: str, name: str, parameters: map{calculations: [any], datasets: [str], filterCombination: str, filters: [map], groupBys: [map], havings: [map], limit: int, needle: map{isRegex: bool, matchCase: bool, value: any}, orderBy: map{order: str, value: str}}, updated: str(date-time), updatedBy: str}, success: bool}
@errors {401, 404, 500}

@endpoint POST /accounts/{account_id}/workers/observability/shared/query
@required {queryId: str, timeframe: map{from!: int, to!: int}}
@optional {chart: bool, chartType: str(timeseries_and_aggregate/timeseries/aggregate/distribution), compare: bool, distributionScale: str(log/linear), dry: bool=false, granularity: num, ignoreSeries: bool=false, limit: num=50, offset: str, offsetBy: num, offsetDirection: str, parameters: map{calculations: [any], datasets: [str], filterCombination: str, filters: [any], groupBys: [map], havings: [map], limit: int, needle: map, orderBy: map}, view: str(traces/events/calculations/invocations/requests/agents)=calculations}
@returns(200) {errors: [map], messages: [map], result: map{id: str}, success: bool}
@errors {400, 401, 429, 500}

@endpoint GET /accounts/{account_id}/workers/observability/shared/query/{id}
@required {id: str}
@optional {view: str(events/invocations/calculations)}
@returns(200) {errors: [map], messages: [map], result: map{agents: [map], calculations: [map], compare: [map], distribution: map{bins: [str], bucketBoundaries: [num], bucketMode: str, buckets: [str], matrix: [[num]]}, events: map{count: num, events: [map], fields: [map], series: [map]}, invocations: map, run: map{accountId: str, created: str, dry: bool, granularity: num, id: str, query: any, statistics: map{abr_level: num, bytes_read: num, elapsed: num, rows_read: num}, status: str, timeframe: map{from: int, to: int}, updated: str, userId: str}, statistics: map{abr_level: num, bytes_read: num, elapsed: num, rows_read: num}, traces: [map]}, success: bool}
@errors {400, 401, 403, 500}

@endpoint POST /accounts/{account_id}/workers/observability/telemetry/keys
@optional {datasets: [str]=, filters: [any]=, from: num, keyNeedle: map{isRegex: bool, matchCase: bool, value!: any}, limit: num, needle: map{isRegex: bool, matchCase: bool, value!: any}, to: num}
@returns(200) {errors: [map], messages: [map], result: [map], success: bool}
@errors {400, 401, 403, 429, 500, 504}

@endpoint POST /accounts/{account_id}/workers/observability/telemetry/live-tail
@optional {filterCombination: str(and/or/AND/OR)=and, filters: [any]=, scriptId: str}
@returns(200) {errors: [map], messages: [map], result: map{wsUrl: str(uri)}, success: bool}
@errors {401, 403, 500}

@endpoint POST /accounts/{account_id}/workers/observability/telemetry/live-tail/heartbeat
@optional {scriptId: str}
@returns(200) {errors: [map], messages: [map], result: map, success: bool}
@errors {401, 500}

@endpoint POST /accounts/{account_id}/workers/observability/telemetry/query
@required {queryId: str, timeframe: map{from!: int, to!: int}}
@optional {chart: bool, chartType: str(timeseries_and_aggregate/timeseries/aggregate/distribution), compare: bool, distributionScale: str(log/linear), dry: bool=false, granularity: num, ignoreSeries: bool=false, limit: num=50, offset: str, offsetBy: num, offsetDirection: str, parameters: map{calculations: [any], datasets: [str], filterCombination: str, filters: [any], groupBys: [map], havings: [map], limit: int, needle: map, orderBy: map}, view: str(traces/events/calculations/invocations/requests/agents)=calculations}
@returns(200) {errors: [map], messages: [map], result: map{agents: [map], calculations: [map], compare: [map], distribution: map{bins: [str], bucketBoundaries: [num], bucketMode: str, buckets: [str], matrix: [[num]]}, events: map{count: num, events: [map], fields: [map], series: [map]}, invocations: map, run: map{accountId: str, created: str, dry: bool, granularity: num, id: str, query: any, statistics: map{abr_level: num, bytes_read: num, elapsed: num, rows_read: num}, status: str, timeframe: map{from: int, to: int}, updated: str, userId: str}, statistics: map{abr_level: num, bytes_read: num, elapsed: num, rows_read: num}, traces: [map]}, success: bool}
@errors {400, 401, 403, 429, 500, 504}

@endpoint POST /accounts/{account_id}/workers/observability/telemetry/values
@required {datasets: [str], key: str, timeframe: map{from!: num, to!: num}, type: str(string/boolean/number)}
@optional {filters: [any]=, limit: num=50, needle: map{isRegex: bool, matchCase: bool, value!: any}}
@returns(200) {errors: [map], messages: [map], result: [map], success: bool}
@errors {400, 401, 403, 429, 500, 504}

@endpoint GET /accounts/{account_id}/workers/observability/usage
@required {from: str, to: str}
@returns(200) {errors: [map], messages: [map], result: map{breakdown: [map], events: num}, success: bool}
@errors {400, 401, 403, 429, 500, 504}

@endpoint DELETE /accounts/{account_id}/workers/observability/zones/{zone_id}/observability/tracing/rules
@required {zone_id: str}
@returns(200) {errors: [map], messages: [map], result: map{rules: [map]}, success: bool}
@errors {400, 401, 403, 500}

@endpoint GET /accounts/{account_id}/workers/observability/zones/{zone_id}/observability/tracing/rules
@required {zone_id: str}
@returns(200) {errors: [map], messages: [map], result: map{rules: [map]}, success: bool}
@errors {400, 401, 403, 500}

@endpoint PUT /accounts/{account_id}/workers/observability/zones/{zone_id}/observability/tracing/rules
@required {zone_id: str, rules: [map{action!: str, action_parameters!: map, description!: str, enabled!: bool, expression!: str}]}
@returns(200) {errors: [map], messages: [map], result: map{rules: [map]}, success: bool}
@errors {400, 401, 403, 500}

@endpoint DELETE /accounts/{account_id}/workers/observability/zones/{zone_id}/observability/tracing/settings
@required {zone_id: str}
@returns(200) {errors: [map], messages: [map], result: map{destinations: [str], enabled: bool, forward_context: bool, persist: bool, propagation_policy: str, sampling_ratio: num}, success: bool}
@errors {400, 401, 403, 500}

@endpoint GET /accounts/{account_id}/workers/observability/zones/{zone_id}/observability/tracing/settings
@required {zone_id: str}
@returns(200) {errors: [map], messages: [map], result: map{destinations: [str], enabled: bool, forward_context: bool, persist: bool, propagation_policy: str, sampling_ratio: num}, success: bool}
@errors {400, 401, 403, 500}

@endpoint PATCH /accounts/{account_id}/workers/observability/zones/{zone_id}/observability/tracing/settings
@required {zone_id: str}
@optional {destinations: [str], enabled: bool, forward_context: bool, persist: bool, propagation_policy: str(authenticated/unauthenticated), sampling_ratio: num}
@returns(200) {errors: [map], messages: [map], result: map{destinations: [str], enabled: bool, forward_context: bool, persist: bool, propagation_policy: str, sampling_ratio: num}, success: bool}
@errors {400, 401, 403, 500}

@endpoint GET /accounts/{account_id}/workers/placement/regions
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/workers/scripts
@required {account_id: str}
@optional {tags: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/workers/scripts-search
@required {account_id: str}
@optional {name: str, id: str, order_by: str(created_on/modified_on/name)=name, page: int=1, per_page: int=10}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/workers/scripts/{script_name}
@required {account_id: str, script_name: str}
@optional {force: bool}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/workers/scripts/{script_name}
@required {account_id: str, script_name: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/workers/scripts/{script_name}
@required {account_id: str, script_name: str}
@optional {bindings_inherit: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/workers/scripts/{script_name}/assets-upload-session
@required {account_id: str, script_name: str, manifest: map}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/workers/scripts/{script_name}/content
@required {account_id: str, script_name: str}
@optional {CF-WORKER-BODY-PART: str, CF-WORKER-MAIN-MODULE-PART: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/workers/scripts/{script_name}/content/v2
@required {account_id: str, script_name: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/workers/scripts/{script_name}/deployments
@required {account_id: str, script_name: str}
@optional {since: str(date-time), until: str(date-time), page: int=1, per_page: int=10}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/workers/scripts/{script_name}/deployments
@required {account_id: str, script_name: str, created_on: str(date-time), id: str(uuid), source: str, strategy: str, versions: [map{percentage!: num, version_id!: str(uuid)}]}
@optional {force: bool, annotations: map{workers/message: str, workers/triggered_by: str}, author_email: str(email)}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/workers/scripts/{script_name}/deployments/{deployment_id}
@required {account_id: str, script_name: str, deployment_id: str(uuid)}
@returns(200) {errors: [map], messages: [map], success: bool}
@errors {4XX}

@endpoint GET /accounts/{account_id}/workers/scripts/{script_name}/deployments/{deployment_id}
@required {account_id: str, script_name: str, deployment_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/workers/scripts/{script_name}/schedules
@required {account_id: str, script_name: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/workers/scripts/{script_name}/schedules
@required {account_id: str, script_name: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/workers/scripts/{script_name}/script-settings
@required {account_id: str, script_name: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/workers/scripts/{script_name}/script-settings
@required {account_id: str, script_name: str}
@optional {logpush: bool=false, observability: any, tags: any, tail_consumers: [map{environment: str, namespace: str, service!: str}]}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/workers/scripts/{script_name}/secrets
@required {account_id: str, script_name: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/workers/scripts/{script_name}/secrets
@required {account_id: str, script_name: str}
@returns(200)
@errors {429, 4XX}

@endpoint PATCH /accounts/{account_id}/workers/scripts/{script_name}/secrets-bulk
@required {account_id: str, script_name: str}
@optional {secrets: map, version_tags: map}
@returns(200)
@errors {429, 4XX}

@endpoint DELETE /accounts/{account_id}/workers/scripts/{script_name}/secrets/{secret_name}
@required {account_id: str, script_name: str, secret_name: str}
@optional {url_encoded: bool}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/workers/scripts/{script_name}/secrets/{secret_name}
@required {account_id: str, script_name: str, secret_name: str}
@optional {url_encoded: bool}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/workers/scripts/{script_name}/settings
@required {account_id: str, script_name: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/workers/scripts/{script_name}/settings
@required {account_id: str, script_name: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/workers/scripts/{script_name}/subdomain
@required {account_id: str, script_name: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/workers/scripts/{script_name}/subdomain
@required {account_id: str, script_name: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/workers/scripts/{script_name}/subdomain
@required {account_id: str, script_name: str, enabled: bool}
@optional {previews_enabled: bool}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/workers/scripts/{script_name}/tails
@required {account_id: str, script_name: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/workers/scripts/{script_name}/tails
@required {account_id: str, script_name: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/workers/scripts/{script_name}/tails/{id}
@required {account_id: str, script_name: str, id: str}
@returns(200) {errors: [map], messages: [map], success: bool}
@errors {4XX}

@endpoint GET /accounts/{account_id}/workers/scripts/{script_name}/usage-model
@required {account_id: str, script_name: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/workers/scripts/{script_name}/usage-model
@required {account_id: str, script_name: str}
@optional {usage_model: str(standard/bundled/unbound)=standard, user_limits: map{cpu_ms: int}}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/workers/scripts/{script_name}/versions
@required {account_id: str, script_name: str}
@optional {deployable: bool=false, page: int=1, per_page: int}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/workers/scripts/{script_name}/versions
@required {account_id: str, script_name: str}
@optional {bindings_inherit: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/workers/scripts/{script_name}/versions/{version_id}
@required {account_id: str, script_name: str, version_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/workers/services/{service_name}/environments/{environment_name}/content
@required {account_id: str, service_name: str, environment_name: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/workers/services/{service_name}/environments/{environment_name}/content
@required {account_id: str, service_name: str, environment_name: str}
@optional {CF-WORKER-BODY-PART: str, CF-WORKER-MAIN-MODULE-PART: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/workers/services/{service_name}/environments/{environment_name}/settings
@required {account_id: str, service_name: str, environment_name: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/workers/services/{service_name}/environments/{environment_name}/settings
@required {account_id: str, service_name: str, environment_name: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/workers/subdomain
@required {account_id: str}
@returns(204)
@errors {4XX}

@endpoint GET /accounts/{account_id}/workers/subdomain
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/workers/subdomain
@required {account_id: str, subdomain: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/workers/workers
@required {account_id: str}
@optional {page: int=1, per_page: int=10, order_by: str(deployed_on/updated_on/created_on/name)=deployed_on, order: str(asc/desc)=desc}
@returns(200)
@errors {401, 500}

@endpoint POST /accounts/{account_id}/workers/workers
@required {account_id: str}
@returns(200)
@errors {400, 401, 403, 409, 500}

@endpoint DELETE /accounts/{account_id}/workers/workers/{worker_id}
@required {account_id: str, worker_id: str}
@returns(200) {errors: [map], messages: [map], success: bool}
@errors {400, 401, 404, 500}

@endpoint GET /accounts/{account_id}/workers/workers/{worker_id}
@required {account_id: str, worker_id: str}
@returns(200)
@errors {400, 404, 500}

@endpoint PATCH /accounts/{account_id}/workers/workers/{worker_id}
@required {account_id: str, worker_id: str}
@returns(200)
@errors {400, 401, 403, 404, 409, 500}

@endpoint PUT /accounts/{account_id}/workers/workers/{worker_id}
@required {account_id: str, worker_id: str}
@returns(200)
@errors {400, 401, 403, 404, 409, 500}

@endpoint GET /accounts/{account_id}/workers/workers/{worker_id}/versions
@required {account_id: str, worker_id: str}
@optional {page: int=1, per_page: int=10}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/workers/workers/{worker_id}/versions
@required {account_id: str, worker_id: str, created_on: str(date-time), id: str(uuid), number: int, urls: [str(uri)]}
@optional {deploy: bool, annotations: map{workers/message: str, workers/tag: str, workers/triggered_by: str}, assets: map{config: map, jwt: str}, author_email: str(email), author_id: str, bindings: [map], cache_options: map{cross_version_cache: bool, enabled!: bool}, compatibility_date: str, compatibility_flags: [str]=, containers: [map{class_name!: str}], exports: any, exports_reconciliation: any, limits: map{cpu_ms: int, subrequests: int}, main_module: str, migration_tag: str, migrations: any, modules: [map{content_base64!: str(byte), content_type!: str, name!: str}], package_dependencies: [map{installedVersion!: str, name!: str, packageJsonVersion!: str}], placement: map, source: str, startup_time_ms: int, usage_model: str(standard/bundled/unbound)=standard}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/workers/workers/{worker_id}/versions/latest
@required {account_id: str, worker_id: str}
@optional {include: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/workers/workers/{worker_id}/versions/latest
@required {account_id: str, worker_id: str}
@optional {deploy: bool}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/workers/workers/{worker_id}/versions/{version_id}
@required {account_id: str, worker_id: str, version_id: str}
@returns(200) {errors: [map], messages: [map], success: bool}
@errors {4XX}

@endpoint GET /accounts/{account_id}/workers/workers/{worker_id}/versions/{version_id}
@required {account_id: str, worker_id: str, version_id: str}
@optional {include: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/workflows
@required {account_id: str}
@optional {per_page: num=10, page: num=1, search: str}
@returns(200) {errors: [map], messages: [map], result: [map], result_info: map{count: num, cursor: str, page: num, per_page: num, total_count: num, total_pages: num}, success: bool}
@errors {400}

@endpoint GET /accounts/{account_id}/workflows/settings
@required {account_id: str}
@returns(200) {errors: [map], messages: [map], result: map{default_retention: map{error_retention: int, success_retention: int}}, result_info: map{count: num, cursor: str, page: num, per_page: num, total_count: num, total_pages: num}, success: bool}
@errors {400}

@endpoint PATCH /accounts/{account_id}/workflows/settings
@required {account_id: str}
@optional {default_retention: map{error_retention: any, success_retention: any}}
@returns(200) {errors: [map], messages: [map], result: map{default_retention: map{error_retention: int, success_retention: int}}, result_info: map{count: num, cursor: str, page: num, per_page: num, total_count: num, total_pages: num}, success: bool}
@errors {400}

@endpoint DELETE /accounts/{account_id}/workflows/{workflow_name}
@required {workflow_name: str, account_id: str}
@returns(200) {errors: [map], messages: [map], result: map{status: str, success: bool?}, result_info: map{count: num, cursor: str, page: num, per_page: num, total_count: num, total_pages: num}, success: bool}
@errors {400, 404}

@endpoint GET /accounts/{account_id}/workflows/{workflow_name}
@required {workflow_name: str, account_id: str}
@returns(200) {errors: [map], messages: [map], result: map{class_name: str, created_on: str(date-time), id: str(uuid), instances: map, modified_on: str(date-time), name: str, schedules: [map], script_name: str, triggered_on: str(date-time)?}, result_info: map{count: num, cursor: str, page: num, per_page: num, total_count: num, total_pages: num}, success: bool}
@errors {400, 404}

@endpoint PUT /accounts/{account_id}/workflows/{workflow_name}
@required {workflow_name: str, account_id: str, class_name: str, script_name: str}
@optional {concurrency: map{limit: int}, default_retention: map{error_retention: any, success_retention: any}, limits: map{steps: int}, schedules: [map{cron!: str}]}
@returns(200) {errors: [map], messages: [map], result: map{class_name: str, created_on: str(date-time), id: str(uuid), is_deleted: num, modified_on: str(date-time), name: str, script_name: str, terminator_running: num, triggered_on: str(date-time)?, version_id: str(uuid)}, result_info: map{count: num, cursor: str, page: num, per_page: num, total_count: num, total_pages: num}, success: bool}
@errors {400}

@endpoint GET /accounts/{account_id}/workflows/{workflow_name}/instances
@required {workflow_name: str, account_id: str}
@optional {page: num, per_page: num=50, cursor: str, direction: str(asc/desc), status: str(queued/running/paused/errored/terminated/complete/waitingForPause/waiting/rollingBack), date_start: str(date-time), date_end: str(date-time)}
@returns(200) {errors: [map], messages: [map], result: [map], result_info: map{count: num, cursor: str, page: num, per_page: num, total_count: num, total_pages: num}, success: bool}
@errors {400, 404}

@endpoint POST /accounts/{account_id}/workflows/{workflow_name}/instances
@required {workflow_name: str, account_id: str}
@optional {instance_id: str, instance_retention: map{error_retention: any, success_retention: any}, location_hint: str(wnam/weur/enam/eeur/apac/apac-ne/apac-se/oc/sam/afr/me), params: str}
@returns(200) {errors: [map], messages: [map], result: map{id: str, status: str, trigger_source: str, version_id: str(uuid), workflow_id: str(uuid)}, result_info: map{count: num, cursor: str, page: num, per_page: num, total_count: num, total_pages: num}, success: bool}
@errors {400, 404}

@endpoint POST /accounts/{account_id}/workflows/{workflow_name}/instances/batch
@required {workflow_name: str, account_id: str}
@returns(200) {errors: [map], messages: [map], result: [map], result_info: map{count: num, cursor: str, page: num, per_page: num, total_count: num, total_pages: num}, success: bool}
@errors {400, 404}

@endpoint POST /accounts/{account_id}/workflows/{workflow_name}/instances/batch/delete
@required {workflow_name: str, account_id: str, instances: [str]}
@returns(200) {errors: [map], messages: [map], result: map{deleted: [map], errors: [map]}, result_info: map{count: num, cursor: str, page: num, per_page: num, total_count: num, total_pages: num}, success: bool}
@errors {400, 404}

@endpoint POST /accounts/{account_id}/workflows/{workflow_name}/instances/batch/terminate
@required {workflow_name: str, account_id: str}
@returns(200) {errors: [map], messages: [map], result: map{instancesTerminated: num, status: str}, result_info: map{count: num, cursor: str, page: num, per_page: num, total_count: num, total_pages: num}, success: bool}
@errors {400, 404}

@endpoint GET /accounts/{account_id}/workflows/{workflow_name}/instances/terminate
@required {workflow_name: str, account_id: str}
@returns(200) {errors: [map], messages: [map], result: map{status: str}, result_info: map{count: num, cursor: str, page: num, per_page: num, total_count: num, total_pages: num}, success: bool}
@errors {400, 404}

@endpoint DELETE /accounts/{account_id}/workflows/{workflow_name}/instances/{instance_id}
@required {workflow_name: str, instance_id: str, account_id: str}
@returns(200) {errors: [map], messages: [map], result: map{instanceId: str, timestamp: str(date-time)}, result_info: map{count: num, cursor: str, page: num, per_page: num, total_count: num, total_pages: num}, success: bool}
@errors {404}

@endpoint GET /accounts/{account_id}/workflows/{workflow_name}/instances/{instance_id}
@required {workflow_name: str, instance_id: str, account_id: str}
@optional {simple: str(true/false)=false, order: str(asc/desc)=asc}
@returns(200) {errors: [map], messages: [map], result: map{end: str(date-time)?, error: map?{message: str, name: str}, output: any, params: map, queued: str(date-time), rollback: map?{error: map?{message: str, name: str}, outcome: str}, schedule: map{cron: str, scheduledTime: num}, start: str(date-time)?, status: str, step_count: int, steps: [any], success: bool?, trigger: map{source: str}, versionId: str(uuid)}, result_info: map{count: num, cursor: str, page: num, per_page: num, total_count: num, total_pages: num}, success: bool}
@errors {400, 404}

@endpoint POST /accounts/{account_id}/workflows/{workflow_name}/instances/{instance_id}/events/{event_type}
@required {workflow_name: str, instance_id: str, event_type: str, account_id: str}
@returns(200) {errors: [map], messages: [map], result: map{instanceId: str, timestamp: str(date-time)}, result_info: map{count: num, cursor: str, page: num, per_page: num, total_count: num, total_pages: num}, success: bool}
@errors {400, 404}

@endpoint PATCH /accounts/{account_id}/workflows/{workflow_name}/instances/{instance_id}/status
@required {workflow_name: str, instance_id: str, account_id: str}
@returns(200) {errors: [map], messages: [map], result: map{status: str, timestamp: str(date-time)}, result_info: map{count: num, cursor: str, page: num, per_page: num, total_count: num, total_pages: num}, success: bool}
@errors {400, 404, 409}

@endpoint GET /accounts/{account_id}/workflows/{workflow_name}/instances/{instance_id}/step
@required {workflow_name: str, instance_id: str, name: str, type: str(step/waitForEvent), account_id: str}
@optional {attempt: int}
@returns(200) {errors: [map], messages: [map], result: map{error: map?{message: str, name: str}, event_type: str, output: map, status: str}, result_info: map{count: num, cursor: str, page: num, per_page: num, total_count: num, total_pages: num}, success: bool}
@errors {400, 404, 429, 500}

@endpoint GET /accounts/{account_id}/workflows/{workflow_name}/instances/{instance_id}/subscribe
@required {workflow_name: str, instance_id: str, account_id: str}
@optional {cursor: int, filter: [str]}
@errors {101, 400, 404}

@endpoint GET /accounts/{account_id}/workflows/{workflow_name}/instances/{instance_id}/subscribe/token
@required {workflow_name: str, instance_id: str, account_id: str}
@returns(200) {errors: [map], messages: [map], result: map{token: str, websocketUrl: str}, result_info: map{count: num, cursor: str, page: num, per_page: num, total_count: num, total_pages: num}, success: bool}
@errors {400, 404}

@endpoint GET /accounts/{account_id}/workflows/{workflow_name}/versions
@required {workflow_name: str, account_id: str}
@optional {per_page: num=50, page: num=1}
@returns(200) {errors: [map], messages: [map], result: [map], result_info: map{count: num, cursor: str, page: num, per_page: num, total_count: num, total_pages: num}, success: bool}
@errors {400}

@endpoint GET /accounts/{account_id}/workflows/{workflow_name}/versions/{version_id}
@required {workflow_name: str, version_id: str(uuid), account_id: str}
@returns(200) {errors: [map], messages: [map], result: map{class_name: str, concurrency: map{limit: int}, created_on: str(date-time), default_retention: map{error_retention: int, success_retention: int}, has_dag: bool, id: str(uuid), language: str, limits: map{steps: int}, modified_on: str(date-time), workflow_id: str(uuid)}, result_info: map{count: num, cursor: str, page: num, per_page: num, total_count: num, total_pages: num}, success: bool}
@errors {400, 404}

@endpoint GET /accounts/{account_id}/workflows/{workflow_name}/versions/{version_id}/dag
@required {workflow_name: str, version_id: str(uuid), account_id: str}
@returns(200) {errors: [map], messages: [map], result: map{class_name: str, created_on: str(date-time), dag: map?, id: str(uuid), modified_on: str(date-time), workflow_id: str(uuid)}, result_info: map{count: num, cursor: str, page: num, per_page: num, total_count: num, total_pages: num}, success: bool}
@errors {404}

@endpoint GET /accounts/{account_id}/workflows/{workflow_name}/versions/{version_id}/graph
@required {workflow_name: str, version_id: str(uuid), account_id: str}
@returns(200) {errors: [map], messages: [map], result: map{class_name: str, created_on: str(date-time), graph: map?{version: num, workflow: map{class_name: str, functions: map, nodes: [any], payload: any}}, id: str(uuid), modified_on: str(date-time), workflow_id: str(uuid)}, result_info: map{count: num, cursor: str, page: num, per_page: num, total_count: num, total_pages: num}, success: bool}
@errors {404}

@endpoint GET /accounts/{account_id}/zerotrust/connectivity_settings
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/zerotrust/connectivity_settings
@required {account_id: str}
@optional {icmp_proxy_enabled: bool, offramp_warp_enabled: bool}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/zerotrust/routes/hostname
@required {account_id: str}
@optional {id: str(uuid), hostname: str, tunnel_id: str(uuid), comment: str, existed_at: str(url-encoded-date-time), is_deleted: bool=false, per_page: num, page: num}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/zerotrust/routes/hostname
@required {account_id: str}
@optional {comment: str, hostname: str, tunnel_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/zerotrust/routes/hostname/{hostname_route_id}
@required {account_id: str, hostname_route_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/zerotrust/routes/hostname/{hostname_route_id}
@required {account_id: str, hostname_route_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/zerotrust/routes/hostname/{hostname_route_id}
@required {account_id: str, hostname_route_id: str(uuid)}
@optional {comment: str, hostname: str, tunnel_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/zerotrust/subnets
@required {account_id: str}
@optional {name: str, comment: str, network: any, existed_at: str(url-encoded-date-time), address_family: str, is_default_network: bool, is_deleted: bool, sort_order: str(asc/desc), subnet_types: str(cloudflare_source/initial_resolved_ip/warp), per_page: num, page: num}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/zerotrust/subnets/cloudflare_source/{address_family}
@required {account_id: str, address_family: str}
@optional {comment: str=, name: str, network: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/zerotrust/subnets/initial_resolved_ip/{address_family}
@required {account_id: str, address_family: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/zerotrust/subnets/initial_resolved_ip/{address_family}
@required {account_id: str, address_family: str}
@optional {comment: str=, name: str, network: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/zerotrust/subnets/warp
@required {account_id: str, name: str, network: str}
@optional {comment: str=, is_default_network: bool=false}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/zerotrust/subnets/warp/{subnet_id}
@required {account_id: str, subnet_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/zerotrust/subnets/warp/{subnet_id}
@required {account_id: str, subnet_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint PATCH /accounts/{account_id}/zerotrust/subnets/warp/{subnet_id}
@required {account_id: str, subnet_id: str(uuid)}
@optional {comment: str=, is_default_network: bool=false, name: str, network: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/zt_risk_scoring/behaviors
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/zt_risk_scoring/behaviors
@required {account_id: str, behaviors: map}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/zt_risk_scoring/integrations
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/zt_risk_scoring/integrations
@required {account_id: str, integration_type: str, tenant_url: str(uri)}
@optional {reference_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/zt_risk_scoring/integrations/reference_id/{reference_id}
@required {account_id: str, reference_id: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /accounts/{account_id}/zt_risk_scoring/integrations/{integration_id}
@required {account_id: str, integration_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/zt_risk_scoring/integrations/{integration_id}
@required {account_id: str, integration_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint PUT /accounts/{account_id}/zt_risk_scoring/integrations/{integration_id}
@required {account_id: str, integration_id: str(uuid), active: bool, tenant_url: str(uri)}
@optional {reference_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/zt_risk_scoring/summary
@required {account_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /accounts/{account_id}/zt_risk_scoring/{user_id}
@required {account_id: str, user_id: str(uuid)}
@returns(200)
@errors {4XX}

@endpoint POST /accounts/{account_id}/zt_risk_scoring/{user_id}/reset
@required {account_id: str, user_id: str(uuid)}
@returns(200)
@errors {4XX}

@endgroup

@group analytics
@endpoint GET /analytics/sql
@required {query: str}
@returns(200) {data: [map], rows: int(int64), statistics: map{bytes_read: int(int64), elapsed_ms: int(int64), rows_read: int(int64)}}
@errors {400, 403, 422, 429, 500, 501, 503, 507}

@endpoint POST /analytics/sql
@required {query: str}
@optional {params: any, scope: any, time_range: map{end: str, start!: str}}
@returns(200) {data: [map], rows: int(int64), statistics: map{bytes_read: int(int64), elapsed_ms: int(int64), rows_read: int(int64)}}
@errors {400, 403, 422, 429, 500, 501, 503, 507}

@endpoint GET /analytics/sql/introspection
@required {account_tag: str}
@optional {include_columns: bool=false, include_custom_attributes: bool=false, dataset_name: str}
@returns(200) {datasets: [map]}
@errors {400, 403, 422, 500, 503}

@endgroup

@group api
@endpoint GET /api/v4/health
@returns(200) {errors: [map], messages: [map], result: map{healthy: bool}, success: bool}

@endgroup

@group billing
@endpoint POST /billing/address-validation
@optional {address: str, address2: str, city: str, country: str, state: str, zipcode: str}
@returns(200)
@errors {4XX}

@endpoint GET /billing/rate_plans/{public_key}
@required {public_key: str}
@returns(200)
@errors {4XX}

@endgroup

@group certificates
@endpoint GET /certificates
@required {zone_id: str}
@optional {page: num=1, per_page: num=20, limit: int, offset: int}
@returns(200)
@errors {4XX}

@endpoint POST /certificates
@required {csr: str, hostnames: [str], request_type: str(origin-rsa/origin-ecc/keyless-certificate)}
@optional {requested_validity: num(7/30/90/365/730/1095/5475)=5475}
@returns(200)
@errors {4XX}

@endpoint DELETE /certificates/{certificate_id}
@required {certificate_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /certificates/{certificate_id}
@required {certificate_id: str}
@returns(200)
@errors {4XX}

@endgroup

@group internal
@endpoint POST /internal/submit

@endgroup

@group ips
@endpoint GET /ips
@optional {networks: str}
@returns(200)
@errors {4XX}

@endgroup

@group live
@endpoint GET /live

@endgroup

@group memberships
@endpoint GET /memberships
@optional {account.name: str, page: num=1, per_page: num=20, order: str(id/account.name/status), direction: str(asc/desc), name: str, status: str(accepted/pending/rejected)}
@returns(200)
@errors {4XX}

@endpoint DELETE /memberships/{membership_id}
@required {membership_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /memberships/{membership_id}
@required {membership_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /memberships/{membership_id}
@required {membership_id: str, status: any(accepted/rejected)}
@returns(200)
@errors {4XX}

@endgroup

@group oauth
@endpoint GET /oauth/scopes
@returns(200)
@errors {4XX}

@endgroup

@group organizations
@endpoint GET /organizations
@optional {id: [str], name: str, name.startsWith: str, name.endsWith: str, name.contains: str, containing.account: str, containing.user: str, containing.organization: str, parent.id: any, page_token: str, page_size: int}
@returns(200) {errors: [map], messages: [map], result: [map], result_info: map{next_page_token: str, total_size: int}, success: bool}
@errors {4XX}

@endpoint POST /organizations
@required {create_time: str(date-time), id: any, meta: map{hierarchy_tags: [str], managed_by: str, tenant_flags: any}, name: str}
@optional {parent: map{id!: str, name!: str}, profile: map{business_address!: str, business_email!: str, business_name!: str, business_phone!: str, external_metadata!: str}}
@returns(200) {errors: [map], messages: [map], result: map{create_time: str(date-time), id: any, meta: map{hierarchy_tags: [str], managed_by: str, tenant_flags: any}, name: str, parent: map{id: str, name: str}, profile: map{business_address: str, business_email: str, business_name: str, business_phone: str, external_metadata: str}}, success: bool}
@errors {4XX}

@endpoint DELETE /organizations/{organization_id}
@required {organization_id: str}
@returns(200) {errors: [map], messages: [map], result: map{id: str}, success: bool}
@errors {4XX}

@endpoint GET /organizations/{organization_id}
@required {organization_id: str}
@returns(200) {errors: [map], messages: [map], result: map{create_time: str(date-time), id: any, meta: map{hierarchy_tags: [str], managed_by: str, tenant_flags: any}, name: str, parent: map{id: str, name: str}, profile: map{business_address: str, business_email: str, business_name: str, business_phone: str, external_metadata: str}}, success: bool}
@errors {4XX}

@endpoint PUT /organizations/{organization_id}
@required {organization_id: str, create_time: str(date-time), id: any, meta: map{hierarchy_tags: [str], managed_by: str, tenant_flags: any}, name: str}
@optional {parent: map{id!: str, name!: str}, profile: map{business_address!: str, business_email!: str, business_name!: str, business_phone!: str, external_metadata!: str}}
@returns(200) {errors: [map], messages: [map], result: map{create_time: str(date-time), id: any, meta: map{hierarchy_tags: [str], managed_by: str, tenant_flags: any}, name: str, parent: map{id: str, name: str}, profile: map{business_address: str, business_email: str, business_name: str, business_phone: str, external_metadata: str}}, success: bool}
@errors {4XX}

@endpoint GET /organizations/{organization_id}/accounts
@required {organization_id: str}
@optional {account_pubname: str, account_pubname.startsWith: str, account_pubname.endsWith: str, account_pubname.contains: str, name: str, name.startsWith: str, name.endsWith: str, name.contains: str, order_by: str, direction: str(asc/desc), include_tags: bool, include_total: bool=true, page_token: str, page_size: int}
@returns(200) {errors: [map], messages: [map], result: [map], result_info: map{next_page_token: str, total_size: int}, success: bool}
@errors {4XX}

@endpoint GET /organizations/{organization_id}/billable/usage
@required {organization_id: str}
@optional {from: str(date), to: str(date)}
@returns(200) {errors: [map]?, messages: [map]?, result: [map], success: bool}
@errors {4XX}

@endpoint GET /organizations/{organization_id}/logs/audit
@required {organization_id: str, since: str(date), before: str(date)}
@optional {action_result: [str], action_type: [str], actor_context: [str], actor_email: [str(email)], actor_id: [str], actor_ip_address: [str], actor_token_id: [str], actor_token_name: [str], actor_type: [str], id: [str], raw_cf_ray_id: [str], raw_method: [str], raw_status_code: [int], raw_uri: [str], resource_id: [str], resource_product: [str], resource_type: [str], resource_scope: [str], action_result.not: [str], action_type.not: [str], actor_context.not: [str], actor_email.not: [str(email)], actor_id.not: [str], actor_ip_address.not: [str], actor_token_id.not: [str], actor_token_name.not: [str], actor_type.not: [str], id.not: [str], raw_cf_ray_id.not: [str], raw_method.not: [str], raw_status_code.not: [int], raw_uri.not: [str], resource_id.not: [str], resource_product.not: [str], resource_type.not: [str], resource_scope.not: [str], direction: str(desc/asc)=desc, limit: num=100, cursor: str}
@returns(200)
@errors {4XX}

@endpoint GET /organizations/{organization_id}/logs/audit/{id}/history
@required {organization_id: str, id: str(uuid), action_time: str(date-time), since: str(date), before: str(date)}
@optional {direction: str(desc/asc)=desc, limit: num=100, cursor: str}
@returns(200) {errors: [map], result: [map], result_info: map{count: int, cursor: str, history_status: str}, success: bool}
@errors {404, 4XX}

@endpoint GET /organizations/{organization_id}/members
@required {organization_id: str}
@optional {status: [str], user.email: str, user.email.contains: str, user.email.startsWith: str, user.email.endsWith: str, page_token: str, page_size: int}
@returns(200) {errors: [map], messages: [map], result: [map], result_info: map{next_page_token: str, total_size: int}, success: bool}
@errors {4XX}

@endpoint POST /organizations/{organization_id}/members
@required {organization_id: str, member: map{status: str, user!: map}}
@returns(200) {errors: [map], messages: [map], result: map{create_time: str(date-time), id: str, meta: map, status: str, update_time: str(date-time), user: map{email: str, id: str, name: str, two_factor_authentication_enabled: bool}}, success: bool}
@errors {4XX}

@endpoint DELETE /organizations/{organization_id}/members/{member_id}
@required {organization_id: str, member_id: str}
@returns(204)
@errors {4XX}

@endpoint GET /organizations/{organization_id}/members/{member_id}
@required {organization_id: str, member_id: str}
@returns(200) {errors: [map], messages: [map], result: map{create_time: str(date-time), id: str, meta: map, status: str, update_time: str(date-time), user: map{email: str, id: str, name: str, two_factor_authentication_enabled: bool}}, success: bool}
@errors {4XX}

@endpoint POST /organizations/{organization_id}/members:batchCreate
@required {organization_id: str, members: [map{status: str, user!: map}]}
@returns(200) {errors: [map], messages: [map], result: [map], success: bool}
@errors {4XX}

@endpoint GET /organizations/{organization_id}/profile
@required {organization_id: str}
@returns(200) {errors: [map], messages: [map], result: map{business_address: str, business_email: str, business_name: str, business_phone: str, external_metadata: str}, success: bool}
@errors {4XX}

@endpoint PUT /organizations/{organization_id}/profile
@required {organization_id: str, business_address: str, business_email: str, business_name: str, business_phone: str, external_metadata: str}
@returns(204)
@errors {4XX}

@endpoint GET /organizations/{organization_id}/shares
@required {organization_id: str}
@optional {status: str, kind: str, target_type: str, resource_types: [str], order: str(name/created)=created, direction: str(asc/desc)=asc, page: int=1, per_page: int=20}
@returns(200)
@errors {4XX, 5XX}

@endgroup

@group pages
@endpoint POST /pages/assets/check-missing
@required {hashes: [str]}
@returns(200)
@errors {4XX}

@endpoint POST /pages/assets/upload
@returns(200) {errors: [map], messages: [map], success: bool}
@errors {4XX}

@endpoint POST /pages/assets/upsert-hashes
@required {hashes: [str]}
@returns(200) {errors: [map], messages: [map], success: bool}
@errors {4XX}

@endgroup

@group radar
@endpoint GET /radar/agent_readiness/summary/{dimension}
@required {dimension: str}
@optional {date: str(date), domainCategory: [str], name: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{date: str(date), domainCategories: [map], lastUpdated: str(date-time), normalization: str, successfulDomains: int, totalDomains: int, units: [map]}, summary_0: map}, success: bool}
@errors {400}

@endpoint GET /radar/ai/bots/summary/user_agent
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], limitPerGroup: int, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map}, success: bool}
@errors {400}

@endpoint GET /radar/ai/bots/summary/{dimension}
@required {dimension: str(USER_AGENT/CRAWL_PURPOSE/INDUSTRY/VERTICAL/CONTENT_TYPE/RESPONSE_STATUS/RESPONSE_STATUS_CATEGORY)}
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], crawlPurpose: [str], userAgent: [str], vertical: [str], industry: [str], contentType: [str], responseStatus: [str], responseStatusCategory: [str], limitPerGroup: int, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map}, success: bool}
@errors {400}

@endpoint GET /radar/ai/bots/timeseries
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], crawlPurpose: [str], userAgent: [str], industry: [str], vertical: [str], contentType: [str], responseStatus: [str], responseStatusCategory: [str], limitPerGroup: int, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}}, success: bool}
@errors {400}

@endpoint GET /radar/ai/bots/timeseries_groups/user_agent
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], limitPerGroup: int, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{timestamps: [str(date-time)]}}, success: bool}
@errors {400}

@endpoint GET /radar/ai/bots/timeseries_groups/{dimension}
@required {dimension: str(USER_AGENT/CRAWL_PURPOSE/INDUSTRY/VERTICAL/CONTENT_TYPE/RESPONSE_STATUS/RESPONSE_STATUS_CATEGORY)}
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], crawlPurpose: [str], userAgent: [str], industry: [str], vertical: [str], contentType: [str], responseStatus: [str], responseStatusCategory: [str], limitPerGroup: int, normalization: str(PERCENTAGE/MIN0_MAX/PERCENTAGE_CHANGE)=PERCENTAGE, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{timestamps: [str(date-time)]}}, success: bool}
@errors {400}

@endpoint GET /radar/ai/inference/summary/model
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], limitPerGroup: int, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map}, success: bool}
@errors {400}

@endpoint GET /radar/ai/inference/summary/task
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], limitPerGroup: int, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map}, success: bool}
@errors {400}

@endpoint GET /radar/ai/inference/summary/{dimension}
@required {dimension: str(MODEL/TASK)}
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], limitPerGroup: int, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map}, success: bool}
@errors {400}

@endpoint GET /radar/ai/inference/timeseries_groups/model
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], limitPerGroup: int, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{timestamps: [str(date-time)]}}, success: bool}
@errors {400}

@endpoint GET /radar/ai/inference/timeseries_groups/task
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], limitPerGroup: int, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{timestamps: [str(date-time)]}}, success: bool}
@errors {400}

@endpoint GET /radar/ai/inference/timeseries_groups/{dimension}
@required {dimension: str(MODEL/TASK)}
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], limitPerGroup: int, normalization: str(PERCENTAGE/MIN0_MAX)=PERCENTAGE, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{timestamps: [str(date-time)]}}, success: bool}
@errors {400}

@endpoint GET /radar/ai/markdown_for_agents/summary
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map{value: str}}, success: bool}
@errors {400}

@endpoint GET /radar/ai/markdown_for_agents/timeseries
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}}, success: bool}
@errors {400}

@endpoint GET /radar/annotations
@optional {limit: int=5, offset: int, dateRange: str, dateStart: str(date-time), dateEnd: str(date-time), dataSource: str(ALL/AI_BOTS/AI_GATEWAY/BGP/BOTS/CONNECTION_ANOMALY/CT/DNS/DNS_MAGNITUDE/DNS_AS112/DOS/EMAIL_ROUTING/EMAIL_SECURITY/FW/FW_PG/HTTP/HTTP_CONTROL/HTTP_CRAWLER_REFERER/HTTP_ORIGINS/IQI/LEAKED_CREDENTIALS/NET/ROBOTS_TXT/SPEED/WORKERS_AI), eventType: str(EVENT/GENERAL/OUTAGE/PARTIAL_PROJECTION/PIPELINE/TRAFFIC_ANOMALY), outageType: str(NATIONWIDE/REGIONAL/NETWORK/PLATFORM), outageCause: str(BLOCKING/CABLE_CUT/CYBERATTACK/DNS/FIRE/GOVERNMENT_DIRECTED/MAINTENANCE/MECHANICAL/MILITARY_ACTION/MISCONFIGURATION/NATURAL_DISASTER/NETWORK_PROBLEM/POWER_OUTAGE/SOFTWARE/TECHNICAL_PROBLEM/UNKNOWN/WEATHER), tags: [str], query: str, asn: int, location: str, geoId: str, origin: str, tld: str, ca: str, log: str, bot: str, format: str(JSON/CSV)}
@returns(200) {result: map{annotations: [map]}, success: bool}
@errors {400}

@endpoint GET /radar/annotations/outages
@optional {limit: int=5, offset: int, dateRange: str, dateStart: str(date-time), dateEnd: str(date-time), dataSource: str(ALL/AI_BOTS/AI_GATEWAY/BGP/BOTS/CONNECTION_ANOMALY/CT/DNS/DNS_MAGNITUDE/DNS_AS112/DOS/EMAIL_ROUTING/EMAIL_SECURITY/FW/FW_PG/HTTP/HTTP_CONTROL/HTTP_CRAWLER_REFERER/HTTP_ORIGINS/IQI/LEAKED_CREDENTIALS/NET/ROBOTS_TXT/SPEED/WORKERS_AI), outageType: str(NATIONWIDE/REGIONAL/NETWORK/PLATFORM), outageCause: str(BLOCKING/CABLE_CUT/CYBERATTACK/DNS/FIRE/GOVERNMENT_DIRECTED/MAINTENANCE/MECHANICAL/MILITARY_ACTION/MISCONFIGURATION/NATURAL_DISASTER/NETWORK_PROBLEM/POWER_OUTAGE/SOFTWARE/TECHNICAL_PROBLEM/UNKNOWN/WEATHER), tags: [str], query: str, asn: int, location: str, geoId: str, origin: str, tld: str, ca: str, log: str, bot: str, format: str(JSON/CSV)}
@returns(200) {result: map{annotations: [map]}, success: bool}
@errors {400}

@endpoint GET /radar/annotations/outages/locations
@optional {limit: int=5, dateRange: str, dateStart: str(date-time), dateEnd: str(date-time), format: str(JSON/CSV)}
@returns(200) {result: map{annotations: [map]}, success: bool}
@errors {400}

@endpoint GET /radar/annotations/{id}
@required {id: str}
@optional {format: str(JSON/CSV)}
@returns(200) {result: map{annotation: map{asns: [int], asnsDetails: [map], dataSource: str, description: str?, endDate: str(date-time)?, entities: [map], eventType: str, geoIds: [str], id: str, linkedUrl: str?, locations: [str], locationsDetails: [map], origins: [str], originsDetails: [map], outage: map?{outageCause: str, outageType: str}, scope: str?, startDate: str(date-time), tags: [str]}}, success: bool}
@errors {404}

@endpoint GET /radar/as112/summary/dnssec
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], location: [str], continent: [str], queryType: [str], protocol: [str], responseCode: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map{NOT_SUPPORTED: str, SUPPORTED: str}}, success: bool}
@errors {400}

@endpoint GET /radar/as112/summary/edns
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], location: [str], continent: [str], queryType: [str], protocol: [str], responseCode: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map{NOT_SUPPORTED: str, SUPPORTED: str}}, success: bool}
@errors {400}

@endpoint GET /radar/as112/summary/ip_version
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], location: [str], continent: [str], queryType: [str], protocol: [str], responseCode: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map{IPv4: str, IPv6: str}}, success: bool}
@errors {400}

@endpoint GET /radar/as112/summary/protocol
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], location: [str], continent: [str], queryType: [str], responseCode: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map{HTTPS: str, TCP: str, TLS: str, UDP: str}}, success: bool}
@errors {400}

@endpoint GET /radar/as112/summary/query_type
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], location: [str], continent: [str], protocol: [str], responseCode: [str], limitPerGroup: int, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map}, success: bool}
@errors {400}

@endpoint GET /radar/as112/summary/response_codes
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], location: [str], continent: [str], queryType: [str], protocol: [str], limitPerGroup: int, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map}, success: bool}
@errors {400}

@endpoint GET /radar/as112/summary/{dimension}
@required {dimension: str(DNSSEC/EDNS/IP_VERSION/PROTOCOL/QUERY_TYPE/RESPONSE_CODE)}
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], location: [str], continent: [str], queryType: [str], protocol: [str], responseCode: [str], limitPerGroup: int, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map}, success: bool}
@errors {400}

@endpoint GET /radar/as112/timeseries
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], location: [str], continent: [str], queryType: [str], protocol: [str], responseCode: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}}, success: bool}
@errors {400}

@endpoint GET /radar/as112/timeseries_groups/dnssec
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], location: [str], continent: [str], queryType: [str], protocol: [str], responseCode: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{NOT_SUPPORTED: [str], SUPPORTED: [str]}}, success: bool}
@errors {400}

@endpoint GET /radar/as112/timeseries_groups/edns
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], location: [str], continent: [str], queryType: [str], protocol: [str], responseCode: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{NOT_SUPPORTED: [str], SUPPORTED: [str]}}, success: bool}
@errors {400}

@endpoint GET /radar/as112/timeseries_groups/ip_version
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], location: [str], continent: [str], queryType: [str], protocol: [str], responseCode: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{IPv4: [str], IPv6: [str]}}, success: bool}
@errors {400}

@endpoint GET /radar/as112/timeseries_groups/protocol
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], location: [str], continent: [str], queryType: [str], responseCode: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{HTTPS: [str], TCP: [str], TLS: [str], UDP: [str]}}, success: bool}
@errors {400}

@endpoint GET /radar/as112/timeseries_groups/query_type
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], location: [str], continent: [str], protocol: [str], responseCode: [str], limitPerGroup: int, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{timestamps: [str(date-time)]}}, success: bool}
@errors {400}

@endpoint GET /radar/as112/timeseries_groups/response_codes
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], location: [str], continent: [str], queryType: [str], protocol: [str], limitPerGroup: int, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{timestamps: [str(date-time)]}}, success: bool}
@errors {400}

@endpoint GET /radar/as112/timeseries_groups/{dimension}
@required {dimension: str(DNSSEC/EDNS/IP_VERSION/PROTOCOL/QUERY_TYPE/RESPONSE_CODE)}
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], location: [str], continent: [str], queryType: [str], protocol: [str], responseCode: [str], limitPerGroup: int, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{timestamps: [str(date-time)]}}, success: bool}
@errors {400}

@endpoint GET /radar/as112/top/locations
@optional {limit: int=5, name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], location: [str], continent: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map?{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, top_0: [map]}, success: bool}
@errors {404}

@endpoint GET /radar/as112/top/locations/dnssec/{dnssec}
@required {dnssec: str(SUPPORTED/NOT_SUPPORTED)}
@optional {limit: int=5, name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], location: [str], continent: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map?{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, top_0: [map]}, success: bool}
@errors {404}

@endpoint GET /radar/as112/top/locations/edns/{edns}
@required {edns: str(SUPPORTED/NOT_SUPPORTED)}
@optional {limit: int=5, name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], location: [str], continent: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map?{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, top_0: [map]}, success: bool}
@errors {404}

@endpoint GET /radar/as112/top/locations/ip_version/{ip_version}
@required {ip_version: str(IPv4/IPv6)}
@optional {limit: int=5, name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], location: [str], continent: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map?{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, top_0: [map]}, success: bool}
@errors {404}

@endpoint GET /radar/attacks/layer3/summary/bitrate
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], location: [str], continent: [str], ipVersion: [str], protocol: [str], direction: str(ORIGIN/TARGET)=ORIGIN, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map{OVER_100_GBPS: str, UNDER_500_MBPS: str, _10_GBPS_TO_100_GBPS: str, _1_GBPS_TO_10_GBPS: str, _500_MBPS_TO_1_GBPS: str}}, success: bool}
@errors {400}

@endpoint GET /radar/attacks/layer3/summary/duration
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], location: [str], continent: [str], ipVersion: [str], protocol: [str], direction: str(ORIGIN/TARGET)=ORIGIN, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map{OVER_3_HOURS: str, UNDER_10_MINS: str, _10_MINS_TO_20_MINS: str, _1_HOUR_TO_3_HOURS: str, _20_MINS_TO_40_MINS: str, _40_MINS_TO_1_HOUR: str}}, success: bool}
@errors {400}

@endpoint GET /radar/attacks/layer3/summary/industry
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], location: [str], continent: [str], ipVersion: [str], protocol: [str], direction: str(ORIGIN/TARGET)=ORIGIN, limitPerGroup: int, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map}, success: bool}
@errors {400}

@endpoint GET /radar/attacks/layer3/summary/ip_version
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], location: [str], continent: [str], protocol: [str], direction: str(ORIGIN/TARGET)=ORIGIN, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map{IPv4: str, IPv6: str}}, success: bool}
@errors {400}

@endpoint GET /radar/attacks/layer3/summary/protocol
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], location: [str], continent: [str], ipVersion: [str], direction: str(ORIGIN/TARGET)=ORIGIN, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map{GRE: str, ICMP: str, TCP: str, UDP: str}}, success: bool}
@errors {400}

@endpoint GET /radar/attacks/layer3/summary/vector
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], location: [str], continent: [str], ipVersion: [str], protocol: [str], direction: str(ORIGIN/TARGET)=ORIGIN, limitPerGroup: int, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map}, success: bool}
@errors {400}

@endpoint GET /radar/attacks/layer3/summary/vertical
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], location: [str], continent: [str], ipVersion: [str], protocol: [str], direction: str(ORIGIN/TARGET)=ORIGIN, limitPerGroup: int, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map}, success: bool}
@errors {400}

@endpoint GET /radar/attacks/layer3/summary/{dimension}
@required {dimension: str(PROTOCOL/IP_VERSION/VECTOR/DURATION/BITRATE/VERTICAL/INDUSTRY)}
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], location: [str], continent: [str], ipVersion: [str], protocol: [str], direction: str(ORIGIN/TARGET)=ORIGIN, limitPerGroup: int, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map}, success: bool}
@errors {400}

@endpoint GET /radar/attacks/layer3/timeseries
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], ipVersion: [str], protocol: [str], normalization: str(PERCENTAGE_CHANGE/MIN0_MAX), metric: str(BYTES/BYTES_OLD)=bytes, direction: str(ORIGIN/TARGET)=ORIGIN, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}}, success: bool}
@errors {400}

@endpoint GET /radar/attacks/layer3/timeseries_groups/bitrate
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], location: [str], continent: [str], ipVersion: [str], protocol: [str], normalization: str(PERCENTAGE/MIN0_MAX)=PERCENTAGE, direction: str(ORIGIN/TARGET)=ORIGIN, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{OVER_100_GBPS: [str], UNDER_500_MBPS: [str], _10_GBPS_TO_100_GBPS: [str], _1_GBPS_TO_10_GBPS: [str], _500_MBPS_TO_1_GBPS: [str], timestamps: [str(date-time)]}}, success: bool}
@errors {400}

@endpoint GET /radar/attacks/layer3/timeseries_groups/duration
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], location: [str], continent: [str], ipVersion: [str], protocol: [str], normalization: str(PERCENTAGE/MIN0_MAX)=PERCENTAGE, direction: str(ORIGIN/TARGET)=ORIGIN, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{OVER_3_HOURS: [str], UNDER_10_MINS: [str], _10_MINS_TO_20_MINS: [str], _1_HOUR_TO_3_HOURS: [str], _20_MINS_TO_40_MINS: [str], _40_MINS_TO_1_HOUR: [str], timestamps: [str(date-time)]}}, success: bool}
@errors {400}

@endpoint GET /radar/attacks/layer3/timeseries_groups/industry
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], location: [str], continent: [str], ipVersion: [str], protocol: [str], normalization: str(PERCENTAGE/MIN0_MAX)=PERCENTAGE, direction: str(ORIGIN/TARGET)=ORIGIN, limitPerGroup: int, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{timestamps: [str(date-time)]}}, success: bool}
@errors {400}

@endpoint GET /radar/attacks/layer3/timeseries_groups/ip_version
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], location: [str], continent: [str], protocol: [str], normalization: str(PERCENTAGE/MIN0_MAX)=PERCENTAGE, direction: str(ORIGIN/TARGET)=ORIGIN, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{IPv4: [str], IPv6: [str], timestamps: [str(date-time)]}}, success: bool}
@errors {400}

@endpoint GET /radar/attacks/layer3/timeseries_groups/protocol
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], location: [str], continent: [str], ipVersion: [str], normalization: str(PERCENTAGE/MIN0_MAX)=PERCENTAGE, direction: str(ORIGIN/TARGET)=ORIGIN, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{GRE: [str], ICMP: [str], TCP: [str], UDP: [str], timestamps: [str(date-time)]}}, success: bool}
@errors {400}

@endpoint GET /radar/attacks/layer3/timeseries_groups/vector
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], location: [str], continent: [str], ipVersion: [str], protocol: [str], normalization: str(PERCENTAGE/MIN0_MAX)=PERCENTAGE, direction: str(ORIGIN/TARGET)=ORIGIN, limitPerGroup: int, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{timestamps: [str(date-time)]}}, success: bool}
@errors {400}

@endpoint GET /radar/attacks/layer3/timeseries_groups/vertical
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], location: [str], continent: [str], ipVersion: [str], protocol: [str], normalization: str(PERCENTAGE/MIN0_MAX)=PERCENTAGE, direction: str(ORIGIN/TARGET)=ORIGIN, limitPerGroup: int, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{timestamps: [str(date-time)]}}, success: bool}
@errors {400}

@endpoint GET /radar/attacks/layer3/timeseries_groups/{dimension}
@required {dimension: str(PROTOCOL/IP_VERSION/VECTOR/DURATION/BITRATE/VERTICAL/INDUSTRY)}
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], location: [str], continent: [str], ipVersion: [str], protocol: [str], normalization: str(PERCENTAGE/MIN0_MAX)=PERCENTAGE, direction: str(ORIGIN/TARGET)=ORIGIN, limitPerGroup: int, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{timestamps: [str(date-time)]}}, success: bool}
@errors {400}

@endpoint GET /radar/attacks/layer3/top/attacks
@optional {limit: int=5, name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], location: [str], continent: [str], ipVersion: [str], protocol: [str], limitDirection: str(ORIGIN/TARGET)=ORIGIN, limitPerLocation: int=10, magnitude: str(MITIGATED_BYTES/MITIGATED_ATTACKS), normalization: str(PERCENTAGE/MIN_MAX)=PERCENTAGE, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map?{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, top_0: [map]}, success: bool}
@errors {404}

@endpoint GET /radar/attacks/layer3/top/industry
@optional {limit: int=5, name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], location: [str], continent: [str], ipVersion: [str], protocol: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map?{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, top_0: [map]}, success: bool}
@errors {404}

@endpoint GET /radar/attacks/layer3/top/locations/origin
@optional {limit: int=5, name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], location: [str], continent: [str], ipVersion: [str], protocol: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map?{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, top_0: [map]}, success: bool}
@errors {404}

@endpoint GET /radar/attacks/layer3/top/locations/target
@optional {limit: int=5, name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], location: [str], continent: [str], ipVersion: [str], protocol: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map?{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, top_0: [map]}, success: bool}
@errors {404}

@endpoint GET /radar/attacks/layer3/top/vertical
@optional {limit: int=5, name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], location: [str], continent: [str], ipVersion: [str], protocol: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map?{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, top_0: [map]}, success: bool}
@errors {404}

@endpoint GET /radar/attacks/layer7/summary/http_method
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], ipVersion: [str], httpVersion: [str], mitigationProduct: [str], limitPerGroup: int, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map}, success: bool}
@errors {400}

@endpoint GET /radar/attacks/layer7/summary/http_version
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], ipVersion: [str], httpMethod: [str], mitigationProduct: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map{HTTP/1.x: str, HTTP/2: str, HTTP/3: str}}, success: bool}
@errors {400}

@endpoint GET /radar/attacks/layer7/summary/industry
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], ipVersion: [str], httpVersion: [str], httpMethod: [str], mitigationProduct: [str], limitPerGroup: int, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map}, success: bool}
@errors {400}

@endpoint GET /radar/attacks/layer7/summary/ip_version
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], httpVersion: [str], httpMethod: [str], mitigationProduct: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map{IPv4: str, IPv6: str}}, success: bool}
@errors {400}

@endpoint GET /radar/attacks/layer7/summary/managed_rules
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], ipVersion: [str], httpVersion: [str], httpMethod: [str], mitigationProduct: [str], limitPerGroup: int, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map}, success: bool}
@errors {400}

@endpoint GET /radar/attacks/layer7/summary/mitigation_product
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], ipVersion: [str], httpVersion: [str], httpMethod: [str], limitPerGroup: int, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map}, success: bool}
@errors {400}

@endpoint GET /radar/attacks/layer7/summary/vertical
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], ipVersion: [str], httpVersion: [str], httpMethod: [str], mitigationProduct: [str], limitPerGroup: int, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map}, success: bool}
@errors {400}

@endpoint GET /radar/attacks/layer7/summary/{dimension}
@required {dimension: str(HTTP_METHOD/HTTP_VERSION/IP_VERSION/MANAGED_RULES/MITIGATION_PRODUCT/VERTICAL/INDUSTRY)}
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], ipVersion: [str], httpVersion: [str], httpMethod: [str], mitigationProduct: [str], limitPerGroup: int, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map}, success: bool}
@errors {400}

@endpoint GET /radar/attacks/layer7/timeseries
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], normalization: str(PERCENTAGE_CHANGE/MIN0_MAX), ipVersion: [str], httpVersion: [str], httpMethod: [str], mitigationProduct: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{timestamps: [str(date-time)], values: [str]}}, success: bool}
@errors {400}

@endpoint GET /radar/attacks/layer7/timeseries_groups/http_method
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], ipVersion: [str], httpVersion: [str], mitigationProduct: [str], normalization: str(PERCENTAGE/MIN0_MAX)=PERCENTAGE, limitPerGroup: int, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{timestamps: [str(date-time)]}}, success: bool}
@errors {400}

@endpoint GET /radar/attacks/layer7/timeseries_groups/http_version
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], ipVersion: [str], httpMethod: [str], mitigationProduct: [str], normalization: str(PERCENTAGE/MIN0_MAX)=PERCENTAGE, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{HTTP/1.x: [str], HTTP/2: [str], HTTP/3: [str], timestamps: [str(date-time)]}}, success: bool}
@errors {400}

@endpoint GET /radar/attacks/layer7/timeseries_groups/industry
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], ipVersion: [str], httpVersion: [str], httpMethod: [str], mitigationProduct: [str], normalization: str(PERCENTAGE/MIN0_MAX)=PERCENTAGE, limitPerGroup: int, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{timestamps: [str(date-time)]}}, success: bool}
@errors {400}

@endpoint GET /radar/attacks/layer7/timeseries_groups/ip_version
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], httpVersion: [str], httpMethod: [str], mitigationProduct: [str], normalization: str(PERCENTAGE/MIN0_MAX)=PERCENTAGE, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{IPv4: [str], IPv6: [str], timestamps: [str(date-time)]}}, success: bool}
@errors {400}

@endpoint GET /radar/attacks/layer7/timeseries_groups/managed_rules
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], ipVersion: [str], httpVersion: [str], httpMethod: [str], mitigationProduct: [str], normalization: str(PERCENTAGE/MIN0_MAX)=PERCENTAGE, limitPerGroup: int, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{timestamps: [str(date-time)]}}, success: bool}
@errors {400}

@endpoint GET /radar/attacks/layer7/timeseries_groups/mitigation_product
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], ipVersion: [str], httpVersion: [str], httpMethod: [str], normalization: str(PERCENTAGE/MIN0_MAX)=PERCENTAGE, limitPerGroup: int, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{timestamps: [str(date-time)]}}, success: bool}
@errors {400}

@endpoint GET /radar/attacks/layer7/timeseries_groups/vertical
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], ipVersion: [str], httpVersion: [str], httpMethod: [str], mitigationProduct: [str], normalization: str(PERCENTAGE/MIN0_MAX)=PERCENTAGE, limitPerGroup: int, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{timestamps: [str(date-time)]}}, success: bool}
@errors {400}

@endpoint GET /radar/attacks/layer7/timeseries_groups/{dimension}
@required {dimension: str(HTTP_METHOD/HTTP_VERSION/IP_VERSION/MANAGED_RULES/MITIGATION_PRODUCT/VERTICAL/INDUSTRY)}
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], ipVersion: [str], httpVersion: [str], httpMethod: [str], mitigationProduct: [str], normalization: str(PERCENTAGE/MIN0_MAX)=PERCENTAGE, limitPerGroup: int, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{timestamps: [str(date-time)]}}, success: bool}
@errors {400}

@endpoint GET /radar/attacks/layer7/top/ases/origin
@optional {limit: int=5, name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], location: [str], continent: [str], ipVersion: [str], httpVersion: [str], httpMethod: [str], mitigationProduct: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map?{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, top_0: [map]}, success: bool}
@errors {404}

@endpoint GET /radar/attacks/layer7/top/attacks
@optional {limit: int=5, name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], mitigationProduct: [str], limitDirection: str(ORIGIN/TARGET)=ORIGIN, limitPerLocation: int=10, normalization: str(PERCENTAGE/MIN_MAX)=PERCENTAGE, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map?{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, top_0: [map]}, success: bool}
@errors {404}

@endpoint GET /radar/attacks/layer7/top/industry
@optional {limit: int=5, name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], ipVersion: [str], httpVersion: [str], httpMethod: [str], mitigationProduct: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map?{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, top_0: [map]}, success: bool}
@errors {404}

@endpoint GET /radar/attacks/layer7/top/locations/origin
@optional {limit: int=5, name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], continent: [str], ipVersion: [str], httpVersion: [str], httpMethod: [str], mitigationProduct: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map?{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, top_0: [map]}, success: bool}
@errors {404}

@endpoint GET /radar/attacks/layer7/top/locations/target
@optional {limit: int=5, name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], continent: [str], mitigationProduct: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map?{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, top_0: [map]}, success: bool}
@errors {404}

@endpoint GET /radar/attacks/layer7/top/vertical
@optional {limit: int=5, name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], ipVersion: [str], httpVersion: [str], httpMethod: [str], mitigationProduct: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map?{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, top_0: [map]}, success: bool}
@errors {404}

@endpoint GET /radar/bgp/hijacks/events
@optional {page: int=1, per_page: int=50, eventId: int, hijackerAsn: int, victimAsn: int, involvedAsn: int, involvedCountry: str, prefix: any, minConfidence: int, maxConfidence: int, dateRange: str, dateStart: str(date-time), dateEnd: str(date-time), sortBy: str(ID/TIME/CONFIDENCE), sortOrder: str(ASC/DESC), format: str(JSON/CSV)}
@returns(200) {result: map{asn_info: [map], events: [map], total_monitors: int}, result_info: map{count: int, page: int, per_page: int, total_count: int}, success: bool}
@errors {400}

@endpoint GET /radar/bgp/ips/timeseries
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], ipVersion: [str], includeDelay: bool, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], delay: map{asn_data: map, country_data: map, healthy: bool, nowTs: num}, lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{ipv4: [str], ipv6: [str], timestamps: [str(date-time)]}}, success: bool}
@errors {400}

@endpoint GET /radar/bgp/ips/top/ases
@optional {date: str(date-time), limit: int=5, metric: str(v4_24s/v6_48s), country: str, format: str(JSON/CSV)}
@returns(200) {result: map{anchorTs: str(date-time), asns: [map], country: str?, metric: str}, success: bool}
@errors {400}

@endpoint GET /radar/bgp/leaks/events
@optional {page: int=1, per_page: int=50, eventId: int, leakAsn: int, involvedAsn: int, involvedCountry: str, dateRange: str, dateStart: str(date-time), dateEnd: str(date-time), sortBy: str(ID/LEAKS/PEERS/PREFIXES/ORIGINS/TIME), sortOrder: str(ASC/DESC), format: str(JSON/CSV)}
@returns(200) {result: map{asn_info: [map], events: [map]}, result_info: map{count: int, page: int, per_page: int, total_count: int}, success: bool}
@errors {400}

@endpoint GET /radar/bgp/routes/ases
@optional {location: str, limit: int=5, sortBy: str(cone/pfxs/ipv4/ipv6/rpki_valid/rpki_invalid/rpki_unknown), sortOrder: str(ASC/DESC), format: str(JSON/CSV)}
@returns(200) {result: map{asns: [map], meta: map{dataTime: str, queryTime: str, totalPeers: int}}, success: bool}
@errors {400}

@endpoint GET /radar/bgp/routes/moas
@optional {origin: int, prefix: any, invalid_only: bool, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{data_time: str, query_time: str, total_peers: int}, moas: [map]}, success: bool}
@errors {400}

@endpoint GET /radar/bgp/routes/paths/{asn}
@required {asn: int}
@optional {ipVersion: str(IPv4/IPv6)=IPv4, collector: str, format: str(JSON/CSV)}
@returns(200) {result: map{asnInfo: map?, collectors: [str], meta: map{dataTime: str(date-time)?, effectiveCollector: str?, queryTime: str(date-time)?, stale: bool}, paths: [map]}, success: bool}
@errors {400}

@endpoint GET /radar/bgp/routes/pfx2as
@optional {prefix: any, origin: int, rpkiStatus: str(VALID/INVALID/UNKNOWN), longestPrefixMatch: bool, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{data_time: str, query_time: str, total_peers: int}, prefix_origins: [map]}, success: bool}
@errors {400}

@endpoint GET /radar/bgp/routes/realtime
@optional {prefix: any, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{asn_info: [map], collectors: [map], data_time: str, prefix_origins: [map], query_time: str}, routes: [map]}, success: bool}
@errors {400}

@endpoint GET /radar/bgp/routes/stats
@optional {asn: int, location: str, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{data_time: str, query_time: str, total_peers: int}, stats: map{distinct_origins: int, distinct_origins_ipv4: int, distinct_origins_ipv6: int, distinct_prefixes: int, distinct_prefixes_ipv4: int, distinct_prefixes_ipv6: int, routes_invalid: int, routes_invalid_ipv4: int, routes_invalid_ipv6: int, routes_total: int, routes_total_ipv4: int, routes_total_ipv6: int, routes_unknown: int, routes_unknown_ipv4: int, routes_unknown_ipv6: int, routes_valid: int, routes_valid_ipv4: int, routes_valid_ipv6: int}}, success: bool}
@errors {400}

@endpoint GET /radar/bgp/routes/upstreams/{asn}/timeseries
@required {asn: int}
@optional {ipVersion: str(IPv4/IPv6)=IPv4, dateStart: str(date-time), dateEnd: str(date-time), limit: int, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{dataTime: str(date-time)?, effectiveCollector: str?, queryTime: str(date-time)?, stale: bool}, serie_0: map{timestamps: [str(date-time)]}}, success: bool}
@errors {400}

@endpoint GET /radar/bgp/rpki/aspa/changes
@optional {dateStart: str(date-time), dateEnd: str(date-time), asn: int, includeAsnInfo: bool, format: str(JSON/CSV)}
@returns(200) {result: map{asnInfo: map{13335: map{asn: int, country: str, name: str}}, changes: [map], meta: map{dataTime: str(date-time), queryTime: str(date-time)}}, success: bool}
@errors {400}

@endpoint GET /radar/bgp/rpki/aspa/snapshot
@optional {customerAsn: int, providerAsn: int, date: str(date-time), includeAsnInfo: bool, format: str(JSON/CSV)}
@returns(200) {result: map{asnInfo: map{13335: map{asn: int, country: str, name: str}}, aspaObjects: [map], meta: map{dataTime: str(date-time), queryTime: str(date-time), totalCount: int}}, success: bool}
@errors {400}

@endpoint GET /radar/bgp/rpki/aspa/timeseries
@optional {dateStart: str(date-time), dateEnd: str(date-time), name: [str], rir: [str], location: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{dataTime: str(date-time), queryTime: str(date-time)}, serie_0: map{timestamps: [str(date-time)], values: [str]}}, success: bool}
@errors {400}

@endpoint GET /radar/bgp/rpki/roas/timeseries
@optional {dateStart: str(date-time), dateEnd: str(date-time), metric: str(validPfxsRatio/validPfxsV4Ratio/validPfxsV6Ratio/validIpsRatio/validIpsV4Ratio/validIpsV6Ratio)=validPfxsRatio, asn: [str], location: [str], name: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{dataTime: str(date-time), queryTime: str(date-time)}, serie_0: map{timestamps: [str(date-time)], values: [str]}}, success: bool}
@errors {400}

@endpoint GET /radar/bgp/timeseries
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], prefix: [any], updateType: [str], asn: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time)}, serie_0: map{timestamps: [str(date-time)], values: [str]}}, success: bool}
@errors {400}

@endpoint GET /radar/bgp/top/ases
@optional {limit: int=5, name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], prefix: [any], updateType: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{dateRange: [map]}, top_0: [map]}, success: bool}
@errors {400}

@endpoint GET /radar/bgp/top/ases/prefixes
@optional {country: str, limit: int, format: str(JSON/CSV)}
@returns(200) {result: map{asns: [map], meta: map{data_time: str, query_time: str, total_peers: int}}, success: bool}
@errors {404}

@endpoint GET /radar/bgp/top/prefixes
@optional {limit: int=5, name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], updateType: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{dateRange: [map]}, top_0: [map]}, success: bool}
@errors {400}

@endpoint GET /radar/bots
@optional {limit: int=5, offset: int, botCategory: str(SEARCH_ENGINE_CRAWLER/SEARCH_ENGINE_OPTIMIZATION/MONITORING_AND_ANALYTICS/ADVERTISING_AND_MARKETING/SOCIAL_MEDIA_MARKETING/PAGE_PREVIEW/ACADEMIC_RESEARCH/SECURITY/ACCESSIBILITY/WEBHOOKS/FEED_FETCHER/AI_CRAWLER/AGGREGATOR/AI_ASSISTANT/AI_SEARCH/ARCHIVER), botOperator: str, kind: str(AGENT/BOT), botVerificationStatus: str, format: str(JSON/CSV)}
@returns(200) {result: map{bots: [map]}, success: bool}
@errors {400}

@endpoint GET /radar/bots/crawlers/summary/{dimension}
@required {dimension: str(CLIENT_TYPE/USER_AGENT/REFERER/CRAWL_REFER_RATIO/VERTICAL/INDUSTRY/RESPONSE_STATUS/RESPONSE_STATUS_CATEGORY)}
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], limitPerGroup: int, botOperator: [str], vertical: [str], industry: [str], clientType: [str], responseStatus: [str], responseStatusCategory: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map}, success: bool}
@errors {400}

@endpoint GET /radar/bots/crawlers/timeseries_groups/{dimension}
@required {dimension: str(CLIENT_TYPE/USER_AGENT/REFERER/CRAWL_REFER_RATIO/VERTICAL/INDUSTRY/RESPONSE_STATUS/RESPONSE_STATUS_CATEGORY)}
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], limitPerGroup: int, normalization: str(PERCENTAGE/MIN0_MAX/PERCENTAGE_CHANGE)=PERCENTAGE, botOperator: [str], vertical: [str], industry: [str], clientType: [str], responseStatus: [str], responseStatusCategory: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{timestamps: [str(date-time)]}}, success: bool}
@errors {400}

@endpoint GET /radar/bots/summary/{dimension}
@required {dimension: str(BOT/BOT_KIND/BOT_OPERATOR/BOT_CATEGORY)}
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], limitPerGroup: int, bot: [str], botOperator: [str], botCategory: [str], botKind: [str], botVerificationStatus: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map}, success: bool}
@errors {400}

@endpoint GET /radar/bots/timeseries
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], bot: [str], botOperator: [str], botCategory: [str], botKind: [str], botVerificationStatus: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}}, success: bool}
@errors {400}

@endpoint GET /radar/bots/timeseries_groups/{dimension}
@required {dimension: str(BOT/BOT_KIND/BOT_OPERATOR/BOT_CATEGORY)}
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], limitPerGroup: int, bot: [str], botOperator: [str], botCategory: [str], botKind: [str], botVerificationStatus: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{timestamps: [str(date-time)]}}, success: bool}
@errors {400}

@endpoint GET /radar/bots/{bot_slug}
@required {bot_slug: str}
@optional {format: str(JSON/CSV)}
@returns(200) {result: map{bot: map{category: str, description: str, kind: str, name: str, operator: str, operatorUrl: str, signatureAgentUrl: str?, slug: str, userAgentPatterns: [str], userAgents: [str]}}, success: bool}
@errors {404}

@endpoint GET /radar/ct/authorities
@optional {limit: int=5, offset: int, format: str(JSON/CSV)}
@returns(200) {result: map{certificateAuthorities: [map]}, success: bool}
@errors {400}

@endpoint GET /radar/ct/authorities/{ca_slug}
@required {ca_slug: str}
@optional {format: str(JSON/CSV)}
@returns(200) {result: map{certificateAuthority: map{appleStatus: str, authorityKeyIdentifier: str, certificateRecordType: str, chromeStatus: str, country: str, countryName: str, microsoftStatus: str, mozillaStatus: str, name: str, owner: str, parentName: str, parentSha256Fingerprint: str, related: [map], revocationStatus: str, sha256Fingerprint: str, subjectKeyIdentifier: str, validFrom: str(date), validTo: str(date)}}, success: bool}
@errors {404}

@endpoint GET /radar/ct/logs
@optional {limit: int=5, offset: int, format: str(JSON/CSV)}
@returns(200) {result: map{certificateLogs: [map]}, success: bool}
@errors {400}

@endpoint GET /radar/ct/logs/{log_slug}
@required {log_slug: str}
@optional {format: str(JSON/CSV)}
@returns(200) {result: map{certificateLog: map{api: str, avgThroughput: num, description: str, endExclusive: str(date-time), lastUpdate: str(date-time), operator: str, performance: map?{endpoints: [map], responseTime: num, uptime: num}, related: [map], slug: str, startInclusive: str(date-time), state: str, stateTimestamp: str(date-time), submittableCertCount: str?, submittedCertCount: str?, url: str}}, success: bool}
@errors {404}

@endpoint GET /radar/ct/summary/{dimension}
@required {dimension: str(CA/CA_OWNER/DURATION/ENTRY_TYPE/EXPIRATION_STATUS/HAS_IPS/HAS_WILDCARDS/LOG/LOG_API/LOG_OPERATOR/PUBLIC_KEY_ALGORITHM/SIGNATURE_ALGORITHM/TLD/VALIDATION_LEVEL)}
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], limitPerGroup: int, ca: [str], caOwner: [str], duration: [str], entryType: [str], expirationStatus: [str], hasIps: [bool], hasWildcards: [bool], log: [str], logApi: [str], logOperator: [str], publicKeyAlgorithm: [str], signatureAlgorithm: [str], tld: [str], validationLevel: [str], uniqueEntries: [str], normalization: str(RAW_VALUES/PERCENTAGE)=RAW_VALUES, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: any}, success: bool}
@errors {400}

@endpoint GET /radar/ct/timeseries
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], ca: [str], caOwner: [str], duration: [str], entryType: [str], expirationStatus: [str], hasIps: [bool], hasWildcards: [bool], log: [str], logApi: [str], logOperator: [str], publicKeyAlgorithm: [str], signatureAlgorithm: [str], tld: [str], validationLevel: [str], uniqueEntries: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}}, success: bool}
@errors {400}

@endpoint GET /radar/ct/timeseries_groups/{dimension}
@required {dimension: str(CA/CA_OWNER/DURATION/ENTRY_TYPE/EXPIRATION_STATUS/HAS_IPS/HAS_WILDCARDS/LOG/LOG_API/LOG_OPERATOR/PUBLIC_KEY_ALGORITHM/SIGNATURE_ALGORITHM/TLD/VALIDATION_LEVEL)}
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], limitPerGroup: int, ca: [str], caOwner: [str], duration: [str], entryType: [str], expirationStatus: [str], hasIps: [bool], hasWildcards: [bool], log: [str], logApi: [str], logOperator: [str], publicKeyAlgorithm: [str], signatureAlgorithm: [str], validationLevel: [str], tld: [str], normalization: str(RAW_VALUES/PERCENTAGE)=RAW_VALUES, uniqueEntries: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: any}, success: bool}
@errors {400}

@endpoint GET /radar/datasets
@optional {limit: int=5, offset: int, datasetType: str(RANKING_BUCKET/REPORT)=RANKING_BUCKET, date: str(date), format: str(JSON/CSV)}
@returns(200) {result: map{datasets: [map]}, success: bool}
@errors {400}

@endpoint POST /radar/datasets/download
@required {datasetId: int}
@optional {format: str(JSON/CSV)}
@returns(200) {result: map{dataset: map{url: str}}}
@errors {400}

@endpoint GET /radar/datasets/{alias}
@required {alias: str}
@returns(200)
@errors {400}

@endpoint GET /radar/dns/summary/cache_hit
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], tld: [str], queryType: [str], protocol: [str], responseCode: [str], nodata: [bool]=true, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map{NEGATIVE: str, POSITIVE: str}}, success: bool}
@errors {400}

@endpoint GET /radar/dns/summary/dnssec
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], tld: [str], queryType: [str], protocol: [str], responseCode: [str], nodata: [bool]=true, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map{INSECURE: str, INVALID: str, OTHER: str, SECURE: str}}, success: bool}
@errors {400}

@endpoint GET /radar/dns/summary/dnssec_aware
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], tld: [str], queryType: [str], protocol: [str], responseCode: [str], nodata: [bool]=true, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map{NOT_SUPPORTED: str, SUPPORTED: str}}, success: bool}
@errors {400}

@endpoint GET /radar/dns/summary/dnssec_e2e
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], tld: [str], queryType: [str], protocol: [str], responseCode: [str], nodata: [bool]=true, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map{NEGATIVE: str, POSITIVE: str}}, success: bool}
@errors {400}

@endpoint GET /radar/dns/summary/ip_version
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], tld: [str], queryType: [str], protocol: [str], responseCode: [str], nodata: [bool]=true, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map{IPv4: str, IPv6: str}}, success: bool}
@errors {400}

@endpoint GET /radar/dns/summary/matching_answer
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], tld: [str], queryType: [str], protocol: [str], responseCode: [str], nodata: [bool]=true, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map{NEGATIVE: str, POSITIVE: str}}, success: bool}
@errors {400}

@endpoint GET /radar/dns/summary/protocol
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], tld: [str], queryType: [str], responseCode: [str], nodata: [bool]=true, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map{HTTPS: str, TCP: str, TLS: str, UDP: str}}, success: bool}
@errors {400}

@endpoint GET /radar/dns/summary/query_type
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], tld: [str], protocol: [str], responseCode: [str], nodata: [bool]=true, limitPerGroup: int, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map}, success: bool}
@errors {400}

@endpoint GET /radar/dns/summary/response_code
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], tld: [str], queryType: [str], protocol: [str], nodata: [bool]=true, limitPerGroup: int, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map}, success: bool}
@errors {400}

@endpoint GET /radar/dns/summary/response_ttl
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], tld: [str], queryType: [str], protocol: [str], responseCode: [str], nodata: [bool]=true, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map{gt_15m_lte_1h: str, gt_1d_lte_1w: str, gt_1h_lte_1d: str, gt_1m_lte_5m: str, gt_1w: str, gt_5m_lte_15m: str, lte_1m: str}}, success: bool}
@errors {400}

@endpoint GET /radar/dns/summary/{dimension}
@required {dimension: str(AS/CACHE_HIT/DNSSEC/DNSSEC_AWARE/DNSSEC_E2E/IP_VERSION/LOCATION/MATCHING_ANSWER/PROTOCOL/QUERY_TYPE/RESPONSE_CODE/RESPONSE_TTL/TLD/TLD_DNS_MAGNITUDE)}
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], cacheHit: [bool], nodata: [bool]=true, protocol: [str], queryType: [str], responseCode: [str], responseTtl: [str], dnssec: [str], dnssecAware: [str], dnssecE2e: [bool], ipVersion: [str], limitPerGroup: int, matchingAnswer: [bool], tld: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map}, success: bool}
@errors {400}

@endpoint GET /radar/dns/timeseries
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], cacheHit: [bool], nodata: [bool]=true, protocol: [str], queryType: [str], responseCode: [str], responseTtl: [str], dnssec: [str], dnssecAware: [str], dnssecE2e: [bool], ipVersion: [str], matchingAnswer: [bool], tld: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}}, success: bool}
@errors {400}

@endpoint GET /radar/dns/timeseries_groups/cache_hit
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], tld: [str], queryType: [str], protocol: [str], responseCode: [str], nodata: [bool]=true, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{NEGATIVE: [str], POSITIVE: [str]}}, success: bool}
@errors {400}

@endpoint GET /radar/dns/timeseries_groups/dnssec
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], tld: [str], queryType: [str], protocol: [str], responseCode: [str], nodata: [bool]=true, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{INSECURE: [str], INVALID: [str], OTHER: [str], SECURE: [str]}}, success: bool}
@errors {400}

@endpoint GET /radar/dns/timeseries_groups/dnssec_aware
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], tld: [str], queryType: [str], protocol: [str], responseCode: [str], nodata: [bool]=true, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{NOT_SUPPORTED: [str], SUPPORTED: [str]}}, success: bool}
@errors {400}

@endpoint GET /radar/dns/timeseries_groups/dnssec_e2e
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], tld: [str], queryType: [str], protocol: [str], responseCode: [str], nodata: [bool]=true, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{NEGATIVE: [str], POSITIVE: [str]}}, success: bool}
@errors {400}

@endpoint GET /radar/dns/timeseries_groups/ip_version
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], tld: [str], queryType: [str], protocol: [str], responseCode: [str], nodata: [bool]=true, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{IPv4: [str], IPv6: [str]}}, success: bool}
@errors {400}

@endpoint GET /radar/dns/timeseries_groups/matching_answer
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], tld: [str], queryType: [str], protocol: [str], responseCode: [str], nodata: [bool]=true, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{NEGATIVE: [str], POSITIVE: [str]}}, success: bool}
@errors {400}

@endpoint GET /radar/dns/timeseries_groups/protocol
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], tld: [str], queryType: [str], responseCode: [str], nodata: [bool]=true, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{HTTPS: [str], TCP: [str], TLS: [str], UDP: [str]}}, success: bool}
@errors {400}

@endpoint GET /radar/dns/timeseries_groups/query_type
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], tld: [str], protocol: [str], responseCode: [str], nodata: [bool]=true, limitPerGroup: int, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{timestamps: [str(date-time)]}}, success: bool}
@errors {400}

@endpoint GET /radar/dns/timeseries_groups/response_code
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], tld: [str], queryType: [str], protocol: [str], nodata: [bool]=true, limitPerGroup: int, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{timestamps: [str(date-time)]}}, success: bool}
@errors {400}

@endpoint GET /radar/dns/timeseries_groups/response_ttl
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], tld: [str], queryType: [str], protocol: [str], responseCode: [str], nodata: [bool]=true, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{gt_15m_lte_1h: [str], gt_1d_lte_1w: [str], gt_1h_lte_1d: [str], gt_1m_lte_5m: [str], gt_1w: [str], gt_5m_lte_15m: [str], lte_1m: [str]}}, success: bool}
@errors {400}

@endpoint GET /radar/dns/timeseries_groups/{dimension}
@required {dimension: str(AS/CACHE_HIT/DNSSEC/DNSSEC_AWARE/DNSSEC_E2E/IP_VERSION/LOCATION/MATCHING_ANSWER/PROTOCOL/QUERY_TYPE/RESPONSE_CODE/RESPONSE_TTL/TLD/TLD_DNS_MAGNITUDE)}
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], cacheHit: [bool], nodata: [bool]=true, protocol: [str], queryType: [str], responseCode: [str], responseTtl: [str], dnssec: [str], dnssecAware: [str], dnssecE2e: [bool], ipVersion: [str], limitPerGroup: int, matchingAnswer: [bool], tld: [str], normalization: str(PERCENTAGE/MIN0_MAX/RANK)=PERCENTAGE, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{timestamps: [str(date-time)]}}, success: bool}
@errors {400}

@endpoint GET /radar/dns/top/ases
@optional {limit: int=5, name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], domain: [str], cacheHit: [bool], nodata: [bool]=true, protocol: [str], queryType: [str], responseCode: [str], responseTtl: [str], dnssec: [str], dnssecAware: [str], dnssecE2e: [bool], ipVersion: [str], matchingAnswer: [bool], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map?{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, top_0: [map]}, success: bool}
@errors {404}

@endpoint GET /radar/dns/top/locations
@optional {limit: int=5, name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], domain: [str], cacheHit: [bool], nodata: [bool]=true, protocol: [str], queryType: [str], responseCode: [str], responseTtl: [str], dnssec: [str], dnssecAware: [str], dnssecE2e: [bool], ipVersion: [str], matchingAnswer: [bool], tld: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map?{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, top_0: [map]}, success: bool}
@errors {404}

@endpoint GET /radar/email/routing/summary/arc
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], dkim: [str], dmarc: [str], spf: [str], ipVersion: [str], encrypted: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map{FAIL: str, NONE: str, PASS: str}}, success: bool}
@errors {400}

@endpoint GET /radar/email/routing/summary/dkim
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], arc: [str], dmarc: [str], spf: [str], ipVersion: [str], encrypted: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map{FAIL: str, NONE: str, PASS: str}}, success: bool}
@errors {400}

@endpoint GET /radar/email/routing/summary/dmarc
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], arc: [str], dkim: [str], spf: [str], ipVersion: [str], encrypted: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map{FAIL: str, NONE: str, PASS: str}}, success: bool}
@errors {400}

@endpoint GET /radar/email/routing/summary/encrypted
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], arc: [str], dkim: [str], dmarc: [str], spf: [str], ipVersion: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map{ENCRYPTED: str, NOT_ENCRYPTED: str}}, success: bool}
@errors {400}

@endpoint GET /radar/email/routing/summary/ip_version
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], arc: [str], dkim: [str], dmarc: [str], spf: [str], encrypted: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map{IPv4: str, IPv6: str}}, success: bool}
@errors {400}

@endpoint GET /radar/email/routing/summary/spf
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], arc: [str], dkim: [str], dmarc: [str], ipVersion: [str], encrypted: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map{FAIL: str, NONE: str, PASS: str}}, success: bool}
@errors {400}

@endpoint GET /radar/email/routing/summary/{dimension}
@required {dimension: str(IP_VERSION/ENCRYPTED/ARC/DKIM/DMARC/SPF)}
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], arc: [str], dkim: [str], dmarc: [str], spf: [str], ipVersion: [str], encrypted: [str], limitPerGroup: int, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map}, success: bool}
@errors {400}

@endpoint GET /radar/email/routing/timeseries_groups/arc
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], dkim: [str], dmarc: [str], spf: [str], ipVersion: [str], encrypted: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{FAIL: [str], NONE: [str], PASS: [str]}}, success: bool}
@errors {400}

@endpoint GET /radar/email/routing/timeseries_groups/dkim
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], arc: [str], dmarc: [str], spf: [str], ipVersion: [str], encrypted: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{FAIL: [str], NONE: [str], PASS: [str]}}, success: bool}
@errors {400}

@endpoint GET /radar/email/routing/timeseries_groups/dmarc
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], arc: [str], dkim: [str], spf: [str], ipVersion: [str], encrypted: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{FAIL: [str], NONE: [str], PASS: [str]}}, success: bool}
@errors {400}

@endpoint GET /radar/email/routing/timeseries_groups/encrypted
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], arc: [str], dkim: [str], dmarc: [str], spf: [str], ipVersion: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{ENCRYPTED: [str], NOT_ENCRYPTED: [str]}}, success: bool}
@errors {400}

@endpoint GET /radar/email/routing/timeseries_groups/ip_version
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], arc: [str], dkim: [str], dmarc: [str], spf: [str], encrypted: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{IPv4: [str], IPv6: [str]}}, success: bool}
@errors {400}

@endpoint GET /radar/email/routing/timeseries_groups/spf
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], arc: [str], dkim: [str], dmarc: [str], ipVersion: [str], encrypted: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{FAIL: [str], NONE: [str], PASS: [str]}}, success: bool}
@errors {400}

@endpoint GET /radar/email/routing/timeseries_groups/{dimension}
@required {dimension: str(IP_VERSION/ENCRYPTED/ARC/DKIM/DMARC/SPF)}
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], arc: [str], dkim: [str], dmarc: [str], spf: [str], ipVersion: [str], encrypted: [str], limitPerGroup: int, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{timestamps: [str(date-time)]}}, success: bool}
@errors {400}

@endpoint GET /radar/email/security/summary/arc
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], dkim: [str], dmarc: [str], spf: [str], tlsVersion: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map{FAIL: str, NONE: str, PASS: str}}, success: bool}
@errors {400}

@endpoint GET /radar/email/security/summary/dkim
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], arc: [str], dmarc: [str], spf: [str], tlsVersion: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map{FAIL: str, NONE: str, PASS: str}}, success: bool}
@errors {400}

@endpoint GET /radar/email/security/summary/dmarc
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], arc: [str], dkim: [str], spf: [str], tlsVersion: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map{FAIL: str, NONE: str, PASS: str}}, success: bool}
@errors {400}

@endpoint GET /radar/email/security/summary/malicious
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], arc: [str], dkim: [str], dmarc: [str], spf: [str], tlsVersion: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map{MALICIOUS: str, NOT_MALICIOUS: str}}, success: bool}
@errors {400}

@endpoint GET /radar/email/security/summary/spam
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], arc: [str], dkim: [str], dmarc: [str], spf: [str], tlsVersion: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map{NOT_SPAM: str, SPAM: str}}, success: bool}
@errors {400}

@endpoint GET /radar/email/security/summary/spf
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], arc: [str], dkim: [str], dmarc: [str], tlsVersion: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map{FAIL: str, NONE: str, PASS: str}}, success: bool}
@errors {400}

@endpoint GET /radar/email/security/summary/spoof
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], arc: [str], dkim: [str], dmarc: [str], spf: [str], tlsVersion: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map{NOT_SPOOF: str, SPOOF: str}}, success: bool}
@errors {400}

@endpoint GET /radar/email/security/summary/threat_category
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], arc: [str], dkim: [str], dmarc: [str], spf: [str], tlsVersion: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map{BrandImpersonation: str, CredentialHarvester: str, IdentityDeception: str, Link: str}}, success: bool}
@errors {400}

@endpoint GET /radar/email/security/summary/tls_version
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], arc: [str], dkim: [str], dmarc: [str], spf: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map{TLS 1.0: str, TLS 1.1: str, TLS 1.2: str, TLS 1.3: str}}, success: bool}
@errors {400}

@endpoint GET /radar/email/security/summary/{dimension}
@required {dimension: str(SPAM/MALICIOUS/SPOOF/THREAT_CATEGORY/ARC/DKIM/DMARC/SPF/TLS_VERSION)}
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], arc: [str], dkim: [str], dmarc: [str], spf: [str], tlsVersion: [str], limitPerGroup: int, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map}, success: bool}
@errors {400}

@endpoint GET /radar/email/security/timeseries_groups/arc
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], dkim: [str], dmarc: [str], spf: [str], tlsVersion: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{FAIL: [str], NONE: [str], PASS: [str]}}, success: bool}
@errors {400}

@endpoint GET /radar/email/security/timeseries_groups/dkim
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], arc: [str], dmarc: [str], spf: [str], tlsVersion: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{FAIL: [str], NONE: [str], PASS: [str]}}, success: bool}
@errors {400}

@endpoint GET /radar/email/security/timeseries_groups/dmarc
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], arc: [str], dkim: [str], spf: [str], tlsVersion: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{FAIL: [str], NONE: [str], PASS: [str]}}, success: bool}
@errors {400}

@endpoint GET /radar/email/security/timeseries_groups/malicious
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], arc: [str], dkim: [str], dmarc: [str], spf: [str], tlsVersion: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{MALICIOUS: [str], NOT_MALICIOUS: [str]}}, success: bool}
@errors {400}

@endpoint GET /radar/email/security/timeseries_groups/spam
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], arc: [str], dkim: [str], dmarc: [str], spf: [str], tlsVersion: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{NOT_SPAM: [str], SPAM: [str]}}, success: bool}
@errors {400}

@endpoint GET /radar/email/security/timeseries_groups/spf
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], arc: [str], dkim: [str], dmarc: [str], tlsVersion: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{FAIL: [str], NONE: [str], PASS: [str]}}, success: bool}
@errors {400}

@endpoint GET /radar/email/security/timeseries_groups/spoof
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], arc: [str], dkim: [str], dmarc: [str], spf: [str], tlsVersion: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{NOT_SPOOF: [str], SPOOF: [str]}}, success: bool}
@errors {400}

@endpoint GET /radar/email/security/timeseries_groups/threat_category
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], arc: [str], dkim: [str], dmarc: [str], spf: [str], tlsVersion: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{BrandImpersonation: [str], CredentialHarvester: [str], IdentityDeception: [str], Link: [str]}}, success: bool}
@errors {400}

@endpoint GET /radar/email/security/timeseries_groups/tls_version
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], arc: [str], dkim: [str], dmarc: [str], spf: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{TLS 1.0: [str], TLS 1.1: [str], TLS 1.2: [str], TLS 1.3: [str]}}, success: bool}
@errors {400}

@endpoint GET /radar/email/security/timeseries_groups/{dimension}
@required {dimension: str(SPAM/MALICIOUS/SPOOF/THREAT_CATEGORY/ARC/DKIM/DMARC/SPF/TLS_VERSION)}
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], arc: [str], dkim: [str], dmarc: [str], spf: [str], tlsVersion: [str], limitPerGroup: int, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{timestamps: [str(date-time)]}}, success: bool}
@errors {400}

@endpoint GET /radar/email/security/top/tlds
@optional {limit: int=5, name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], arc: [str], dkim: [str], dmarc: [str], spf: [str], tlsVersion: [str], tldCategory: str(CLASSIC/COUNTRY), format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map?{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, top_0: [map]}, success: bool}
@errors {404}

@endpoint GET /radar/email/security/top/tlds/malicious/{malicious}
@required {malicious: str(MALICIOUS/NOT_MALICIOUS)}
@optional {limit: int=5, name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], arc: [str], dkim: [str], dmarc: [str], spf: [str], tlsVersion: [str], tldCategory: str(CLASSIC/COUNTRY), format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map?{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, top_0: [map]}, success: bool}
@errors {404}

@endpoint GET /radar/email/security/top/tlds/spam/{spam}
@required {spam: str(SPAM/NOT_SPAM)}
@optional {limit: int=5, name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], arc: [str], dkim: [str], dmarc: [str], spf: [str], tlsVersion: [str], tldCategory: str(CLASSIC/COUNTRY), format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map?{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, top_0: [map]}, success: bool}
@errors {404}

@endpoint GET /radar/email/security/top/tlds/spoof/{spoof}
@required {spoof: str(SPOOF/NOT_SPOOF)}
@optional {limit: int=5, name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], arc: [str], dkim: [str], dmarc: [str], spf: [str], tlsVersion: [str], tldCategory: str(CLASSIC/COUNTRY), format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map?{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, top_0: [map]}, success: bool}
@errors {404}

@endpoint GET /radar/entities/asns
@optional {limit: int=5, offset: int, asn: str, location: str, orderBy: str(ASN/POPULATION)=ASN, format: str(JSON/CSV)}
@returns(200) {result: map{asns: [map]}, success: bool}
@errors {400}

@endpoint GET /radar/entities/asns/botnet_threat_feed
@optional {limit: int=5, offset: int, metric: str(OFFENSE_COUNT/NUMBER_OF_OFFENDING_IPS)=NUMBER_OF_OFFENDING_IPS, date: str(date), compareDateRange: str, location: str, asn: [str], sortOrder: str(ASC/DESC), format: str(JSON/CSV)}
@returns(200) {result: map{ases: [map], meta: map{compareDate: str, date: str, total: int}}, success: bool}
@errors {400}

@endpoint GET /radar/entities/asns/ip
@required {ip: any}
@optional {format: str(JSON/CSV)}
@returns(200) {result: map{asn: map{aka: str, asn: int, country: str, countryName: str, estimatedUsers: map{estimatedUsers: int, locations: [map]}, name: str, orgName: str, related: [map], source: str, website: str}}, success: bool}
@errors {404}

@endpoint GET /radar/entities/asns/{asn}
@required {asn: int}
@optional {format: str(JSON/CSV)}
@returns(200) {result: map{asn: map{aka: str, asn: int, confidenceLevel: int, country: str, countryName: str, estimatedUsers: map{estimatedUsers: int, locations: [map]}, name: str, orgName: str, related: [map], source: str, website: str}}, success: bool}
@errors {404}

@endpoint GET /radar/entities/asns/{asn}/as_set
@required {asn: int}
@optional {format: str(JSON/CSV)}
@returns(200) {result: map{as_sets: [map], paths: [[str]]}, success: bool}
@errors {400}

@endpoint GET /radar/entities/asns/{asn}/rel
@required {asn: int}
@optional {asn2: int, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{data_time: str, query_time: str, total_peers: int}, rels: [map]}, success: bool}
@errors {400}

@endpoint GET /radar/entities/ip
@required {ip: any}
@optional {format: str(JSON/CSV)}
@returns(200) {result: map{ip: map{asn: str, asnLocation: str, asnName: str, asnOrgName: str, ip: str, ipVersion: str, location: str, locationName: str}}, success: bool}
@errors {404}

@endpoint GET /radar/entities/locations
@optional {limit: int=5, offset: int, location: str, region: str, subregion: str, continent: str(AF/AS/EU/NA/OC/SA), format: str(JSON/CSV)}
@returns(200) {result: map{locations: [map]}, success: bool}
@errors {400}

@endpoint GET /radar/entities/locations/{location}
@required {location: str}
@optional {format: str(JSON/CSV)}
@returns(200) {result: map{location: map{alpha2: str, confidenceLevel: int, continent: str, latitude: str, longitude: str, name: str, region: str, subregion: str}}, success: bool}
@errors {404}

@endpoint GET /radar/geolocations
@optional {limit: int=5, offset: int, geoId: str, location: str, format: str(JSON/CSV)}
@returns(200) {result: map{geolocations: [map]}, success: bool}
@errors {400}

@endpoint GET /radar/geolocations/{geo_id}
@required {geo_id: str}
@optional {format: str(JSON/CSV)}
@returns(200) {result: map{geolocation: map{code: str, geoId: str, latitude: str, locale: str, longitude: str, name: str, parent: map{code: str, geoId: str, latitude: str, locale: str, longitude: str, name: str, parent: map, type: str}, type: str}}, success: bool}
@errors {404}

@endpoint GET /radar/http/summary/bot_class
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], geoId: [str], deviceType: [str], httpProtocol: [str], httpVersion: [str], ipVersion: [str], os: [str], tlsVersion: [str], browserFamily: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map{bot: str, human: str}}, success: bool}
@errors {400}

@endpoint GET /radar/http/summary/device_type
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], geoId: [str], botClass: [str], httpProtocol: [str], httpVersion: [str], ipVersion: [str], os: [str], tlsVersion: [str], browserFamily: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map{desktop: str, mobile: str, other: str}}, success: bool}
@errors {400}

@endpoint GET /radar/http/summary/http_protocol
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], geoId: [str], botClass: [str], deviceType: [str], httpVersion: [str], ipVersion: [str], os: [str], tlsVersion: [str], browserFamily: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map{http: str, https: str}}, success: bool}
@errors {400}

@endpoint GET /radar/http/summary/http_version
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], geoId: [str], botClass: [str], deviceType: [str], httpProtocol: [str], ipVersion: [str], os: [str], tlsVersion: [str], browserFamily: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map{HTTP/1.x: str, HTTP/2: str, HTTP/3: str}}, success: bool}
@errors {400}

@endpoint GET /radar/http/summary/ip_version
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], geoId: [str], botClass: [str], deviceType: [str], httpProtocol: [str], httpVersion: [str], os: [str], tlsVersion: [str], browserFamily: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map{IPv4: str, IPv6: str}}, success: bool}
@errors {400}

@endpoint GET /radar/http/summary/os
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], geoId: [str], botClass: [str], deviceType: [str], httpProtocol: [str], httpVersion: [str], ipVersion: [str], tlsVersion: [str], browserFamily: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map{ANDROID: str, IOS: str}}, success: bool}
@errors {400}

@endpoint GET /radar/http/summary/post_quantum
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], geoId: [str], botClass: [str], deviceType: [str], httpProtocol: [str], httpVersion: [str], ipVersion: [str], os: [str], tlsVersion: [str], browserFamily: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map{NOT_SUPPORTED: str, SUPPORTED: str}}, success: bool}
@errors {400}

@endpoint GET /radar/http/summary/tls_version
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], geoId: [str], botClass: [str], deviceType: [str], httpProtocol: [str], httpVersion: [str], ipVersion: [str], os: [str], browserFamily: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map{TLS 1.0: str, TLS 1.1: str, TLS 1.2: str, TLS 1.3: str, TLS QUIC: str}}, success: bool}
@errors {400}

@endpoint GET /radar/http/summary/{dimension}
@required {dimension: str(ADM1/API_TRAFFIC/AS/BOT_CLASS/BROWSER/BROWSER_FAMILY/CONTENT_TYPE/DEVICE_TYPE/HTTP_PROTOCOL/HTTP_VERSION/IP_VERSION/LOCATION/OS/POST_QUANTUM/TLS_VERSION)}
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], geoId: [str], apiTraffic: [str], botClass: [str], contentType: [str], deviceType: [str], httpProtocol: [str], httpVersion: [str], ipVersion: [str], os: [str], tlsVersion: [str], limitPerGroup: int, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map}, success: bool}
@errors {400}

@endpoint GET /radar/http/timeseries
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], geoId: [str], normalization: str(PERCENTAGE_CHANGE/MIN0_MAX), apiTraffic: [str], botClass: [str], contentType: [str], deviceType: [str], httpProtocol: [str], httpVersion: [str], ipVersion: [str], os: [str], tlsVersion: [str], browserFamily: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}}, success: bool}
@errors {400}

@endpoint GET /radar/http/timeseries_groups/bot_class
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], geoId: [str], deviceType: [str], httpProtocol: [str], httpVersion: [str], ipVersion: [str], os: [str], tlsVersion: [str], browserFamily: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{bot: [str], human: [str], timestamps: [str(date-time)]}}, success: bool}
@errors {400}

@endpoint GET /radar/http/timeseries_groups/browser
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], geoId: [str], botClass: [str], deviceType: [str], httpProtocol: [str], httpVersion: [str], ipVersion: [str], os: [str], tlsVersion: [str], browserFamily: [str], limitPerGroup: int, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{timestamps: [str(date-time)]}}, success: bool}
@errors {400}

@endpoint GET /radar/http/timeseries_groups/browser_family
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], geoId: [str], botClass: [str], deviceType: [str], httpProtocol: [str], httpVersion: [str], ipVersion: [str], os: [str], tlsVersion: [str], limitPerGroup: int, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{timestamps: [str(date-time)]}}, success: bool}
@errors {400}

@endpoint GET /radar/http/timeseries_groups/device_type
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], geoId: [str], botClass: [str], httpProtocol: [str], httpVersion: [str], ipVersion: [str], os: [str], tlsVersion: [str], browserFamily: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{desktop: [str], mobile: [str], other: [str], timestamps: [str(date-time)]}}, success: bool}
@errors {400}

@endpoint GET /radar/http/timeseries_groups/http_protocol
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], geoId: [str], botClass: [str], deviceType: [str], httpVersion: [str], ipVersion: [str], os: [str], tlsVersion: [str], browserFamily: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{http: [str], https: [str], timestamps: [str(date-time)]}}, success: bool}
@errors {400}

@endpoint GET /radar/http/timeseries_groups/http_version
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], geoId: [str], botClass: [str], deviceType: [str], httpProtocol: [str], ipVersion: [str], os: [str], tlsVersion: [str], browserFamily: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{HTTP/1.x: [str], HTTP/2: [str], HTTP/3: [str], timestamps: [str(date-time)]}}, success: bool}
@errors {400}

@endpoint GET /radar/http/timeseries_groups/ip_version
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], geoId: [str], botClass: [str], deviceType: [str], httpProtocol: [str], httpVersion: [str], os: [str], tlsVersion: [str], browserFamily: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{IPv4: [str], IPv6: [str], timestamps: [str(date-time)]}}, success: bool}
@errors {400}

@endpoint GET /radar/http/timeseries_groups/os
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], geoId: [str], botClass: [str], deviceType: [str], httpProtocol: [str], httpVersion: [str], ipVersion: [str], tlsVersion: [str], browserFamily: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{timestamps: [str(date-time)]}}, success: bool}
@errors {400}

@endpoint GET /radar/http/timeseries_groups/post_quantum
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], geoId: [str], botClass: [str], deviceType: [str], httpProtocol: [str], httpVersion: [str], ipVersion: [str], os: [str], tlsVersion: [str], browserFamily: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{NOT_SUPPORTED: [str], SUPPORTED: [str], timestamps: [str(date-time)]}}, success: bool}
@errors {400}

@endpoint GET /radar/http/timeseries_groups/tls_version
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], geoId: [str], botClass: [str], deviceType: [str], httpProtocol: [str], httpVersion: [str], ipVersion: [str], os: [str], browserFamily: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{TLS 1.0: [str], TLS 1.1: [str], TLS 1.2: [str], TLS 1.3: [str], TLS QUIC: [str], timestamps: [str(date-time)]}}, success: bool}
@errors {400}

@endpoint GET /radar/http/timeseries_groups/{dimension}
@required {dimension: str(ADM1/API_TRAFFIC/AS/BOT_CLASS/BROWSER/BROWSER_FAMILY/CONTENT_TYPE/DEVICE_TYPE/HTTP_PROTOCOL/HTTP_VERSION/IP_VERSION/LOCATION/OS/POST_QUANTUM/TLS_VERSION)}
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], geoId: [str], apiTraffic: [str], botClass: [str], contentType: [str], limitPerGroup: int, deviceType: [str], httpProtocol: [str], httpVersion: [str], normalization: str(PERCENTAGE/MIN0_MAX)=PERCENTAGE, ipVersion: [str], os: [str], tlsVersion: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{timestamps: [str(date-time)]}}, success: bool}
@errors {400}

@endpoint GET /radar/http/top/ases
@optional {limit: int=5, name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], geoId: [str], botClass: [str], deviceType: [str], httpProtocol: [str], httpVersion: [str], ipVersion: [str], os: [str], tlsVersion: [str], browserFamily: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map?{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, top_0: [map]}, success: bool}
@errors {404}

@endpoint GET /radar/http/top/ases/bot_class/{bot_class}
@required {bot_class: str(LIKELY_AUTOMATED/LIKELY_HUMAN)}
@optional {limit: int=5, name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], geoId: [str], deviceType: [str], httpProtocol: [str], httpVersion: [str], ipVersion: [str], os: [str], tlsVersion: [str], browserFamily: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map?{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, top_0: [map]}, success: bool}
@errors {404}

@endpoint GET /radar/http/top/ases/browser_family/{browser_family}
@required {browser_family: str(CHROME/EDGE/FIREFOX/SAFARI)}
@optional {limit: int=5, name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], geoId: [str], botClass: [str], deviceType: [str], httpProtocol: [str], httpVersion: [str], ipVersion: [str], os: [str], tlsVersion: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map?{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, top_0: [map]}, success: bool}
@errors {404}

@endpoint GET /radar/http/top/ases/device_type/{device_type}
@required {device_type: str(DESKTOP/MOBILE/OTHER)}
@optional {limit: int=5, name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], geoId: [str], botClass: [str], httpProtocol: [str], httpVersion: [str], ipVersion: [str], os: [str], tlsVersion: [str], browserFamily: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map?{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, top_0: [map]}, success: bool}
@errors {404}

@endpoint GET /radar/http/top/ases/http_protocol/{http_protocol}
@required {http_protocol: str(HTTP/HTTPS)}
@optional {limit: int=5, name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], geoId: [str], botClass: [str], deviceType: [str], httpVersion: [str], ipVersion: [str], os: [str], tlsVersion: [str], browserFamily: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map?{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, top_0: [map]}, success: bool}
@errors {404}

@endpoint GET /radar/http/top/ases/http_version/{http_version}
@required {http_version: str(HTTPv1/HTTPv2/HTTPv3)}
@optional {limit: int=5, name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], geoId: [str], botClass: [str], deviceType: [str], httpProtocol: [str], ipVersion: [str], os: [str], tlsVersion: [str], browserFamily: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map?{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, top_0: [map]}, success: bool}
@errors {404}

@endpoint GET /radar/http/top/ases/ip_version/{ip_version}
@required {ip_version: str(IPv4/IPv6)}
@optional {limit: int=5, name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], geoId: [str], botClass: [str], deviceType: [str], httpProtocol: [str], httpVersion: [str], os: [str], tlsVersion: [str], browserFamily: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map?{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, top_0: [map]}, success: bool}
@errors {404}

@endpoint GET /radar/http/top/ases/os/{os}
@required {os: str(WINDOWS/MACOSX/IOS/ANDROID/CHROMEOS/LINUX/SMART_TV)}
@optional {limit: int=5, name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], geoId: [str], botClass: [str], deviceType: [str], httpProtocol: [str], httpVersion: [str], ipVersion: [str], tlsVersion: [str], browserFamily: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map?{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, top_0: [map]}, success: bool}
@errors {404}

@endpoint GET /radar/http/top/ases/tls_version/{tls_version}
@required {tls_version: str(TLSv1_0/TLSv1_1/TLSv1_2/TLSv1_3/TLSvQUIC)}
@optional {limit: int=5, name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], geoId: [str], botClass: [str], deviceType: [str], httpProtocol: [str], httpVersion: [str], ipVersion: [str], os: [str], browserFamily: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map?{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, top_0: [map]}, success: bool}
@errors {404}

@endpoint GET /radar/http/top/browser
@optional {limit: int=5, name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], geoId: [str], botClass: [str], deviceType: [str], httpProtocol: [str], httpVersion: [str], ipVersion: [str], os: [str], tlsVersion: [str], browserFamily: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map?{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, top_0: [map]}, success: bool}
@errors {404}

@endpoint GET /radar/http/top/browser_family
@optional {limit: int=5, name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], geoId: [str], botClass: [str], deviceType: [str], httpProtocol: [str], httpVersion: [str], ipVersion: [str], os: [str], tlsVersion: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map?{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, top_0: [map]}, success: bool}
@errors {404}

@endpoint GET /radar/http/top/locations
@optional {limit: int=5, name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], geoId: [str], botClass: [str], deviceType: [str], httpProtocol: [str], httpVersion: [str], ipVersion: [str], os: [str], tlsVersion: [str], browserFamily: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map?{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, top_0: [map]}, success: bool}
@errors {404}

@endpoint GET /radar/http/top/locations/bot_class/{bot_class}
@required {bot_class: str(LIKELY_AUTOMATED/LIKELY_HUMAN)}
@optional {limit: int=5, name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], geoId: [str], deviceType: [str], httpProtocol: [str], httpVersion: [str], ipVersion: [str], os: [str], tlsVersion: [str], browserFamily: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map?{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, top_0: [map]}, success: bool}
@errors {404}

@endpoint GET /radar/http/top/locations/browser_family/{browser_family}
@required {browser_family: str(CHROME/EDGE/FIREFOX/SAFARI)}
@optional {limit: int=5, name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], geoId: [str], botClass: [str], deviceType: [str], httpProtocol: [str], httpVersion: [str], ipVersion: [str], os: [str], tlsVersion: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map?{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, top_0: [map]}, success: bool}
@errors {404}

@endpoint GET /radar/http/top/locations/device_type/{device_type}
@required {device_type: str(DESKTOP/MOBILE/OTHER)}
@optional {limit: int=5, name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], geoId: [str], botClass: [str], httpProtocol: [str], httpVersion: [str], ipVersion: [str], os: [str], tlsVersion: [str], browserFamily: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map?{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, top_0: [map]}, success: bool}
@errors {404}

@endpoint GET /radar/http/top/locations/http_protocol/{http_protocol}
@required {http_protocol: str(HTTP/HTTPS)}
@optional {limit: int=5, name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], geoId: [str], botClass: [str], deviceType: [str], httpVersion: [str], ipVersion: [str], os: [str], tlsVersion: [str], browserFamily: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map?{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, top_0: [map]}, success: bool}
@errors {404}

@endpoint GET /radar/http/top/locations/http_version/{http_version}
@required {http_version: str(HTTPv1/HTTPv2/HTTPv3)}
@optional {limit: int=5, name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], geoId: [str], botClass: [str], deviceType: [str], httpProtocol: [str], ipVersion: [str], os: [str], tlsVersion: [str], browserFamily: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map?{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, top_0: [map]}, success: bool}
@errors {404}

@endpoint GET /radar/http/top/locations/ip_version/{ip_version}
@required {ip_version: str(IPv4/IPv6)}
@optional {limit: int=5, name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], geoId: [str], botClass: [str], deviceType: [str], httpProtocol: [str], httpVersion: [str], os: [str], tlsVersion: [str], browserFamily: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map?{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, top_0: [map]}, success: bool}
@errors {404}

@endpoint GET /radar/http/top/locations/os/{os}
@required {os: str(WINDOWS/MACOSX/IOS/ANDROID/CHROMEOS/LINUX/SMART_TV)}
@optional {limit: int=5, name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], geoId: [str], botClass: [str], deviceType: [str], httpProtocol: [str], httpVersion: [str], ipVersion: [str], tlsVersion: [str], browserFamily: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map?{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, top_0: [map]}, success: bool}
@errors {404}

@endpoint GET /radar/http/top/locations/tls_version/{tls_version}
@required {tls_version: str(TLSv1_0/TLSv1_1/TLSv1_2/TLSv1_3/TLSvQUIC)}
@optional {limit: int=5, name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], geoId: [str], botClass: [str], deviceType: [str], httpProtocol: [str], httpVersion: [str], ipVersion: [str], os: [str], browserFamily: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map?{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, top_0: [map]}, success: bool}
@errors {404}

@endpoint GET /radar/leaked_credential_checks/summary/bot_class
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], compromised: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map{bot: str, human: str}}, success: bool}
@errors {400}

@endpoint GET /radar/leaked_credential_checks/summary/compromised
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], botClass: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map{CLEAN: str, COMPROMISED: str}}, success: bool}
@errors {400}

@endpoint GET /radar/leaked_credential_checks/summary/{dimension}
@required {dimension: str(COMPROMISED/BOT_CLASS)}
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], botClass: [str], compromised: [str], limitPerGroup: int, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map}, success: bool}
@errors {400}

@endpoint GET /radar/leaked_credential_checks/timeseries_groups/bot_class
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], compromised: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{bot: [str], human: [str], timestamps: [str(date-time)]}}, success: bool}
@errors {400}

@endpoint GET /radar/leaked_credential_checks/timeseries_groups/compromised
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], botClass: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{CLEAN: [str], COMPROMISED: [str], timestamps: [str(date-time)]}}, success: bool}
@errors {400}

@endpoint GET /radar/leaked_credential_checks/timeseries_groups/{dimension}
@required {dimension: str(COMPROMISED/BOT_CLASS)}
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], botClass: [str], compromised: [str], checkResult: [str], limitPerGroup: int, normalization: str(PERCENTAGE_CHANGE/MIN0_MAX), format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{timestamps: [str(date-time)]}}, success: bool}
@errors {400}

@endpoint GET /radar/netflows/summary
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], geoId: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map{HTTP: str, OTHER: str}}, success: bool}
@errors {400}

@endpoint GET /radar/netflows/summary/{dimension}
@required {dimension: str(ADM1/AS/LOCATION/PRODUCT)}
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], geoId: [str], product: [str], limitPerGroup: int, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map}, success: bool}
@errors {400}

@endpoint GET /radar/netflows/timeseries
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], product: [str], asn: [str], location: [str], continent: [str], geoId: [str], normalization: str(PERCENTAGE_CHANGE/MIN0_MAX), format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{timestamps: [str(date-time)], values: [str]}}, success: bool}
@errors {400}

@endpoint GET /radar/netflows/timeseries_groups/{dimension}
@required {dimension: str(ADM1/AS/LOCATION/PRODUCT)}
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], geoId: [str], limitPerGroup: int, normalization: str(PERCENTAGE/MIN0_MAX/PERCENTAGE_CHANGE)=PERCENTAGE, product: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{timestamps: [str(date-time)]}}, success: bool}
@errors {400}

@endpoint GET /radar/netflows/top/ases
@optional {limit: int=5, name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], geoId: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map?{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, top_0: [map]}, success: bool}
@errors {404}

@endpoint GET /radar/netflows/top/locations
@optional {limit: int=5, name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], geoId: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map?{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, top_0: [map]}, success: bool}
@errors {404}

@endpoint GET /radar/origins
@optional {limit: int=5, offset: int, format: str(JSON/CSV)}
@returns(200) {result: map{origins: [map]}, success: bool}
@errors {400}

@endpoint GET /radar/origins/summary/{dimension}
@required {dimension: str(ORIGIN/REGION/SUCCESS_RATE/PERCENTILE), metric: str(CONNECTION_FAILURES/REQUESTS/RESPONSE_HEADER_RECEIVE_DURATION/TCP_HANDSHAKE_DURATION/TCP_RTT/TLS_HANDSHAKE_DURATION)}
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], limitPerGroup: int, origin: [str], region: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map}, success: bool}
@errors {400}

@endpoint GET /radar/origins/timeseries
@required {origin: [str], metric: str(CONNECTION_FAILURES/REQUESTS/RESPONSE_HEADER_RECEIVE_DURATION/TCP_HANDSHAKE_DURATION/TCP_RTT/TLS_HANDSHAKE_DURATION)}
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], region: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}}, success: bool}
@errors {400}

@endpoint GET /radar/origins/timeseries_groups/{dimension}
@required {dimension: str(ORIGIN/REGION/SUCCESS_RATE/PERCENTILE), metric: str(CONNECTION_FAILURES/REQUESTS/RESPONSE_HEADER_RECEIVE_DURATION/TCP_HANDSHAKE_DURATION/TCP_RTT/TLS_HANDSHAKE_DURATION)}
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], limitPerGroup: int, origin: [str], region: [str], normalization: str(PERCENTAGE/MIN0_MAX)=PERCENTAGE, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{timestamps: [str(date-time)]}}, success: bool}
@errors {400}

@endpoint GET /radar/origins/{slug}
@required {slug: str(AMAZON/GOOGLE/MICROSOFT/ORACLE)}
@optional {format: str(JSON/CSV)}
@returns(200) {result: map{origin: map{regions: [map], slug: str}}, success: bool}
@errors {404}

@endpoint GET /radar/post_quantum/origin/summary/{dimension}
@required {dimension: str}
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map}, success: bool}
@errors {400}

@endpoint GET /radar/post_quantum/origin/timeseries_groups/{dimension}
@required {dimension: str}
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{timestamps: [str(date-time)]}}, success: bool}
@errors {400}

@endpoint GET /radar/post_quantum/tls/support
@required {host: str}
@returns(200) {result: map{bugs: map{hrrFailure: bool, splitClientHello: bool, unknownKeyshare: bool}, host: str, kex: num, kexName: str, pq: bool}, success: bool}
@errors {400}

@endpoint GET /radar/quality/iqi/summary
@required {metric: str(BANDWIDTH/DNS/LATENCY)}
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map{p25: str, p50: str, p75: str}}, success: bool}
@errors {400}

@endpoint GET /radar/quality/iqi/timeseries_groups
@required {metric: str(BANDWIDTH/DNS/LATENCY)}
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], interpolation: bool, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{timestamps: [str(date-time)]}}, success: bool}
@errors {400}

@endpoint GET /radar/quality/speed/histogram
@optional {name: [str], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], bucketSize: int, metricGroup: str(BANDWIDTH/LATENCY/JITTER)=bandwidth, format: str(JSON/CSV)}
@returns(200) {result: map{histogram_0: map{bandwidthDownload: [str], bandwidthUpload: [str], bucketMin: [str]}, meta: map{bucketSize: int, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, totalTests: [int], units: [map]}}, success: bool}
@errors {400}

@endpoint GET /radar/quality/speed/summary
@optional {name: [str], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map{bandwidthDownload: str, bandwidthUpload: str, jitterIdle: str, jitterLoaded: str, latencyIdle: str, latencyLoaded: str, packetLoss: str}}, success: bool}
@errors {400}

@endpoint GET /radar/quality/speed/top/ases
@optional {limit: int=5, name: [str], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], orderBy: str(BANDWIDTH_DOWNLOAD/BANDWIDTH_UPLOAD/LATENCY_IDLE/LATENCY_LOADED/JITTER_IDLE/JITTER_LOADED)=BANDWIDTH_DOWNLOAD, reverse: bool, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map?{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, top_0: [map]}, success: bool}
@errors {404}

@endpoint GET /radar/quality/speed/top/locations
@optional {limit: int=5, name: [str], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], orderBy: str(BANDWIDTH_DOWNLOAD/BANDWIDTH_UPLOAD/LATENCY_IDLE/LATENCY_LOADED/JITTER_IDLE/JITTER_LOADED)=BANDWIDTH_DOWNLOAD, reverse: bool, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map?{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, top_0: [map]}, success: bool}
@errors {404}

@endpoint GET /radar/ranking/domain/{domain}
@required {domain: str}
@optional {limit: int=5, rankingType: str(POPULAR/TRENDING_RISE/TRENDING_STEADY)=POPULAR, name: [str], includeTopLocations: bool, date: [str(date)], format: str(JSON/CSV)}
@returns(200) {result: map{details_0: map{bucket: str, categories: [map], rank: int, top_locations: [map]}, meta: map{dateRange: [map]}}, success: bool}
@errors {400}

@endpoint GET /radar/ranking/internet_services/categories
@optional {limit: int, name: [str], date: [str(date)], format: str(JSON/CSV)}
@returns(200) {result: map{categories_0: [map]}, success: bool}
@errors {400}

@endpoint GET /radar/ranking/internet_services/timeseries_groups
@optional {serviceCategory: [str], limit: int=5, name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{timestamps: [str(date-time)]}}, success: bool}
@errors {400}

@endpoint GET /radar/ranking/internet_services/top
@optional {serviceCategory: [str], limit: int, name: [str], date: [str(date)], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map?{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, top_0: map{date: str(date), serviceCategory: str}, units: [map]}, top_0: [map]}, success: bool}
@errors {400}

@endpoint GET /radar/ranking/timeseries_groups
@optional {limit: int=5, rankingType: str(POPULAR/TRENDING_RISE/TRENDING_STEADY)=POPULAR, name: [str], location: [str], domains: [str], domainCategory: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{timestamps: [str(date-time)]}}, success: bool}
@errors {400}

@endpoint GET /radar/ranking/top
@optional {limit: int, name: [str], location: [str], domainCategory: [str], date: [str(date)], rankingType: str(POPULAR/TRENDING_RISE/TRENDING_STEADY)=POPULAR, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map?{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, top_0: map{date: str(date)}, units: [map]}, top_0: [map]}, success: bool}
@errors {400}

@endpoint GET /radar/robots_txt/top/domain_categories
@optional {limit: int=5, name: [str], userAgentCategory: str=AI, date: [str(date)], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map?{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, top_0: [map]}, success: bool}
@errors {404}

@endpoint GET /radar/robots_txt/top/user_agents/directive
@optional {limit: int=5, name: [str], userAgentCategory: str=AI, date: [str(date)], domainCategory: [str], directive: str(ALLOW/DISALLOW), format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map?{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, top_0: [map]}, success: bool}
@errors {404}

@endpoint GET /radar/search/global
@required {query: str}
@optional {limit: int=5, limitPerGroup: num, include: [str], exclude: [str], format: str(JSON/CSV)}
@returns(200) {result: map{search: [map]}, success: bool}
@errors {400}

@endpoint GET /radar/tcp_resets_timeouts/summary
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map{later_in_flow: str, no_match: str, post_ack: str, post_psh: str, post_syn: str}}, success: bool}
@errors {400}

@endpoint GET /radar/tcp_resets_timeouts/timeseries_groups
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{later_in_flow: [str], no_match: [str], post_ack: [str], post_psh: [str], post_syn: [str], timestamps: [str(date-time)]}}, success: bool}
@errors {400}

@endpoint GET /radar/tlds
@optional {limit: int=5, offset: int, tldManager: str, tldType: str(GENERIC/COUNTRY_CODE/GENERIC_RESTRICTED/INFRASTRUCTURE/SPONSORED), tld: str, format: str(JSON/CSV)}
@returns(200) {result: map{tlds: [map]}, success: bool}
@errors {400}

@endpoint GET /radar/tlds/performance/summary/{dimension}
@required {dimension: str(LATENCY/NAMESERVER_LATENCY/LOCATION_LATENCY)}
@optional {name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], location: [str], continent: [str], tld: [str], nameserver: str, limitPerGroup: int, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, summary_0: map}, success: bool}
@errors {400}

@endpoint GET /radar/tlds/performance/timeseries_groups/{dimension}
@required {dimension: str(LATENCY/NAMESERVER_LATENCY/LOCATION_LATENCY)}
@optional {aggInterval: str(15m/1h/1d/1w), name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], location: [str], continent: [str], tld: [str], nameserver: str, limitPerGroup: int, format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{aggInterval: str, confidenceInfo: map{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, serie_0: map{timestamps: [str(date-time)]}}, success: bool}
@errors {400}

@endpoint GET /radar/tlds/{tld}
@required {tld: str}
@optional {format: str(JSON/CSV)}
@returns(200) {result: map{tld: map{manager: str, tld: str, type: str}}, success: bool}
@errors {404}

@endpoint GET /radar/traffic_anomalies
@optional {limit: int=5, offset: int, dateRange: str, dateStart: str(date-time), dateEnd: str(date-time), status: str(VERIFIED/UNVERIFIED), type: [str], dataSource: str(ALL/AI_BOTS/AI_GATEWAY/BGP/BOTS/CONNECTION_ANOMALY/CT/DNS/DNS_MAGNITUDE/DNS_AS112/DOS/EMAIL_ROUTING/EMAIL_SECURITY/FW/FW_PG/HTTP/HTTP_CONTROL/HTTP_CRAWLER_REFERER/HTTP_ORIGINS/IQI/LEAKED_CREDENTIALS/NET/ROBOTS_TXT/SPEED/WORKERS_AI), asn: int, location: str, origin: str, format: str(JSON/CSV)}
@returns(200) {result: map{trafficAnomalies: [map]}, success: bool}
@errors {400}

@endpoint GET /radar/traffic_anomalies/locations
@optional {limit: int=5, dateRange: str, dateStart: str(date-time), dateEnd: str(date-time), status: str(VERIFIED/UNVERIFIED), format: str(JSON/CSV)}
@returns(200) {result: map{trafficAnomalies: [map]}, success: bool}
@errors {400}

@endpoint GET /radar/traffic_anomalies/{uuid}
@required {uuid: str}
@optional {format: str(JSON/CSV)}
@returns(200) {result: map{trafficAnomaly: map{asnDetails: map?{asn: str, location: map?, name: str?}, endDate: str(date-time)?, locationDetails: map?{code: str, name: str}, originDetails: map?{name: str?, origin: str}, startDate: str(date-time), status: str, type: str, uuid: str, visibleInDataSources: [str]?}}, success: bool}
@errors {404}

@endpoint GET /radar/verified_bots/top/bots
@optional {limit: int=5, name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map?{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, top_0: [map]}, success: bool}
@errors {404}

@endpoint GET /radar/verified_bots/top/categories
@optional {limit: int=5, name: [str], dateRange: [str], dateStart: [str(date-time)], dateEnd: [str(date-time)], asn: [str], location: [str], continent: [str], format: str(JSON/CSV)}
@returns(200) {result: map{meta: map{confidenceInfo: map?{annotations: [map], level: int}, dateRange: [map], lastUpdated: str(date-time), normalization: str, units: [map]}, top_0: [map]}, success: bool}
@errors {404}

@endgroup

@group ready
@endpoint GET /ready

@endgroup

@group signed-url
@endpoint GET /signed-url

@endgroup

@group tenants
@endpoint GET /tenants/{tenant_id}
@required {tenant_id: str}
@returns(200) {errors: [map], messages: [map], result: map{cdate: str(date-time), customer_id: str, edate: str(date-time), tenant_contacts: map{email: str, website: str}, tenant_labels: [str], tenant_metadata: map{dns: map{ns_pool: map}}, tenant_name: str, tenant_network: map, tenant_status: str, tenant_tag: str, tenant_type: str, tenant_units: [map]}, success: bool}
@errors {4XX}

@endpoint GET /tenants/{tenant_id}/account_types
@required {tenant_id: str}
@returns(200) {errors: [map], messages: [map], result: [str], success: bool}
@errors {4XX}

@endpoint GET /tenants/{tenant_id}/accounts
@required {tenant_id: str}
@returns(200) {errors: [map], messages: [map], result: [map], success: bool}
@errors {4XX}

@endpoint GET /tenants/{tenant_id}/entitlements
@required {tenant_id: str}
@returns(200) {errors: [map], messages: [map], result: map{allow_add_subdomain: map{type: str, value: bool}, allow_auto_accept_invites: map{type: str, value: bool}, cname_setup_allowed: map{type: str, value: bool}, custom_entitlements: [map]?, mhs_certificate_count: map{type: str, value: int}, partial_setup_allowed: map{type: str, value: bool}}, success: bool}
@errors {4XX}

@endpoint GET /tenants/{tenant_id}/memberships
@required {tenant_id: str}
@returns(200) {errors: [map], messages: [map], result: [map], success: bool}
@errors {4XX}

@endpoint GET /tenants/{tenant_tag}/custom_ns
@required {tenant_tag: str}
@returns(200)
@errors {4XX}

@endpoint POST /tenants/{tenant_tag}/custom_ns
@required {tenant_tag: str, ns_name: str(hostname)}
@optional {ns_set: num=1}
@returns(200)
@errors {4XX}

@endpoint DELETE /tenants/{tenant_tag}/custom_ns/{custom_ns_id}
@required {custom_ns_id: str(hostname), tenant_tag: str}
@returns(200)
@errors {4XX}

@endgroup

@group user
@endpoint GET /user
@returns(200)
@errors {4XX}

@endpoint PATCH /user
@optional {country: str, first_name: str, last_name: str, telephone: str, zipcode: str}
@returns(200)
@errors {4XX}

@endpoint GET /user/analytics/dashboard
@optional {since: any, until: any, continuous: bool=true}
@returns(200)
@errors {4XX}

@endpoint GET /user/audit_logs
@optional {id: str, export: bool, action.type: str, actor.ip: str, actor.email: str(email), since: any, before: any, zone.name: str, direction: str(desc/asc)=desc, per_page: num=100, page: num=1, hide_user_logs: bool=false}
@returns(200)
@errors {4XX}

@endpoint GET /user/billing/history
@optional {page: num=1, per_page: num=20, order: str(type/occurred_at/action), occurred_at: str(date-time), type: str, action: str}
@returns(200)
@errors {4XX}

@endpoint GET /user/billing/profile
@returns(200)
@errors {4XX}

@endpoint GET /user/communication_preferences
@returns(200) {errors: [map], messages: [map], result: map{created_on: str(date-time), email: map{hard_bounce: bool, verified: bool}, language-locale: str, preferences: map, updated_on: str(date-time)}, success: bool}
@errors {400, 401, 403, 404, 500}

@endpoint PUT /user/communication_preferences
@optional {language-locale: str(en-US/es-ES/de-DE/fr-FR/it-IT/ja-JP/ko-KR/pt-BR/zh-CN/zh-TW), preferences: map}
@returns(200) {errors: [map], messages: [map], result: map{created_on: str(date-time), email: map{hard_bounce: bool, verified: bool}, language-locale: str, preferences: map, updated_on: str(date-time)}, success: bool}
@errors {400, 401, 403, 404, 500}

@endpoint GET /user/firewall/access_rules/rules
@optional {mode: str, configuration.target: str(ip/ip_range/asn/country), configuration.value: str, notes: str, match: str(any/all)=all, page: num, per_page: num, order: str(configuration.target/configuration.value/mode), direction: str(asc/desc)}
@returns(200)
@errors {4XX}

@endpoint POST /user/firewall/access_rules/rules
@required {configuration: map, mode: str(block/challenge/whitelist/js_challenge/managed_challenge)}
@optional {notes: any=}
@returns(200)
@errors {4XX}

@endpoint DELETE /user/firewall/access_rules/rules/{rule_id}
@required {rule_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /user/firewall/access_rules/rules/{rule_id}
@required {rule_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /user/firewall/access_rules/rules/{rule_id}
@required {rule_id: str}
@optional {mode: str(block/challenge/whitelist/js_challenge/managed_challenge), notes: str}
@returns(200)
@errors {4XX}

@endpoint GET /user/invites
@returns(200)
@errors {4XX}

@endpoint GET /user/invites/{invite_id}
@required {invite_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /user/invites/{invite_id}
@required {invite_id: str, status: any(accepted/rejected)}
@returns(200)
@errors {4XX}

@endpoint GET /user/load_balancers/monitors
@returns(200)
@errors {4XX}

@endpoint POST /user/load_balancers/monitors
@returns(200)
@errors {4XX}

@endpoint DELETE /user/load_balancers/monitors/{monitor_id}
@required {monitor_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /user/load_balancers/monitors/{monitor_id}
@required {monitor_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /user/load_balancers/monitors/{monitor_id}
@required {monitor_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /user/load_balancers/monitors/{monitor_id}
@required {monitor_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /user/load_balancers/monitors/{monitor_id}/preview
@required {monitor_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /user/load_balancers/monitors/{monitor_id}/references
@required {monitor_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /user/load_balancers/pools
@optional {monitor: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /user/load_balancers/pools
@optional {notification_email: str}
@returns(200)
@errors {4XX}

@endpoint POST /user/load_balancers/pools
@required {name: str, origins: [map{address: str, disabled_at: str(date-time), enabled: bool, flatten_cname: bool, header: map, name: str, port: int, virtual_network_id: str, weight: num}]}
@optional {check_regions: [str], description: str=, enabled: bool=true, health_sources: [str], latitude: num, load_shedding: map{default_percent: num, default_policy: str, session_percent: num, session_policy: str}, longitude: num, minimum_origins: int=1, monitor: str, monitor_group: str, networks: [str], notification_email: str=, notification_filter: map{origin: map, pool: map}, origin_steering: map{policy: str}}
@returns(200)
@errors {4XX}

@endpoint DELETE /user/load_balancers/pools/{pool_id}
@required {pool_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /user/load_balancers/pools/{pool_id}
@required {pool_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /user/load_balancers/pools/{pool_id}
@required {pool_id: str}
@optional {check_regions: [str], description: str=, disabled_at: str(date-time), enabled: bool=true, health_sources: [str], latitude: num, load_shedding: map{default_percent: num, default_policy: str, session_percent: num, session_policy: str}, longitude: num, minimum_origins: int=1, monitor: str, monitor_group: str, name: str, notification_email: str=, notification_filter: map{origin: map, pool: map}, origin_steering: map{policy: str}, origins: [map{address: str, disabled_at: str(date-time), enabled: bool, flatten_cname: bool, header: map, name: str, port: int, virtual_network_id: str, weight: num}]}
@returns(200)
@errors {4XX}

@endpoint PUT /user/load_balancers/pools/{pool_id}
@required {pool_id: str, name: str, origins: [map{address: str, disabled_at: str(date-time), enabled: bool, flatten_cname: bool, header: map, name: str, port: int, virtual_network_id: str, weight: num}]}
@optional {check_regions: [str], description: str=, disabled_at: str(date-time), enabled: bool=true, health_sources: [str], latitude: num, load_shedding: map{default_percent: num, default_policy: str, session_percent: num, session_policy: str}, longitude: num, minimum_origins: int=1, monitor: str, monitor_group: str, networks: [str], notification_email: str=, notification_filter: map{origin: map, pool: map}, origin_steering: map{policy: str}}
@returns(200)
@errors {4XX}

@endpoint GET /user/load_balancers/pools/{pool_id}/health
@required {pool_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /user/load_balancers/pools/{pool_id}/preview
@required {pool_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /user/load_balancers/pools/{pool_id}/references
@required {pool_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /user/load_balancers/preview/{preview_id}
@required {preview_id: any}
@returns(200)
@errors {4XX}

@endpoint GET /user/load_balancers/regions
@optional {subdivision_code: str, country_code: str}
@returns(200)
@errors {4XX}

@endpoint GET /user/load_balancing_analytics/events
@optional {until: str(date-time), pool_name: str, origin_healthy: bool, pool_id: str, since: str(date-time), origin_name: str, pool_healthy: bool=true}
@returns(200)
@errors {4XX}

@endpoint GET /user/memberships/{membership_id}
@required {membership_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /user/organizations
@optional {name: str, page: num=1, per_page: num=20, order: str(id/name/status), direction: str(asc/desc), match: str(any/all)=all, status: str(member/invited)}
@returns(200)
@errors {4XX}

@endpoint DELETE /user/organizations/{organization_id}
@required {organization_id: str}
@returns(200) {id: str}
@errors {4XX}

@endpoint GET /user/organizations/{organization_id}
@required {organization_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /user/spectrum_analytics/zones/report
@optional {since: any, until: any, cdn_traffic: bool=true}
@returns(200)
@errors {4XX}

@endpoint GET /user/subscriptions
@returns(200)
@errors {4XX}

@endpoint POST /user/subscriptions
@optional {app: map{install_id: str}, component_values: [map{default: num, display_name: str, kind: str, name: str, price: num, value: num}], currency: str, current_period_end: str(date-time), current_period_start: str(date-time), frequency: str(weekly/monthly/quarterly/yearly), id: str, price: num, rate_plan: map{currency: str, externally_managed: bool, id: str, is_contract: bool, public_name: str, scope: str, sets: [str]}, state: str(Trial/Provisioned/Paid/AwaitingPayment/Cancelled/Failed/Expired), zone: map{id: str, name: str}}
@returns(200)
@errors {4XX}

@endpoint DELETE /user/subscriptions/{identifier}
@required {identifier: str}
@returns(200) {subscription_id: str}
@errors {4XX}

@endpoint PUT /user/subscriptions/{identifier}
@required {identifier: str}
@optional {app: map{install_id: str}, component_values: [map{default: num, display_name: str, kind: str, name: str, price: num, value: num}], currency: str, current_period_end: str(date-time), current_period_start: str(date-time), frequency: str(weekly/monthly/quarterly/yearly), id: str, price: num, rate_plan: map{currency: str, externally_managed: bool, id: str, is_contract: bool, public_name: str, scope: str, sets: [str]}, state: str(Trial/Provisioned/Paid/AwaitingPayment/Cancelled/Failed/Expired), zone: map{id: str, name: str}}
@returns(200)
@errors {4XX}

@endpoint GET /user/tenants
@returns(200) {errors: [map], messages: [map], result: [map], success: bool}
@errors {4XX}

@endpoint GET /user/tokens
@optional {page: num=1, per_page: num=20, direction: str(asc/desc), include_expired: bool=false}
@returns(200)
@errors {4XX}

@endpoint POST /user/tokens
@required {name: str, policies: [map{effect!: str, id!: str, permission_groups!: [map], resources!: any}]}
@optional {condition: map{request_ip: map}, expires_on: str(date-time), not_before: str(date-time)}
@returns(200)
@errors {4XX}

@endpoint GET /user/tokens/permission_groups
@optional {name: str, scope: str}
@returns(200)
@errors {4XX}

@endpoint GET /user/tokens/verify
@returns(200)
@errors {4XX}

@endpoint DELETE /user/tokens/{token_id}
@required {token_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /user/tokens/{token_id}
@required {token_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /user/tokens/{token_id}
@required {token_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /user/tokens/{token_id}/value
@required {token_id: str}
@returns(200)
@errors {4XX}

@endgroup

@group workers
@endpoint POST /workers/builds/deploy_hooks/{deploy_hook_uuid}
@required {deploy_hook_uuid: str(uuid)}
@returns(200)
@errors {404, 429}

@endgroup

@group zones
@endpoint GET /zones
@optional {name: str, status: str(initializing/pending/active/moved), type: [str], account.id: str, account.name: str, page: num=1, per_page: num=20, order: str(name/status/account.id/account.name/plan.id), direction: str(asc/desc), match: str(any/all)=all}
@returns(200)
@errors {4XX}

@endpoint POST /zones
@required {account: map{id: str}, name: str}
@optional {type: str(full/partial/secondary/internal)=full}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_identifier}/analytics/colos
@required {zone_identifier: str}
@optional {until: any, since: any=-10080, continuous: bool=true}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_identifier}/analytics/dashboard
@required {zone_identifier: str}
@optional {until: any, since: any=-10080, continuous: bool=true}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_identifier}/custom_pages
@required {zone_identifier: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_identifier}/custom_pages/assets
@required {zone_identifier: str}
@optional {page: int=1, per_page: int=20}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_identifier}/custom_pages/assets
@required {zone_identifier: str, description: str, name: str, url: str(uri)}
@returns(200)
@errors {4XX}

@endpoint DELETE /zones/{zone_identifier}/custom_pages/assets/{asset_name}
@required {asset_name: str, zone_identifier: str}
@returns(204)
@errors {4XX}

@endpoint GET /zones/{zone_identifier}/custom_pages/assets/{asset_name}
@required {asset_name: str, zone_identifier: str}
@returns(200)
@errors {4XX}

@endpoint PUT /zones/{zone_identifier}/custom_pages/assets/{asset_name}
@required {asset_name: str, zone_identifier: str, description: str, url: str(uri)}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_identifier}/custom_pages/preview_tokens
@required {zone_identifier: str, act: str, target: str, url: str(uri)}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_identifier}/custom_pages/{identifier}
@required {identifier: str, zone_identifier: str}
@returns(200) {created_on: str(date-time), description: str, id: str, modified_on: str(date-time), preview_target: str, required_tokens: [str], state: str, url: str(uri)}
@errors {4XX}

@endpoint PUT /zones/{zone_identifier}/custom_pages/{identifier}
@required {identifier: str, zone_identifier: str, state: str(default/customized), url: str(uri)=}
@returns(200)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /zones/{zone_id}
@required {zone_id: str}
@optional {paused: bool=false, plan: map{id: str}, type: str(full/partial/secondary/internal), vanity_name_servers: [str(hostname)]=}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/access/apps
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/access/apps
@required {zone_id: str}
@returns(201)
@errors {4XX}

@endpoint GET /zones/{zone_id}/access/apps/ca
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/access/apps/{app_id}
@required {app_id: any, zone_id: str}
@returns(202)
@errors {4XX}

@endpoint GET /zones/{zone_id}/access/apps/{app_id}
@required {app_id: any, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /zones/{zone_id}/access/apps/{app_id}
@required {app_id: any, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/access/apps/{app_id}/ca
@required {app_id: str, zone_id: str}
@returns(202)
@errors {4XX}

@endpoint GET /zones/{zone_id}/access/apps/{app_id}/ca
@required {app_id: str, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/access/apps/{app_id}/ca
@required {app_id: str, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/access/apps/{app_id}/policies
@required {app_id: str, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/access/apps/{app_id}/policies
@required {app_id: str, zone_id: str, decision: str(allow/deny/non_identity/bypass), include: [map], name: str}
@optional {approval_groups: [map{approvals_needed!: num, email_addresses: [str], email_list_uuid: str}], approval_required: bool=false, exclude: [map], isolation_required: bool=false, precedence: int, purpose_justification_prompt: str, purpose_justification_required: bool=false, require: [map]}
@returns(201)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/access/apps/{app_id}/policies/{policy_id}
@required {policy_id: str, app_id: str, zone_id: str}
@returns(202)
@errors {4XX}

@endpoint GET /zones/{zone_id}/access/apps/{app_id}/policies/{policy_id}
@required {policy_id: str, app_id: str, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /zones/{zone_id}/access/apps/{app_id}/policies/{policy_id}
@required {policy_id: str, app_id: str, zone_id: str, decision: str(allow/deny/non_identity/bypass), include: [map], name: str}
@optional {approval_groups: [map{approvals_needed!: num, email_addresses: [str], email_list_uuid: str}], approval_required: bool=false, exclude: [map], isolation_required: bool=false, precedence: int, purpose_justification_prompt: str, purpose_justification_required: bool=false, require: [map]}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/access/apps/{app_id}/revoke_tokens
@required {app_id: any, zone_id: str}
@returns(202)
@errors {4XX}

@endpoint PATCH /zones/{zone_id}/access/apps/{app_id}/settings
@required {app_id: any, zone_id: str}
@optional {allow_iframe: bool, skip_interstitial: bool}
@returns(202)
@errors {4XX}

@endpoint PUT /zones/{zone_id}/access/apps/{app_id}/settings
@required {app_id: any, zone_id: str}
@optional {allow_iframe: bool, skip_interstitial: bool}
@returns(202)
@errors {4XX}

@endpoint GET /zones/{zone_id}/access/apps/{app_id}/user_policy_checks
@required {app_id: any, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/access/certificates
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/access/certificates
@required {zone_id: str, certificate: str, name: str}
@optional {associated_hostnames: [str]}
@returns(201)
@errors {4XX}

@endpoint GET /zones/{zone_id}/access/certificates/settings
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /zones/{zone_id}/access/certificates/settings
@required {zone_id: str, settings: [map{china_network!: bool, client_certificate_forwarding!: bool, hostname!: str}]}
@returns(202)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/access/certificates/{certificate_id}
@required {certificate_id: str, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/access/certificates/{certificate_id}
@required {certificate_id: str, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /zones/{zone_id}/access/certificates/{certificate_id}
@required {certificate_id: str, zone_id: str, associated_hostnames: [str]}
@optional {name: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/access/groups
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/access/groups
@required {zone_id: str, include: [map], name: str}
@optional {exclude: [map], require: [map]}
@returns(201)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/access/groups/{group_id}
@required {group_id: str, zone_id: str}
@returns(202)
@errors {4XX}

@endpoint GET /zones/{zone_id}/access/groups/{group_id}
@required {group_id: str, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /zones/{zone_id}/access/groups/{group_id}
@required {group_id: str, zone_id: str, include: [map], name: str}
@optional {exclude: [map], require: [map]}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/access/identity_providers
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/access/identity_providers
@required {zone_id: str}
@returns(201)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/access/identity_providers/{identity_provider_id}
@required {identity_provider_id: str, zone_id: str}
@returns(202)
@errors {4XX}

@endpoint GET /zones/{zone_id}/access/identity_providers/{identity_provider_id}
@required {identity_provider_id: str, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /zones/{zone_id}/access/identity_providers/{identity_provider_id}
@required {identity_provider_id: str, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/access/organizations
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/access/organizations
@required {zone_id: str, auth_domain: str, name: str}
@optional {is_ui_read_only: bool, login_design: map{background_color: str, footer_text: str, header_text: str, logo_path: str, text_color: str}, ui_read_only_toggle_reason: str, user_seat_expiration_inactive_time: str}
@returns(201)
@errors {4XX}

@endpoint PUT /zones/{zone_id}/access/organizations
@required {zone_id: str}
@optional {auth_domain: str, is_ui_read_only: bool, login_design: map{background_color: str, footer_text: str, header_text: str, logo_path: str, text_color: str}, name: str, ui_read_only_toggle_reason: str, user_seat_expiration_inactive_time: str}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/access/organizations/revoke_user
@required {zone_id: str, email: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/access/service_tokens
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/access/service_tokens
@required {zone_id: str, name: str}
@optional {client_secret_version: num=1, duration: str=8760h, enabled: bool, previous_client_secret_expires_at: str(date-time)}
@returns(201)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/access/service_tokens/{service_token_id}
@required {service_token_id: str, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/access/service_tokens/{service_token_id}
@required {service_token_id: str, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /zones/{zone_id}/access/service_tokens/{service_token_id}
@required {service_token_id: str, zone_id: str}
@optional {client_secret_version: num=1, duration: str=8760h, enabled: bool, name: str, previous_client_secret_expires_at: str(date-time)}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/acm/custom_trust_store
@required {zone_id: str}
@optional {page: num=1, per_page: num=20, limit: int, offset: int}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/acm/custom_trust_store
@required {zone_id: str, certificate: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/acm/custom_trust_store/{custom_origin_trust_store_id}
@required {custom_origin_trust_store_id: str, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/acm/custom_trust_store/{custom_origin_trust_store_id}
@required {custom_origin_trust_store_id: str, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/acm/total_tls
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/acm/total_tls
@required {zone_id: str, enabled: bool}
@optional {certificate_authority: str(google/lets_encrypt/ssl_com)}
@returns(200)
@errors {4XX}

@endpoint PUT /zones/{zone_id}/activation_check
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/addressing/regional_hostnames
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/addressing/regional_hostnames
@required {zone_id: str, hostname: str, region_key: str}
@optional {routing: str=dns}
@returns(200)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/addressing/regional_hostnames/{hostname}
@required {zone_id: str, hostname: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/addressing/regional_hostnames/{hostname}
@required {zone_id: str, hostname: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /zones/{zone_id}/addressing/regional_hostnames/{hostname}
@required {zone_id: str, hostname: str, region_key: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/ai-audit/robots
@required {zone_id: str}
@optional {subdomain: str}
@returns(200)
@errors {400, 401, 403, 404, 500, 503}

@endpoint POST /zones/{zone_id}/ai-audit/robots/bulk
@required {zone_id: str}
@returns(200)
@errors {400, 401, 403, 404, 408, 500, 503}

@endpoint GET /zones/{zone_id}/ai-security/custom-topics
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /zones/{zone_id}/ai-security/custom-topics
@required {zone_id: str}
@optional {topics: [map{label!: str, topic!: str}]}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/ai-security/settings
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /zones/{zone_id}/ai-security/settings
@required {zone_id: str}
@optional {enabled: bool}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/analytics/latency
@required {zone_id: str}
@optional {bins: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/analytics/latency/colos
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/api_gateway/configuration
@returns(200)
@errors {4XX}

@endpoint PUT /zones/{zone_id}/api_gateway/configuration
@required {auth_id_characteristics: [any]}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/api_gateway/discovery
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/api_gateway/discovery/operations
@optional {page: int=1, per_page: int=20, host: [str], method: [str], endpoint: str, direction: str(asc/desc), order: str(host/method/endpoint/traffic_stats.requests/traffic_stats.last_updated), diff: bool, origin: str, state: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /zones/{zone_id}/api_gateway/discovery/operations
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/api_gateway/discovery/operations/{discovery_id}
@returns(200)
@errors {4XX}

@endpoint PATCH /zones/{zone_id}/api_gateway/discovery/operations/{discovery_id}
@optional {state: any}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/api_gateway/expression-template/fallthrough
@required {hosts: [str]}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/api_gateway/labels
@optional {page: int=1, per_page: int=20, order: str(name/description/created_at/last_updated/mapped_resources.operations), direction: str(asc/desc), source: str, filter: str, with_mapped_resource_counts: bool=false}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/api_gateway/labels/managed/{name}
@optional {with_mapped_resource_counts: bool=false}
@returns(200)
@errors {4XX}

@endpoint PUT /zones/{zone_id}/api_gateway/labels/managed/{name}/resources/operation
@required {selector: map{include!: map}}
@returns(200)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/api_gateway/labels/user
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/api_gateway/labels/user
@returns(200)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/api_gateway/labels/user/{name}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/api_gateway/labels/user/{name}
@optional {with_mapped_resource_counts: bool=false}
@returns(200)
@errors {4XX}

@endpoint PATCH /zones/{zone_id}/api_gateway/labels/user/{name}
@optional {description: str, metadata: map}
@returns(200)
@errors {4XX}

@endpoint PUT /zones/{zone_id}/api_gateway/labels/user/{name}
@optional {description: str, metadata: map}
@returns(200)
@errors {4XX}

@endpoint PUT /zones/{zone_id}/api_gateway/labels/user/{name}/resources/operation
@required {selector: map{include!: map}}
@returns(200)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/api_gateway/operations
@returns(200) {errors: [map], messages: [map], success: bool}
@errors {4XX}

@endpoint GET /zones/{zone_id}/api_gateway/operations
@optional {page: int=1, per_page: int=20, order: str(method/host/endpoint/thresholds.$key), direction: str(asc/desc), host: [str], method: [str], endpoint: str, feature: [str]}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/api_gateway/operations
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/api_gateway/operations/item
@required {endpoint: str(uri-template), host: str(hostname), method: str(GET/POST/HEAD/OPTIONS/PUT/DELETE/CONNECT/PATCH/TRACE)}
@returns(200)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/api_gateway/operations/labels
@required {selector: map{include!: map}}
@optional {managed: map{labels: [str]}, user: map{labels: [str]}}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/api_gateway/operations/labels
@required {selector: map{include!: map}}
@optional {managed: map{labels: [str]}, user: map{labels: [str]}}
@returns(200)
@errors {4XX}

@endpoint PUT /zones/{zone_id}/api_gateway/operations/labels
@required {managed: map{labels!: [str]}, selector: map{include!: map}, user: map{labels!: [str]}}
@returns(200)
@errors {4XX}

@endpoint PATCH /zones/{zone_id}/api_gateway/operations/schema_validation
@returns(200)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/api_gateway/operations/{operation_id}
@returns(200) {errors: [map], messages: [map], success: bool}
@errors {4XX}

@endpoint GET /zones/{zone_id}/api_gateway/operations/{operation_id}
@optional {feature: [str], with_schemas: bool=false}
@returns(200)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/api_gateway/operations/{operation_id}/labels
@optional {managed: [str], user: [str]}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/api_gateway/operations/{operation_id}/labels
@optional {managed: [str], user: [str]}
@returns(200)
@errors {4XX}

@endpoint PUT /zones/{zone_id}/api_gateway/operations/{operation_id}/labels
@optional {managed: [str], user: [str]}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/api_gateway/operations/{operation_id}/schema_validation
@returns(200) {mitigation_action: str?, operation_id: any}
@errors {4XX}

@endpoint PUT /zones/{zone_id}/api_gateway/operations/{operation_id}/schema_validation
@optional {mitigation_action: str(log/block/none)}
@returns(200) {mitigation_action: str?, operation_id: any}
@errors {4XX}

@endpoint GET /zones/{zone_id}/api_gateway/schemas
@optional {host: [str], feature: [str], include_schema_kind: [str]}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/api_gateway/settings/schema_validation
@returns(200) {validation_default_mitigation_action: str, validation_override_mitigation_action: str?}
@errors {4XX}

@endpoint PATCH /zones/{zone_id}/api_gateway/settings/schema_validation
@optional {validation_default_mitigation_action: str(none/log/block), validation_override_mitigation_action: str(none/disable_override)}
@returns(200) {validation_default_mitigation_action: str, validation_override_mitigation_action: str?}
@errors {4XX}

@endpoint PUT /zones/{zone_id}/api_gateway/settings/schema_validation
@required {validation_default_mitigation_action: str(none/log/block)}
@optional {validation_override_mitigation_action: str(none/disable_override)}
@returns(200) {validation_default_mitigation_action: str, validation_override_mitigation_action: str?}
@errors {4XX}

@endpoint GET /zones/{zone_id}/api_gateway/user_schemas
@optional {page: int=1, per_page: int=20, omit_source: bool=false, validation_enabled: bool}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/api_gateway/user_schemas
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/api_gateway/user_schemas/hosts
@returns(200)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/api_gateway/user_schemas/{schema_id}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/api_gateway/user_schemas/{schema_id}
@optional {omit_source: bool=false}
@returns(200)
@errors {4XX}

@endpoint PATCH /zones/{zone_id}/api_gateway/user_schemas/{schema_id}
@optional {validation_enabled: any}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/api_gateway/user_schemas/{schema_id}/operations
@optional {feature: [str], host: [str], method: [str], endpoint: str, page: int=1, per_page: int=20, operation_status: str(new/existing)}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/argo/smart_routing
@required {zone_id: str}
@returns(200) {errors: [map], messages: [map], result: map{editable: bool, id: str, modified_on: str(date-time), value: str}, success: bool}
@errors {4XX}

@endpoint PATCH /zones/{zone_id}/argo/smart_routing
@required {zone_id: str, value: str(on/off)}
@returns(200) {errors: [map], messages: [map], result: map{editable: bool, id: str, modified_on: str(date-time), value: str}, success: bool}
@errors {4XX}

@endpoint GET /zones/{zone_id}/argo/tiered_caching
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /zones/{zone_id}/argo/tiered_caching
@required {zone_id: str, value: str(on/off)}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/available_plans
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/available_plans/{plan_identifier}
@required {plan_identifier: str, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/available_rate_plans
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/bot_management
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /zones/{zone_id}/bot_management
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/bot_management/feedback
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/bot_management/feedback
@required {zone_id: str, description: str, expression: str, first_request_seen_at: str(date-time), last_request_seen_at: str(date-time), requests: int(int64), requests_by_attribute: map, requests_by_score: map, requests_by_score_src: map, type: str(false_positive/false_negative)}
@optional {created_at: str(date-time), subtype: str}
@returns(201)
@errors {4XX}

@endpoint GET /zones/{zone_id}/cache/cache_reserve
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /zones/{zone_id}/cache/cache_reserve
@required {zone_id: str, value: str(on/off)=off}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/cache/cache_reserve_clear
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/cache/cache_reserve_clear
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/cache/origin_cloud_regions
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /zones/{zone_id}/cache/origin_cloud_regions
@required {zone_id: str, ip: str, region: str, vendor: str(aws/azure/gcp/oci)}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/cache/origin_cloud_regions
@required {zone_id: str, ip: str, region: str, vendor: str(aws/azure/gcp/oci)}
@returns(200)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/cache/origin_cloud_regions/batch
@required {zone_id: str}
@returns(200)
@errors {4XX, 5XX}

@endpoint PATCH /zones/{zone_id}/cache/origin_cloud_regions/batch
@required {zone_id: str}
@returns(200)
@errors {4XX, 5XX}

@endpoint GET /zones/{zone_id}/cache/origin_cloud_regions/supported_regions
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/cache/origin_cloud_regions/{origin_ip}
@required {zone_id: str, origin_ip: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/cache/origin_cloud_regions/{origin_ip}
@required {zone_id: str, origin_ip: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/cache/origin_post_quantum_encryption
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /zones/{zone_id}/cache/origin_post_quantum_encryption
@required {zone_id: str, value: str(preferred/supported/off)=supported}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/cache/regional_tiered_cache
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /zones/{zone_id}/cache/regional_tiered_cache
@required {zone_id: str, value: str(on/off)=off}
@returns(200)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/cache/tiered_cache_smart_topology_enable
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/cache/tiered_cache_smart_topology_enable
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /zones/{zone_id}/cache/tiered_cache_smart_topology_enable
@required {zone_id: str, value: str(on/off)}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/cache/tiered_cache_smart_topology_enable
@required {zone_id: str, value: str(on/off)}
@returns(200)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/cache/variants
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/cache/variants
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /zones/{zone_id}/cache/variants
@required {zone_id: str, value: map{avif: [str], bmp: [str], gif: [str], jp2: [str], jpeg: [str], jpg: [str], jpg2: [str], png: [str], tif: [str], tiff: [str], webp: [str]}}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/certificate_authorities/hostname_associations
@required {zone_id: str}
@optional {mtls_certificate_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /zones/{zone_id}/certificate_authorities/hostname_associations
@required {zone_id: str}
@optional {hostnames: [str], mtls_certificate_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/client_certificates
@required {zone_id: str}
@optional {status: str(all/active/pending_reactivation/pending_revocation/revoked), page: num=1, per_page: num=20, limit: int, offset: int}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/client_certificates
@required {zone_id: str, csr: str, validity_days: int}
@returns(200)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/client_certificates/{client_certificate_id}
@required {zone_id: str, client_certificate_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/client_certificates/{client_certificate_id}
@required {zone_id: str, client_certificate_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /zones/{zone_id}/client_certificates/{client_certificate_id}
@required {zone_id: str, client_certificate_id: str}
@optional {reactivate: bool}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/cloud_connector/rules
@required {zone_id: str}
@returns(200)
@errors {4XX, 5XX}

@endpoint PUT /zones/{zone_id}/cloud_connector/rules
@required {zone_id: str}
@returns(200)
@errors {4XX, 5XX}

@endpoint POST /zones/{zone_id}/content-upload-scan/disable
@required {zone_id: str}
@returns(200) {errors: [map], messages: [map], result: any, success: bool}
@errors {4XX}

@endpoint POST /zones/{zone_id}/content-upload-scan/enable
@required {zone_id: str}
@returns(200) {errors: [map], messages: [map], result: any, success: bool}
@errors {4XX}

@endpoint GET /zones/{zone_id}/content-upload-scan/payloads
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/content-upload-scan/payloads
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/content-upload-scan/payloads/{expression_id}
@required {zone_id: str, expression_id: any}
@returns(200)
@errors {4XX}

@endpoint PATCH /zones/{zone_id}/content-upload-scan/payloads/{expression_id}
@required {zone_id: str, expression_id: any, payload: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/content-upload-scan/settings
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /zones/{zone_id}/content-upload-scan/settings
@required {zone_id: str, value: str(enabled/disabled)}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/ct/alerting
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /zones/{zone_id}/ct/alerting
@required {zone_id: str, enabled: bool}
@optional {emails: [str(email)]}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/custom_certificates
@required {zone_id: str}
@optional {page: num=1, per_page: num=20, match: str(any/all)=all, status: str(active/expired/deleted/pending/initializing)}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/custom_certificates
@required {zone_id: str, certificate: str}
@optional {bundle_method: str(ubiquitous/optimal/force)=ubiquitous, custom_csr_id: str, deploy: str(staging/production)=production, geo_restrictions: map{label: str}, policy: str, private_key: str, type: str(legacy_custom/sni_custom)=legacy_custom}
@returns(200)
@errors {4XX}

@endpoint PUT /zones/{zone_id}/custom_certificates/prioritize
@required {zone_id: str, certificates: [map{id: str, priority: num}]}
@returns(200)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/custom_certificates/{custom_certificate_id}
@required {custom_certificate_id: str, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/custom_certificates/{custom_certificate_id}
@required {custom_certificate_id: str, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /zones/{zone_id}/custom_certificates/{custom_certificate_id}
@required {custom_certificate_id: str, zone_id: str}
@optional {bundle_method: str(ubiquitous/optimal/force)=ubiquitous, certificate: str, custom_csr_id: str, deploy: str(staging/production)=production, geo_restrictions: map{label: str}, policy: str, private_key: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/custom_csrs
@required {zone_id: str}
@optional {page: num=1, per_page: num=20}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/custom_csrs
@required {zone_id: str, common_name: str, country: str, locality: str, organization: str, sans: [str], state: str}
@optional {key_type: str(rsa2048/p256v1)=rsa2048, organizational_unit: str}
@returns(201)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/custom_csrs/{custom_csr_id}
@required {custom_csr_id: str, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/custom_csrs/{custom_csr_id}
@required {custom_csr_id: str, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/custom_hostnames
@required {zone_id: str}
@optional {hostname: str, hostname.exact: str, hostname.startsWith: str, hostname.contain: str, id: str, page: num=1, per_page: num=20, order: str(ssl/ssl_status)=ssl, direction: str(asc/desc), ssl_status: str(initializing/pending_validation/deleted/pending_issuance/pending_deployment/pending_deletion/pending_expiration/expired/active/initializing_timed_out/validation_timed_out/issuance_timed_out/deployment_timed_out/deletion_timed_out/pending_cleanup/staging_deployment/staging_active/deactivating/inactive/backup_issued/holding_deployment), hostname_status: str(active/pending/active_redeploying/moved/pending_deletion/deleted/pending_blocked/pending_migration/pending_provisioned/test_pending/test_active/test_active_apex/test_blocked/test_failed/provisioned/blocked), certificate_authority: str(google/lets_encrypt/ssl_com), wildcard: bool, custom_origin_server: str, ssl: int(0/1)=0}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/custom_hostnames
@required {zone_id: str, hostname: str}
@optional {custom_metadata: map, custom_origin_server: str, custom_origin_sni: str, ssl: map}
@returns(200)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/custom_hostnames/fallback_origin
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/custom_hostnames/fallback_origin
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /zones/{zone_id}/custom_hostnames/fallback_origin
@required {zone_id: str, origin: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/custom_hostnames/quota
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/custom_hostnames/{custom_hostname_id}
@required {custom_hostname_id: str, zone_id: str}
@returns(200) {id: str}
@errors {4XX}

@endpoint GET /zones/{zone_id}/custom_hostnames/{custom_hostname_id}
@required {custom_hostname_id: str, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /zones/{zone_id}/custom_hostnames/{custom_hostname_id}
@required {custom_hostname_id: str, zone_id: str}
@optional {custom_metadata: map, custom_origin_server: str, custom_origin_sni: str, ssl: map}
@returns(200)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/custom_hostnames/{custom_hostname_id}/certificate_pack/{certificate_pack_id}/certificates/{certificate_id}
@required {custom_hostname_id: str, certificate_pack_id: str, certificate_id: str, zone_id: str}
@returns(202) {id: str}
@errors {4XX}

@endpoint PUT /zones/{zone_id}/custom_hostnames/{custom_hostname_id}/certificate_pack/{certificate_pack_id}/certificates/{certificate_id}
@required {custom_hostname_id: str, certificate_pack_id: str, certificate_id: str, zone_id: str, custom_certificate: str, custom_key: str}
@returns(202)
@errors {4XX}

@endpoint GET /zones/{zone_id}/custom_ns
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /zones/{zone_id}/custom_ns
@required {zone_id: str}
@optional {enabled: bool, ns_set: num=1}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/dcv_delegation/uuid
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/devices/policy/certificates
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /zones/{zone_id}/devices/policy/certificates
@required {zone_id: str, enabled: bool}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/dns_analytics/report
@required {zone_id: str}
@optional {metrics: str, dimensions: str, since: str(date-time), until: str(date-time), limit: int, sort: str, filters: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/dns_analytics/report/bytime
@required {zone_id: str}
@optional {metrics: str, dimensions: str, since: str(date-time), until: str(date-time), limit: int, sort: str, filters: str, time_delta: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/dns_records
@required {zone_id: str}
@optional {name: str, name.exact: str, name.contains: str, name.startswith: str, name.endswith: str, type: str, content: str, content.exact: str, content.contains: str, content.startswith: str, content.endswith: str, proxied: bool, match: str, comment: str, comment.present: str, comment.absent: str, comment.exact: str, comment.contains: str, comment.startswith: str, comment.endswith: str, tag: str, tag.present: str, tag.absent: str, tag.exact: str, tag.contains: str, tag.startswith: str, tag.endswith: str, search: str, tag_match: str, page: num, per_page: num, order: str, direction: str, include_shadow_metadata: bool=false, shadowed_by_name: str, shadowing_name: str}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/dns_records
@required {zone_id: str}
@optional {include_shadow_metadata: bool=false}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/dns_records/batch
@required {zone_id: str}
@optional {include_shadow_metadata: bool=false, deletes: [map], patches: [map{id!: str}], posts: [map], puts: [map{id!: str}]}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/dns_records/export
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/dns_records/import
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/dns_records/scan
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/dns_records/scan/review
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/dns_records/scan/review
@required {zone_id: str}
@optional {accepts: [map], rejects: [map]}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/dns_records/scan/trigger
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/dns_records/usage
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/dns_records/{dns_record_id}
@required {dns_record_id: str, zone_id: str}
@returns(200) {result: map{id: str}}
@errors {4XX}

@endpoint GET /zones/{zone_id}/dns_records/{dns_record_id}
@required {dns_record_id: str, zone_id: str}
@optional {include_shadow_metadata: bool=false}
@returns(200)
@errors {4XX}

@endpoint PATCH /zones/{zone_id}/dns_records/{dns_record_id}
@required {dns_record_id: str, zone_id: str}
@optional {include_shadow_metadata: bool=false}
@returns(200)
@errors {4XX}

@endpoint PUT /zones/{zone_id}/dns_records/{dns_record_id}
@required {dns_record_id: str, zone_id: str}
@optional {include_shadow_metadata: bool=false}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/dns_settings
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /zones/{zone_id}/dns_settings
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/dnssec
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/dnssec
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /zones/{zone_id}/dnssec
@required {zone_id: str}
@optional {dnssec_multi_signer: bool, dnssec_presigned: bool, dnssec_use_nsec3: bool, status: str(active/disabled)}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/dnssec/zsk
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/email/auth/dmarc-reports
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /zones/{zone_id}/email/auth/dmarc-reports
@required {zone_id: str}
@optional {enabled: bool, skip_wizard: bool}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/email/auth/spf/inspect
@required {zone_id: str, id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/email/routing
@required {zone_id: str}
@returns(200)

@endpoint PATCH /zones/{zone_id}/email/routing
@required {zone_id: str}
@optional {enabled: bool(true/false), skip_wizard: bool(true/false), support_subaddress: bool(true/false)}
@returns(200)

@endpoint PUT /zones/{zone_id}/email/routing
@required {zone_id: str}
@optional {enabled: bool(true/false), skip_wizard: bool(true/false), support_subaddress: bool(true/false)}
@returns(200)

@endpoint POST /zones/{zone_id}/email/routing/disable
@required {zone_id: str}
@returns(200)

@endpoint DELETE /zones/{zone_id}/email/routing/dns
@required {zone_id: str}
@optional {name: str}
@returns(200)

@endpoint GET /zones/{zone_id}/email/routing/dns
@required {zone_id: str}
@optional {subdomain: str}
@returns(200)

@endpoint PATCH /zones/{zone_id}/email/routing/dns
@required {zone_id: str}
@optional {name: str}
@returns(200)

@endpoint POST /zones/{zone_id}/email/routing/dns
@required {zone_id: str}
@optional {name: str}
@returns(200)

@endpoint POST /zones/{zone_id}/email/routing/enable
@required {zone_id: str}
@returns(200)

@endpoint GET /zones/{zone_id}/email/routing/rules
@required {zone_id: str}
@optional {page: num=1, per_page: num=20, enabled: bool(true/false)}
@returns(200)

@endpoint POST /zones/{zone_id}/email/routing/rules
@required {zone_id: str, actions: [map{type!: str, value: [str]}], matchers: [map{field: str, type!: str, value: str}]}
@optional {enabled: bool(true/false)=true, name: str, owner_worker_tag: str, priority: num=0, source: str(api/wrangler)=api}
@returns(200)
@errors {400, 422}

@endpoint GET /zones/{zone_id}/email/routing/rules/catch_all
@required {zone_id: str}
@returns(200)

@endpoint PUT /zones/{zone_id}/email/routing/rules/catch_all
@required {zone_id: str, actions: [map{type!: str, value: [str]}], matchers: [map{type!: str}]}
@optional {enabled: bool(true/false)=true, name: str, owner_worker_tag: str, source: str(api/wrangler)=api}
@returns(200)
@errors {400, 422}

@endpoint DELETE /zones/{zone_id}/email/routing/rules/{rule_identifier}
@required {rule_identifier: str, zone_id: str}
@returns(200)

@endpoint GET /zones/{zone_id}/email/routing/rules/{rule_identifier}
@required {rule_identifier: str, zone_id: str}
@returns(200)

@endpoint PUT /zones/{zone_id}/email/routing/rules/{rule_identifier}
@required {rule_identifier: str, zone_id: str, actions: [map{type!: str, value: [str]}], matchers: [map{field: str, type!: str, value: str}]}
@optional {enabled: bool(true/false)=true, name: str, owner_worker_tag: str, priority: num=0, source: str(api/wrangler)=api}
@returns(200)
@errors {400, 422}

@endpoint GET /zones/{zone_id}/email/routing/suppression
@required {zone_id: str}
@optional {page: int=1, per_page: int=100, order: str(email/expires_at/created_at)=created_at, direction: str(asc/desc)=desc}
@returns(200) {page: int, per_page: int, result: [map], total: int}
@errors {400}

@endpoint POST /zones/{zone_id}/email/routing/suppression
@required {zone_id: str, email: str(email)}
@optional {expires_at: str(date-time)}
@returns(200) {result: map{id: str(uuid)}}
@errors {400}

@endpoint DELETE /zones/{zone_id}/email/routing/suppression/{suppression_id}
@required {zone_id: str, suppression_id: str}
@returns(200) {success: bool}
@errors {404}

@endpoint GET /zones/{zone_id}/email/routing/suppression/{suppression_id}
@required {zone_id: str, suppression_id: str}
@returns(200) {result: map{created_at: str(date-time), email: str(email), expires_at: str(date-time)?, id: str(uuid), reason: str, zones: [str]}}
@errors {404}

@endpoint POST /zones/{zone_id}/email/routing/unlock
@required {zone_id: str}
@optional {name: str}
@returns(200)

@endpoint GET /zones/{zone_id}/email/sending/subdomains
@required {zone_id: str}
@returns(200)

@endpoint POST /zones/{zone_id}/email/sending/subdomains
@required {zone_id: str, name: str}
@returns(200)
@errors {403}

@endpoint POST /zones/{zone_id}/email/sending/subdomains/preview
@required {zone_id: str, name: str}
@returns(200)
@errors {403}

@endpoint DELETE /zones/{zone_id}/email/sending/subdomains/{subdomain_id}
@required {subdomain_id: str, zone_id: str}
@returns(200)

@endpoint GET /zones/{zone_id}/email/sending/subdomains/{subdomain_id}
@required {subdomain_id: str, zone_id: str}
@returns(200)

@endpoint PATCH /zones/{zone_id}/email/sending/subdomains/{subdomain_id}
@required {subdomain_id: str, zone_id: str}
@optional {drop_suppressed_recipients: bool, preview_enabled: bool}
@returns(200)

@endpoint GET /zones/{zone_id}/email/sending/subdomains/{subdomain_id}/dns
@required {subdomain_id: str, zone_id: str}
@returns(200)

@endpoint POST /zones/{zone_id}/email/sending/subdomains/{subdomain_id}/dns
@required {subdomain_id: str, zone_id: str}
@returns(200)
@errors {400, 403, 404, 409}

@endpoint GET /zones/{zone_id}/email/sending/subdomains/{subdomain_id}/dns/status
@required {subdomain_id: str, zone_id: str}
@returns(200)
@errors {400, 404}

@endpoint GET /zones/{zone_id}/email/sending/subdomains/{subdomain_id}/reputation/complaints
@required {subdomain_id: str, zone_id: str, start_at: str(date-time), end_at: str(date-time)}
@returns(200)
@errors {400, 404, 422, 502}

@endpoint GET /zones/{zone_id}/email/sending/suppression
@required {zone_id: str}
@optional {page: int=1, per_page: int=100, order: str(email/expires_at/created_at)=created_at, direction: str(asc/desc)=desc}
@returns(200) {page: int, per_page: int, result: [map], total: int}
@errors {400}

@endpoint POST /zones/{zone_id}/email/sending/suppression
@required {zone_id: str, email: str(email)}
@optional {expires_at: str(date-time)}
@returns(200) {result: map{id: str(uuid)}}
@errors {400}

@endpoint DELETE /zones/{zone_id}/email/sending/suppression/{suppression_id}
@required {zone_id: str, suppression_id: str}
@returns(200) {success: bool}
@errors {404}

@endpoint GET /zones/{zone_id}/email/sending/suppression/{suppression_id}
@required {zone_id: str, suppression_id: str}
@returns(200) {result: map{created_at: str(date-time), email: str(email), expires_at: str(date-time)?, id: str(uuid), reason: str, zones: [str]}}
@errors {404}

@endpoint GET /zones/{zone_id}/entitlements
@required {zone_id: str}
@returns(200) {errors: [map], messages: [map], result: [map], success: bool}
@returns(204)
@errors {400, 401, 403, 404, 405, 500, 503}

@endpoint GET /zones/{zone_id}/environments
@returns(200) {errors: [map], messages: [map], result: map{environments: [map]}, success: bool}
@errors {4XX}

@endpoint PATCH /zones/{zone_id}/environments
@required {environments: [map{expression!: str, http_application_id: str, locked_on_deployment!: bool, name!: str, position!: map, ref!: str, version!: int(int64)}]}
@returns(200) {errors: [map], messages: [map], result: map{environments: [map]}, success: bool}
@errors {4XX}

@endpoint POST /zones/{zone_id}/environments
@required {environments: [map{expression!: str, http_application_id: str, locked_on_deployment!: bool, name!: str, position!: map, ref!: str, version!: int(int64)}]}
@returns(200) {errors: [map], messages: [map], result: map{environments: [map]}, success: bool}
@errors {4XX}

@endpoint PUT /zones/{zone_id}/environments
@required {environments: [map{expression!: str, http_application_id: str, locked_on_deployment!: bool, name!: str, position!: map, ref!: str, version!: int(int64)}]}
@returns(200) {errors: [map], messages: [map], result: map{environments: [map]}, success: bool}
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/environments/{environment_id}
@returns(200) {errors: [map], messages: [map], result: map{environments: [map]}, success: bool}
@errors {4XX}

@endpoint POST /zones/{zone_id}/environments/{environment_id}/purge_cache
@required {zone_id: str, environment_id: str}
@returns(200) {errors: [map], messages: [map], result: map?{id: str}, success: bool}
@errors {4XX}

@endpoint POST /zones/{zone_id}/environments/{environment_id}/rollback
@returns(200) {errors: [map], messages: [map], result: map{environments: [map]}, success: bool}
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/filters
@required {zone_id: str, id: [str]}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/filters
@required {zone_id: str}
@optional {paused: any, expression: str, description: str, ref: str, page: num=1, per_page: num=25, id: str}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/filters
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /zones/{zone_id}/filters
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/filters/{filter_id}
@required {filter_id: str, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/filters/{filter_id}
@required {filter_id: str, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /zones/{zone_id}/filters/{filter_id}
@required {filter_id: str, zone_id: str}
@optional {description: str, expression: str, id: str, paused: bool, ref: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/firewall/access_rules/rules
@required {zone_id: str}
@optional {mode: str, configuration.target: str(ip/ip_range/asn/country), configuration.value: str, notes: str, match: str(any/all)=all, page: num, per_page: num, order: str(configuration.target/configuration.value/mode), direction: str(asc/desc)}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/firewall/access_rules/rules
@required {zone_id: str, configuration: map, mode: str(block/challenge/whitelist/js_challenge/managed_challenge)}
@optional {notes: any=}
@returns(200)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/firewall/access_rules/rules/{rule_id}
@required {zone_id: str, rule_id: str}
@optional {cascade: str(none/basic/aggressive)=none}
@returns(200)
@errors {4XX}

@endpoint PATCH /zones/{zone_id}/firewall/access_rules/rules/{rule_id}
@required {zone_id: str, rule_id: str}
@optional {mode: str(block/challenge/whitelist/js_challenge/managed_challenge), notes: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/firewall/lockdowns
@required {zone_id: str}
@optional {page: num=1, description: any, modified_on: any, ip: any, priority: any, uri_search: any, ip_range_search: any, per_page: num=20, created_on: str(date-time), description_search: str, ip_search: str}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/firewall/lockdowns
@required {zone_id: str, configurations: [any], urls: [str]}
@optional {description: str, paused: bool, priority: num}
@returns(200)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/firewall/lockdowns/{lock_downs_id}
@required {lock_downs_id: str, zone_id: str}
@returns(200) {result: map{id: str}}
@errors {4XX}

@endpoint GET /zones/{zone_id}/firewall/lockdowns/{lock_downs_id}
@required {lock_downs_id: str, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /zones/{zone_id}/firewall/lockdowns/{lock_downs_id}
@required {lock_downs_id: str, zone_id: str, configurations: [any], urls: [str]}
@returns(200)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/firewall/rules
@required {zone_id: str, id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/firewall/rules
@required {zone_id: str}
@optional {description: str, action: str, page: num=1, per_page: num=25, id: str, paused: bool}
@returns(200)
@errors {4XX}

@endpoint PATCH /zones/{zone_id}/firewall/rules
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/firewall/rules
@required {zone_id: str, action: map, filter: map{description: str, expression: str, id: str, paused: bool, ref: str}}
@returns(200)
@errors {4XX}

@endpoint PUT /zones/{zone_id}/firewall/rules
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/firewall/rules/{rule_id}
@required {rule_id: str, zone_id: str}
@optional {delete_filter_if_unused: bool}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/firewall/rules/{rule_id}
@required {rule_id: str, zone_id: str}
@optional {id: any}
@returns(200)
@errors {4XX}

@endpoint PATCH /zones/{zone_id}/firewall/rules/{rule_id}
@required {rule_id: str, zone_id: str, id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /zones/{zone_id}/firewall/rules/{rule_id}
@required {rule_id: str, zone_id: str, action: map, filter: map{description: str, expression: str, id: str, paused: bool, ref: str}, id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/firewall/ua_rules
@required {zone_id: str}
@optional {page: num=1, description: any, per_page: num=20, user_agent: str, paused: bool}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/firewall/ua_rules
@required {zone_id: str, configuration: map{target: str, value: str}, mode: str(block/challenge/whitelist/js_challenge/managed_challenge)}
@optional {description: str, paused: bool}
@returns(200)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/firewall/ua_rules/{ua_rule_id}
@required {ua_rule_id: str, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/firewall/ua_rules/{ua_rule_id}
@required {ua_rule_id: str, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /zones/{zone_id}/firewall/ua_rules/{ua_rule_id}
@required {ua_rule_id: str, zone_id: str, configuration: map, id: str, mode: str(block/challenge/whitelist/js_challenge/managed_challenge)}
@optional {description: str, paused: bool}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/firewall/waf/overrides
@required {zone_id: str}
@optional {page: num=1, per_page: num=50}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/firewall/waf/overrides
@required {zone_id: str, urls: [str]}
@returns(200)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/firewall/waf/overrides/{overrides_id}
@required {overrides_id: str, zone_id: str}
@returns(200) {result: map{id: str}}
@errors {4XX}

@endpoint GET /zones/{zone_id}/firewall/waf/overrides/{overrides_id}
@required {overrides_id: str, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /zones/{zone_id}/firewall/waf/overrides/{overrides_id}
@required {overrides_id: str, zone_id: str, id: str, rewrite_action: map{block: any, challenge: any, default: any, disable: any, simulate: any}, rules: map, urls: [str]}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/firewall/waf/packages
@required {zone_id: str}
@optional {page: num=1, per_page: num=50, order: str, direction: str(asc/desc), match: str(any/all)=all, name: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/firewall/waf/packages/{package_id}
@required {package_id: str, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /zones/{zone_id}/firewall/waf/packages/{package_id}
@required {package_id: str, zone_id: str}
@optional {action_mode: str(simulate/block/challenge)=challenge, sensitivity: str(high/medium/low/off)=high}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/firewall/waf/packages/{package_id}/groups
@required {package_id: str, zone_id: str}
@optional {mode: any, page: num=1, per_page: num=50, order: str(mode/rules_count), direction: str(asc/desc), match: str(any/all)=all, name: str, rules_count: num=0}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/firewall/waf/packages/{package_id}/groups/{group_id}
@required {group_id: str, package_id: str, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /zones/{zone_id}/firewall/waf/packages/{package_id}/groups/{group_id}
@required {group_id: str, package_id: str, zone_id: str}
@optional {mode: str(on/off)=on}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/firewall/waf/packages/{package_id}/rules
@required {package_id: str, zone_id: str}
@optional {mode: str(DIS/CHL/BLK/SIM), group_id: any, page: num=1, per_page: num=50, order: str(priority/group_id/description), direction: str(asc/desc), match: str(any/all)=all, description: str, priority: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/firewall/waf/packages/{package_id}/rules/{rule_id}
@required {rule_id: str, package_id: str, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /zones/{zone_id}/firewall/waf/packages/{package_id}/rules/{rule_id}
@required {rule_id: str, package_id: str, zone_id: str}
@optional {mode: str(default/disable/simulate/block/challenge/on/off)}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/fraud_detection/settings
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /zones/{zone_id}/fraud_detection/settings
@required {zone_id: str}
@optional {authentication_settings: map{failure_criteria: any, success_criteria: any}, user_profiles: str(enabled/disabled), username_expressions: [str]}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/healthchecks
@required {zone_id: str}
@optional {page: num=1, per_page: num=25}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/healthchecks
@required {zone_id: str, address: str, name: str}
@optional {check_regions: [str], consecutive_fails: int=1, consecutive_successes: int=1, description: str, http_config: map{allow_insecure: bool, expected_body: str, expected_codes: [str], follow_redirects: bool, header: map, method: str, path: str, port: int}, interval: int=60, retries: int=2, suspended: bool=false, tcp_config: map{method: str, port: int}, timeout: int=5, type: str=HTTP}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/healthchecks/preview
@required {zone_id: str, address: str, name: str}
@optional {check_regions: [str], consecutive_fails: int=1, consecutive_successes: int=1, description: str, http_config: map{allow_insecure: bool, expected_body: str, expected_codes: [str], follow_redirects: bool, header: map, method: str, path: str, port: int}, interval: int=60, retries: int=2, suspended: bool=false, tcp_config: map{method: str, port: int}, timeout: int=5, type: str=HTTP}
@returns(200)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/healthchecks/preview/{healthcheck_id}
@required {healthcheck_id: str, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/healthchecks/preview/{healthcheck_id}
@required {healthcheck_id: str, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/healthchecks/{healthcheck_id}
@required {healthcheck_id: str, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/healthchecks/{healthcheck_id}
@required {healthcheck_id: str, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /zones/{zone_id}/healthchecks/{healthcheck_id}
@required {healthcheck_id: str, zone_id: str, address: str, name: str}
@optional {check_regions: [str], consecutive_fails: int=1, consecutive_successes: int=1, description: str, http_config: map{allow_insecure: bool, expected_body: str, expected_codes: [str], follow_redirects: bool, header: map, method: str, path: str, port: int}, interval: int=60, retries: int=2, suspended: bool=false, tcp_config: map{method: str, port: int}, timeout: int=5, type: str=HTTP}
@returns(200)
@errors {4XX}

@endpoint PUT /zones/{zone_id}/healthchecks/{healthcheck_id}
@required {healthcheck_id: str, zone_id: str, address: str, name: str}
@optional {check_regions: [str], consecutive_fails: int=1, consecutive_successes: int=1, description: str, http_config: map{allow_insecure: bool, expected_body: str, expected_codes: [str], follow_redirects: bool, header: map, method: str, path: str, port: int}, interval: int=60, retries: int=2, suspended: bool=false, tcp_config: map{method: str, port: int}, timeout: int=5, type: str=HTTP}
@returns(200)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/hold
@required {zone_id: str}
@optional {hold_after: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/hold
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /zones/{zone_id}/hold
@required {zone_id: str}
@optional {hold_after: str=, include_subdomains: bool=false}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/hold
@required {zone_id: str}
@optional {include_subdomains: bool}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/hold/{zone_name}
@required {zone_id: str, zone_name: str}
@returns(200) {hold: bool, hold_after: str(date-time)?, include_subdomains: bool}
@errors {4XX}

@endpoint GET /zones/{zone_id}/hostnames/settings/{setting_id}
@required {zone_id: str, setting_id: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/hostnames/settings/{setting_id}/{hostname}
@required {zone_id: str, setting_id: str, hostname: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/hostnames/settings/{setting_id}/{hostname}
@required {zone_id: str, setting_id: str, hostname: str}
@returns(200)
@errors {4XX}

@endpoint PUT /zones/{zone_id}/hostnames/settings/{setting_id}/{hostname}
@required {zone_id: str, setting_id: str, hostname: str, value: any}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/intel/sinkholes/{sinkhole_id}/ingresses
@required {zone_id: str, sinkhole_id: str, cidr: str}
@returns(201)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/intel/sinkholes/{sinkhole_id}/ingresses/{ingress_id}
@required {zone_id: str, sinkhole_id: str, ingress_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/intel/sinkholes/{sinkhole_id}/ingresses/{ingress_id}
@required {zone_id: str, sinkhole_id: str, ingress_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /zones/{zone_id}/intel/sinkholes/{sinkhole_id}/ingresses/{ingress_id}
@required {zone_id: str, sinkhole_id: str, ingress_id: str, cidr: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/keyless_certificates
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/keyless_certificates
@required {zone_id: str, certificate: str, host: str(hostname), port: num=24008}
@optional {bundle_method: str(ubiquitous/optimal/force)=ubiquitous, name: str, tunnel: map{private_ip!: str, vnet_id!: str}}
@returns(200)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/keyless_certificates/{keyless_certificate_id}
@required {keyless_certificate_id: str, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/keyless_certificates/{keyless_certificate_id}
@required {keyless_certificate_id: str, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /zones/{zone_id}/keyless_certificates/{keyless_certificate_id}
@required {keyless_certificate_id: str, zone_id: str}
@optional {enabled: bool, host: str(hostname), name: str, port: num=24008, tunnel: map{private_ip!: str, vnet_id!: str}}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/leaked-credential-checks
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/leaked-credential-checks
@required {zone_id: str}
@optional {enabled: bool}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/leaked-credential-checks/detections
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/leaked-credential-checks/detections
@required {zone_id: str}
@optional {id: any, password: str, username: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/leaked-credential-checks/detections/{detection_id}
@required {zone_id: str, detection_id: any}
@returns(200) {errors: [map], messages: [map], result: any, success: bool}
@errors {4XX}

@endpoint GET /zones/{zone_id}/leaked-credential-checks/detections/{detection_id}
@required {zone_id: str, detection_id: any}
@returns(200)
@errors {4XX}

@endpoint PUT /zones/{zone_id}/leaked-credential-checks/detections/{detection_id}
@required {zone_id: str, detection_id: any}
@optional {id: any, password: str, username: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/load_balancers
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/load_balancers
@required {zone_id: str, default_pools: [str], fallback_pool: str, name: str}
@optional {adaptive_routing: map{failover_across_pools: bool}, country_pools: map, description: str, location_strategy: map{mode: str, prefer_ecs: str}, networks: [str], pop_pools: map, proxied: bool=false, random_steering: map{default_weight: num, pool_weights: map}, region_pools: map, rules: [map{condition: str, disabled: bool, fixed_response: map, name: str, overrides: map, priority: int, terminates: bool}], session_affinity: str(none/cookie/ip_cookie/header)=none, session_affinity_attributes: map{drain_duration: num, headers: [str], require_all_headers: bool, samesite: str, secure: str, zero_downtime_failover: str}, session_affinity_ttl: num, steering_policy: str(off/geo/random/dynamic_latency/proximity/least_outstanding_requests/least_connections/)=, ttl: num}
@returns(200)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/load_balancers/{load_balancer_id}
@required {zone_id: str, load_balancer_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/load_balancers/{load_balancer_id}
@required {zone_id: str, load_balancer_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /zones/{zone_id}/load_balancers/{load_balancer_id}
@required {zone_id: str, load_balancer_id: str}
@optional {adaptive_routing: map{failover_across_pools: bool}, country_pools: map, default_pools: [str], description: str, enabled: bool=true, fallback_pool: str, location_strategy: map{mode: str, prefer_ecs: str}, name: str, pop_pools: map, proxied: bool=false, random_steering: map{default_weight: num, pool_weights: map}, region_pools: map, rules: [map{condition: str, disabled: bool, fixed_response: map, name: str, overrides: map, priority: int, terminates: bool}], session_affinity: str(none/cookie/ip_cookie/header)=none, session_affinity_attributes: map{drain_duration: num, headers: [str], require_all_headers: bool, samesite: str, secure: str, zero_downtime_failover: str}, session_affinity_ttl: num, steering_policy: str(off/geo/random/dynamic_latency/proximity/least_outstanding_requests/least_connections/)=, ttl: num}
@returns(200)
@errors {4XX}

@endpoint PUT /zones/{zone_id}/load_balancers/{load_balancer_id}
@required {zone_id: str, load_balancer_id: str, default_pools: [str], fallback_pool: str, name: str}
@optional {adaptive_routing: map{failover_across_pools: bool}, country_pools: map, description: str, enabled: bool=true, location_strategy: map{mode: str, prefer_ecs: str}, networks: [str], pop_pools: map, proxied: bool=false, random_steering: map{default_weight: num, pool_weights: map}, region_pools: map, rules: [map{condition: str, disabled: bool, fixed_response: map, name: str, overrides: map, priority: int, terminates: bool}], session_affinity: str(none/cookie/ip_cookie/header)=none, session_affinity_attributes: map{drain_duration: num, headers: [str], require_all_headers: bool, samesite: str, secure: str, zero_downtime_failover: str}, session_affinity_ttl: num, steering_policy: str(off/geo/random/dynamic_latency/proximity/least_outstanding_requests/least_connections/)=, ttl: num}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/logpush/datasets/{dataset_id}/fields
@required {dataset_id: str, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/logpush/datasets/{dataset_id}/jobs
@required {dataset_id: str, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/logpush/edge/jobs
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/logpush/edge/jobs
@required {zone_id: str}
@optional {fields: str, filter: str, sample: int}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/logpush/jobs
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/logpush/jobs
@required {zone_id: str, destination_conf: str(uri)}
@optional {dataset: str(access_requests/account_abuse_protection_events/audit_logs/audit_logs_v2/biso_user_actions/casb_findings/device_posture_results/dex_application_tests/dex_device_state_events/dlp_forensic_copies/dns_firewall_logs/dns_logs/email_security_alerts/email_security_post_delivery_events/firewall_events/gateway_dns/gateway_http/gateway_network/http_requests/ipsec_logs/magic_bgp_logs/magic_ids_detections/mcp_portal_logs/mnm_flow_logs/nel_reports/network_analytics_logs/page_shield_events/sinkhole_http_logs/spectrum_events/ssh_logs/turnstile_events/warp_config_changes/warp_toggle_changes/websocket_analytics/workers_trace_events/zaraz_events/zero_trust_network_sessions)=http_requests, enabled: bool=false, filter: str, filter_attack_traffic: bool=false, frequency: str(high/low)=high, kind: str(/edge)=, logpull_options: str(uri-reference), max_upload_bytes: int, max_upload_interval_seconds: int, max_upload_records: int, name: str, output_options: map{CVE-2021-44228: bool, batch_prefix: str, batch_suffix: str, field_delimiter: str, field_names: [str], merge_subrequests: bool, output_type: str, record_delimiter: str, record_prefix: str, record_suffix: str, record_template: str, sample_rate: num(float), timestamp_format: str}, ownership_challenge: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/logpush/jobs/{job_id}
@required {job_id: int, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/logpush/jobs/{job_id}
@required {job_id: int, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /zones/{zone_id}/logpush/jobs/{job_id}
@required {job_id: int, zone_id: str}
@optional {destination_conf: str(uri), enabled: bool=false, filter: str, filter_attack_traffic: bool=false, frequency: str(high/low)=high, kind: str(/edge)=, logpull_options: str(uri-reference), max_upload_bytes: int, max_upload_interval_seconds: int, max_upload_records: int, name: str, output_options: map{CVE-2021-44228: bool, batch_prefix: str, batch_suffix: str, field_delimiter: str, field_names: [str], merge_subrequests: bool, output_type: str, record_delimiter: str, record_prefix: str, record_suffix: str, record_template: str, sample_rate: num(float), timestamp_format: str}, ownership_challenge: str}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/logpush/ownership
@required {zone_id: str, destination_conf: str(uri)}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/logpush/ownership/validate
@required {zone_id: str, destination_conf: str(uri), ownership_challenge: str}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/logpush/validate/destination
@required {zone_id: str, destination_conf: str(uri)}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/logpush/validate/destination/exists
@required {zone_id: str, destination_conf: str(uri)}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/logpush/validate/origin
@required {zone_id: str, logpull_options: str(uri-reference)}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/logs/control/retention/flag
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/logs/control/retention/flag
@required {zone_id: str}
@optional {flag: bool}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/logs/explorer/datasets
@required {zone_id: str}
@returns(200) {errors: [map], messages: [str], result: [map]?, success: bool}
@errors {400, 403, 404}

@endpoint POST /zones/{zone_id}/logs/explorer/datasets
@required {zone_id: str, dataset: str}
@optional {fields: [map{enabled!: bool, name!: str}], filter: str}
@returns(201) {errors: [map], messages: [str], result: any, success: bool}
@errors {400, 403, 404, 409}

@endpoint GET /zones/{zone_id}/logs/explorer/datasets/available
@required {zone_id: str}
@returns(200) {errors: [map], messages: [str], result: [map]?, success: bool}
@errors {400, 403, 404}

@endpoint DELETE /zones/{zone_id}/logs/explorer/datasets/{dataset_id}
@required {zone_id: str, dataset_id: str}
@returns(202) {errors: [map], messages: [str], result: any, success: bool}
@errors {400, 403, 404, 409}

@endpoint GET /zones/{zone_id}/logs/explorer/datasets/{dataset_id}
@required {zone_id: str, dataset_id: str}
@returns(200) {errors: [map], messages: [str], result: any, success: bool}
@errors {400, 403, 404}

@endpoint PUT /zones/{zone_id}/logs/explorer/datasets/{dataset_id}
@required {zone_id: str, dataset_id: str, enabled: bool}
@optional {deletion_protection: bool, fields: [map{enabled!: bool, name!: str}], filter: str}
@returns(200) {errors: [map], messages: [str], result: any, success: bool}
@errors {400, 403, 404}

@endpoint GET /zones/{zone_id}/logs/explorer/query/sql
@required {zone_id: str, query: str}
@returns(200) {errors: [map], messages: [str], result: [map]?, success: bool}
@errors {400, 403, 404, 507}

@endpoint POST /zones/{zone_id}/logs/explorer/query/sql
@required {zone_id: str}
@returns(200) {errors: [map], messages: [str], result: [map]?, success: bool}
@errors {400, 403, 404, 507}

@endpoint GET /zones/{zone_id}/logs/rayids/{ray_id}
@required {zone_id: str, ray_id: str}
@optional {fields: str, timestamps: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/logs/received
@required {zone_id: str, end: any}
@optional {start: any, fields: str, sample: num, count: int, timestamps: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/logs/received/fields
@required {zone_id: str}
@returns(200) {key: str}
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/managed_headers
@required {zone_id: str}
@returns(204)
@errors {4XX}

@endpoint GET /zones/{zone_id}/managed_headers
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /zones/{zone_id}/managed_headers
@required {zone_id: str}
@optional {managed_request_headers: [any], managed_response_headers: [any]}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/media/usage
@required {zone_id: str}
@optional {metrics: str, since: str(date-time), until: str(date-time), time_delta: str(hour/day/week/month/quarter/year)=hour, limit: int=100, filters: str}
@returns(200) {errors: [map], messages: [map], result: [map], success: bool}
@errors {400, 401, 403}

@endpoint GET /zones/{zone_id}/origin/cloud_regions
@required {zone_id: str}
@optional {page: int=1, per_page: int=20}
@returns(200)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/origin/cloud_regions/batch
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /zones/{zone_id}/origin/cloud_regions/batch
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/origin/cloud_regions/supported_regions
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/origin/cloud_regions/{origin_ip}
@required {zone_id: str, origin_ip: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/origin/cloud_regions/{origin_ip}
@required {zone_id: str, origin_ip: str}
@returns(200)
@errors {4XX}

@endpoint PUT /zones/{zone_id}/origin/cloud_regions/{origin_ip}
@required {zone_id: str, origin_ip: str, origin_ip: str, region: str, vendor: str(aws/azure/gcp/oci)}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/origin_tls_client_auth
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/origin_tls_client_auth
@required {zone_id: str, certificate: str, private_key: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/origin_tls_client_auth/hostnames
@required {zone_id: str}
@optional {page: num=1, per_page: num=50, status: str(active/pending_deployment/pending_deletion/deleted/deployment_timed_out/deletion_timed_out/all)}
@returns(200)
@errors {4XX}

@endpoint PUT /zones/{zone_id}/origin_tls_client_auth/hostnames
@required {zone_id: str, config: [map{cert_id: str, enabled: bool, hostname: str}]}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/origin_tls_client_auth/hostnames/certificates
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/origin_tls_client_auth/hostnames/certificates
@required {zone_id: str, certificate: str, private_key: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/origin_tls_client_auth/hostnames/certificates/{certificate_id}
@required {certificate_id: str, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/origin_tls_client_auth/hostnames/certificates/{certificate_id}
@required {certificate_id: str, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/origin_tls_client_auth/hostnames/{hostname}
@required {hostname: str, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/origin_tls_client_auth/settings
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /zones/{zone_id}/origin_tls_client_auth/settings
@required {zone_id: str, enabled: bool}
@returns(200)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/origin_tls_client_auth/{certificate_id}
@required {certificate_id: str, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/origin_tls_client_auth/{certificate_id}
@required {certificate_id: str, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/page_shield
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /zones/{zone_id}/page_shield
@required {zone_id: str}
@optional {enabled: bool, use_cloudflare_reporting_endpoint: bool, use_connection_url_path: bool}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/page_shield/connections
@required {zone_id: str}
@optional {exclude_urls: str, urls: str, hosts: str, page: str, per_page: num, order_by: str(first_seen_at/last_seen_at), direction: str(asc/desc), prioritize_malicious: bool, exclude_cdn_cgi: bool, status: str, page_url: str, export: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/page_shield/connections/{connection_id}
@required {zone_id: str, connection_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/page_shield/cookies
@required {zone_id: str}
@optional {hosts: str, page: str, per_page: num, order_by: str(first_seen_at/last_seen_at), direction: str(asc/desc), page_url: str, export: str, name: str, secure: bool, http_only: bool, same_site: str(lax/strict/none), type: str(first_party/unknown), path: str, domain: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/page_shield/cookies/{cookie_id}
@required {zone_id: str, cookie_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/page_shield/policies
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/page_shield/policies
@required {zone_id: str, action: str(allow/log/add_reporting_directives), description: str, enabled: bool, expression: str, value: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/page_shield/policies/{policy_id}
@required {zone_id: str, policy_id: str}
@returns(204)
@errors {4XX}

@endpoint GET /zones/{zone_id}/page_shield/policies/{policy_id}
@required {zone_id: str, policy_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /zones/{zone_id}/page_shield/policies/{policy_id}
@required {zone_id: str, policy_id: str}
@optional {action: str(allow/log/add_reporting_directives), description: str, enabled: bool, expression: str, value: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/page_shield/scripts
@required {zone_id: str}
@optional {exclude_urls: str, urls: str, hosts: str, page: str, per_page: num, order_by: str(first_seen_at/last_seen_at), direction: str(asc/desc), prioritize_malicious: bool, exclude_cdn_cgi: bool=true, exclude_duplicates: bool=true, status: str, page_url: str, export: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/page_shield/scripts/{script_id}
@required {zone_id: str, script_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/pagerules
@required {zone_id: str}
@optional {order: str(status/priority)=priority, direction: str(asc/desc)=desc, match: str(any/all)=all, status: str(active/disabled)=disabled}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/pagerules
@required {zone_id: str, actions: [any], targets: [any]}
@optional {priority: int=1, status: str(active/disabled)=disabled}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/pagerules/settings
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/pagerules/{pagerule_id}
@required {pagerule_id: str, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/pagerules/{pagerule_id}
@required {pagerule_id: str, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /zones/{zone_id}/pagerules/{pagerule_id}
@required {pagerule_id: str, zone_id: str}
@optional {actions: [any], priority: int=1, status: str(active/disabled)=disabled, targets: [any]}
@returns(200)
@errors {4XX}

@endpoint PUT /zones/{zone_id}/pagerules/{pagerule_id}
@required {pagerule_id: str, zone_id: str, actions: [any], targets: [any]}
@optional {priority: int=1, status: str(active/disabled)=disabled}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/pay-per-crawl/can_be_enabled
@required {zone_id: str}
@returns(200) {errors: [map], messages: [map], result: map{can_be_enabled: bool, enabled: bool, id: str}, result_info: map{count: int, page: int, per_page: int, total_count: int, total_pages: int}, success: bool}
@errors {400}

@endpoint GET /zones/{zone_id}/pay-per-crawl/configuration
@required {zone_id: str}
@returns(200) {errors: [map], messages: [map], result: map{bot_overrides: map, enabled: bool, price_usd_microcents: int}, result_info: map{count: int, page: int, per_page: int, total_count: int, total_pages: int}, success: bool}
@errors {400}

@endpoint PATCH /zones/{zone_id}/pay-per-crawl/configuration
@required {zone_id: str}
@optional {bot_overrides: map, enabled: bool, price_usd_microcents: int}
@returns(200) {errors: [map], messages: [map], result: map{bot_overrides: map, enabled: bool, price_usd_microcents: int}, result_info: map{count: int, page: int, per_page: int, total_count: int, total_pages: int}, success: bool}
@errors {400}

@endpoint POST /zones/{zone_id}/pay-per-crawl/configuration
@required {zone_id: str}
@optional {bot_overrides: map, enabled: bool, price_usd_microcents: int}
@returns(200) {errors: [map], messages: [map], result: map{bot_overrides: map, enabled: bool, price_usd_microcents: int}, result_info: map{count: int, page: int, per_page: int, total_count: int, total_pages: int}, success: bool}
@errors {400}

@endpoint GET /zones/{zone_id}/precursor
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /zones/{zone_id}/precursor
@required {zone_id: str}
@optional {default_mode: str(off/min-friction/max-security)=off, enforcement_rules: [map{description: str, enabled: bool, expression!: str, id: str, mode!: str}]}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/purge_cache
@required {zone_id: str}
@returns(200) {errors: [map], messages: [map], result: map?{id: str}, success: bool}
@errors {4XX}

@endpoint GET /zones/{zone_id}/rate_limit_analytics
@required {zone_id: str, since: str(date-time), until: str(date-time), time_delta: int(60/3600/86400/2592000)}
@returns(200) {labels: map, since: str(date-time), time_delta: int, timeseries: [map], until: str(date-time), zone_id: int(int64)}
@errors {400, 401, 403, 500}

@endpoint GET /zones/{zone_id}/rate_limits
@required {zone_id: str}
@optional {page: num=1, per_page: num=20}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/rate_limits
@required {zone_id: str, action: map, match: map, period: num, threshold: num}
@returns(200)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/rate_limits/{rate_limit_id}
@required {rate_limit_id: str, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/rate_limits/{rate_limit_id}
@required {rate_limit_id: str, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /zones/{zone_id}/rate_limits/{rate_limit_id}
@required {rate_limit_id: str, zone_id: str, action: map, match: map, period: num, threshold: num}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/rulesets
@required {zone_id: str}
@optional {cursor: str, per_page: int}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/rulesets
@required {zone_id: str}
@optional {dry_run: bool=false}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/rulesets/phases/{ruleset_phase}/entrypoint
@required {ruleset_phase: str, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /zones/{zone_id}/rulesets/phases/{ruleset_phase}/entrypoint
@required {ruleset_phase: str, zone_id: str}
@optional {dry_run: bool=false}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/rulesets/phases/{ruleset_phase}/entrypoint/versions
@required {ruleset_phase: str, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/rulesets/phases/{ruleset_phase}/entrypoint/versions/{ruleset_version}
@required {ruleset_version: str, ruleset_phase: str, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/rulesets/{ruleset_id}
@required {ruleset_id: str, zone_id: str}
@optional {dry_run: bool=false}
@returns(204)
@errors {4XX}

@endpoint GET /zones/{zone_id}/rulesets/{ruleset_id}
@required {ruleset_id: str, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /zones/{zone_id}/rulesets/{ruleset_id}
@required {ruleset_id: str, zone_id: str}
@optional {dry_run: bool=false}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/rulesets/{ruleset_id}/rules
@required {ruleset_id: str, zone_id: str}
@optional {dry_run: bool=false}
@returns(200)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/rulesets/{ruleset_id}/rules/{rule_id}
@required {rule_id: str, ruleset_id: str, zone_id: str}
@optional {dry_run: bool=false}
@returns(200)
@errors {4XX}

@endpoint PATCH /zones/{zone_id}/rulesets/{ruleset_id}/rules/{rule_id}
@required {rule_id: str, ruleset_id: str, zone_id: str}
@optional {dry_run: bool=false}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/rulesets/{ruleset_id}/versions
@required {ruleset_id: str, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/rulesets/{ruleset_id}/versions/{ruleset_version}
@required {ruleset_version: str, ruleset_id: str, zone_id: str}
@optional {dry_run: bool=false}
@returns(204)
@errors {4XX}

@endpoint GET /zones/{zone_id}/rulesets/{ruleset_id}/versions/{ruleset_version}
@required {ruleset_version: str, ruleset_id: str, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/rulesets/{ruleset_id}/versions/{ruleset_version}/by_tag/{rule_tag}
@required {rule_tag: str, ruleset_version: str, ruleset_id: str, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/schema_validation/schemas
@optional {page: int=1, per_page: int=20, omit_source: bool=false, validation_enabled: bool}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/schema_validation/schemas
@required {kind: str, name: str, source: str, validation_enabled: bool}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/schema_validation/schemas/hosts
@optional {page: int=1, per_page: int=20}
@returns(200)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/schema_validation/schemas/{schema_id}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/schema_validation/schemas/{schema_id}
@optional {omit_source: bool=false}
@returns(200)
@errors {4XX}

@endpoint PATCH /zones/{zone_id}/schema_validation/schemas/{schema_id}
@optional {validation_enabled: bool}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/schema_validation/schemas/{schema_id}/operations
@optional {feature: [str], host: [str], method: [str], endpoint: str, page: int=1, per_page: int=20, operation_status: str(new/existing)}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/schema_validation/settings
@returns(200)
@errors {4XX}

@endpoint PATCH /zones/{zone_id}/schema_validation/settings
@optional {validation_default_mitigation_action: str(none/log/block), validation_override_mitigation_action: str}
@returns(200)
@errors {4XX}

@endpoint PUT /zones/{zone_id}/schema_validation/settings
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/schema_validation/settings/operations
@optional {page: int=1, per_page: int=20}
@returns(200)
@errors {4XX}

@endpoint PATCH /zones/{zone_id}/schema_validation/settings/operations
@returns(200)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/schema_validation/settings/operations/{operation_id}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/schema_validation/settings/operations/{operation_id}
@returns(200)
@errors {4XX}

@endpoint PUT /zones/{zone_id}/schema_validation/settings/operations/{operation_id}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/secondary_dns/force_axfr
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/secondary_dns/incoming
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/secondary_dns/incoming
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/secondary_dns/incoming
@required {zone_id: str, auto_refresh_seconds: num=86400, id: str, name: str, peers: [str]}
@returns(200)
@errors {4XX}

@endpoint PUT /zones/{zone_id}/secondary_dns/incoming
@required {zone_id: str, auto_refresh_seconds: num=86400, id: str, name: str, peers: [str]}
@returns(200)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/secondary_dns/outgoing
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/secondary_dns/outgoing
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/secondary_dns/outgoing
@required {zone_id: str, id: str, name: str, peers: [str]}
@returns(200)
@errors {4XX}

@endpoint PUT /zones/{zone_id}/secondary_dns/outgoing
@required {zone_id: str, id: str, name: str, peers: [str]}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/secondary_dns/outgoing/disable
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/secondary_dns/outgoing/enable
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/secondary_dns/outgoing/force_notify
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/secondary_dns/outgoing/status
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/security-center/insights
@required {zone_id: str}
@optional {dismissed: bool, issue_class: [str], issue_type: [str], product: [str], source: [str], severity: [str], subject: [str], issue_class~neq: [str], issue_type~neq: [str], product~neq: [str], severity~neq: [str], subject~neq: [str], page: any=1, per_page: any=25}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/security-center/insights/audit-log
@required {zone_id: str}
@optional {per_page: int=25, cursor: str, field_changed: str(status/user_classification), changed_by: str, since: str(date-time), before: str(date-time), order: str(asc/desc)=desc}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/security-center/insights/class
@required {zone_id: str}
@optional {dismissed: bool, issue_class: [str], issue_type: [str], product: [str], source: [str], severity: [str], subject: [str], issue_class~neq: [str], issue_type~neq: [str], product~neq: [str], severity~neq: [str], subject~neq: [str]}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/security-center/insights/scans
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/security-center/insights/scans
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/security-center/insights/severity
@required {zone_id: str}
@optional {dismissed: bool, issue_class: [str], issue_type: [str], product: [str], source: [str], severity: [str], subject: [str], issue_class~neq: [str], issue_type~neq: [str], product~neq: [str], severity~neq: [str], subject~neq: [str]}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/security-center/insights/type
@required {zone_id: str}
@optional {dismissed: bool, issue_class: [str], issue_type: [str], product: [str], source: [str], severity: [str], subject: [str], issue_class~neq: [str], issue_type~neq: [str], product~neq: [str], severity~neq: [str], subject~neq: [str]}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/security-center/insights/{issue_id}/audit-log
@required {zone_id: str, issue_id: str}
@optional {per_page: int=25, cursor: str, field_changed: str(status/user_classification), changed_by: str, since: str(date-time), before: str(date-time), order: str(asc/desc)=desc}
@returns(200)
@errors {4XX}

@endpoint PATCH /zones/{zone_id}/security-center/insights/{issue_id}/classification
@required {zone_id: str, issue_id: str}
@optional {classification: str(false_positive/accept_risk/other), rationale: str}
@returns(200)
@errors {4XX}

@endpoint PUT /zones/{zone_id}/security-center/insights/{issue_id}/dismiss
@required {zone_id: str, issue_id: str}
@optional {dismiss: bool=true}
@returns(200)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/security-center/securitytxt
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/security-center/securitytxt
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /zones/{zone_id}/security-center/securitytxt
@required {zone_id: str}
@optional {acknowledgments: [str(uri)], canonical: [str(uri)], contact: [str(uri)], enabled: bool, encryption: [str(uri)], expires: str(date-time), hiring: [str(uri)], policy: [str(uri)], preferred_languages: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/settings
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /zones/{zone_id}/settings
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/settings/aegis
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /zones/{zone_id}/settings/aegis
@required {zone_id: str, value: map{enabled: bool, pool_id: str}}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/settings/auto_origin_tls_kex
@required {zone_id: str}
@returns(200) {errors: [map], messages: [map], result: map{enabled: any, id: str, modified_on: str(date-time)}, success: bool}
@errors {4XX}

@endpoint PATCH /zones/{zone_id}/settings/auto_origin_tls_kex
@required {zone_id: str, enabled: bool}
@returns(200) {errors: [map], messages: [map], result: map{enabled: any, id: str, modified_on: str(date-time)}, success: bool}
@errors {4XX}

@endpoint GET /zones/{zone_id}/settings/automatic_platform_optimization
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /zones/{zone_id}/settings/automatic_platform_optimization
@required {zone_id: str, value: any}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/settings/binary_ast
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /zones/{zone_id}/settings/binary_ast
@required {zone_id: str, value: str(off/on/latest)}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/settings/csam_scanner_third_party
@required {zone_id: str}
@returns(200)
@errors {400, 401, 403, 404, 500}

@endpoint PATCH /zones/{zone_id}/settings/csam_scanner_third_party
@required {zone_id: str}
@optional {id: str, value: map{email: str, enabled: bool, resend_email: bool, sources: map}}
@returns(200)
@errors {400, 401, 403, 404, 500}

@endpoint GET /zones/{zone_id}/settings/fonts
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /zones/{zone_id}/settings/fonts
@required {zone_id: str, value: str(on/off)=off}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/settings/google-tag-gateway/config
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /zones/{zone_id}/settings/google-tag-gateway/config
@required {zone_id: str, enabled: bool, endpoint: str, hideOriginalIp: bool, measurementId: str}
@optional {setUpTag: bool}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/settings/h2_prioritization
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /zones/{zone_id}/settings/h2_prioritization
@required {zone_id: str, value: str(off/on/custom)}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/settings/image_resizing
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /zones/{zone_id}/settings/image_resizing
@required {zone_id: str, value: str(off/on/open/latest)}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/settings/nel
@required {zone_id: str}
@returns(200) {errors: [map], messages: [map], result: map{editable: bool, id: str, modified_on: str(date-time), value: map{enabled: bool}}, success: bool}
@errors {401, 403, 500}

@endpoint PATCH /zones/{zone_id}/settings/nel
@required {zone_id: str, value: map{enabled!: bool}}
@returns(200) {errors: [map], messages: [map], result: map{editable: bool, id: str, modified_on: str(date-time), value: map{enabled: bool}}, success: bool}
@errors {400, 401, 403, 500}

@endpoint GET /zones/{zone_id}/settings/origin_h2_max_streams
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /zones/{zone_id}/settings/origin_h2_max_streams
@required {zone_id: str, value: int}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/settings/origin_max_http_version
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /zones/{zone_id}/settings/origin_max_http_version
@required {zone_id: str, value: str(2/1)}
@returns(200)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/settings/origin_tls_compliance_modes
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/settings/origin_tls_compliance_modes
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /zones/{zone_id}/settings/origin_tls_compliance_modes
@required {zone_id: str, value: [str]}
@returns(200)
@errors {4XX}

@endpoint PUT /zones/{zone_id}/settings/origin_tls_compliance_modes
@required {zone_id: str, value: [str]}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/settings/rum
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /zones/{zone_id}/settings/rum
@required {zone_id: str}
@optional {value: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/settings/speed_brain
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /zones/{zone_id}/settings/speed_brain
@required {zone_id: str, value: str(on/off)}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/settings/ssl_automatic_mode
@required {zone_id: str}
@returns(200) {errors: [map], messages: [map], result: map{editable: bool, id: str, modified_on: str(date-time), next_scheduled_scan: str(date-time)?, value: str}, success: bool}
@errors {4XX}

@endpoint PATCH /zones/{zone_id}/settings/ssl_automatic_mode
@required {zone_id: str, value: str(auto/custom)}
@returns(200) {errors: [map], messages: [map], result: map{editable: bool, id: str, modified_on: str(date-time), next_scheduled_scan: str(date-time)?, value: str}, success: bool}
@errors {4XX}

@endpoint GET /zones/{zone_id}/settings/transformations_allowed_origins
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /zones/{zone_id}/settings/transformations_allowed_origins
@required {zone_id: str, value: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/settings/transformations_c2pa
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /zones/{zone_id}/settings/transformations_c2pa
@required {zone_id: str, value: str(off/on)}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/settings/transformations_config
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /zones/{zone_id}/settings/transformations_config
@required {zone_id: str, value: map{allowed_origins: str, c2pa: str, transformations: str}}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/settings/zaraz/config
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /zones/{zone_id}/settings/zaraz/config
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/settings/zaraz/default
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/settings/zaraz/export
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/settings/zaraz/history
@required {zone_id: str}
@optional {offset: int, limit: int, sortField: str(id/user_id/description/created_at/updated_at), sortOrder: str(DESC/ASC)}
@returns(200)
@errors {4XX}

@endpoint PUT /zones/{zone_id}/settings/zaraz/history
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/settings/zaraz/history/configs
@required {zone_id: str, ids: [int]}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/settings/zaraz/publish
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/settings/zaraz/workflow
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /zones/{zone_id}/settings/zaraz/workflow
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/settings/{setting_id}
@required {zone_id: str, setting_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /zones/{zone_id}/settings/{setting_id}
@required {zone_id: str, setting_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/smart_shield
@required {zone_id: str}
@returns(200)
@errors {500, 502, 4XX}

@endpoint PATCH /zones/{zone_id}/smart_shield
@required {zone_id: str}
@optional {cache_reserve: map{value: str}, regional_tiered_cache: map{value: str}, smart_routing: map{value: str}, smart_tiered_cache: map{value: str}}
@returns(200)
@errors {500, 502, 4XX}

@endpoint GET /zones/{zone_id}/smart_shield/cache_reserve_clear
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/smart_shield/cache_reserve_clear
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/smart_shield/healthchecks
@required {zone_id: str}
@optional {page: num=1, per_page: num=25}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/smart_shield/healthchecks
@required {zone_id: str, address: str, name: str}
@optional {check_regions: [str], consecutive_fails: int=1, consecutive_successes: int=1, description: str, http_config: map{allow_insecure: bool, expected_body: str, expected_codes: [str], follow_redirects: bool, header: map, method: str, path: str, port: int}, interval: int=60, retries: int=2, suspended: bool=false, tcp_config: map{method: str, port: int}, timeout: int=5, type: str=HTTP}
@returns(200)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/smart_shield/healthchecks/{healthcheck_id}
@required {healthcheck_id: str, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/smart_shield/healthchecks/{healthcheck_id}
@required {healthcheck_id: str, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /zones/{zone_id}/smart_shield/healthchecks/{healthcheck_id}
@required {healthcheck_id: str, zone_id: str, address: str, name: str}
@optional {check_regions: [str], consecutive_fails: int=1, consecutive_successes: int=1, description: str, http_config: map{allow_insecure: bool, expected_body: str, expected_codes: [str], follow_redirects: bool, header: map, method: str, path: str, port: int}, interval: int=60, retries: int=2, suspended: bool=false, tcp_config: map{method: str, port: int}, timeout: int=5, type: str=HTTP}
@returns(200)
@errors {4XX}

@endpoint PUT /zones/{zone_id}/smart_shield/healthchecks/{healthcheck_id}
@required {healthcheck_id: str, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/snippets
@required {zone_id: str}
@optional {page: int, per_page: int}
@returns(200)
@errors {4XX, 5XX}

@endpoint DELETE /zones/{zone_id}/snippets/snippet_rules
@required {zone_id: str}
@returns(200)
@errors {4XX, 5XX}

@endpoint GET /zones/{zone_id}/snippets/snippet_rules
@required {zone_id: str}
@returns(200)
@errors {4XX, 5XX}

@endpoint PUT /zones/{zone_id}/snippets/snippet_rules
@required {zone_id: str, rules: [map{description: str, enabled: bool, expression!: str, id!: str, last_updated!: str(date-time), snippet_name!: str}]}
@returns(200)
@errors {4XX, 5XX}

@endpoint DELETE /zones/{zone_id}/snippets/{snippet_name}
@required {zone_id: str, snippet_name: str}
@returns(200)
@errors {4XX, 5XX}

@endpoint GET /zones/{zone_id}/snippets/{snippet_name}
@required {zone_id: str, snippet_name: str}
@returns(200)
@errors {4XX, 5XX}

@endpoint PUT /zones/{zone_id}/snippets/{snippet_name}
@required {zone_id: str, snippet_name: str}
@returns(200)
@errors {4XX, 5XX}

@endpoint GET /zones/{zone_id}/snippets/{snippet_name}/content
@required {zone_id: str, snippet_name: str}
@returns(200)
@errors {4XX, 5XX}

@endpoint GET /zones/{zone_id}/spectrum/analytics/aggregate/current
@required {zone_id: str}
@optional {appID: str, colo_name: str}
@returns(200)
@errors {4xx}

@endpoint GET /zones/{zone_id}/spectrum/analytics/events/bytime
@required {zone_id: str, time_delta: str(year/quarter/month/week/day/hour/dekaminute/minute)}
@optional {dimensions: [str], sort: [str], until: any, metrics: [str], filters: str, since: any}
@returns(200)
@errors {4xx}

@endpoint GET /zones/{zone_id}/spectrum/analytics/events/summary
@required {zone_id: str}
@optional {dimensions: [str], sort: [str], until: any, metrics: [str], filters: str, since: any}
@returns(200)
@errors {4xx}

@endpoint GET /zones/{zone_id}/spectrum/apps
@required {zone_id: str}
@optional {page: num, per_page: num=20, direction: str(asc/desc)=asc, order: str(protocol/app_id/created_on/modified_on/dns)=dns}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/spectrum/apps
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/spectrum/apps/{app_id}
@required {app_id: str, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/spectrum/apps/{app_id}
@required {app_id: str, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /zones/{zone_id}/spectrum/apps/{app_id}
@required {app_id: str, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/spectrum/protocols
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/speed_api/availabilities
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/speed_api/pages
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/speed_api/pages/{url}/tests
@required {zone_id: str, url: str}
@optional {region: any}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/speed_api/pages/{url}/tests
@required {zone_id: str, url: str}
@optional {page: int=1, per_page: int=20, region: any}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/speed_api/pages/{url}/tests
@required {zone_id: str, url: str}
@optional {region: any}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/speed_api/pages/{url}/tests/{test_id}
@required {zone_id: str, url: str, test_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/speed_api/pages/{url}/trend
@required {zone_id: str, url: str, region: str, deviceType: str, start: str(date-time), tz: str, metrics: str}
@optional {end: str(date-time)}
@returns(200)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/speed_api/schedule/{url}
@required {zone_id: str, url: str}
@optional {region: any}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/speed_api/schedule/{url}
@required {zone_id: str, url: str}
@optional {region: any}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/speed_api/schedule/{url}
@required {zone_id: str, url: str}
@optional {region: any, frequency: str}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/ssl/analyze
@required {zone_id: str}
@optional {bundle_method: str(ubiquitous/optimal/force)=ubiquitous, certificate: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/ssl/certificate_packs
@required {zone_id: str}
@optional {page: num=1, per_page: num=20, status: str, deploy: str(staging/production)}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/ssl/certificate_packs/order
@required {zone_id: str, certificate_authority: str(google/lets_encrypt/ssl_com), hosts: [str], type: str, validation_method: str(txt/http/email), validity_days: int(14/30/90/365)}
@optional {cloudflare_branding: bool}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/ssl/certificate_packs/quota
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/ssl/certificate_packs/{certificate_pack_id}
@required {certificate_pack_id: str, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/ssl/certificate_packs/{certificate_pack_id}
@required {certificate_pack_id: str, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /zones/{zone_id}/ssl/certificate_packs/{certificate_pack_id}
@required {certificate_pack_id: str, zone_id: str}
@optional {cloudflare_branding: bool}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/ssl/recommendation
@required {zone_id: str}
@returns(200) {errors: [map], messages: [map], result: map{editable: bool, id: str, modified_on: str(date-time), next_scheduled_scan: str(date-time)?, value: str}, success: bool}
@errors {4XX}

@endpoint GET /zones/{zone_id}/ssl/universal/settings
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /zones/{zone_id}/ssl/universal/settings
@required {zone_id: str}
@optional {enabled: bool}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/ssl/verification
@required {zone_id: str}
@optional {retry: bool}
@returns(200)
@errors {4XX}

@endpoint PATCH /zones/{zone_id}/ssl/verification/{certificate_pack_id}
@required {certificate_pack_id: str, zone_id: str, validation_method: str(http/cname/txt/email)}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/stream/usage
@required {zone_id: str}
@optional {metrics: str, since: str(date-time), until: str(date-time), time_delta: str(hour/day/week/month/quarter/year)=hour, limit: int=100, filters: str}
@returns(200) {errors: [map], messages: [map], result: [map], success: bool}
@errors {400, 401, 403}

@endpoint DELETE /zones/{zone_id}/subscription
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/subscription
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/subscription
@required {zone_id: str}
@optional {app: map{install_id: str}, component_values: [map{default: num, display_name: str, kind: str, name: str, price: num, value: num}], currency: str, current_period_end: str(date-time), current_period_start: str(date-time), frequency: str(weekly/monthly/quarterly/yearly), id: str, price: num, rate_plan: map{currency: str, externally_managed: bool, id: str, is_contract: bool, public_name: str, scope: str, sets: [str]}, state: str(Trial/Provisioned/Paid/AwaitingPayment/Cancelled/Failed/Expired), zone: map{id: str, name: str}}
@returns(200)
@errors {4XX}

@endpoint PUT /zones/{zone_id}/subscription
@required {zone_id: str}
@optional {app: map{install_id: str}, component_values: [map{default: num, display_name: str, kind: str, name: str, price: num, value: num}], currency: str, current_period_end: str(date-time), current_period_start: str(date-time), frequency: str(weekly/monthly/quarterly/yearly), id: str, price: num, rate_plan: map{currency: str, externally_managed: bool, id: str, is_contract: bool, public_name: str, scope: str, sets: [str]}, state: str(Trial/Provisioned/Paid/AwaitingPayment/Cancelled/Failed/Expired), zone: map{id: str, name: str}}
@returns(200)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/subscriptions
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/subscriptions
@required {zone_id: str}
@optional {app: map{install_id: str}, component_values: [map{default: num, display_name: str, kind: str, name: str, price: num, value: num}], currency: str, current_period_end: str(date-time), current_period_start: str(date-time), frequency: str(weekly/monthly/quarterly/yearly), id: str, price: num, rate_plan: map{currency: str, externally_managed: bool, id: str, is_contract: bool, public_name: str, scope: str, sets: [str]}, state: str(Trial/Provisioned/Paid/AwaitingPayment/Cancelled/Failed/Expired), zone: map{id: str, name: str}}
@returns(200)
@errors {4XX}

@endpoint PUT /zones/{zone_id}/subscriptions
@required {zone_id: str}
@optional {app: map{install_id: str}, component_values: [map{default: num, display_name: str, kind: str, name: str, price: num, value: num}], currency: str, current_period_end: str(date-time), current_period_start: str(date-time), frequency: str(weekly/monthly/quarterly/yearly), id: str, price: num, rate_plan: map{currency: str, externally_managed: bool, id: str, is_contract: bool, public_name: str, scope: str, sets: [str]}, state: str(Trial/Provisioned/Paid/AwaitingPayment/Cancelled/Failed/Expired), zone: map{id: str, name: str}}
@returns(200)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/tags
@required {zone_id: str}
@optional {If-Match: str}
@returns(204)
@errors {412, 4XX, 5XX}

@endpoint GET /zones/{zone_id}/tags
@required {zone_id: str, resource_id: str, resource_type: str}
@optional {access_application_id: str(uuid)}
@returns(200)
@errors {4XX, 5XX}

@endpoint PUT /zones/{zone_id}/tags
@required {zone_id: str}
@optional {If-Match: str}
@returns(200)
@errors {412, 4XX, 5XX}

@endpoint GET /zones/{zone_id}/token_validation/config
@optional {page: int=1, per_page: int=20}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/token_validation/config
@required {credentials: map{keys!: [map]}, description: str, title: str, token_sources: [any], token_type: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/token_validation/config/{config_id}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/token_validation/config/{config_id}
@returns(200)
@errors {4XX}

@endpoint PATCH /zones/{zone_id}/token_validation/config/{config_id}
@optional {description: str, title: str, token_sources: [any]}
@returns(200)
@errors {4XX}

@endpoint PATCH /zones/{zone_id}/token_validation/config/{config_id}/credentials
@required {keys: [map]}
@returns(200)
@errors {4XX}

@endpoint PUT /zones/{zone_id}/token_validation/config/{config_id}/credentials
@required {keys: [map]}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/token_validation/rules
@optional {per_page: int=20, page: int=1, token_configuration: [any], action: str, enabled: bool, id: any, rule_id: any, host: str(hostname), hostname: str(hostname)}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/token_validation/rules
@returns(200)
@errors {4XX}

@endpoint PATCH /zones/{zone_id}/token_validation/rules/bulk
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/token_validation/rules/bulk
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/token_validation/rules/preview
@optional {per_page: int=20, page: int=1, state: [str], host: [str(hostname)], hostname: [str(hostname)], method: [str], endpoint: [str(uri-template)], exclude: [map{operation_ids: [any]}], include: [map{host: [str(hostname)]}]}
@returns(200)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/token_validation/rules/{rule_id}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/token_validation/rules/{rule_id}
@returns(200)
@errors {4XX}

@endpoint PATCH /zones/{zone_id}/token_validation/rules/{rule_id}
@returns(200)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/url_normalization
@required {zone_id: str}
@returns(204)
@errors {4XX}

@endpoint GET /zones/{zone_id}/url_normalization
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /zones/{zone_id}/url_normalization
@required {zone_id: str, scope: str(incoming/both/none), type: str(cloudflare/rfc3986)}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/waiting_rooms
@required {zone_id: str}
@optional {page: num=1, per_page: num=25}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/waiting_rooms
@required {zone_id: str, host: str, name: str, new_users_per_minute: int, total_active_users: int}
@optional {additional_routes: [map{host: str, path: str}], cookie_attributes: map{samesite: str, secure: str}, cookie_suffix: str=, custom_page_html: str=, default_template_language: str(en-US/es-ES/de-DE/fr-FR/it-IT/ja-JP/ko-KR/pt-BR/zh-CN/zh-TW/nl-NL/pl-PL/id-ID/tr-TR/ar-EG/ru-RU/fa-IR/bg-BG/hr-HR/cs-CZ/da-DK/fi-FI/lt-LT/ms-MY/nb-NO/ro-RO/el-GR/he-IL/hi-IN/hu-HU/sr-BA/sk-SK/sl-SI/sv-SE/tl-PH/th-TH/uk-UA/vi-VN)=en-US, description: str=, disable_session_renewal: bool=false, enabled_origin_commands: [str]=, json_response_enabled: bool=false, path: str=/, queue_all: bool=false, queueing_method: str(fifo/random/passthrough/reject)=fifo, queueing_status_code: int(200/202/429)=200, session_duration: int=5, suspended: bool=false, turnstile_action: str(log/infinite_queue)=log, turnstile_mode: str(off/invisible/visible_non_interactive/visible_managed)=invisible}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/waiting_rooms/preview
@required {zone_id: str, custom_html: str=}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/waiting_rooms/settings
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /zones/{zone_id}/waiting_rooms/settings
@required {zone_id: str}
@optional {search_engine_crawler_bypass: bool=false}
@returns(200)
@errors {4XX}

@endpoint PUT /zones/{zone_id}/waiting_rooms/settings
@required {zone_id: str}
@optional {search_engine_crawler_bypass: bool=false}
@returns(200)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/waiting_rooms/{waiting_room_id}
@required {waiting_room_id: str, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/waiting_rooms/{waiting_room_id}
@required {waiting_room_id: str, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /zones/{zone_id}/waiting_rooms/{waiting_room_id}
@required {waiting_room_id: str, zone_id: str, host: str, name: str, new_users_per_minute: int, total_active_users: int}
@optional {additional_routes: [map{host: str, path: str}], cookie_attributes: map{samesite: str, secure: str}, cookie_suffix: str=, custom_page_html: str=, default_template_language: str(en-US/es-ES/de-DE/fr-FR/it-IT/ja-JP/ko-KR/pt-BR/zh-CN/zh-TW/nl-NL/pl-PL/id-ID/tr-TR/ar-EG/ru-RU/fa-IR/bg-BG/hr-HR/cs-CZ/da-DK/fi-FI/lt-LT/ms-MY/nb-NO/ro-RO/el-GR/he-IL/hi-IN/hu-HU/sr-BA/sk-SK/sl-SI/sv-SE/tl-PH/th-TH/uk-UA/vi-VN)=en-US, description: str=, disable_session_renewal: bool=false, enabled_origin_commands: [str]=, json_response_enabled: bool=false, path: str=/, queue_all: bool=false, queueing_method: str(fifo/random/passthrough/reject)=fifo, queueing_status_code: int(200/202/429)=200, session_duration: int=5, suspended: bool=false, turnstile_action: str(log/infinite_queue)=log, turnstile_mode: str(off/invisible/visible_non_interactive/visible_managed)=invisible}
@returns(200)
@errors {4XX}

@endpoint PUT /zones/{zone_id}/waiting_rooms/{waiting_room_id}
@required {waiting_room_id: str, zone_id: str, host: str, name: str, new_users_per_minute: int, total_active_users: int}
@optional {additional_routes: [map{host: str, path: str}], cookie_attributes: map{samesite: str, secure: str}, cookie_suffix: str=, custom_page_html: str=, default_template_language: str(en-US/es-ES/de-DE/fr-FR/it-IT/ja-JP/ko-KR/pt-BR/zh-CN/zh-TW/nl-NL/pl-PL/id-ID/tr-TR/ar-EG/ru-RU/fa-IR/bg-BG/hr-HR/cs-CZ/da-DK/fi-FI/lt-LT/ms-MY/nb-NO/ro-RO/el-GR/he-IL/hi-IN/hu-HU/sr-BA/sk-SK/sl-SI/sv-SE/tl-PH/th-TH/uk-UA/vi-VN)=en-US, description: str=, disable_session_renewal: bool=false, enabled_origin_commands: [str]=, json_response_enabled: bool=false, path: str=/, queue_all: bool=false, queueing_method: str(fifo/random/passthrough/reject)=fifo, queueing_status_code: int(200/202/429)=200, session_duration: int=5, suspended: bool=false, turnstile_action: str(log/infinite_queue)=log, turnstile_mode: str(off/invisible/visible_non_interactive/visible_managed)=invisible}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/waiting_rooms/{waiting_room_id}/events
@required {waiting_room_id: str, zone_id: str}
@optional {page: num=1, per_page: num=25}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/waiting_rooms/{waiting_room_id}/events
@required {waiting_room_id: str, zone_id: str, event_end_time: str, event_start_time: str, name: str}
@optional {custom_page_html: str, description: str=, disable_session_renewal: bool, new_users_per_minute: int, prequeue_start_time: str, queueing_method: str, session_duration: int, shuffle_at_event_start: bool=false, suspended: bool=false, total_active_users: int, turnstile_action: str(log/infinite_queue), turnstile_mode: str(off/invisible/visible_non_interactive/visible_managed)}
@returns(200)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/waiting_rooms/{waiting_room_id}/events/{event_id}
@required {event_id: str, waiting_room_id: str, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/waiting_rooms/{waiting_room_id}/events/{event_id}
@required {event_id: str, waiting_room_id: str, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /zones/{zone_id}/waiting_rooms/{waiting_room_id}/events/{event_id}
@required {event_id: str, waiting_room_id: str, zone_id: str, event_end_time: str, event_start_time: str, name: str}
@optional {custom_page_html: str, description: str=, disable_session_renewal: bool, new_users_per_minute: int, prequeue_start_time: str, queueing_method: str, session_duration: int, shuffle_at_event_start: bool=false, suspended: bool=false, total_active_users: int, turnstile_action: str(log/infinite_queue), turnstile_mode: str(off/invisible/visible_non_interactive/visible_managed)}
@returns(200)
@errors {4XX}

@endpoint PUT /zones/{zone_id}/waiting_rooms/{waiting_room_id}/events/{event_id}
@required {event_id: str, waiting_room_id: str, zone_id: str, event_end_time: str, event_start_time: str, name: str}
@optional {custom_page_html: str, description: str=, disable_session_renewal: bool, new_users_per_minute: int, prequeue_start_time: str, queueing_method: str, session_duration: int, shuffle_at_event_start: bool=false, suspended: bool=false, total_active_users: int, turnstile_action: str(log/infinite_queue), turnstile_mode: str(off/invisible/visible_non_interactive/visible_managed)}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/waiting_rooms/{waiting_room_id}/events/{event_id}/details
@required {event_id: str, waiting_room_id: str, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/waiting_rooms/{waiting_room_id}/rules
@required {waiting_room_id: str, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/waiting_rooms/{waiting_room_id}/rules
@required {waiting_room_id: str, zone_id: str, action: str, expression: str}
@optional {description: str=, enabled: bool=true}
@returns(200)
@errors {4XX}

@endpoint PUT /zones/{zone_id}/waiting_rooms/{waiting_room_id}/rules
@required {waiting_room_id: str, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/waiting_rooms/{waiting_room_id}/rules/{rule_id}
@required {rule_id: str, waiting_room_id: str, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PATCH /zones/{zone_id}/waiting_rooms/{waiting_room_id}/rules/{rule_id}
@required {rule_id: str, waiting_room_id: str, zone_id: str, action: str, expression: str}
@optional {description: str=, enabled: bool=true, position: map}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/waiting_rooms/{waiting_room_id}/status
@required {waiting_room_id: str, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/web3/hostnames
@required {zone_id: str}
@returns(200)
@errors {4XX, 5XX}

@endpoint POST /zones/{zone_id}/web3/hostnames
@required {zone_id: str, name: str, target: str(ethereum/ipfs/ipfs_universal_path)}
@optional {description: str, dnslink: str}
@returns(200)
@errors {4XX, 5XX}

@endpoint DELETE /zones/{zone_id}/web3/hostnames/{identifier}
@required {identifier: str, zone_id: str}
@returns(200)
@errors {4XX, 5XX}

@endpoint GET /zones/{zone_id}/web3/hostnames/{identifier}
@required {identifier: str, zone_id: str}
@returns(200)
@errors {4XX, 5XX}

@endpoint PATCH /zones/{zone_id}/web3/hostnames/{identifier}
@required {identifier: str, zone_id: str}
@optional {description: str, dnslink: str}
@returns(200)
@errors {4XX, 5XX}

@endpoint GET /zones/{zone_id}/web3/hostnames/{identifier}/ipfs_universal_path/content_list
@required {identifier: str, zone_id: str}
@returns(200)
@errors {4XX, 5XX}

@endpoint PUT /zones/{zone_id}/web3/hostnames/{identifier}/ipfs_universal_path/content_list
@required {identifier: str, zone_id: str, action: str, entries: [map{content: str, created_on: str(date-time), description: str, id: str, modified_on: str(date-time), type: str}]}
@returns(200)
@errors {4XX, 5XX}

@endpoint GET /zones/{zone_id}/web3/hostnames/{identifier}/ipfs_universal_path/content_list/entries
@required {identifier: str, zone_id: str}
@returns(200)
@errors {4XX, 5XX}

@endpoint POST /zones/{zone_id}/web3/hostnames/{identifier}/ipfs_universal_path/content_list/entries
@required {identifier: str, zone_id: str, content: str, type: str(cid/content_path)}
@optional {description: str}
@returns(200)
@errors {4XX, 5XX}

@endpoint DELETE /zones/{zone_id}/web3/hostnames/{identifier}/ipfs_universal_path/content_list/entries/{content_list_entry_identifier}
@required {content_list_entry_identifier: str, identifier: str, zone_id: str}
@returns(200)
@errors {4XX, 5XX}

@endpoint GET /zones/{zone_id}/web3/hostnames/{identifier}/ipfs_universal_path/content_list/entries/{content_list_entry_identifier}
@required {content_list_entry_identifier: str, identifier: str, zone_id: str}
@returns(200)
@errors {4XX, 5XX}

@endpoint PUT /zones/{zone_id}/web3/hostnames/{identifier}/ipfs_universal_path/content_list/entries/{content_list_entry_identifier}
@required {content_list_entry_identifier: str, identifier: str, zone_id: str, content: str, type: str(cid/content_path)}
@optional {description: str}
@returns(200)
@errors {4XX, 5XX}

@endpoint GET /zones/{zone_id}/workers/routes
@required {zone_id: str}
@returns(200)
@errors {4XX}

@endpoint POST /zones/{zone_id}/workers/routes
@required {zone_id: str, id: any, pattern: str}
@optional {script: str}
@returns(200)
@errors {4XX}

@endpoint DELETE /zones/{zone_id}/workers/routes/{route_id}
@required {route_id: str, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint GET /zones/{zone_id}/workers/routes/{route_id}
@required {route_id: str, zone_id: str}
@returns(200)
@errors {4XX}

@endpoint PUT /zones/{zone_id}/workers/routes/{route_id}
@required {route_id: str, zone_id: str, id: any, pattern: str}
@optional {script: str}
@returns(200)
@errors {4XX}

@endgroup

@end
